First init.
This commit is contained in:
74
libraries/mcu-renderer/tools/fontconv/Font.cpp
Normal file
74
libraries/mcu-renderer/tools/fontconv/Font.cpp
Normal file
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* MCU renderer fontconv
|
||||
* Font data structure
|
||||
*
|
||||
* (C) 2023 Gissio
|
||||
*
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
#include "Font.h"
|
||||
|
||||
MinMax::MinMax()
|
||||
{
|
||||
min = INT_MAX;
|
||||
max = INT_MIN;
|
||||
}
|
||||
|
||||
void MinMax::update(int32_t value)
|
||||
{
|
||||
if (value < min)
|
||||
min = value;
|
||||
if (value > max)
|
||||
max = value;
|
||||
}
|
||||
|
||||
Font::Font()
|
||||
{
|
||||
capHeight = 0;
|
||||
ascent = INT_MIN;
|
||||
descent = INT_MIN;
|
||||
|
||||
boundingBoxLeft = INT_MAX;
|
||||
boundingBoxBottom = INT_MAX;
|
||||
boundingBoxWidth = 0;
|
||||
boundingBoxHeight = 0;
|
||||
}
|
||||
|
||||
void Font::add(Charcode charcode, Glyph &glyph)
|
||||
{
|
||||
int32_t fontRight;
|
||||
int32_t fontTop;
|
||||
int32_t glyphRight;
|
||||
int32_t glyphTop;
|
||||
|
||||
fontRight = boundingBoxWidth
|
||||
? (boundingBoxLeft + boundingBoxWidth)
|
||||
: INT_MIN;
|
||||
fontTop = boundingBoxHeight
|
||||
? (boundingBoxBottom + boundingBoxHeight)
|
||||
: INT_MIN;
|
||||
|
||||
glyphRight = glyph.left + glyph.width;
|
||||
glyphTop = glyph.bottom + glyph.height;
|
||||
|
||||
if (glyph.left < boundingBoxLeft)
|
||||
boundingBoxLeft = glyph.left;
|
||||
if (glyph.bottom < boundingBoxBottom)
|
||||
boundingBoxBottom = glyph.bottom;
|
||||
if (glyphRight > fontRight)
|
||||
fontRight = glyphRight;
|
||||
if (glyphTop > fontTop)
|
||||
fontTop = glyphTop;
|
||||
|
||||
boundingBoxWidth = fontRight - boundingBoxLeft;
|
||||
boundingBoxHeight = fontTop - boundingBoxBottom;
|
||||
|
||||
boundingBoxLeftMinMax.update(glyph.left);
|
||||
boundingBoxBottomMinMax.update(glyph.bottom);
|
||||
boundingBoxWidthMinMax.update(glyph.width);
|
||||
boundingBoxHeightMinMax.update(glyph.height);
|
||||
advanceMinMax.update(glyph.advance);
|
||||
|
||||
glyphs[charcode] = glyph;
|
||||
}
|
||||
Reference in New Issue
Block a user