37#include "IGUIEnvironment.h"
39#include "ISceneManager.h"
40#include "IVideoDriver.h"
41#include "IrrlichtDevice.h"
91 void preload(u32 char_index, FT_Face face, video::IVideoDriver* driver, u32 font_size,
const FT_Int32 loadFlags);
97 video::IImage*
createGlyphImage(
const FT_Bitmap& bits, video::IVideoDriver* driver)
const;
143 bool flgmip =
driver->getTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS);
144 driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS,
false);
145 bool flgcpy =
driver->getTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY);
146 driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY,
true);
151 case FT_PIXEL_MODE_MONO:
154 case FT_PIXEL_MODE_GRAY:
161 driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, flgmip);
162 driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY, flgcpy);
180 video::ECOLOR_FORMAT format =
texture->getColorFormat();
181 core::dimension2du size =
texture->getOriginalSize();
182 video::IImage* pageholder =
driver->createImageFromData(format, size, ptr,
true,
false);
277 virtual void setFontHinting(
const bool enable,
const bool enable_auto_hinting =
true);
280 virtual void draw(
const core::stringw& text,
const core::rect<s32>& position,
281 video::SColor color,
bool hcenter=
false,
bool vcenter=
false,
282 const core::rect<s32>* clip=0);
285 bool hcenter=
false,
bool vcenter=
false,
286 const core::rect<s32>* clip=0);
292 virtual core::dimension2d<u32>
getDimension(
const wchar_t* text)
const;
304 virtual s32
getKerningWidth(
const wchar_t* thisLetter=0,
const wchar_t* previousLetter=0)
const;
305 virtual s32
getKerningWidth(
const char32_t thisLetter=0,
const char32_t previousLetter=0)
const;
339 (
const wchar_t* text, scene::ISceneManager* smgr, scene::ISceneNode* parent = 0,
340 const video::SColor& color = video::SColor(255, 0, 0, 0),
bool center =
false );
356 static std::map<io::path, SGUITTFace*>
c_faces;
363 core::dimension2d<u32>
getDimension(
const std::u32string& text)
const;
370 bool load(
const io::path&
filename,
const u32
size,
const bool antialias,
const bool transparency);
376 load_flags = FT_LOAD_DEFAULT | FT_LOAD_RENDER;
388 core::vector2di
getKerning(
const wchar_t thisLetter,
const wchar_t previousLetter)
const;
389 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:226
virtual core::array< scene::ISceneNode * > addTextSceneNode(const wchar_t *text, scene::ISceneManager *smgr, scene::ISceneNode *parent=0, const video::SColor &color=video::SColor(255, 0, 0, 0), bool center=false)
Add a list of scene nodes generated by putting font textures on the 3D planes.
Definition CGUITTFont.cpp:1074
s32 getAscender() const
Definition CGUITTFont.h:342
virtual video::ITexture * getPageTextureByIndex(const u32 &page_index) const
This function is for debugging mostly.
Definition CGUITTFont.cpp:1027
virtual void setKerningHeight(s32 kerning)
Sets global kerning height for the font.
Definition CGUITTFont.cpp:907
s32 GlobalKerningHeight
Definition CGUITTFont.h:406
io::path filename
Definition CGUITTFont.h:397
u32 shadow_offset
Definition CGUITTFont.h:408
u32 getWidthFromCharacter(wchar_t c) const
Definition CGUITTFont.cpp:765
void reset_images()
Definition CGUITTFont.cpp:412
static scene::SMesh shared_plane_
Definition CGUITTFont.h:359
virtual void setBatchLoadSize(u32 batch_size)
Sets the amount of glyphs to batch load.
Definition CGUITTFont.h:241
virtual void setMonochrome(const bool flag)
Tells the font to use monochrome rendering.
Definition CGUITTFont.cpp:507
virtual u32 getFontSize() const
Get the font size.
Definition CGUITTFont.h:247
u32 getHeightFromCharacter(wchar_t c) const
Definition CGUITTFont.cpp:793
bool load(const io::path &filename, const u32 size, const bool antialias, const bool transparency)
Definition CGUITTFont.cpp:273
virtual void setKerningWidth(s32 kerning)
Sets global kerning width for the font.
Definition CGUITTFont.cpp:902
core::array< CGUITTGlyphPage * > Glyph_Pages
Definition CGUITTFont.h:402
void update_load_flags()
Definition CGUITTFont.h:373
virtual 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:992
core::dimension2du max_page_texture_size
Definition CGUITTFont.h:351
virtual void setMaxPageTextureSize(const core::dimension2du &texture_size)
Sets the maximum texture size for a page of glyphs.
Definition CGUITTFont.h:244
virtual void setInvisibleCharacters(const wchar_t *s)
Define which characters should not be drawn by the font.
Definition CGUITTFont.cpp:987
irr::IrrlichtDevice * Device
Definition CGUITTFont.h:394
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)
Draws some text and clips it to the specified rectangle if wanted.
Definition CGUITTFont.cpp:520
FT_Face tt_face
Definition CGUITTFont.h:398
core::array< SGUITTGlyph > Glyphs
Definition CGUITTFont.h:403
virtual s32 getKerningHeight() const
Returns the distance between letters.
Definition CGUITTFont.cpp:928
static FT_Library c_library
Definition CGUITTFont.h:355
void setFallback(gui::IGUIFont *font)
Set font that should be used for glyphs not present in ours.
Definition CGUITTFont.h:326
void update_glyph_pages() const
Definition CGUITTFont.cpp:427
virtual bool isTransparent() const
Check the font's transparency.
Definition CGUITTFont.h:250
CGUITTGlyphPage * createGlyphPage(const u8 &pixel_mode)
Create a new glyph page texture.
Definition CGUITTFont.cpp:450
FT_Int32 load_flags
Definition CGUITTFont.h:400
FT_Size_Metrics font_metrics
Definition CGUITTFont.h:399
CGUITTFont(IGUIEnvironment *env)
Constructor.
Definition CGUITTFont.cpp:252
u32 batch_load_size
Definition CGUITTFont.h:350
s32 GlobalKerningWidth
Definition CGUITTFont.h:405
virtual core::dimension2d< u32 > getDimension(const wchar_t *text) const
Returns the dimension of a text string.
Definition CGUITTFont.cpp:699
u32 shadow_alpha
Definition CGUITTFont.h:409
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:226
virtual void setFontHinting(const bool enable, const bool enable_auto_hinting=true)
Enables or disables font hinting.
Definition CGUITTFont.cpp:513
u32 getLastGlyphPageIndex() const
Get the last glyph page's index.
Definition CGUITTFont.h:323
gui::IGUIFont * fallback
Definition CGUITTFont.h:411
CGUITTGlyphPage * getLastGlyphPage() const
Get the last glyph page if there's still available slots.
Definition CGUITTFont.cpp:436
static scene::IMesh * shared_plane_ptr_
Definition CGUITTFont.h:358
std::u32string Invisible
Definition CGUITTFont.h:407
virtual bool useHinting() const
Check if the font hinting is enabled.
Definition CGUITTFont.h:257
bool use_auto_hinting
Definition CGUITTFont.h:348
bool use_transparency
Definition CGUITTFont.h:346
void createSharedPlane()
Definition CGUITTFont.cpp:1035
bool use_hinting
Definition CGUITTFont.h:347
virtual core::dimension2d< u32 > getCharDimension(const wchar_t ch) const
Returns the dimension of a character produced by this font.
Definition CGUITTFont.cpp:694
virtual ~CGUITTFont()
Destructor.
Definition CGUITTFont.cpp:383
virtual bool useAutoHinting() const
Check if the font auto-hinting is enabled.
Definition CGUITTFont.h:254
static bool c_libraryLoaded
Definition CGUITTFont.h:357
bool use_monochrome
Definition CGUITTFont.h:345
u32 getGlyphIndexByChar(wchar_t c) const
Definition CGUITTFont.cpp:822
core::dimension2d< u32 > getDimensionUntilEndOfLine(const wchar_t *p) const
Definition CGUITTFont.cpp:1065
static std::map< io::path, SGUITTFace * > c_faces
Definition CGUITTFont.h:356
virtual s32 getKerningWidth(const wchar_t *thisLetter=0, const wchar_t *previousLetter=0) const
Gets kerning values (distance between letters) for the font. If no parameters are provided,...
Definition CGUITTFont.cpp:912
std::u32string convertWCharToU32String(const wchar_t *const) const
Definition CGUITTFont.cpp:1225
video::IVideoDriver * Driver
Definition CGUITTFont.h:396
gui::IGUIEnvironment * Environment
Definition CGUITTFont.h:395
virtual void setTransparency(const bool flag)
Tells the font to allow transparency when rendering.
Definition CGUITTFont.cpp:501
u32 size
Definition CGUITTFont.h:349
virtual bool useMonochrome() const
Check if the font is being loaded as a monochrome font.
Definition CGUITTFont.h:261
core::vector2di getKerning(const wchar_t thisLetter, const wchar_t previousLetter) const
Definition CGUITTFont.cpp:934
virtual s32 getCharacterFromPos(const wchar_t *text, s32 pixel_x) const
Calculates the index of the character in the text which is on a specific position.
Definition CGUITTFont.cpp:869
Holds a sheet of glyphs.
Definition CGUITTFont.h:124
bool dirty
Definition CGUITTFont.h:212
core::array< core::recti > render_source_rects
Definition CGUITTFont.h:215
u32 used_slots
Definition CGUITTFont.h:211
void pushGlyphToBePaged(const SGUITTGlyph *glyph)
Add the glyph to a list of glyphs to be paged.
Definition CGUITTFont.h:169
io::path name
Definition CGUITTFont.h:221
u32 available_slots
Definition CGUITTFont.h:210
video::IVideoDriver * driver
Definition CGUITTFont.h:220
core::array< video::SColor > render_colors
Definition CGUITTFont.h:216
core::array< const SGUITTGlyph * > glyph_to_be_paged
Definition CGUITTFont.h:219
bool createPageTexture(const u8 &pixel_mode, const core::dimension2du &texture_size)
Create the actual page texture,.
Definition CGUITTFont.h:138
core::array< core::vector2di > render_positions
Definition CGUITTFont.h:214
~CGUITTGlyphPage()
Definition CGUITTFont.h:127
video::ITexture * texture
Definition CGUITTFont.h:209
CGUITTGlyphPage(video::IVideoDriver *Driver, const io::path &texture_name)
Definition CGUITTFont.h:126
void updateTexture()
Updates the texture atlas with new glyphs.
Definition CGUITTFont.h:175
Definition clientmap.h:30
Structure representing a single TrueType glyph.
Definition CGUITTFont.h:56
CGUITTFont * parent
The pointer pointing to the parent (CGUITTFont)
Definition CGUITTFont.h:119
void unload()
Unloads the glyph.
Definition CGUITTFont.cpp:214
video::IImage * surface
This is just the temporary image holder.
Definition CGUITTFont.h:116
core::recti source_rect
The source rectangle for the glyph.
Definition CGUITTFont.h:106
SGUITTGlyph()
Constructor.
Definition CGUITTFont.h:58
FT_Vector advance
Glyph advance information.
Definition CGUITTFont.h:112
video::IImage * createGlyphImage(const FT_Bitmap &bits, video::IVideoDriver *driver) const
Creates the IImage object from the FT_Bitmap.
Definition CGUITTFont.cpp:89
bool isLoaded
If true, the glyph has been loaded.
Definition CGUITTFont.h:100
u32 glyph_page
The page the glyph is on.
Definition CGUITTFont.h:103
SGUITTGlyph(SGUITTGlyph &&other) noexcept
This class would be trivially copyable except for the reference count on surface.
Definition CGUITTFont.h:71
core::vector2di offset
The offset of glyph when drawn.
Definition CGUITTFont.h:109
DISABLE_CLASS_COPY(SGUITTGlyph)
void preload(u32 char_index, FT_Face face, video::IVideoDriver *driver, u32 font_size, const FT_Int32 loadFlags)
Preload the glyph.
Definition CGUITTFont.cpp:163
~SGUITTGlyph()
Destructor.
Definition CGUITTFont.h:84
static std::string p(std::string path)
Definition test_filesys.cpp:53