00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
#ifndef UGL_BUILTINFONTRENDERER_HPP
00029
#define UGL_BUILTINFONTRENDERER_HPP
00030
00031
#include "../font/ufontrenderer.hpp"
00032
00033
#include <vector>
00034
00035
#include "../font/ufontinfo.hpp"
00036
#include "../font/ufontmetrics.hpp"
00037
00038
00039
namespace ufo {
00040
00041
class UImageIO;
00042
00043
class UFontPlugin;
00044
class UPluginBase;
00045
class UGL_BuiltinFontMetrics;
00046
00047
00048
struct UBuiltinFontStruct {
00049
const char * m_systemName;
00050
int m_ascent;
00051
int m_descent;
00052
int m_maxAscent;
00053
int m_maxDescent;
00054
int m_maxWidth;
00055
const uint8_t ** m_characters;
00056 };
00057
00058
extern const UBuiltinFontStruct s_font_fixed8x13;
00059
00060
extern const UBuiltinFontStruct s_font_helvetica10;
00061
extern const UBuiltinFontStruct s_font_helvetica12;
00062
00063
extern const UBuiltinFontStruct s_font_timesRoman10;
00064
00065
00066
00076 class UFO_EXPORT UGL_BuiltinFontRenderer :
public UFontRenderer {
00077 UFO_DECLARE_ABSTRACT_CLASS(UGL_BuiltinFontRenderer)
00078
private:
00079
friend class UGL_BuiltinFontMetrics;
00080
public:
00084 UGL_BuiltinFontRenderer(
const UFontInfo & fontInfo);
00085 ~UGL_BuiltinFontRenderer();
00086
00087
public:
00088
int drawString(
UGraphics * g,
const char * text,
unsigned int nChar,
00089
int xA = 0,
int yA = 0);
00090
00091
void beginDrawing(
UGraphics * g);
00092
void endDrawing(
UGraphics * g);
00093
00094
void refresh();
00095
00096
const UFontMetrics * getFontMetrics()
const;
00097
00098
UFontInfo getFontInfo()
const;
00099
00100 std::string getSystemName()
const;
00101
00102
public:
00103 UBuiltinFontStruct getFontStruct()
const;
00104
00105
private:
00106
void createTexture(
UImageIO * imageIO);
00107
UImageIO * loadImageFile();
00108
void genGlyphMetrics(
UImageIO * imageIO);
00109
00110
public:
00111
static UPluginBase * createPlugin();
00112
static void destroyPlugin(
UPluginBase * plugin);
00113
00114
private:
00115
UFontInfo m_fontInfo;
00116 UGL_BuiltinFontMetrics * m_fontMetrics;
00117
00118 UBuiltinFontStruct m_fontStruct;
00120
float m_xorig;
00122
float m_yorig;
00123
00124
float m_raster_position[4];
00125 };
00126
00127 }
00128
00129
#endif // UGL_BUILTINFONTRENDERER_HPP