//----------------------------------------------------------------------------- // File: D3DFont.h // // Desc: Texture-based font class // //@@BEGIN_MSINTERNAL // // Hist: 06.01.00 - mwetzel - Last modified // //@@END_MSINTERNAL // Copyright (c) 1999-2000 Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- #ifndef D3DFONT_H #define D3DFONT_H #include #include // Font creation flags #define D3DFONT_BOLD 0x0001 #define D3DFONT_ITALIC 0x0002 // Font rendering flags #define D3DFONT_CENTERED 0x0001 #define D3DFONT_TWOSIDED 0x0002 #define D3DFONT_FILTERED 0x0004 //----------------------------------------------------------------------------- // 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; LPDIRECT3DDEVICE8 m_pd3dDevice; // A D3DDevice used for rendering LPDIRECT3DTEXTURE8 m_pTexture; // The d3d texture for this font LPDIRECT3DVERTEXBUFFER8 m_pVB; // VertexBuffer for rendering text DWORD m_dwTexWidth; // Texture dimensions DWORD m_dwTexHeight; FLOAT m_fTextScale; FLOAT m_fTexCoords[128-32][4]; // Stateblocks for setting and restoring render states DWORD m_dwSavedStateBlock; DWORD m_dwDrawTextStateBlock; public: // 2D and 3D text drawing functions HRESULT DrawText( FLOAT x, FLOAT y, DWORD dwColor, TCHAR* strText, DWORD dwFlags=0L ); HRESULT DrawTextScaled( FLOAT x, FLOAT y, FLOAT z, FLOAT fXScale, FLOAT fYScale, DWORD dwColor, TCHAR* strText, DWORD dwFlags=0L ); HRESULT Render3DText( TCHAR* strText, DWORD dwFlags=0L ); // Function to get extent of text HRESULT GetTextExtent( TCHAR* strText, SIZE* pSize ); // Initializing and destroying device-dependent objects HRESULT InitDeviceObjects( LPDIRECT3DDEVICE8 pd3dDevice ); HRESULT RestoreDeviceObjects(); HRESULT InvalidateDeviceObjects(); HRESULT DeleteDeviceObjects(); // Constructor / destructor CD3DFont( TCHAR* strFontName, DWORD dwHeight, DWORD dwFlags=0L ); ~CD3DFont(); }; #endif