39 #include FT_FREETYPE_H
52 template <
class T,
typename TAlloc>
53 static void Delete(core::array<T, TAlloc>& a)
56 allocator.deallocate(a.pointer());
74 void preload(u32 char_index, FT_Face face, video::IVideoDriver* driver, u32 font_size,
const FT_Int32 loadFlags);
80 video::IImage*
createGlyphImage(
const FT_Bitmap& bits, video::IVideoDriver* driver)
const;
126 bool flgmip =
driver->getTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS);
127 driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS,
false);
128 #if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8
129 bool flgcpy =
driver->getTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY);
130 driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY,
true);
136 case FT_PIXEL_MODE_MONO:
139 case FT_PIXEL_MODE_GRAY:
146 driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, flgmip);
147 #if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8
148 driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY, flgcpy);
166 video::ECOLOR_FORMAT format =
texture->getColorFormat();
167 core::dimension2du size =
texture->getOriginalSize();
168 video::IImage* pageholder =
driver->createImageFromData(format, size, ptr,
true,
false);
222 static CGUITTFont*
create(IGUIEnvironment *env,
const io::path&
filename,
const u32
size,
const bool antialias =
true,
const bool transparency =
true);
223 static CGUITTFont*
create(IrrlichtDevice *device,
const io::path&
filename,
const u32
size,
const bool antialias =
true,
const bool transparency =
true);
265 virtual 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);
273 video::SColor color,
bool hcenter=
false,
bool vcenter=
false,
274 const core::rect<s32>* clip=0);
280 virtual core::dimension2d<u32>
getDimension(
const wchar_t* text)
const;
294 virtual s32
getKerningWidth(
const wchar_t* thisLetter=0,
const wchar_t* previousLetter=0)
const;
327 (
const wchar_t* text, scene::ISceneManager* smgr, scene::ISceneNode* parent = 0,
328 const video::SColor& color = video::SColor(255, 0, 0, 0),
bool center =
false );
344 static core::map<io::path, SGUITTFace*>
c_faces;
350 bool load(
const io::path&
filename,
const u32
size,
const bool antialias,
const bool transparency);
356 load_flags = FT_LOAD_DEFAULT | FT_LOAD_RENDER;
368 core::vector2di
getKerning(
const wchar_t thisLetter,
const wchar_t previousLetter)
const;
Definition: enriched_string.h:26
UTF-16 string class.
Definition: irrUString.h:249
Class to assist in deleting glyphs.
Definition: CGUITTFont.h:50
static void Delete(core::array< T, TAlloc > &a)
Definition: CGUITTFont.h:53
Class representing a TrueType font.
Definition: CGUITTFont.h:211
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:1039
static core::map< io::path, SGUITTFace * > c_faces
Definition: CGUITTFont.h:344
s32 getAscender() const
Definition: CGUITTFont.h:330
virtual video::ITexture * getPageTextureByIndex(const u32 &page_index) const
This function is for debugging mostly.
Definition: CGUITTFont.cpp:993
virtual void setKerningHeight(s32 kerning)
Sets global kerning height for the font.
Definition: CGUITTFont.cpp:884
s32 GlobalKerningHeight
Definition: CGUITTFont.h:386
io::path filename
Definition: CGUITTFont.h:377
u32 shadow_offset
Definition: CGUITTFont.h:388
u32 getWidthFromCharacter(wchar_t c) const
Definition: CGUITTFont.cpp:754
void reset_images()
Definition: CGUITTFont.cpp:441
static scene::SMesh shared_plane_
Definition: CGUITTFont.h:347
virtual void setBatchLoadSize(u32 batch_size)
Sets the amount of glyphs to batch load.
Definition: CGUITTFont.h:229
virtual void setMonochrome(const bool flag)
Tells the font to use monochrome rendering.
Definition: CGUITTFont.cpp:536
virtual u32 getFontSize() const
Get the font size.
Definition: CGUITTFont.h:235
u32 getHeightFromCharacter(wchar_t c) const
Definition: CGUITTFont.cpp:776
bool load(const io::path &filename, const u32 size, const bool antialias, const bool transparency)
Definition: CGUITTFont.cpp:301
virtual void setKerningWidth(s32 kerning)
Sets global kerning width for the font.
Definition: CGUITTFont.cpp:879
core::array< CGUITTGlyphPage * > Glyph_Pages
Definition: CGUITTFont.h:382
void update_load_flags()
Definition: CGUITTFont.h:353
core::dimension2du max_page_texture_size
Definition: CGUITTFont.h:339
virtual void setMaxPageTextureSize(const core::dimension2du &texture_size)
Sets the maximum texture size for a page of glyphs.
Definition: CGUITTFont.h:232
virtual void setInvisibleCharacters(const wchar_t *s)
Define which characters should not be drawn by the font.
Definition: CGUITTFont.cpp:951
irr::IrrlichtDevice * Device
Definition: CGUITTFont.h:374
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:549
FT_Face tt_face
Definition: CGUITTFont.h:378
core::array< SGUITTGlyph > Glyphs
Definition: CGUITTFont.h:383
virtual s32 getKerningHeight() const
Returns the distance between letters.
Definition: CGUITTFont.cpp:905
static FT_Library c_library
Definition: CGUITTFont.h:343
void update_glyph_pages() const
Definition: CGUITTFont.cpp:456
virtual bool isTransparent() const
Check the font's transparency.
Definition: CGUITTFont.h:238
CGUITTGlyphPage * createGlyphPage(const u8 &pixel_mode)
Create a new glyph page texture.
Definition: CGUITTFont.cpp:479
FT_Int32 load_flags
Definition: CGUITTFont.h:380
FT_Size_Metrics font_metrics
Definition: CGUITTFont.h:379
CGUITTFont(IGUIEnvironment *env)
Constructor.
Definition: CGUITTFont.cpp:278
u32 batch_load_size
Definition: CGUITTFont.h:338
s32 GlobalKerningWidth
Definition: CGUITTFont.h:385
virtual core::dimension2d< u32 > getDimension(const wchar_t *text) const
Returns the dimension of a text string.
Definition: CGUITTFont.cpp:688
u32 shadow_alpha
Definition: CGUITTFont.h:389
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:221
virtual void setFontHinting(const bool enable, const bool enable_auto_hinting=true)
Enables or disables font hinting.
Definition: CGUITTFont.cpp:542
u32 getLastGlyphPageIndex() const
Get the last glyph page's index.
Definition: CGUITTFont.h:314
virtual video::IImage * createTextureFromChar(const uchar32_t &ch)
Create corresponding character's software image copy from the font, so you can use this data just lik...
Definition: CGUITTFont.cpp:962
CGUITTGlyphPage * getLastGlyphPage() const
Get the last glyph page if there's still available slots.
Definition: CGUITTFont.cpp:465
static scene::IMesh * shared_plane_ptr_
Definition: CGUITTFont.h:346
virtual bool useHinting() const
Check if the font hinting is enabled.
Definition: CGUITTFont.h:245
bool use_auto_hinting
Definition: CGUITTFont.h:336
bool use_transparency
Definition: CGUITTFont.h:334
void createSharedPlane()
Definition: CGUITTFont.cpp:1001
bool use_hinting
Definition: CGUITTFont.h:335
virtual core::dimension2d< u32 > getCharDimension(const wchar_t ch) const
Returns the dimension of a character produced by this font.
Definition: CGUITTFont.cpp:683
virtual ~CGUITTFont()
Destructor.
Definition: CGUITTFont.cpp:411
virtual bool useAutoHinting() const
Check if the font auto-hinting is enabled.
Definition: CGUITTFont.h:242
static bool c_libraryLoaded
Definition: CGUITTFont.h:345
bool use_monochrome
Definition: CGUITTFont.h:333
u32 getGlyphIndexByChar(wchar_t c) const
Definition: CGUITTFont.cpp:799
core::dimension2d< u32 > getDimensionUntilEndOfLine(const wchar_t *p) const
Definition: CGUITTFont.cpp:1030
static CGUITTFont * create(IGUIEnvironment *env, const io::path &filename, const u32 size, const bool antialias=true, const bool transparency=true)
Definition: CGUITTFont.cpp:265
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:889
video::IVideoDriver * Driver
Definition: CGUITTFont.h:376
gui::IGUIEnvironment * Environment
Definition: CGUITTFont.h:375
virtual void setTransparency(const bool flag)
Tells the font to allow transparency when rendering.
Definition: CGUITTFont.cpp:530
u32 size
Definition: CGUITTFont.h:337
virtual bool useMonochrome() const
Check if the font is being loaded as a monochrome font.
Definition: CGUITTFont.h:249
core::ustring Invisible
Definition: CGUITTFont.h:387
core::vector2di getKerning(const wchar_t thisLetter, const wchar_t previousLetter) const
Definition: CGUITTFont.cpp:911
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:846
Holds a sheet of glyphs.
Definition: CGUITTFont.h:107
bool dirty
Definition: CGUITTFont.h:198
core::array< core::recti > render_source_rects
Definition: CGUITTFont.h:201
u32 used_slots
Definition: CGUITTFont.h:197
void pushGlyphToBePaged(const SGUITTGlyph *glyph)
Add the glyph to a list of glyphs to be paged.
Definition: CGUITTFont.h:155
io::path name
Definition: CGUITTFont.h:206
u32 available_slots
Definition: CGUITTFont.h:196
video::IVideoDriver * driver
Definition: CGUITTFont.h:205
core::array< const SGUITTGlyph * > glyph_to_be_paged
Definition: CGUITTFont.h:204
bool createPageTexture(const u8 &pixel_mode, const core::dimension2du &texture_size)
Create the actual page texture,.
Definition: CGUITTFont.h:121
core::array< core::vector2di > render_positions
Definition: CGUITTFont.h:200
~CGUITTGlyphPage()
Definition: CGUITTFont.h:110
video::ITexture * texture
Definition: CGUITTFont.h:195
CGUITTGlyphPage(video::IVideoDriver *Driver, const io::path &texture_name)
Definition: CGUITTFont.h:109
void updateTexture()
Updates the texture atlas with new glyphs.
Definition: CGUITTFont.h:161
u32 uchar32_t
Definition: irrUString.h:93
Structure representing a single TrueType glyph.
Definition: CGUITTFont.h:62
CGUITTFont * parent
The pointer pointing to the parent (CGUITTFont)
Definition: CGUITTFont.h:102
void unload()
Unloads the glyph.
Definition: CGUITTFont.cpp:209
video::IImage * surface
This is just the temporary image holder.
Definition: CGUITTFont.h:99
core::recti source_rect
The source rectangle for the glyph.
Definition: CGUITTFont.h:89
SGUITTGlyph()
Constructor.
Definition: CGUITTFont.h:64
FT_Vector advance
Glyph advance information.
Definition: CGUITTFont.h:95
video::IImage * createGlyphImage(const FT_Bitmap &bits, video::IVideoDriver *driver) const
Creates the IImage object from the FT_Bitmap.
Definition: CGUITTFont.cpp:82
bool isLoaded
If true, the glyph has been loaded.
Definition: CGUITTFont.h:83
u32 glyph_page
The page the glyph is on.
Definition: CGUITTFont.h:86
core::vector2di offset
The offset of glyph when drawn.
Definition: CGUITTFont.h:92
void preload(u32 char_index, FT_Face face, video::IVideoDriver *driver, u32 font_size, const FT_Int32 loadFlags)
Preload the glyph.
Definition: CGUITTFont.cpp:158
~SGUITTGlyph()
Destructor.
Definition: CGUITTFont.h:67
std::string p(std::string path)
Definition: test_filepath.cpp:59