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 UTEXTUREFONT_HPP
00029
#define UTEXTUREFONT_HPP
00030
00031
#include "ufontrenderer.hpp"
00032
00033
#include "ufontmetrics.hpp"
00034
#include "ufontinfo.hpp"
00035
00036
#include "../util/ugeom.hpp"
00037
00038
00039
namespace ufo {
00040
00041
class UTextureFontMetrics;
00042
00043
struct UTextureFontData;
00044
class UImageIO;
00045
00046
class UFontPlugin;
00047
class UPluginBase;
00048
00055 class UFO_EXPORT UTextureFontRenderer :
public UFontRenderer {
00056 UFO_DECLARE_ABSTRACT_CLASS(UTextureFontRenderer)
00057
private:
00058
friend class UTextureFontMetrics;
00059
00060
public:
00066 UTextureFontRenderer(
const UFontInfo & fontInfo);
00067
00068 ~UTextureFontRenderer();
00069
00070
public:
00072
bool isValid()
const;
00073
00074
public:
00075
int drawString(
UGraphics * g,
const char * text,
unsigned int nChar,
00076
int xA = 0,
int yA = 0);
00077
00078
void beginDrawing(
UGraphics * g);
00079
void endDrawing(
UGraphics * g);
00080
00081
void refresh();
00082
00083
const UFontMetrics * getFontMetrics()
const;
00084
00085
UFontInfo getFontInfo()
const;
00086
00087 std::string getSystemName()
const;
00088
00089
public:
00090
static UPluginBase * createPlugin();
00091
static void destroyPlugin(
UPluginBase * plugin);
00092
00093
private:
00094
void createTexture(
UImageIO * imageIO);
00095
UImageIO * loadImageFile();
00096
void genGlyphMetrics(
UImageIO * imageIO);
00097
00098
public:
00099
static UFontInfo queryFont(
const UFontInfo & fontInfo);
00101
static std::vector<UFontInfo> listFonts(
const UFontInfo & fontInfo);
00103
static std::vector<UFontInfo> listFonts();
00104
00105
private:
00106
UFontInfo m_fontInfo;
00107 UTextureFontMetrics * m_fontMetrics;
00109 std::string m_systemName;
00110
00111 UTextureFontData * m_data;
00112
bool m_isValid;
00113 };
00114
00115
00116 }
00117
00118
#endif // UTEXTUREFONT_HPP