forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			169 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			169 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								//------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								// File: VideoCtl.h
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Desc: DirectShow base classes.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Copyright (c) 1992-2001 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
							 | 
						||
| 
								 | 
							
								LPCTSTR WINAPI StringFromResource(__out_ecount(STR_MAX_LENGTH) LPTSTR pBuffer, int iResourceID);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef UNICODE
							 | 
						||
| 
								 | 
							
								#define WideStringFromResource StringFromResource
							 | 
						||
| 
								 | 
							
								LPCSTR WINAPI StringFromResource(__out_ecount(STR_MAX_LENGTH) LPSTR pBuffer, int iResourceID);
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								LPWSTR WINAPI WideStringFromResource(__out_ecount(STR_MAX_LENGTH) LPWSTR 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
							 | 
						||
| 
								 | 
							
								                          __out SIZE *pResult);// Returns the size of dialog box
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Class that aggregates an IDirectDraw interface
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class CAggDirectDraw : public IDirectDraw, public CUnknown
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								protected:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    LPDIRECTDRAW m_pDirectDraw;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								public:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    DECLARE_IUNKNOWN
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,__deref_out void **ppv);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Constructor and destructor
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    CAggDirectDraw(__in_opt LPCTSTR pName,__inout_opt LPUNKNOWN pUnk) :
							 | 
						||
| 
								 | 
							
								        CUnknown(pName,pUnk),
							 | 
						||
| 
								 | 
							
								        m_pDirectDraw(NULL) { };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    virtual ~CAggDirectDraw() { };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Set the object we should be aggregating
							 | 
						||
| 
								 | 
							
								    void SetDirectDraw(__inout LPDIRECTDRAW pDirectDraw) {
							 | 
						||
| 
								 | 
							
								        m_pDirectDraw = pDirectDraw;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // IDirectDraw methods
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP Compact();
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP CreateClipper(DWORD dwFlags,__deref_out LPDIRECTDRAWCLIPPER *lplpDDClipper,__inout_opt IUnknown *pUnkOuter);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP CreatePalette(DWORD dwFlags,__in LPPALETTEENTRY lpColorTable,__deref_out LPDIRECTDRAWPALETTE *lplpDDPalette,__inout_opt IUnknown *pUnkOuter);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP CreateSurface(__in LPDDSURFACEDESC lpDDSurfaceDesc,__deref_out LPDIRECTDRAWSURFACE *lplpDDSurface,__inout_opt IUnknown *pUnkOuter);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP DuplicateSurface(__in LPDIRECTDRAWSURFACE lpDDSurface,__deref_out LPDIRECTDRAWSURFACE *lplpDupDDSurface);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP EnumDisplayModes(DWORD dwSurfaceDescCount,__in LPDDSURFACEDESC lplpDDSurfaceDescList,__in LPVOID lpContext,__in LPDDENUMMODESCALLBACK lpEnumCallback);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP EnumSurfaces(DWORD dwFlags,__in LPDDSURFACEDESC lpDDSD,__in LPVOID lpContext,__in LPDDENUMSURFACESCALLBACK lpEnumCallback);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP FlipToGDISurface();
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetCaps(__out LPDDCAPS lpDDDriverCaps,__out LPDDCAPS lpDDHELCaps);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetDisplayMode(__out LPDDSURFACEDESC lpDDSurfaceDesc);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetFourCCCodes(__inout LPDWORD lpNumCodes,__out_ecount(*lpNumCodes) LPDWORD lpCodes);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetGDISurface(__deref_out LPDIRECTDRAWSURFACE *lplpGDIDDSurface);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetMonitorFrequency(__out LPDWORD lpdwFrequency);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetScanLine(__out LPDWORD lpdwScanLine);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetVerticalBlankStatus(__out LPBOOL lpblsInVB);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP Initialize(__in GUID *lpGUID);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP RestoreDisplayMode();
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP SetCooperativeLevel(HWND hWnd,DWORD dwFlags);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP SetDisplayMode(DWORD dwWidth,DWORD dwHeight,DWORD dwBpp);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP WaitForVerticalBlank(DWORD dwFlags,HANDLE hEvent);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Class that aggregates an IDirectDrawSurface interface
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class CAggDrawSurface : public IDirectDrawSurface, public CUnknown
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								protected:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    LPDIRECTDRAWSURFACE m_pDirectDrawSurface;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								public:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    DECLARE_IUNKNOWN
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,__deref_out void **ppv);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Constructor and destructor
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    CAggDrawSurface(__in_opt LPCTSTR pName,__inout_opt LPUNKNOWN pUnk) :
							 | 
						||
| 
								 | 
							
								        CUnknown(pName,pUnk),
							 | 
						||
