Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_VIDEODRIVER_FONT_H__
00009 #define __SP_VIDEODRIVER_FONT_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013 #include "Base/spInputOutputString.hpp"
00014 #include "Base/spDimension.hpp"
00015 #include "Base/spMaterialColor.hpp"
00016 #include "RenderSystem/spTextureBase.hpp"
00017
00018
00019 namespace sp
00020 {
00021 namespace video
00022 {
00023
00024
00026 enum EFontFlags
00027 {
00028 FONT_BOLD = 0x01,
00029 FONT_ITALIC = 0x02,
00030 FONT_UNDERLINED = 0x04,
00031 FONT_STRIKEOUT = 0x08,
00032 FONT_SYMBOLS = 0x10,
00033 FONT_BITMAP = 0x20,
00034 };
00035
00036 struct SP_EXPORT SFontGlyph
00037 {
00038 SFontGlyph();
00039 SFontGlyph(const dim::rect2di &GlyphRect);
00040 SFontGlyph(const dim::rect2di &GlyphRect, s32 GlyphStartOffset, s32 GlyphDrawnWidth, s32 GlyphWhiteSpace);
00041 SFontGlyph(const SFontGlyph &Other);
00042 virtual ~SFontGlyph();
00043
00044
00045
00047 inline s32 getWidth() const
00048 {
00049 return DrawnWidth + StartOffset + WhiteSpace;
00050 }
00051
00052
00053 dim::rect2di Rect;
00054 s32 StartOffset;
00055 s32 DrawnWidth;
00056 s32 WhiteSpace;
00057 };
00058
00059
00060 class SP_EXPORT Font
00061 {
00062
00063 public:
00064
00065 Font();
00066 Font(
00067 void* BufferRawData, const io::stringc &FontName,
00068 const dim::size2di &Size, const std::vector<SFontGlyph> &GlyphList,
00069 video::Texture* FontTexture = 0
00070 );
00071 ~Font();
00072
00073
00074
00076 s32 getStringWidth(const io::stringc &Text) const;
00077
00079 s32 getStringHeight(const io::stringc &Text) const;
00080
00081
00082
00087 inline void* getBufferRawData() const
00088 {
00089 return BufferRawData_;
00090 }
00091
00093 inline dim::size2di getSize() const
00094 {
00095 return Size_;
00096 }
00098 inline io::stringc getName() const
00099 {
00100 return FontName_;
00101 };
00102
00109 inline s32 getHeight() const
00110 {
00111 return Size_.Height;
00112 }
00113
00115 inline dim::size2di getStringSize(const io::stringc &Text) const
00116 {
00117 return dim::size2di(getStringWidth(Text), Size_.Height);
00118 }
00119
00121 inline video::Texture* getTexture() const
00122 {
00123 return Texture_;
00124 }
00125
00126 inline const std::vector<SFontGlyph>& getGlyphList() const
00127 {
00128 return GlyphList_;
00129 }
00130
00131 private:
00132
00133 #ifdef SP_COMPILE_WITH_DIRECT3D11
00134 friend class Direct3D11Driver;
00135 #endif
00136 #if defined(SP_COMPILE_WITH_OPENGL) || defined(SP_COMPILE_WITH_OPENGLES1)
00137 friend class GLFixedFunctionPipeline;
00138 #endif
00139
00140
00141
00142 void* BufferRawData_;
00143
00144 io::stringc FontName_;
00145 dim::size2di Size_;
00146
00147 std::vector<SFontGlyph> GlyphList_;
00148
00149 video::Texture* Texture_;
00150
00151 };
00152
00153
00154 }
00155
00156 }
00157
00158
00159 #endif
00160
00161
00162
00163