134 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* DO NOT EDIT THIS FILE */
 | |
| /* This file is autogenerated by the text-database code generator */
 | |
| 
 | |
| #ifndef GENERATEDFONT_HPP
 | |
| #define GENERATEDFONT_HPP
 | |
| 
 | |
| #include <touchgfx/ConstFont.hpp>
 | |
| 
 | |
| namespace touchgfx
 | |
| {
 | |
| /**
 | |
|  * An GeneratedFont has both glyph table and glyph data placed in a flash which
 | |
|  * supports random access read (i.e. not a NAND flash)
 | |
|  *
 | |
|  * @see ConstFont
 | |
|  */
 | |
| class GeneratedFont : public ConstFont
 | |
| {
 | |
| public:
 | |
|     /**
 | |
|      * Construct the GeneratedFont.
 | |
|      *
 | |
|      * @param list                   The array of glyphs known to this font.
 | |
|      * @param size                   The number of glyphs in list.
 | |
|      * @param height                 The height in pixels of the highest character in this font.
 | |
|      * @param pixBelowBase           The maximum number of pixels that can be drawn below the
 | |
|      *                               baseline 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 glyphDataInternalFlash Pointer to the glyph data for the font, placed in internal
 | |
|      *                               flash.
 | |
|      * @param kerningList            pointer to the kerning data for the font, placed in internal
 | |
|      *                               flash.
 | |
|      * @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.
 | |
|      */
 | |
|     GeneratedFont(const GlyphNode* list, uint16_t size, uint16_t height, uint8_t pixBelowBase, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataInternalFlash, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData);
 | |
| 
 | |
|     using ConstFont::getGlyph;
 | |
| 
 | |
|     /**
 | |
|      * Obtains a RAM-based pointer to the pixel data for the specified glyph.
 | |
|      *
 | |
|      * @param glyph The glyph to get the pixels data of.
 | |
|      *
 | |
|      * @return 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;
 | |
|     }
 | |
| 
 | |
| protected:
 | |
|     GeneratedFont() : ConstFont(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), glyphData(0), kerningData(0), gsubTable(0) { }
 | |
|     const void* glyphData;          ///< Information describing the glyphs
 | |
|     const KerningNode* kerningData; ///< Information describing the kerning
 | |
|     const uint16_t* gsubTable;      ///< Information describing the GSUB tables
 | |
| };
 | |
| 
 | |
| struct BinaryFontData
 | |
| {
 | |
|     uint32_t fontIndex;                // The font index (as used by TypedTextDatabase)
 | |
|     uint32_t sizeOfFontData;           // Size of the complete BinaryFont
 | |
|     uint32_t offsetToTable;            // GlyphNode[]
 | |
|     uint32_t offsetToKerning;          // KerningNode[]
 | |
|     uint32_t offsetToGlyphs;           // uint8_t[]
 | |
|     uint32_t offsetToGSUB;             // uint16_t[]
 | |
|     uint16_t numberOfGlyphs;           // Number of glyphs in Table and Glyphs
 | |
|     uint16_t height;                   // Font height from base
 | |
|     uint8_t  pixBelowBase;             // Max pixels below base
 | |
|     uint8_t  bitsPerPixel: 7;          // Bpp
 | |
|     uint8_t  byteAlignRow: 1;          // A4/A2/A1
 | |
|     uint8_t  maxLeft;                  // The maximum a character extends to the left
 | |
|     uint8_t  maxRight;                 // The maximum a character extends to the right
 | |
|     Unicode::UnicodeChar fallbackChar; // Fallback Character for the font
 | |
|     Unicode::UnicodeChar ellipsisChar; // Ellipsis Character for the font
 | |
| };
 | |
| 
 | |
| class BinaryFont : public GeneratedFont
 | |
| {
 | |
| public:
 | |
|     BinaryFont(const struct touchgfx::BinaryFontData* data)
 | |
|         : GeneratedFont((const GlyphNode*)((const uint8_t*)data + data->offsetToTable),
 | |
|                         data->numberOfGlyphs,
 | |
|                         data->height,
 | |
|                         data->pixBelowBase,
 | |
|                         data->bitsPerPixel,
 | |
|                         data->byteAlignRow,
 | |
|                         data->maxLeft,
 | |
|                         data->maxRight,
 | |
|                         0,
 | |
|                         (const KerningNode*)((const uint8_t*)data + data->offsetToKerning),
 | |
|                         data->fallbackChar,
 | |
|                         data->ellipsisChar,
 | |
|                         (data->offsetToGSUB == 0) ? 0 : (const uint16_t*)((const uint8_t*)data + data->offsetToGSUB)),
 | |
|           glyphData((const uint8_t*)data + data->offsetToGlyphs)
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     BinaryFont() : GeneratedFont() {}
 | |
| 
 | |
|     virtual const uint8_t* getPixelData(const GlyphNode* glyph) const
 | |
|     {
 | |
|         const uint8_t* data = (const uint8_t*)glyphData;
 | |
|         return &(data[glyph->dataOffset]);
 | |
|     }
 | |
| protected:
 | |
|     const uint8_t* glyphData;
 | |
| };
 | |
| } // namespace touchgfx
 | |
| 
 | |
| #endif // GENERATEDFONT_HPP
 |