Luanti 5.11.0-dev
 
Loading...
Searching...
No Matches
irr::gui::CGUITTFont Class Reference

Class representing a TrueType font. More...

#include <CGUITTFont.h>

+ Inheritance diagram for irr::gui::CGUITTFont:
+ Collaboration diagram for irr::gui::CGUITTFont:

Public Member Functions

virtual ~CGUITTFont ()
 Destructor.
 
void setBatchLoadSize (u32 batch_size)
 Sets the amount of glyphs to batch load.
 
void setMaxPageTextureSize (const core::dimension2du &texture_size)
 Sets the maximum texture size for a page of glyphs.
 
u32 getFontSize () const
 Get the font size.
 
bool isTransparent () const
 Check the font's transparency.
 
bool useAutoHinting () const
 Check if the font auto-hinting is enabled.
 
bool useHinting () const
 Check if the font hinting is enabled.
 
bool useMonochrome () const
 Check if the font is being loaded as a monochrome font.
 
void setTransparency (const bool flag)
 Tells the font to allow transparency when rendering.
 
void setMonochrome (const bool flag)
 Tells the font to use monochrome rendering.
 
void setFontHinting (const bool enable, const bool enable_auto_hinting=true)
 Enables or disables font hinting.
 
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.
 
void draw (const EnrichedString &text, const core::rect< s32 > &position, bool hcenter=false, bool vcenter=false, const core::rect< s32 > *clip=0)
 
virtual core::dimension2du getDimension (const wchar_t *text) const override
 Returns the dimension of a text string.
 
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.
 
virtual void setKerningWidth (s32 kerning) override
 Sets global kerning width for the font.
 
virtual void setKerningHeight (s32 kerning) override
 Sets global kerning height for the font.
 
virtual core::vector2di getKerning (const wchar_t thisLetter, const wchar_t previousLetter) const override
 Returns the distance between letters.
 
virtual void setInvisibleCharacters (const wchar_t *s) override
 Define which characters should not be drawn by the font.
 
CGUITTGlyphPagegetLastGlyphPage () const
 Get the last glyph page if there's still available slots.
 
CGUITTGlyphPagecreateGlyphPage (const u8 pixel_mode)
 Create a new glyph page texture.
 
u32 getLastGlyphPageIndex () const
 Get the last glyph page's index.
 
void setFallback (gui::IGUIFont *font)
 Set font that should be used for glyphs not present in ours.
 
video::IImage * createTextureFromChar (const char32_t &ch)
 Create corresponding character's software image copy from the font, so you can use this data just like any ordinary video::IImage.
 
video::ITexture * getPageTextureByIndex (const u32 &page_index) const
 This function is for debugging mostly.
 
video::IVideoDriver * getDriver () const
 
s32 getAscender () const
 

Static Public Member Functions

