The DejaVU Framework -- hush 3.1

include: hush-src-multi-BaseClasses-videoctl.h /home/ae/media


- [up] [top] - index make include source logic grammar scripts html configure mx slides talks scenes reports projects
<body bgcolor="#FFFFFF" text="#000000">

//------------------------------------------------------------------------------
// File: VideoCtl.h
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------------------------

ifndef __VIDEOCTL__
define __VIDEOCTL__

// These help with property page implementations. The first can be used to
// load any string from a resource file. The buffer to load into is passed
// as an input parameter. The same buffer is the return value if the string
// was found otherwise it returns TEXT(""). The GetDialogSize is passed the
// resource ID of a dialog box and returns the size of it in screen pixels

define STR_MAX_LENGTH 256
TCHAR * WINAPI StringFromResource(TCHAR *pBuffer, int iResourceID);

ifdef UNICODE
define WideStringFromResource StringFromResource
char* WINAPI StringFromResource(char*pBuffer, int iResourceID);
else
WCHAR * WINAPI WideStringFromResource(WCHAR *pBuffer, int iResourceID);
endif

BOOL WINAPI GetDialogSize(int iResourceID,     // Dialog box resource identifier
                          DLGPROC pDlgProc,    // Pointer to dialog procedure
                          LPARAM lParam,       // Any user data wanted in pDlgProc
                          SIZE *pResult);      // Returns the size of dialog box

// Class that aggregates an IDirectDraw interface

<h4 align=right text=red> CAggDirectDraw</h4><hr>
  class CAggDirectDraw : public IDirectDraw, public CUnknown
{
protected:

    LPDIRECTDRAW m_pDirectDraw;

public:

    DECLARE_IUNKNOWN
    STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv);

    // Constructor and destructor

    CAggDirectDraw(TCHAR *pName,LPUNKNOWN pUnk) :
        CUnknown(pName,pUnk),
        m_pDirectDraw(NULL) { };
<hr>


    virtual CAggDirectDraw::~CAggDirectDraw() { };
<hr>


    // Set the object we should be aggregating
    void SetDirectDraw(LPDIRECTDRAW pDirectDraw) {
        m_pDirectDraw = pDirectDraw;
    }

    // IDirectDraw methods

    STDMETHODIMP Compact();
    STDMETHODIMP CreateClipper(DWORD dwFlags,LPDIRECTDRAWCLIPPER *lplpDDClipper,IUnknown *pUnkOuter);
    STDMETHODIMP CreatePalette(DWORD dwFlags,LPPALETTEENTRY lpColorTable,LPDIRECTDRAWPALETTE *lplpDDPalette,IUnknown *pUnkOuter);
    STDMETHODIMP CreateSurface(LPDDSURFACEDESC lpDDSurfaceDesc,LPDIRECTDRAWSURFACE *lplpDDSurface,IUnknown *pUnkOuter);
    STDMETHODIMP DuplicateSurface(LPDIRECTDRAWSURFACE lpDDSurface,LPDIRECTDRAWSURFACE *lplpDupDDSurface);
    STDMETHODIMP EnumDisplayModes(DWORD dwSurfaceDescCount,LPDDSURFACEDESC lplpDDSurfaceDescList,LPVOID lpContext,LPDDENUMMODESCALLBACK lpEnumCallback);
    STDMETHODIMP EnumSurfaces(DWORD dwFlags,LPDDSURFACEDESC lpDDSD,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumCallback);
    STDMETHODIMP FlipToGDISurface();
    STDMETHODIMP GetCaps(LPDDCAPS lpDDDriverCaps,LPDDCAPS lpDDHELCaps);
    STDMETHODIMP GetDisplayMode(LPDDSURFACEDESC lpDDSurfaceDesc);
    STDMETHODIMP GetFourCCCodes(LPDWORD lpNumCodes,LPDWORD lpCodes);
    STDMETHODIMP GetGDISurface(LPDIRECTDRAWSURFACE *lplpGDIDDSurface);
    STDMETHODIMP GetMonitorFrequency(LPDWORD lpdwFrequency);
    STDMETHODIMP GetScanLine(LPDWORD lpdwScanLine);
    STDMETHODIMP GetVerticalBlankStatus(LPBOOL lpblsInVB);
    STDMETHODIMP Initialize(GUID *lpGUID);
    STDMETHODIMP RestoreDisplayMode();
    STDMETHODIMP SetCooperativeLevel(HWND hWnd,DWORD dwFlags);
    STDMETHODIMP SetDisplayMode(DWORD dwWidth,DWORD dwHeight,DWORD dwBpp);
    STDMETHODIMP WaitForVerticalBlank(DWORD dwFlags,HANDLE hEvent);
};
<hr>


// Class that aggregates an IDirectDrawSurface interface

<hr>

