//----------------------------------------------------------------------------- // File: D3DFont.h // // Desc: Texture-based font class // // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- #ifndef D3DFONT_H #define D3DFONT_H #include #include // Font creation flags #define D3DFONT_BOLD 0x0001 #define D3DFONT_ITALIC 0x0002 #define D3DFONT_ZENABLE 0x0004 // Font rendering flags #define D3DFONT_CENTERED_X 0x0001 #define D3DFONT_CENTERED_Y 0x0002 #define D3DFONT_TWOSIDED 0x0004 #define D3DFONT_FILTERED 0x0008 //----------------------------------------------------------------------------- // Name: class CD3DFont // Desc: Texture-based font class for doing text in a 3D scene. //----------------------------------------------------------------------------- class CD3DFont { TCHAR m_strFontName[80]; // Font properties DWORD m_dwFontHeight; DWORD m_dwFontFlags; LPDIRECT3DDEVICE9 m_pd3dDevice; // A D3DDevice used for rendering LPDIRECT3DTEXTURE9 m_pTexture; // The d3d texture for this font LPDIRECT3DVERTEXBUFFER9 m_pVB; // VertexBuffer for rendering text DWORD m_dwTexWidth; // Texture dimensions DWORD m_dwTexHeight; FLOAT m_fTextScale; FLOAT m_fTexCoords[256-32][4]; DWORD m_dwSpacing; // Character pixel spacing per side // Stateblocks for setting and restoring render states LPDIRECT3DSTATEBLOCK9 m_pStateBlockSaved; LPDIRECT3DSTATEBLOCK9 m_pStateBlockDrawText; public: // 2D and 3D text drawing functions HRESULT DrawText( FLOAT x, FLOAT y, DWORD dwColor, const TCHAR* strText, DWORD dwFlags=0L ); HRESULT DrawTextScaled( FLOAT x, FLOAT y, FLOAT z, FLOAT fXScale, FLOAT fYScale, DWORD dwColor, const TCHAR* strText, DWORD dwFlags=0L ); HRESULT Render3DText( const TCHAR* strText, DWORD dwFlags=0L ); // Function to get extent of text HRESULT GetTextExtent( const TCHAR* strText, SIZE* pSize ); // Initializing and destroying device-dependent objects HRESULT InitDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice ); HRESULT RestoreDeviceObjects(); HRESULT InvalidateDeviceObjects(); HRESULT DeleteDeviceObjects(); // Constructor / destructor CD3DFont( const TCHAR* strFontName, DWORD dwHeight, DWORD dwFlags=0L ); ~CD3DFont(); }; #endif