/**************************************************************************** * * FILE: VidView.h * * CREATED: Chris Pirich (ChrisPi) 12-16-96 * ****************************************************************************/ #ifndef _VIDVIEW_H_ #define _VIDVIEW_H_ #include #include "GenWindow.h" #include "SDKInternal.h" typedef HANDLE HDRAWDIB; /* hdd */ class CVideoWindow; interface IVideoChange : public IUnknown { virtual void StateChange(CVideoWindow *pVideo, NM_VIDEO_STATE uState) = 0; } ; class CVideoWindow : public CGenWindow, public INmChannelVideoNotify { public: static VOID SetMirror(BOOL bMirror); static BOOL GetMirror() {return g_fMirror != FALSE;} enum VideoType { REMOTE, LOCAL } ; CVideoWindow(VideoType eType, BOOL bEmbedded); ~CVideoWindow(); BOOL Create(HWND hwndOwner, HPALETTE hPal, IVideoChange *pNotify=NULL); BOOL IsXferAllowed(); BOOL IsAutoXferEnabled(); BOOL IsXferEnabled(); BOOL IsPaused(); BOOL IsConnected(); HRESULT GetVideoState(NM_VIDEO_STATE* puState); BOOL CanCopy(); BOOL HasDialog(DWORD dwDialog); DWORD GetFrameSize() { return(m_dwFrameSize); } DWORD GetFrameSizes(); DWORD GetImageQuality() { return(m_dwImageQuality); } DWORD GetNumCapDev(); DWORD GetMaxCapDevNameLen(); DWORD GetCurrCapDevID(); VOID SetCurrCapDevID(DWORD dwID); HRESULT SetImageQuality(DWORD dwQuality); HRESULT SetCameraDialog(ULONG ul); HRESULT GetCameraDialog(ULONG* pul); VOID SetFrameSize(DWORD dwSize); VOID SetZoom(UINT nZoom); VOID EnableAutoXfer(BOOL fEnable); VOID ShowDialog(DWORD dwDialog); VOID SaveSettings(); VOID Pause(BOOL fPause); VOID RefreshWindow() { OnFrameAvailable(); } VOID ResizeWindowsToFrameSize(); VOID EnumCapDev(DWORD *pdwCapDevIDs, LPTSTR pszCapDevNames, DWORD dwNumCapDev); VOID OnPaletteChanged(void); VOID OnMinimize(BOOL fMinimize) { /* Should this pause the video? */ } HRESULT OnChannelChanged(NM_CHANNEL_NOTIFY uNotify, INmChannel *pChannel); VOID ForwardSysChangeMsg(UINT uMsg, WPARAM wParam, LPARAM lParam); void UpdateVideoMenu(HMENU hMenu); void OnCommand(int idCmd); void SetZoomable(BOOL bZoomable) { m_fZoomable = (bZoomable!=FALSE); } BOOL IsZoomable() { return(m_fZoomable != FALSE); } // IUnknown STDMETHODIMP_(ULONG) AddRef(void) { return(CGenWindow::AddRef()); } STDMETHODIMP_(ULONG) Release(void) { return(CGenWindow::Release()); } STDMETHODIMP QueryInterface(REFIID riid, PVOID *ppvObj); // INmChannelVideoNotify STDMETHODIMP NmUI(CONFN uNotify); STDMETHODIMP MemberChanged(NM_MEMBER_NOTIFY uNotify, INmMember *pMember); STDMETHODIMP StateChanged(NM_VIDEO_STATE uState); STDMETHODIMP PropertyChanged(DWORD dwReserved); // IGenWindow virtual VOID GetDesiredSize(SIZE *ppt); static BOOL FDidNotDisplayIntelLogo(); static VOID DisplayIntelLogo( BOOL bDisplay ); protected: virtual LRESULT ProcessMessage(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); private: // Array keeping track of all video windows, so they can be invalidated // when the state changes (like mirroring) static CSimpleArray *g_pVideos; // Specifies whether we are mirroring the local video. static BOOL g_fMirror; // Specifies whether we have done one-time local video init stuff static BOOL g_bLocalOneTimeInited; static VOID InvalidateAll(); INmChannelVideo* m_pActiveChannel; DWORD m_dwCookie; DWORD m_dwImageQuality; UINT m_nXferOnConnect; DWORD m_dwFrameSize; SIZE m_sizeVideo; HDRAWDIB m_hdd; HPALETTE m_hPal; UINT m_zoom; IVideoChange *m_pNotify; BOOL m_fLocal : 1; // CMainUI uses this to disallow zoom on the PiP window BOOL m_fZoomable : 1; // Use this to make sure the embedded window does not display CIF BOOL m_bEmbedded : 1; VOID SetVideoSize(LPSIZE lpsize); UINT GetZoom() { return(m_zoom); } BOOL ShouldMirror() { return(IsLocal() && GetMirror()); } VOID OnFrameAvailable(void); VOID PaintDib(HDC hdc, FRAMECONTEXT *pFrame); VOID PaintLogo(HDC hdc, UINT idbLargeLogo, UINT idbSmallLogo); VOID OnPaint(); VOID OnNCDestroy(); void OnContextMenu(HWND hwnd, HWND hwndContext, UINT xPos, UINT yPos); BOOL CopyToClipboard(); HRESULT GetFrame(FRAMECONTEXT *pFrameContext); HRESULT ReleaseFrame(FRAMECONTEXT *pFrameContext); BOOL InitMirroring(RECT &rcVideo); VOID UnInitMirroring(); HBITMAP m_hBitmapMirror; SIZE m_sizeBitmapMirror; HDC m_hDCMirror; HGDIOBJ m_hGDIObj; BOOL IsLocal() { return m_fLocal; } }; #endif // _VIDVIEW_H_