static CGUITTFontcreateTTFont (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.
 

Protected Attributes

bool use_monochrome
 
bool use_transparency
 
bool use_hinting
 
bool use_auto_hinting
 
u32 size
 
u32 batch_load_size
 
core::dimension2du max_page_texture_size
 

Private Member Functions

core::dimension2d< u32 > getDimension (const std::u32string &text) const
 
s32 getCharacterFromPos (const std::u32string &text, s32 pixel_x) const
 
std::u32string convertWCharToU32String (const wchar_t *const) const
 
 CGUITTFont (IGUIEnvironment *env)
 Constructor.
 
bool load (const io::path &filename, const u32 size, const bool antialias, const bool transparency)
 
void reset_images ()
 
void update_glyph_pages () const
 
void update_load_flags ()
 
u32 getWidthFromCharacter (char32_t c) const
 
u32 getHeightFromCharacter (char32_t c) const
 
u32 getGlyphIndexByChar (char32_t c) const
 
core::vector2di getKerning (const char32_t thisLetter, const char32_t previousLetter) const
 

Private Attributes

video::IVideoDriver * Driver
 
io::path filename
 
FT_Face tt_face
 
FT_Size_Metrics font_metrics
 
FT_Int32 load_flags
 
core::array< CGUITTGlyphPage * > Glyph_Pages
 
core::array< SGUITTGlyphGlyphs
 
s32 GlobalKerningWidth
 
s32 GlobalKerningHeight
 
std::u32string Invisible
 
u32 shadow_offset
 
u32 shadow_alpha
 
gui::IGUIFont * fallback
 

Static Private Attributes

static FT_Library c_library
 
static std::map< io::path, SGUITTFace * > c_faces
 
static bool c_libraryLoaded = false
 

Detailed Description

Class representing a TrueType font.

Constructor & Destructor Documentation

◆ ~CGUITTFont()

irr::gui::CGUITTFont::~CGUITTFont ( )
virtual

Destructor.

References c_faces, c_library, c_libraryLoaded, Driver, filename, Glyphs, and reset_images().

+ Here is the call graph for this function:

◆ CGUITTFont()

irr::gui::CGUITTFont::CGUITTFont ( IGUIEnvironment * env)
private

Constructor.

References Driver, and setInvisibleCharacters().

Referenced by createTTFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Function Documentation

◆ convertWCharToU32String()

std::u32string irr::gui::CGUITTFont::convertWCharToU32String ( const wchar_t * const charArray) const
private

References p().

Referenced by draw(), getCharacterFromPos(), getDimension(), and setInvisibleCharacters().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createGlyphPage()

CGUITTGlyphPage * irr::gui::CGUITTFont::createGlyphPage ( const u8 pixel_mode)

Create a new glyph page texture.

Parameters
pixel_modethe pixel mode defined by FT_Pixel_Mode

References irr::gui::CGUITTGlyphPage::available_slots, irr::gui::CGUITTGlyphPage::createPageTexture(), Driver, errorstream, Glyph_Pages, max_page_texture_size, size, and tt_face.

Referenced by irr::gui::SGUITTGlyph::preload().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createTextureFromChar()

video::IImage * irr::gui::CGUITTFont::createTextureFromChar ( const char32_t & ch)

Create corresponding character's software image copy from the font, so you can use this data just like any ordinary video::IImage.

Parameters
chThe character you need

References irr::gui::CGUITTGlyphPage::dirty, Driver, getGlyphIndexByChar(), irr::gui::SGUITTGlyph::glyph_page, Glyph_Pages, Glyphs, irr::gui::SGUITTGlyph::source_rect, irr::gui::CGUITTGlyphPage::texture, and irr::gui::CGUITTGlyphPage::updateTexture().

+ Here is the call graph for this function:

◆ createTTFont()

CGUITTFont * irr::gui::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 )
static

Creates a new TrueType font and returns a pointer to it.

The pointer must be drop()'ed when finished.

Parameters
envThe IGUIEnvironment the font loads out of.
filenameThe filename of the font.
sizeThe size of the font glyphs in pixels. Since this is the size of the individual glyphs, the true height of the font may change depending on the characters used.
antialiasset the use_monochrome (opposite to antialias) flag
transparencyset the use_transparency flag
Returns
Returns a pointer to a CGUITTFont. Will return 0 if the font failed to load.

References CGUITTFont(), c_library, c_libraryLoaded, filename, load(), shadow_alpha, shadow_offset, and size.

Referenced by FontEngine::initFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ draw() [1/2]

void irr::gui::CGUITTFont::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 )
overridevirtual

Draws some text and clips it to the specified rectangle if wanted.

References draw().

Referenced by draw(), irr::gui::StaticText::draw(), Hud::drawLuaElements(), and GUIChatConsole::drawText().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ draw() [2/2]

void irr::gui::CGUITTFont::draw ( const EnrichedString & text,
const core::rect< s32 > & position,
bool hcenter = false,
bool vcenter = false,
const core::rect< s32 > * clip = 0 )

◆ getAscender()

