Files
Webcam/include/framework/font/font_extended.cpp

48 lines
1.9 KiB
C++

/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#include "font/font_extended.h"
using namespace GS;
//------------------------------------------------------------------------------
bool FontEx::SetPixelSize(int size)
{
pixel_size = size;
return current_glyph_font.IsValid() ? current_glyph_font->SetPixelSize(size) : font->SetPixelSize(size);
}
bool FontEx::HasKerning() const
{ return current_glyph_font.IsValid() ? current_glyph_font->HasKerning() : font->HasKerning(); }
int FontEx::GetKerning(uint previous_codepoint, uint codepoint) const
{ return current_glyph_font.IsValid() ? current_glyph_font->GetKerning(previous_codepoint, codepoint) : font->GetKerning(previous_codepoint, codepoint); }
int FontEx::GetHeight() const
{ return current_glyph_font.IsValid() ? current_glyph_font->GetHeight() : font->GetHeight(); }
int FontEx::GetAdvance() const
{ return current_glyph_font.IsValid() ? current_glyph_font->GetAdvance() : font->GetAdvance(); }
bool FontEx::LoadGlyph(uint codepoint, bool for_render)
{
current_glyph_font = font;
if (font->LoadGlyph(codepoint, for_render))
return true;
// Synchronize and try fallback.
if (fallback.IsNull())
return false;
fallback->SetPixelSize(pixel_size);
bool r = fallback->LoadGlyph(codepoint, for_render);
if (r)
current_glyph_font = fallback;
return r;
}
bool FontEx::RenderCurrentGlyph(Picture &picture, const iPoint &position, const iRect &clip, const Color &color)
{ return current_glyph_font.IsValid() ? current_glyph_font->RenderCurrentGlyph(picture, position, clip, color) : font->RenderCurrentGlyph(picture, position, clip, color); }
//------------------------------------------------------------------------------