CAggDrawSurface</h4>
  class CAggDrawSurface : public IDirectDrawSurface, public CUnknown
  {
  protected:
  
      LPDIRECTDRAWSURFACE m_pDirectDrawSurface;
  
  public:
  
      DECLARE_IUNKNOWN
      STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv);
  
      // Constructor and destructor
  
      CAggDrawSurface(TCHAR *pName,LPUNKNOWN pUnk) :
          CUnknown(pName,pUnk),
          m_pDirectDrawSurface(NULL) { };


  
      virtual ~CAggDrawSurface() { };


  
      // Set the object we should be aggregating
      void SetDirectDrawSurface(LPDIRECTDRAWSURFACE pDirectDrawSurface) {
          m_pDirectDrawSurface = pDirectDrawSurface;
      }
  
      // IDirectDrawSurface methods
  
      STDMETHODIMP AddAttachedSurface(LPDIRECTDRAWSURFACE lpDDSAttachedSurface);
      STDMETHODIMP AddOverlayDirtyRect(LPRECT lpRect);
      STDMETHODIMP Blt(LPRECT lpDestRect,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwFlags,LPDDBLTFX lpDDBltFx);
      STDMETHODIMP BltBatch(LPDDBLTBATCH lpDDBltBatch,DWORD dwCount,DWORD dwFlags);
      STDMETHODIMP BltFast(DWORD dwX,DWORD dwY,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwTrans);
      STDMETHODIMP DeleteAttachedSurface(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSAttachedSurface);
      STDMETHODIMP EnumAttachedSurfaces(LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback);
      STDMETHODIMP EnumOverlayZOrders(DWORD dwFlags,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpfnCallback);
      STDMETHODIMP Flip(LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,DWORD dwFlags);
      STDMETHODIMP GetAttachedSurface(LPDDSCAPS lpDDSCaps,LPDIRECTDRAWSURFACE *lplpDDAttachedSurface);
      STDMETHODIMP GetBltStatus(DWORD dwFlags);
      STDMETHODIMP GetCaps(LPDDSCAPS lpDDSCaps);
      STDMETHODIMP GetClipper(LPDIRECTDRAWCLIPPER *lplpDDClipper);
      STDMETHODIMP GetColorKey(DWORD dwFlags,LPDDCOLORKEY lpDDColorKey);
      STDMETHODIMP GetDC(HDC *lphDC);
      STDMETHODIMP GetFlipStatus(DWORD dwFlags);
      STDMETHODIMP GetOverlayPosition(LPLONG lpdwX,LPLONG lpdwY);
      STDMETHODIMP GetPalette(LPDIRECTDRAWPALETTE *lplpDDPalette);
      STDMETHODIMP GetPixelFormat(LPDDPIXELFORMAT lpDDPixelFormat);
      STDMETHODIMP GetSurfaceDesc(LPDDSURFACEDESC lpDDSurfaceDesc);
      STDMETHODIMP Initialize(LPDIRECTDRAW lpDD,LPDDSURFACEDESC lpDDSurfaceDesc);
      STDMETHODIMP IsLost();
      STDMETHODIMP Lock(LPRECT lpDestRect,LPDDSURFACEDESC lpDDSurfaceDesc,DWORD dwFlags,HANDLE hEvent);
      STDMETHODIMP ReleaseDC(HDC hDC);
      STDMETHODIMP Restore();
      STDMETHODIMP SetClipper(LPDIRECTDRAWCLIPPER lpDDClipper);
      STDMETHODIMP SetColorKey(DWORD dwFlags,LPDDCOLORKEY lpDDColorKey);
      STDMETHODIMP SetOverlayPosition(LONG dwX,LONG dwY);
      STDMETHODIMP SetPalette(LPDIRECTDRAWPALETTE lpDDPalette);
      STDMETHODIMP Unlock(LPVOID lpSurfaceData);
      STDMETHODIMP UpdateOverlay(LPRECT lpSrcRect,LPDIRECTDRAWSURFACE lpDDDestSurface,LPRECT lpDestRect,DWORD dwFlags,LPDDOVERLAYFX lpDDOverlayFX);
      STDMETHODIMP UpdateOverlayDisplay(DWORD dwFlags);
      STDMETHODIMP UpdateOverlayZOrder(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSReference);
  };


  
  // DirectShow must work on multiple platforms.  In particular, it also runs on
  // Windows NT 3.51 which does not have DirectDraw capabilities. The filters
  // cannot therefore link statically to the DirectDraw library. To make their
  // lives that little bit easier we provide this class that manages loading
  // and unloading the library and creating the initial IDirectDraw interface
  
  typedef DWORD (WINAPI *PGETFILEVERSIONINFOSIZE)(LPTSTR,LPDWORD);
  typedef BOOL (WINAPI *PGETFILEVERSIONINFO)(LPTSTR,DWORD,DWORD,LPVOID);
  typedef BOOL (WINAPI *PVERQUERYVALUE)(LPVOID,LPTSTR,LPVOID,PUINT);
  
  

CLoadDirectDraw</h4>
  class CLoadDirectDraw
  {
      LPDIRECTDRAW m_pDirectDraw;     // The DirectDraw driver instance
      HINSTANCE m_hDirectDraw;        // Handle to the loaded library
  
  public:
  
      CLoadDirectDraw();
      ~CLoadDirectDraw();
  
      HRESULT LoadDirectDraw(LPSTR szDevice);
      void ReleaseDirectDraw();
      HRESULT IsDirectDrawLoaded();
      LPDIRECTDRAW GetDirectDraw();
      BOOL IsDirectDrawVersion1();
  };


  
  endif // __VIDEOCTL__
  
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author. <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-2780434-1"; urchinTracker(); </script>

Hush Online Technology
hush@cs.vu.nl
03/12/09