s32 irr::gui::CGUITTFont::getAscender ( ) const
inline

References font_metrics.

Referenced by TextDrawer::TextDrawer().

+ Here is the caller graph for this function:

◆ getCharacterFromPos() [1/2]

s32 irr::gui::CGUITTFont::getCharacterFromPos ( const std::u32string & text,
s32 pixel_x ) const
private

References getKerning(), getWidthFromCharacter(), and x.

+ Here is the call graph for this function:

◆ getCharacterFromPos() [2/2]

s32 irr::gui::CGUITTFont::getCharacterFromPos ( const wchar_t * text,
s32 pixel_x ) const
overridevirtual

Calculates the index of the character in the text which is on a specific position.

References convertWCharToU32String(), and getCharacterFromPos().

Referenced by getCharacterFromPos().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getDimension() [1/2]

core::dimension2d< u32 > irr::gui::CGUITTFont::getDimension ( const std::u32string & text) const
private

References getHeightFromCharacter(), getKerning(), getWidthFromCharacter(), and p().

+ Here is the call graph for this function:

◆ getDimension() [2/2]

core::dimension2d< u32 > irr::gui::CGUITTFont::getDimension ( const wchar_t * text) const
overridevirtual

Returns the dimension of a text string.

References convertWCharToU32String(), and getDimension().

Referenced by draw(), and getDimension().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getDriver()

video::IVideoDriver * irr::gui::CGUITTFont::getDriver ( ) const
inline

References Driver.

Referenced by irr::gui::SGUITTGlyph::preload().

+ Here is the caller graph for this function:

◆ getFontSize()

u32 irr::gui::CGUITTFont::getFontSize ( ) const
inline

Get the font size.

References size.

Referenced by GUITable::setTable().

+ Here is the caller graph for this function:

◆ getGlyphIndexByChar()

u32 irr::gui::CGUITTFont::getGlyphIndexByChar ( char32_t c) const
private

References batch_load_size, irr::gui::SGUITTGlyph::glyph_page, Glyph_Pages, Glyphs, irr::gui::SGUITTGlyph::isLoaded(), load_flags, irr::gui::SGUITTGlyph::preload(), size, and tt_face.

Referenced by createTextureFromChar(), draw(), getHeightFromCharacter(), getKerning(), getWidthFromCharacter(), and load().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getHeightFromCharacter()

u32 irr::gui::CGUITTFont::getHeightFromCharacter ( char32_t c) const
inlineprivate

References fallback, font_metrics, getGlyphIndexByChar(), and Glyphs.

Referenced by getDimension().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getKerning() [1/2]

core::vector2di irr::gui::CGUITTFont::getKerning ( const char32_t thisLetter,
const char32_t previousLetter ) const
private

References fallback, getGlyphIndexByChar(), GlobalKerningHeight, GlobalKerningWidth, size, and tt_face.

+ Here is the call graph for this function:

◆ getKerning() [2/2]

core::vector2di irr::gui::CGUITTFont::getKerning ( const wchar_t thisLetter,
const wchar_t previousLetter ) const
overridevirtual

Returns the distance between letters.

References getKerning().

Referenced by draw(), getCharacterFromPos(), getDimension(), and getKerning().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getLastGlyphPage()

CGUITTGlyphPage * irr::gui::CGUITTFont::getLastGlyphPage ( ) const

Get the last glyph page if there's still available slots.

If not, it will return zero.

References irr::gui::CGUITTGlyphPage::available_slots, getLastGlyphPageIndex(), and Glyph_Pages.

Referenced by irr::gui::SGUITTGlyph::preload().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getLastGlyphPageIndex()

u32 irr::gui::CGUITTFont::getLastGlyphPageIndex ( ) const
inline

Get the last glyph page's index.

References Glyph_Pages.

Referenced by getLastGlyphPage(), and irr::gui::SGUITTGlyph::preload().

+ Here is the caller graph for this function:

◆ getPageTextureByIndex()

