39#include "IGUIEnvironment.h"
41#include "IVideoDriver.h"
42#include "IrrlichtDevice.h"
92 void preload(u32 char_index, FT_Face face,
CGUITTFont *parent, u32 font_size,
const FT_Int32 loadFlags);
98 video::IImage*
createGlyphImage(
const FT_Bitmap& bits, video::IVideoDriver* driver)
const;
139 bool flgmip =
driver->getTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS);
140 driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS,
false);
141 bool flgcpy =
driver->getTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY);
142 driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY,
true);
147 case FT_PIXEL_MODE_MONO:
150 case FT_PIXEL_MODE_GRAY:
157 driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, flgmip);
158 driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY, flgcpy);
176 video::ECOLOR_FORMAT format =
texture->getColorFormat();
177 core::dimension2du size =
texture->getOriginalSize();
178 video::IImage* pageholder =
driver->createImageFromData(format, size, ptr,
true,
false);
265 void setFontHinting(
const bool enable,
const bool enable_auto_hinting =
true);
268 virtual void draw(
const core::stringw& text,
const core::rect<s32>& position,
269 video::SColor color,
bool hcenter=
false,
bool vcenter=
false,
270 const core::rect<s32>* clip=0)
override;
273 bool hcenter=
false,
bool vcenter=
false,
274 const core::rect<s32>* clip=0);
277 virtual core::dimension2du
getDimension(
const wchar_t* text)
const override;
289 virtual core::vector2di
getKerning(
const wchar_t thisLetter,
const wchar_t previousLetter)
const override;
334 static std::map<io::path, SGUITTFace*>
c_faces;
339 core::dimension2d<u32>
getDimension(
const std::u32string& text)
const;
346 bool load(
const io::path&
filename,
const u32
size,
const bool antialias,
const bool transparency);
352 load_flags = FT_LOAD_DEFAULT | FT_LOAD_RENDER;
361 core::vector2di
getKerning(
const char32_t thisLetter,
const char32_t previousLetter)
const;
Definition enriched_string.h:29
Class representing a TrueType font.
Definition CGUITTFont.h:214
s32 getAscender() const
Definition CGUITTFont.h:320
video::ITexture * getPageTextureByIndex(const u32 &page_index) const
This function is for debugging mostly.
Definition CGUITTFont.cpp:910
s32 GlobalKerningHeight
Definition CGUITTFont.h:373
io::path filename
Definition CGUITTFont.h:364
u32 shadow_offset
Definition CGUITTFont.h:375
void reset_images()
Definition CGUITTFont.cpp:348
video::IVideoDriver * getDriver() const
Definition CGUITTFont.h:318
u32 getHeightFromCharacter(char32_t c) const
Definition CGUITTFont.cpp:715
void setMonochrome(const bool flag)
Tells the font to use monochrome rendering.
Definition CGUITTFont.cpp:444
bool load(const io::path &filename, const u32 size, const bool antialias, const bool transparency)
Definition CGUITTFont.cpp:249
void setBatchLoadSize(u32 batch_size)
Sets the amount of glyphs to batch load.
Definition CGUITTFont.h:229
virtual void draw(const core::stringw &text, const core::rect< s32 > &position, video::SColor color, bool hcenter=false, bool vcenter=false, const core::rect< s32 > *clip=0) override
Draws some text and clips it to the specified rectangle if wanted.
Definition CGUITTFont.cpp:457
bool isTransparent() const
Check the font's transparency.
Definition CGUITTFont.h:238
core::array< CGUITTGlyphPage * > Glyph_Pages
Definition CGUITTFont.h:369
void update_load_flags()
Definition CGUITTFont.h:349
bool useAutoHinting() const
Check if the font auto-hinting is enabled.
Definition CGUITTFont.h:242
video::IImage * createTextureFromChar(const char32_t &ch)
Create corresponding character's software image copy from the font, so you can use this data just lik...
Definition CGUITTFont.cpp:875
core::dimension2du max_page_texture_size
Definition CGUITTFont.h:329
bool useHinting() const
Check if the font hinting is enabled.
Definition CGUITTFont.h:245
FT_Face tt_face
Definition CGUITTFont.h:365
core::array< SGUITTGlyph > Glyphs
Definition CGUITTFont.h:370
static FT_Library c_library
Definition CGUITTFont.h:333
u32 getGlyphIndexByChar(char32_t c) const
Definition CGUITTFont.cpp:735
void setFallback(gui::IGUIFont *font)
Set font that should be used for glyphs not present in ours.
Definition CGUITTFont.h:307
void update_glyph_pages() const
Definition CGUITTFont.cpp:363
FT_Int32 load_flags
Definition CGUITTFont.h:367
FT_Size_Metrics font_metrics
Definition CGUITTFont.h:366
u32 getFontSize() const
Get the font size.
Definition CGUITTFont.h:235
CGUITTFont(IGUIEnvironment *env)
Constructor.
Definition CGUITTFont.cpp:232
u32 batch_load_size
Definition CGUITTFont.h:328
s32 GlobalKerningWidth
Definition CGUITTFont.h:372
u32 shadow_alpha
Definition CGUITTFont.h:376
static CGUITTFont * createTTFont(IGUIEnvironment *env, const io::path &filename, const u32 size, const bool antialias=true, const bool transparency=true, const u32 shadow=0, const u32 shadow_alpha=255)
Creates a new TrueType font and returns a pointer to it.
Definition CGUITTFont.cpp:206
void setFontHinting(const bool enable, const bool enable_auto_hinting=true)
Enables or disables font hinting.
Definition CGUITTFont.cpp:450
virtual core::dimension2du getDimension(const wchar_t *text) const override
Returns the dimension of a text string.
Definition CGUITTFont.cpp:630
u32 getLastGlyphPageIndex() const
Get the last glyph page's index.
Definition CGUITTFont.h:304
gui::IGUIFont * fallback
Definition CGUITTFont.h:378
CGUITTGlyphPage * getLastGlyphPage() const
Get the last glyph page if there's still available slots.
Definition CGUITTFont.cpp:372
std::u32string Invisible
Definition CGUITTFont.h:374
bool useMonochrome() const
Check if the font is being loaded as a monochrome font.
Definition CGUITTFont.h:249
bool use_auto_hinting
Definition CGUITTFont.h:326
u32 getWidthFromCharacter(char32_t c) const
Definition CGUITTFont.cpp:696
virtual s32 getCharacterFromPos(const wchar_t *text, s32 pixel_x) const override
Calculates the index of the character in the text which is on a specific position.
Definition CGUITTFont.cpp:778
bool use_transparency
Definition CGUITTFont.h:324
bool use_hinting
Definition CGUITTFont.h:325
virtual ~CGUITTFont()
Destructor.
Definition CGUITTFont.cpp:319
static bool c_libraryLoaded
Definition CGUITTFont.h:335
bool use_monochrome
Definition CGUITTFont.h:323
static std::map< io::path, SGUITTFace * > c_faces
Definition CGUITTFont.h:334
virtual void setKerningHeight(s32 kerning) override
Sets global kerning height for the font.
Definition CGUITTFont.cpp:815
virtual void setKerningWidth(s32 kerning) override
Sets global kerning width for the font.
Definition CGUITTFont.cpp:810
std::u32string convertWCharToU32String(const wchar_t *const) const
Definition CGUITTFont.cpp:918
void setMaxPageTextureSize(const core::dimension2du &texture_size)
Sets the maximum texture size for a page of glyphs.
Definition CGUITTFont.h:232
video::IVideoDriver * Driver
Definition CGUITTFont.h:363
CGUITTGlyphPage * createGlyphPage(const u8 pixel_mode)
Create a new glyph page texture.
Definition CGUITTFont.cpp:386
void setTransparency(const bool flag)
Tells the font to allow transparency when rendering.
Definition CGUITTFont.cpp:438
u32 size
Definition CGUITTFont.h:327
virtual void setInvisibleCharacters(const wchar_t *s) override
Define which characters should not be drawn by the font.
Definition CGUITTFont.cpp:870
virtual core::vector2di getKerning(const wchar_t thisLetter, const wchar_t previousLetter) const override
Returns the distance between letters.
Definition CGUITTFont.cpp:820
Holds a sheet of glyphs.
Definition CGUITTFont.h:119
bool dirty
Definition CGUITTFont.h:200
core::array< core::recti > render_source_rects
Definition CGUITTFont.h:203
u32 used_slots
Definition CGUITTFont.h:199
void pushGlyphToBePaged(const SGUITTGlyph *glyph)
Add the glyph to a list of glyphs to be paged.
Definition CGUITTFont.h:165
io::path name
Definition CGUITTFont.h:209
u32 available_slots
Definition CGUITTFont.h:198
video::IVideoDriver * driver
Definition CGUITTFont.h:208
core::array< video::SColor > render_colors
Definition CGUITTFont.h:204
core::array< const SGUITTGlyph * > glyph_to_be_paged
Definition CGUITTFont.h:207
bool createPageTexture(const u8 &pixel_mode, const core::dimension2du &texture_size)
Create the actual page texture,.
Definition CGUITTFont.h:134
core::array< core::vector2di > render_positions
Definition CGUITTFont.h:202
~CGUITTGlyphPage()
Definition CGUITTFont.h:122
video::ITexture * texture
Definition CGUITTFont.h:197
CGUITTGlyphPage(video::IVideoDriver *Driver, const io::path &texture_name)
Definition CGUITTFont.h:121
void updateTexture()
Updates the texture atlas with new glyphs.
Definition CGUITTFont.h:171
Definition clientmap.h:30
Structure representing a single TrueType glyph.
Definition CGUITTFont.h:56
void unload()
Unloads the glyph.
Definition CGUITTFont.cpp:193
video::IImage * surface
This is just the temporary image holder.
Definition CGUITTFont.h:114
core::recti source_rect
The source rectangle for the glyph.
Definition CGUITTFont.h:104
SGUITTGlyph()
Constructor.
Definition CGUITTFont.h:58
void preload(u32 char_index, FT_Face face, CGUITTFont *parent, u32 font_size, const FT_Int32 loadFlags)
Preload the glyph.
Definition CGUITTFont.cpp:145
video::IImage * createGlyphImage(const FT_Bitmap &bits, video::IVideoDriver *driver) const
Creates the IImage object from the FT_Bitmap.
Definition CGUITTFont.cpp:72
u32 glyph_page
The page the glyph is on.
Definition CGUITTFont.h:101
SGUITTGlyph(SGUITTGlyph &&other) noexcept
This class would be trivially copyable except for the reference count on surface.
Definition CGUITTFont.h:69
core::vector2di offset
The offset of glyph when drawn.
Definition CGUITTFont.h:107
bool isLoaded() const
If true, the glyph has been loaded.
Definition CGUITTFont.h:83
DISABLE_CLASS_COPY(SGUITTGlyph)
core::vector2di advance
Glyph advance information.
Definition CGUITTFont.h:110
~SGUITTGlyph()
Destructor.
Definition CGUITTFont.h:80