home *** CD-ROM | disk | FTP | other *** search
/ The Net: Ultimate Internet Guide / WWLCD1.ISO / mac / SiteBldr / AMOVIE / SDK / _SETUP / COMMON.Z / videoctl.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-11  |  7.6 KB  |  178 lines

  1. //==========================================================================;
  2. //
  3. //  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  4. //  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  5. //  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  6. //  PURPOSE.
  7. //
  8. //  Copyright (c) 1992 - 1996  Microsoft Corporation.  All Rights Reserved.
  9. //
  10. //--------------------------------------------------------------------------;
  11.  
  12. #ifndef __VIDEOCTL__
  13. #define __VIDEOCTL__
  14.  
  15. // These help with property page implementations. The first can be used to
  16. // load any string from a resource file. The buffer to load into is passed
  17. // as an input parameter. The same buffer is the return value if the string
  18. // was found otherwise it returns TEXT(""). The GetDialogSize is passed the
  19. // resource ID of a dialog box and returns the size of it in screen pixels
  20.  
  21. #define STR_MAX_LENGTH 256
  22. TCHAR *StringFromResource(TCHAR *pBuffer, int iResourceID);
  23.  
  24. #ifdef UNICODE
  25. #define WideStringFromResource StringFromResource
  26. #else
  27. WCHAR *WideStringFromResource(WCHAR *pBuffer, int iResourceID);
  28. #endif
  29.  
  30.  
  31. BOOL GetDialogSize(int iResourceID,     // Dialog box resource identifier
  32.                    DLGPROC pDlgProc,    // Pointer to dialog procedure
  33.                    LPARAM lParam,       // Any user data wanted in pDlgProc
  34.                    SIZE *pResult);      // Returns the size of dialog box
  35.  
  36. // Class that aggregates an IDirectDraw interface
  37.  
  38. class CAggDirectDraw : public IDirectDraw, public CUnknown
  39. {
  40. protected:
  41.  
  42.     LPDIRECTDRAW m_pDirectDraw;
  43.  
  44. public:
  45.  
  46.     DECLARE_IUNKNOWN
  47.     STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv);
  48.  
  49.     // Constructor and destructor
  50.  
  51.     CAggDirectDraw(TCHAR *pName,LPUNKNOWN pUnk,HRESULT *phr) :
  52.         CUnknown(pName,pUnk,phr),
  53.         m_pDirectDraw(NULL) { };
  54.  
  55.     virtual CAggDirectDraw::~CAggDirectDraw() { };
  56.  
  57.     // Set the object we should be aggregating
  58.     void SetDirectDraw(LPDIRECTDRAW pDirectDraw) {
  59.         m_pDirectDraw = pDirectDraw;
  60.     }
  61.  
  62.     // IDirectDraw methods
  63.  
  64.     STDMETHODIMP Compact();
  65.     STDMETHODIMP CreateClipper(DWORD dwFlags,LPDIRECTDRAWCLIPPER *lplpDDClipper,IUnknown *pUnkOuter);
  66.     STDMETHODIMP CreatePalette(DWORD dwFlags,LPPALETTEENTRY lpColorTable,LPDIRECTDRAWPALETTE *lplpDDPalette,IUnknown *pUnkOuter);
  67.     STDMETHODIMP CreateSurface(LPDDSURFACEDESC lpDDSurfaceDesc,LPDIRECTDRAWSURFACE *lplpDDSurface,IUnknown *pUnkOuter);
  68.     STDMETHODIMP DuplicateSurface(LPDIRECTDRAWSURFACE lpDDSurface,LPDIRECTDRAWSURFACE *lplpDupDDSurface);
  69.     STDMETHODIMP EnumDisplayModes(DWORD dwSurfaceDescCount,LPDDSURFACEDESC lplpDDSurfaceDescList,LPVOID lpContext,LPDDENUMMODESCALLBACK lpEnumCallback);
  70.     STDMETHODIMP EnumSurfaces(DWORD dwFlags,LPDDSURFACEDESC lpDDSD,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumCallback);
  71.     STDMETHODIMP FlipToGDISurface();
  72.     STDMETHODIMP GetCaps(LPDDCAPS lpDDDriverCaps,LPDDCAPS lpDDHELCaps);
  73.     STDMETHODIMP GetDisplayMode(LPDDSURFACEDESC lpDDSurfaceDesc);
  74.     STDMETHODIMP GetFourCCCodes(LPDWORD lpNumCodes,LPDWORD lpCodes);
  75.     STDMETHODIMP GetGDISurface(LPDIRECTDRAWSURFACE *lplpGDIDDSurface);
  76.     STDMETHODIMP GetMonitorFrequency(LPDWORD lpdwFrequency);
  77.     STDMETHODIMP GetScanLine(LPDWORD lpdwScanLine);
  78.     STDMETHODIMP GetVerticalBlankStatus(LPBOOL lpblsInVB);
  79.     STDMETHODIMP Initialize(GUID *lpGUID);
  80.     STDMETHODIMP RestoreDisplayMode();
  81.     STDMETHODIMP SetCooperativeLevel(HWND hWnd,DWORD dwFlags);
  82.     STDMETHODIMP SetDisplayMode(DWORD dwWidth,DWORD dwHeight,DWORD dwBpp);
  83.     STDMETHODIMP WaitForVerticalBlank(DWORD dwFlags,HANDLE hEvent);
  84. };
  85.  
  86.  
  87. // Class that aggregates an IDirectDrawSurface interface
  88.  
  89. class CAggDrawSurface : public IDirectDrawSurface, public CUnknown
  90. {
  91. protected:
  92.  
  93.     LPDIRECTDRAWSURFACE m_pDirectDrawSurface;
  94.  
  95. public:
  96.  
  97.     DECLARE_IUNKNOWN
  98.     STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv);
  99.  
  100.     // Constructor and destructor
  101.  
  102.     CAggDrawSurface(TCHAR *pName,LPUNKNOWN pUnk,HRESULT *phr) :
  103.         CUnknown(pName,pUnk,phr),
  104.         m_pDirectDrawSurface(NULL) { };
  105.  
  106.     virtual ~CAggDrawSurface() { };
  107.  
  108.     // Set the object we should be aggregating
  109.     void SetDirectDrawSurface(LPDIRECTDRAWSURFACE pDirectDrawSurface) {
  110.         m_pDirectDrawSurface = pDirectDrawSurface;
  111.     }
  112.  
  113.     // IDirectDrawSurface methods
  114.  
  115.     STDMETHODIMP AddAttachedSurface(LPDIRECTDRAWSURFACE lpDDSAttachedSurface);
  116.     STDMETHODIMP AddOverlayDirtyRect(LPRECT lpRect);
  117.     STDMETHODIMP Blt(LPRECT lpDestRect,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwFlags,LPDDBLTFX lpDDBltFx);
  118.     STDMETHODIMP BltBatch(LPDDBLTBATCH lpDDBltBatch,DWORD dwCount,DWORD dwFlags);
  119.     STDMETHODIMP BltFast(DWORD dwX,DWORD dwY,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwTrans);
  120.     STDMETHODIMP DeleteAttachedSurface(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSAttachedSurface);
  121.     STDMETHODIMP EnumAttachedSurfaces(LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback);
  122.     STDMETHODIMP EnumOverlayZOrders(DWORD dwFlags,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpfnCallback);
  123.     STDMETHODIMP Flip(LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,DWORD dwFlags);
  124.     STDMETHODIMP GetAttachedSurface(LPDDSCAPS lpDDSCaps,LPDIRECTDRAWSURFACE *lplpDDAttachedSurface);
  125.     STDMETHODIMP GetBltStatus(DWORD dwFlags);
  126.     STDMETHODIMP GetCaps(LPDDSCAPS lpDDSCaps);
  127.     STDMETHODIMP GetClipper(LPDIRECTDRAWCLIPPER *lplpDDClipper);
  128.     STDMETHODIMP GetColorKey(DWORD dwFlags,LPDDCOLORKEY lpDDColorKey);
  129.     STDMETHODIMP GetDC(HDC *lphDC);
  130.     STDMETHODIMP GetFlipStatus(DWORD dwFlags);
  131.     STDMETHODIMP GetOverlayPosition(LPLONG lpdwX,LPLONG lpdwY);
  132.     STDMETHODIMP GetPalette(LPDIRECTDRAWPALETTE *lplpDDPalette);
  133.     STDMETHODIMP GetPixelFormat(LPDDPIXELFORMAT lpDDPixelFormat);
  134.     STDMETHODIMP GetSurfaceDesc(LPDDSURFACEDESC lpDDSurfaceDesc);
  135.     STDMETHODIMP Initialize(LPDIRECTDRAW lpDD,LPDDSURFACEDESC lpDDSurfaceDesc);
  136.     STDMETHODIMP IsLost();
  137.     STDMETHODIMP Lock(LPRECT lpDestRect,LPDDSURFACEDESC lpDDSurfaceDesc,DWORD dwFlags,HANDLE hEvent);
  138.     STDMETHODIMP ReleaseDC(HDC hDC);
  139.     STDMETHODIMP Restore();
  140.     STDMETHODIMP SetClipper(LPDIRECTDRAWCLIPPER lpDDClipper);
  141.     STDMETHODIMP SetColorKey(DWORD dwFlags,LPDDCOLORKEY lpDDColorKey);
  142.     STDMETHODIMP SetOverlayPosition(LONG dwX,LONG dwY);
  143.     STDMETHODIMP SetPalette(LPDIRECTDRAWPALETTE lpDDPalette);
  144.     STDMETHODIMP Unlock(LPVOID lpSurfaceData);
  145.     STDMETHODIMP UpdateOverlay(LPRECT lpSrcRect,LPDIRECTDRAWSURFACE lpDDDestSurface,LPRECT lpDestRect,DWORD dwFlags,LPDDOVERLAYFX lpDDOverlayFX);
  146.     STDMETHODIMP UpdateOverlayDisplay(DWORD dwFlags);
  147.     STDMETHODIMP UpdateOverlayZOrder(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSReference);
  148. };
  149.  
  150.  
  151. // ActiveMovie must work on multiple platforms, in particular it also runs on
  152. // Windows NT 3.51 which does not have DirectDraw capabilities. The filters
  153. // cannot therefore link statically to the DirectDraw library. To make their
  154. // lives that little bit easier we provide this class that manages loading
  155. // and unloading the library and creating the initial IDirectDraw interface
  156.  
  157. typedef HRESULT (*PDRAWCREATE)(IID *,LPDIRECTDRAW *,LPUNKNOWN);
  158.  
  159. class CLoadDirectDraw
  160. {
  161.     LPDIRECTDRAW m_pDirectDraw;     // The DirectDraw driver instance
  162.     HINSTANCE m_hDirectDraw;        // Handle to the loaded library
  163.  
  164. public:
  165.  
  166.     CLoadDirectDraw();
  167.     ~CLoadDirectDraw();
  168.  
  169.     HRESULT LoadDirectDraw();
  170.     void ReleaseDirectDraw();
  171.     HRESULT IsDirectDrawLoaded();
  172.     LPDIRECTDRAW GetDirectDraw();
  173.     DWORD GetDirectDrawVersion();
  174. };
  175.  
  176. #endif // __VIDEOCTL__
  177.  
  178.