| 
								 | 
							
								        m_pDirectDrawSurface(NULL) { };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    virtual ~CAggDrawSurface() { };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Set the object we should be aggregating
							 | 
						||
| 
								 | 
							
								    void SetDirectDrawSurface(__inout LPDIRECTDRAWSURFACE pDirectDrawSurface) {
							 | 
						||
| 
								 | 
							
								        m_pDirectDrawSurface = pDirectDrawSurface;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // IDirectDrawSurface methods
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP AddAttachedSurface(__in LPDIRECTDRAWSURFACE lpDDSAttachedSurface);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP AddOverlayDirtyRect(__in LPRECT lpRect);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP Blt(__in LPRECT lpDestRect,__in LPDIRECTDRAWSURFACE lpDDSrcSurface,__in LPRECT lpSrcRect,DWORD dwFlags,__in LPDDBLTFX lpDDBltFx);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP BltBatch(__in_ecount(dwCount) LPDDBLTBATCH lpDDBltBatch,DWORD dwCount,DWORD dwFlags);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP BltFast(DWORD dwX,DWORD dwY,__in LPDIRECTDRAWSURFACE lpDDSrcSurface,__in LPRECT lpSrcRect,DWORD dwTrans);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP DeleteAttachedSurface(DWORD dwFlags,__in LPDIRECTDRAWSURFACE lpDDSAttachedSurface);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP EnumAttachedSurfaces(__in LPVOID lpContext,__in LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP EnumOverlayZOrders(DWORD dwFlags,__in LPVOID lpContext,__in LPDDENUMSURFACESCALLBACK lpfnCallback);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP Flip(__in LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,DWORD dwFlags);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetAttachedSurface(__in LPDDSCAPS lpDDSCaps,__deref_out LPDIRECTDRAWSURFACE *lplpDDAttachedSurface);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetBltStatus(DWORD dwFlags);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetCaps(__out LPDDSCAPS lpDDSCaps);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetClipper(__deref_out LPDIRECTDRAWCLIPPER *lplpDDClipper);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetColorKey(DWORD dwFlags,__out LPDDCOLORKEY lpDDColorKey);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetDC(__out HDC *lphDC);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetFlipStatus(DWORD dwFlags);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetOverlayPosition(__out LPLONG lpdwX,__out LPLONG lpdwY);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetPalette(__deref_out LPDIRECTDRAWPALETTE *lplpDDPalette);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetPixelFormat(__out LPDDPIXELFORMAT lpDDPixelFormat);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP GetSurfaceDesc(__out LPDDSURFACEDESC lpDDSurfaceDesc);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP Initialize(__in LPDIRECTDRAW lpDD,__in LPDDSURFACEDESC lpDDSurfaceDesc);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP IsLost();
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP Lock(__in LPRECT lpDestRect,__inout LPDDSURFACEDESC lpDDSurfaceDesc,DWORD dwFlags,HANDLE hEvent);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP ReleaseDC(HDC hDC);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP Restore();
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP SetClipper(__in LPDIRECTDRAWCLIPPER lpDDClipper);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP SetColorKey(DWORD dwFlags,__in LPDDCOLORKEY lpDDColorKey);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP SetOverlayPosition(LONG dwX,LONG dwY);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP SetPalette(__in LPDIRECTDRAWPALETTE lpDDPalette);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP Unlock(__in LPVOID lpSurfaceData);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP UpdateOverlay(__in LPRECT lpSrcRect,__in LPDIRECTDRAWSURFACE lpDDDestSurface,__in LPRECT lpDestRect,DWORD dwFlags,__in LPDDOVERLAYFX lpDDOverlayFX);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP UpdateOverlayDisplay(DWORD dwFlags);
							 | 
						||
| 
								 | 
							
								    STDMETHODIMP UpdateOverlayZOrder(DWORD dwFlags,__in LPDIRECTDRAWSURFACE lpDDSReference);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class CLoadDirectDraw
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    LPDIRECTDRAW m_pDirectDraw;     // The DirectDraw driver instance
							 | 
						||
| 
								 | 
							
								    HINSTANCE m_hDirectDraw;        // Handle to the loaded library
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								public:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    CLoadDirectDraw();
							 | 
						||
| 
								 | 
							
								    ~CLoadDirectDraw();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    HRESULT LoadDirectDraw(__in LPSTR szDevice);
							 | 
						||
| 
								 | 
							
								    void ReleaseDirectDraw();
							 | 
						||
| 
								 | 
							
								    HRESULT IsDirectDrawLoaded();
							 | 
						||
| 
								 | 
							
								    LPDIRECTDRAW GetDirectDraw();
							 | 
						||
| 
								 | 
							
								    BOOL IsDirectDrawVersion1();
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // __VIDEOCTL__
							 | 
						||
| 
								 | 
							
								
							 |