video::ITexture * irr::gui::CGUITTFont::getPageTextureByIndex ( const u32 & page_index) const

This function is for debugging mostly.

If the page doesn't exist it returns zero.

Parameters
page_indexSimply return the texture handle of a given page index.

References Glyph_Pages.

◆ getWidthFromCharacter()

u32 irr::gui::CGUITTFont::getWidthFromCharacter ( char32_t c) const
inlineprivate

References fallback, font_metrics, getGlyphIndexByChar(), and Glyphs.

Referenced by draw(), getCharacterFromPos(), and getDimension().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isTransparent()

bool irr::gui::CGUITTFont::isTransparent ( ) const
inline

Check the font's transparency.

References use_transparency.

◆ load()

bool irr::gui::CGUITTFont::load ( const io::path & filename,
const u32 size,
const bool antialias,
const bool transparency )
private

References batch_load_size, c_faces, c_library, Driver, errorstream, filename, font_metrics, getGlyphIndexByChar(), Glyphs, infostream, fs::ReadFile(), size, tt_face, update_load_flags(), use_monochrome, use_transparency, and verbosestream.

Referenced by createTTFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ reset_images()

void irr::gui::CGUITTFont::reset_images ( )
private

References Glyph_Pages, Glyphs, and update_load_flags().

Referenced by ~CGUITTFont(), setFontHinting(), setMonochrome(), and setTransparency().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setBatchLoadSize()

void irr::gui::CGUITTFont::setBatchLoadSize ( u32 batch_size)
inline

Sets the amount of glyphs to batch load.

References batch_load_size.

◆ setFallback()

void irr::gui::CGUITTFont::setFallback ( gui::IGUIFont * font)
inline

Set font that should be used for glyphs not present in ours.

References fallback.

◆ setFontHinting()

void irr::gui::CGUITTFont::setFontHinting ( const bool enable,
const bool enable_auto_hinting = true )

Enables or disables font hinting.

Default: Hinting and auto-hinting true.

Parameters
enableIf false, font hinting is turned off. If true, font hinting is turned on.
enable_auto_hintingIf true, FreeType uses its own auto-hinting algorithm. If false, it tries to use the algorithm specified by the font.

References reset_images(), use_auto_hinting, and use_hinting.

+ Here is the call graph for this function:

◆ setInvisibleCharacters()

void irr::gui::CGUITTFont::setInvisibleCharacters ( const wchar_t * s)
overridevirtual

Define which characters should not be drawn by the font.

References convertWCharToU32String(), and Invisible.

Referenced by CGUITTFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setKerningHeight()

void irr::gui::CGUITTFont::setKerningHeight ( s32 kerning)
overridevirtual

Sets global kerning height for the font.

References GlobalKerningHeight.

◆ setKerningWidth()

void irr::gui::CGUITTFont::setKerningWidth ( s32 kerning)
overridevirtual

Sets global kerning width for the font.

References GlobalKerningWidth.

◆ setMaxPageTextureSize()

void irr::gui::CGUITTFont::setMaxPageTextureSize ( const core::dimension2du & texture_size)
inline

Sets the maximum texture size for a page of glyphs.

References max_page_texture_size.

◆ setMonochrome()

void irr::gui::CGUITTFont::setMonochrome ( const bool flag)

Tells the font to use monochrome rendering.

Default: false.

Parameters
flagIf true, the font draws using a monochrome image. If false, the font uses a grayscale image.

References reset_images(), and use_monochrome.

+ Here is the call graph for this function:

◆ setTransparency()

void irr::gui::CGUITTFont::setTransparency ( const bool flag)

Tells the font to allow transparency when rendering.

Default: true.

Parameters
flagIf true, the font draws using transparency.

References reset_images(), and use_transparency.

+ Here is the call graph for this function:

◆ update_glyph_pages()

void irr::gui::CGUITTFont::update_glyph_pages ( ) const
private

References Glyph_Pages.

