| #ifndef RiveFont_DEFINED | |
| #define RiveFont_DEFINED | |
| #include "include/core/SkData.h" | |
| #include "include/core/SkPath.h" | |
| #include "include/core/SkTypeface.h" | |
| #include <vector> | |
| class RiveFont | |
| { | |
| struct Pair | |
| { | |
| uint16_t fChar; | |
| uint16_t fGlyph; | |
| }; | |
| std::vector<Pair> fCMap; | |
| struct Glyph | |
| { | |
| SkPath fPath; | |
| float fAdvance; | |
| }; | |
| std::vector<Glyph> fGlyphs; | |
| public: | |
| uint16_t charToGlyph(SkUnichar) const; | |
| float advance(uint16_t glyph) const; | |
| const SkPath* path(uint16_t glyph) const; | |
| void clear() | |
| { | |
| fCMap.clear(); | |
| fGlyphs.clear(); | |
| } | |
| void load(sk_sp<SkTypeface>, const char text[], size_t length); | |
| sk_sp<SkData> encode() const; | |
| bool decode(const void*, size_t); | |
| }; | |
| #endif |