Experimental text/font api
diff --git a/include/rive/renderer.hpp b/include/rive/renderer.hpp
index 85559b9..440d371 100644
--- a/include/rive/renderer.hpp
+++ b/include/rive/renderer.hpp
@@ -37,6 +37,39 @@
size_t count() const { return m_Count; }
};
+ class RenderFont {
+ public:
+ struct AxisInfo {
+ uint32_t tag;
+ float min;
+ float def; // default value
+ float max;
+ };
+
+ virtual int countAxes() const { return 0; }
+ virtual std::vector<AxisInfo> getAxes() const { return std::vector<AxisInfo>; }
+
+ // TODO: getGlyphPath(index) -> rawpath
+ };
+
+ struct RenderTextRun {
+ rcp<RenderFont> font;
+ float size;
+ uint32_t textCount; // number of unichars in this run in text[]
+ };
+
+ struct RenderGlyphRun {
+ rcp<RenderFont> font;
+ float size;
+
+ size_t startTextIndex;
+ std::vector<uint16_t> glyphs;
+ std::vector<float> xpos; // xpos.size() == glyphs.size() + 1
+ };
+
+ extern std::vector<RenderGlyphRun> shapeText(const uint32_t text[], size_t textCount,
+ const RenderTextRun[], size_t runCount);
+
enum class RenderPaintStyle { stroke, fill };
enum class RenderTileMode {