00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef NL_FONT_GENERATOR_H
00027 #define NL_FONT_GENERATOR_H
00028
00029
00030 #undef NL_DONT_USE_EXTERNAL_CODE
00031
00032 #ifndef NL_DONT_USE_EXTERNAL_CODE
00033 # include <freetype/freetype.h>
00034 #else // NL_DONT_USE_EXTERNAL_CODE
00035
00036 #endif // NL_DONT_USE_EXTERNAL_CODE
00037
00038 #include "nel/misc/types_nl.h"
00039 #include <string>
00040
00041
00042 namespace NL3D {
00043
00044
00051 class CFontGenerator
00052 {
00053 public:
00054
00058 CFontGenerator (const std::string &fontFileName, const std::string &fontExFileName = "");
00059
00060 virtual ~CFontGenerator ();
00061
00069 uint8 *getBitmap (ucchar c, uint32 size, uint32 &width, uint32 &height, uint32 &pitch, sint32 &left, sint32 &top, sint32 &advx, uint32 &glyphIndex);
00070
00075 void getSizes (ucchar c, uint32 size, uint32 &width, uint32 &height);
00076
00077 void getKerning (ucchar left, ucchar right, sint32 &kernx);
00078
00079 uint32 getCharIndex (ucchar c);
00080
00081 std::string FontFileName;
00082 private:
00083
00084 #ifndef NL_DONT_USE_EXTERNAL_CODE
00085 const char *getFT2Error(FT_Error fte);
00086
00087 static FT_Library _Library;
00088 static bool _LibraryInit;
00089
00090 FT_Face _Face;
00091 #else // NL_DONT_USE_EXTERNAL_CODE
00092
00093 #endif // NL_DONT_USE_EXTERNAL_CODE
00094 };
00095
00096
00097
00104 struct CFontDescriptor
00105 {
00106 CFontGenerator *FontGen;
00107 ucchar C;
00108 uint32 Size;
00109
00115 CFontDescriptor(CFontGenerator *fg, ucchar c, uint32 sz): FontGen(fg),C(c),Size(sz) { }
00116
00120 bool operator< (const CFontDescriptor& desc) const
00121 {
00122 if (FontGen->FontFileName<desc.FontGen->FontFileName)
00123 return true;
00124 if (FontGen->FontFileName>desc.FontGen->FontFileName)
00125 return false;
00126 if (C<desc.C)
00127 return true;
00128 if (C>desc.C)
00129 return false;
00130 return Size<desc.Size;
00131 }
00132 };
00133
00134
00135 }
00136
00137
00138 #endif // NL_FONT_GENERATOR_H
00139
00140