GfxFont.h
上传用户:jalin138
上传日期:2022-02-12
资源大小:5720k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. //////////////////////////////////////////////////////////////////////////
  2. //
  3. // 中文字体绘制类
  4. //
  5. // 作者:微妙的平衡(BOGY)
  6. //
  7. // 版本:For HGE v1.6
  8. //
  9. //////////////////////////////////////////////////////////////////////////
  10. #ifndef GDIFONT_H
  11. #define GDIFONT_H
  12. #include "include/hgesprite.h"
  13. //#include <hgesprite.h>
  14. static const unsigned int font_count = 0xFFFF;// = sizeof(wchar_t);
  15. class GfxFont
  16. {
  17. public:
  18. GfxFont(const char* lpsFontName, int nFaceSize, BOOL bBold = FALSE, BOOL bItalic = FALSE, BOOL bAntialias = TRUE);
  19. ~GfxFont(void);
  20. public:
  21. // 渲染文本
  22. virtual void Print( float x, float y, const char *format, ... );
  23. virtual void Render(float x, float y, const wchar_t* text );
  24. // 设置与获取颜色
  25. virtual void SetColor( DWORD dwColor, int i = -1 );
  26. virtual DWORD GetColor( int i = 0 );
  27. // 获取文本宽高
  28. virtual SIZE GetTextSize( const wchar_t* text );
  29. // 根据坐标获取字符
  30. virtual wchar_t GetCharacterFromPos( const wchar_t* text, float pixel_x, float pixel_y );
  31. // 设置字间距
  32. virtual void SetKerningWidth( float kerning );
  33. virtual void SetKerningHeight( float kerning );
  34. // 获取字间距
  35. virtual float GetKerningWidth();
  36. virtual float GetKerningHeight();
  37. // 字体大小
  38. virtual float GetFontSize();
  39. private:
  40. // 根据字符获取轮廓
  41. unsigned int GetGlyphByCharacter( wchar_t c );
  42. inline float GetWidthFromCharacter( wchar_t c, bool original = false );
  43. inline void CacheCharacter(unsigned int idx, wchar_t c);
  44. typedef struct tagEngineFontGlyph
  45. {
  46. HTEXTURE t;
  47. float w;
  48. float h;
  49. float x;
  50. float y;
  51. float c;
  52. }TENGINEFONTGLYPH;
  53. TENGINEFONTGLYPH m_Glyphs[font_count];
  54. UINT m_nAntialias;//反锯齿
  55. LONG m_nAscent;//基线
  56. DWORD m_dwFontColor;
  57. float m_nFontSize;
  58. float m_nKerningWidth;
  59. float m_nKerningHeight;
  60. class HGE* m_pHGE;
  61. class hgeSprite* m_pSprite;
  62. // GDI设备
  63. HDC m_hMemDC;
  64. HFONT m_hFont;
  65. };
  66. #endif//GDIFONT_H