/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// //@cpp #ifndef S3D_DRV_D3D9_ENUM_H #define S3D_DRV_D3D9_ENUM_H #include "drv_d3d9_types.h" #include "drv_d3d9_param.h" /////////////////////////////////////////////////////////////////////////////// //@ typedef s3d_CUtilArray s3d_CDrvD3d9FmtArray; //@ typedef s3d_CUtilMap s3d_CDrvD3d9FmtMap; /////////////////////////////////////////////////////////////////////////////// //@ struct s3d_CDrvD3d9EnumAdapterFmt { // AdapterFmt->BackBufferFmts s3d_CDrvD3d9FmtMap m_BackBufFmtMap; // BackBufferFmt->DepthstencilFmts s3d_CDrvD3d9FmtMap m_DepthFmtMap; }; //@ typedef s3d_CUtilArray s3d_CDrvD3d9EnumAdapterFmtArray; /////////////////////////////////////////////////////////////////////////////// //@ struct s3d_CDrvD3d9EnumEntry { int m_Adapter; D3DFORMAT m_AdapterFmt; s3d_CDrvGfxEnumEntry m_GfxEnumEntry; int Compare(const s3d_CDrvD3d9EnumEntry &e) const; bool operator==(const s3d_CDrvD3d9EnumEntry &e) const; bool operator<(const s3d_CDrvD3d9EnumEntry &e) const; static int KeyOfFmt(D3DFORMAT Fmt); }; //@ typedef s3d_CUtilArray s3d_CDrvD3d9EnumArray; /////////////////////////////////////////////////////////////////////////////// //@ struct s3d_CDrvD3d9EnumRef { int m_Adapter; D3DFORMAT m_AdapterFmt; int m_Width; int m_Height; int m_Depth; int m_Freq; bool m_Fullscreen; static int Compare( const s3d_CDrvD3d9EnumEntry &Entry, const s3d_CDrvD3d9EnumRef &Ref); }; S3D_SYS_INLINE bool operator ==( const s3d_CDrvD3d9EnumEntry &Entry, const s3d_CDrvD3d9EnumRef &Ref) { return s3d_CDrvD3d9EnumRef::Compare(Entry, Ref) == 0; } S3D_SYS_INLINE bool operator <( const s3d_CDrvD3d9EnumEntry &Entry, const s3d_CDrvD3d9EnumRef &Ref) { return s3d_CDrvD3d9EnumRef::Compare(Entry, Ref) < 0; } /////////////////////////////////////////////////////////////////////////////// //@ class s3d_CDrvD3d9Enum { public: bool Enumerate( s3d_CUtilMsgHandler *MsgHandler, s3d_CUtilStr_cr Info, s3d_CUtilMemPool *MemPool, s3d_CDrvD3d9Param *D3dParam, LPDIRECT3D9 D3d, bool Fullscreen, bool NoStencil); void CollectEntries( s3d_CUtilArray &EnumArray); bool SearchEntry( s3d_CDrvD3d9EnumEntry &EnumEntry, UINT Adapter, int Prop, int Width, int Height, int Depth, int Frequency, bool Fullscreen); void GetBufferFmts( int Depth, D3DFORMAT &BackBufFmt, D3DFORMAT &DepthStencilFmt, const s3d_CDrvD3d9EnumEntry &EnumEntry); private: s3d_CDrvD3d9EnumArray m_ModeArray; s3d_CDrvD3d9EnumAdapterFmtArray m_AdapterFmtArray; bool CheckRequirements(const D3DCAPS9 &Caps); }; /////////////////////////////////////////////////////////////////////////////// #endif