steering-wheel/Middlewares/ST/touchgfx_backup1/framework/include/touchgfx/ConstFont.hpp

95 lines
3.4 KiB
C++

/******************************************************************************
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
*******************************************************************************/
/**
* @file touchgfx/ConstFont.hpp
*
* Declares the touchgfx::ConstFont class.
*/
#ifndef TOUCHGFX_CONSTFONT_HPP
#define TOUCHGFX_CONSTFONT_HPP
#include <touchgfx/Font.hpp>
#include <touchgfx/Unicode.hpp>
#include <touchgfx/hal/Types.hpp>
namespace touchgfx
{
/**
* A ConstFont is a Font implementation that has its contents defined at compile-time and
* usually placed in read-only memory.
*
* @see Font
*
* @note Pure virtual class. Create an application-specific implementation of getPixelData().
*/
class ConstFont : public Font
{
public:
/**
* Initializes a new instance of the ConstFont class.
*
* @param glyphs The array of glyphs known to this font.
* @param numGlyphs The number of glyphs in list.
* @param height The height of the font.
* @param baseline The pixel position of the baseline.
* @param pixAboveTop The maximum number of pixels above the top of the text.
* @param pixBelowBottom 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 The glyphs are saved with each row byte aligned.
* @param maxLeft The maximum a character extends to the left.
* @param maxRight The maximum a character extends to the right.
* @param fallbackChar The fallback character for the typography in case no glyph is available.
* @param ellipsisChar The ellipsis character used for truncating long texts.
*/
ConstFont(const GlyphNode* glyphs, 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 Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar);
using Font::getGlyph;
virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const;
/**
* Gets the pixel date associated with this glyph.
*
* @param glyph The glyph to get the pixels data from.
*
* @return Pointer to the pixel data of this glyph.
*/
virtual const uint8_t* getPixelData(const GlyphNode* glyph) const = 0;
virtual int8_t getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const = 0;
/**
* Finds the glyph data associated with the specified unicode.
*
* @param unicode The character to look up.
*
* @return A pointer to the glyph node or null if the glyph was not found.
*/
const GlyphNode* find(Unicode::UnicodeChar unicode) const;
protected:
const GlyphNode* glyphList; ///< The list of glyphs
uint16_t listSize; ///< The size of the list of glyphs
private:
ConstFont()
: Font(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), glyphList(0), listSize(0)
{
}
};
} // namespace touchgfx
#endif // TOUCHGFX_CONSTFONT_HPP