126 lines
5.3 KiB
Plaintext
126 lines
5.3 KiB
Plaintext
|
/* DO NOT EDIT THIS FILE */
|
||
|
/* This file is autogenerated by the text-database code generator */
|
||
|
|
||
|
#ifndef TOUCHGFX_UNMAPPEDDATAFONT_HPP
|
||
|
#define TOUCHGFX_UNMAPPEDDATAFONT_HPP
|
||
|
|
||
|
#include <touchgfx/Font.hpp>
|
||
|
|
||
|
namespace touchgfx
|
||
|
{
|
||
|
/**
|
||
|
* An UnmappedDataFont has both glyph table and glyph data placed in a
|
||
|
* flash which does not support random access read (indirect
|
||
|
* access). A unicode table is located in a flash with random read
|
||
|
* access (direct access).
|
||
|
*
|
||
|
* @see Font, ConstFont
|
||
|
*/
|
||
|
class UnmappedDataFont : public Font
|
||
|
{
|
||
|
public:
|
||
|
/**
|
||
|
* Construct the UnmappedDataFont.
|
||
|
*
|
||
|
* @param glyphs The array of glyphs known to this font (indirect).
|
||
|
* @param unicodes The array of unicodes known to this font (direct).
|
||
|
* @param numGlyphs The number of glyphs in list.
|
||
|
* @param height The height in pixels of the highest character in this font.
|
||
|
* @param baseline The height of the baseline in pixels.
|
||
|
* @param pixBelowBottom The maximum number of pixels that can be drawn below the
|
||
|
* bottom in this font.
|
||
|
* @param bitsPerPixel The number of bits per pixel in this font.
|
||
|
* @param byteAlignRow Are glyphs encoded using A4 format
|
||
|
* @param maxLeft The maximum a character extends to the left.
|
||
|
* @param maxRight The maximum a character extends to the right.
|
||
|
* @param glyphDataList Pointer to pointers the glyph data for the font (indirect).
|
||
|
* @param kerningList pointer to the kerning data for the font (direct).
|
||
|
* @param fallbackChar The fallback character for the typography in case no glyph is
|
||
|
* available.
|
||
|
* @param ellipsisChar The ellipsis character used for truncating long texts.
|
||
|
* @param gsubTable Pointer to GSUB table (direct).
|
||
|
*/
|
||
|
UnmappedDataFont(const GlyphNode* glyphs, const uint16_t* unicodes, uint16_t numGlyphs, uint16_t height, uint16_t baseline, uint8_t pixAboveTop, uint8_t pixBelowBottom, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataList, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData, const FontContextualFormsTable* formsTable);
|
||
|
|
||
|
using Font::getGlyph;
|
||
|
|
||
|
/**
|
||
|
* Gets the glyph data associated with the specified Unicode. The
|
||
|
GlyphNode is allocated in the buffer passed to the constructor.
|
||
|
*
|
||
|
* Please note that in case of Thai letters and Arabic letters
|
||
|
* where diacritics can be placed relative to the previous
|
||
|
* character(s), please use TextProvider::getNextLigature()
|
||
|
* instead as it will create a temporary GlyphNode that will be
|
||
|
* adjusted with respect to X/Y position.
|
||
|
*
|
||
|
* @param unicode The character to look up.
|
||
|
* @param pixelData Pointer to the pixel data for the glyph if the glyph is
|
||
|
* found. This is set by this method.
|
||
|
* @param [out] bitsPerPixel Reference where to place the number of bits per pixel.
|
||
|
*
|
||
|
* @return A pointer to the glyph node or null if the glyph was not found.
|
||
|
*/
|
||
|
virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const;
|
||
|
|
||
|
/**
|
||
|
* Obtains the address to the pixel data for the specified glyph.
|
||
|
*
|
||
|
* @param glyph The glyph to get the pixels data of.
|
||
|
*
|
||
|
* @return The address of the pixel data of the glyph.
|
||
|
*/
|
||
|
virtual const uint8_t* getPixelData(const GlyphNode* glyph) const;
|
||
|
|
||
|
/**
|
||
|
* Gets the kerning distance between two characters.
|
||
|
*
|
||
|
* @param prevChar The unicode value of the previous character.
|
||
|
* @param glyph the glyph object for the current character.
|
||
|
*
|
||
|
* @return The kerning distance between prevChar and glyph char.
|
||
|
*/
|
||
|
virtual int8_t getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const;
|
||
|
|
||
|
/**
|
||
|
* Gets GSUB table.
|
||
|
*
|
||
|
* @return The GSUB table or null if font has GSUB no table
|
||
|
*/
|
||
|
virtual const uint16_t* getGSUBTable() const
|
||
|
{
|
||
|
return gsubTable;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets the contextual forms table used in arabic fonts.
|
||
|
*
|
||
|
* @return The FontContextualFormsTable or null if the font has no table.
|
||
|
*/
|
||
|
virtual const FontContextualFormsTable* getContextualFormsTable() const
|
||
|
{
|
||
|
return arabicTable;
|
||
|
}
|
||
|
|
||
|
protected:
|
||
|
UnmappedDataFont()
|
||
|
: Font(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), glyphList(0), unicodes(0), glyphDataList(0), kerningData(0), gsubTable(0)
|
||
|
{
|
||
|
}
|
||
|
int lookupUnicode(uint16_t unicode) const;
|
||
|
|
||
|
const GlyphNode* glyphList; ///< The list of glyphs
|
||
|
uint16_t listSize; ///< The size of the list of glyphs
|
||
|
const uint16_t* unicodes; ///< LookupTable with all unicodes in this font
|
||
|
const void* glyphDataList; ///< The glyphs (list of pointers)
|
||
|
const KerningNode* kerningData; ///< The kerning
|
||
|
const uint16_t* gsubTable; ///< The GSUB tables
|
||
|
|
||
|
const FontContextualFormsTable* arabicTable; ///< Contextual forms
|
||
|
|
||
|
static GlyphNode glyphNodeBuffer; ///< Buffer for GlyphNodes read from unmapped flash
|
||
|
};
|
||
|
} // namespace touchgfx
|
||
|
|
||
|
#endif // TOUCHGFX_UNMAPPEDDATAFONT_HPP
|