Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/***************************************************************************\
* * File: DxManager.h * * Description: * DxManager.h defines the process-wide DirectX manager used for all * DirectDraw, Direct3D, and DirectX Transforms services. * * * History: * 1/18/2000: JStall: Created * * Copyright (C) 2000 by Microsoft Corporation. All rights reserved. * \***************************************************************************/
#if !defined(SERVICES__DXManager_h__INCLUDED)
#define SERVICES__DXManager_h__INCLUDED
#pragma once
#pragma comment(lib, "dxguid.lib") // Include DirectX GUID's
struct IDirectDraw; struct IDXTransformFactory; struct IDXSurfaceFactory; struct IDXSurface;
typedef HRESULT (WINAPI * DirectDrawCreateProc)(GUID * pguid, IDirectDraw ** ppDD, IUnknown * punkOuter); typedef HRESULT (WINAPI * DirectDrawCreateExProc)(GUID * pguid, void ** ppvDD, REFIID iid, IUnknown * punkOuter);
class DxSurface;
/***************************************************************************\
* * class DxManager * * DxManager maintains interaction with DirectX technologies including: * - DirectDraw * - Direct3D * - DirectTransforms * * By using this class instead of directly accessing DX, bettern coordination * is maintained throughout SERVICES. * * NOTE: This manager is delay-loads DLL's to manage performance and work on * down-level platforms. * \***************************************************************************/
class DxManager { // Construction
public: DxManager(); ~DxManager();
// Operations
public: HRESULT Init(GUID * pguidDriver = NULL); void Uninit(); inline BOOL IsInit() const;
HRESULT InitDxTx(); void UninitDxTx(); inline BOOL IsDxTxInit() const;
inline IDXTransformFactory * GetTransformFactory() const; inline IDXSurfaceFactory * GetSurfaceFactory() const;
HRESULT BuildSurface(SIZE sizePxl, IDirectDrawSurface7 * pddSurfNew); HRESULT BuildDxSurface(SIZE sizePxl, REFGUID guidFormat, IDXSurface ** ppdxSurfNew);
// Data
protected: // DirectDraw
UINT m_cDDrawRef; HINSTANCE m_hDllDxDraw; // DirectDraw DLL
DirectDrawCreateProc m_pfnCreate; DirectDrawCreateExProc m_pfnCreateEx; IDirectDraw * m_pDD; IDirectDraw7 * m_pDD7;
// DX Transforms
UINT m_cDxTxRef; IDXTransformFactory * m_pdxXformFac; IDXSurfaceFactory * m_pdxSurfFac; };
/***************************************************************************\
* * class DxSurface * * DxSurface maintains a single DXTX Surface. * \***************************************************************************/
class DxSurface { // Construction
public: DxSurface(); ~DxSurface(); HRESULT Create(SIZE sizePxl);
// Operations
public: inline IDXSurface* GetSurface() const; BOOL CopyDC(HDC hdcSrc, const RECT & rcCrop); BOOL CopyBitmap(HBITMAP hbmpSrc, const RECT * prcCrop); inline SIZE GetSize() const;
// Implementation
protected: BOOL FixAlpha();
// Data
protected: IDXSurface * m_pdxSurface; SIZE m_sizePxl; // (Cached) size of surface in pixels
GUID m_guidFormat; // (Cached) format of the surface
DXSAMPLEFORMATENUM m_sf; // Sample Format
};
#include "DxManager.inl"
#endif // SERVICES__DXManager_h__INCLUDED
|