Referenced by draw().

+ Here is the caller graph for this function:

◆ update_load_flags()

void irr::gui::CGUITTFont::update_load_flags ( )
inlineprivate

References load_flags, useAutoHinting(), useHinting(), and useMonochrome().

Referenced by load(), and reset_images().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ useAutoHinting()

bool irr::gui::CGUITTFont::useAutoHinting ( ) const
inline

Check if the font auto-hinting is enabled.

Auto-hinting is FreeType's built-in font hinting engine.

References use_auto_hinting.

Referenced by update_load_flags().

+ Here is the caller graph for this function:

◆ useHinting()

bool irr::gui::CGUITTFont::useHinting ( ) const
inline

Check if the font hinting is enabled.

References use_hinting.

Referenced by update_load_flags().

+ Here is the caller graph for this function:

◆ useMonochrome()

bool irr::gui::CGUITTFont::useMonochrome ( ) const
inline

Check if the font is being loaded as a monochrome font.

The font can either be a 256 color grayscale font, or a 2 color monochrome font.

References use_monochrome.

Referenced by update_load_flags().

+ Here is the caller graph for this function:

Member Data Documentation

◆ batch_load_size

u32 irr::gui::CGUITTFont::batch_load_size
protected

◆ c_faces

std::map< io::path, SGUITTFace * > irr::gui::CGUITTFont::c_faces
staticprivate

Referenced by ~CGUITTFont(), and load().

◆ c_library

FT_Library irr::gui::CGUITTFont::c_library
staticprivate

Referenced by ~CGUITTFont(), createTTFont(), and load().

◆ c_libraryLoaded

bool irr::gui::CGUITTFont::c_libraryLoaded = false
staticprivate

Referenced by ~CGUITTFont(), and createTTFont().

◆ Driver

video::IVideoDriver* irr::gui::CGUITTFont::Driver
private

◆ fallback

gui::IGUIFont* irr::gui::CGUITTFont::fallback
private

◆ filename

io::path irr::gui::CGUITTFont::filename
private

Referenced by ~CGUITTFont(), createTTFont(), and load().

◆ font_metrics

FT_Size_Metrics irr::gui::CGUITTFont::font_metrics
private

◆ GlobalKerningHeight

s32 irr::gui::CGUITTFont::GlobalKerningHeight
private

Referenced by getKerning(), and setKerningHeight().

◆ GlobalKerningWidth

s32 irr::gui::CGUITTFont::GlobalKerningWidth
private

Referenced by getKerning(), and setKerningWidth().

◆ Glyph_Pages

◆ Glyphs

◆ Invisible

std::u32string irr::gui::CGUITTFont::Invisible
private

Referenced by draw(), and setInvisibleCharacters().

◆ load_flags

FT_Int32 irr::gui::CGUITTFont::load_flags
private

◆ max_page_texture_size

core::dimension2du irr::gui::CGUITTFont::max_page_texture_size
protected

◆ shadow_alpha

u32 irr::gui::CGUITTFont::shadow_alpha
private

Referenced by createTTFont(), and draw().

◆ shadow_offset

u32 irr::gui::CGUITTFont::shadow_offset
private

Referenced by createTTFont(), and draw().

◆ size

u32 irr::gui::CGUITTFont::size
protected

◆ tt_face

FT_Face irr::gui::CGUITTFont::tt_face
private

◆ use_auto_hinting

bool irr::gui::CGUITTFont::use_auto_hinting
protected

Referenced by setFontHinting(), and useAutoHinting().

◆ use_hinting

bool irr::gui::CGUITTFont::use_hinting
protected

Referenced by setFontHinting(), and useHinting().

◆ use_monochrome

bool irr::gui::CGUITTFont::use_monochrome
protected

Referenced by load(), setMonochrome(), and useMonochrome().

◆ use_transparency

bool irr::gui::CGUITTFont::use_transparency
protected

The documentation for this class was generated from the following files: