| #ifndef _RIVE_SEMANTIC_PROVIDER_HPP_ | |
| #define _RIVE_SEMANTIC_PROVIDER_HPP_ | |
| #include "rive/math/aabb.hpp" | |
| #include <cstdint> | |
| #include <string> | |
| namespace rive | |
| { | |
| class Artboard; | |
| class Component; | |
| struct ResolvedSemanticData | |
| { | |
| bool hasSemantics = false; | |
| uint32_t role = 0; | |
| std::string label = ""; | |
| }; | |
| class SemanticProvider | |
| { | |
| public: | |
| // Returns true if this component can have inferred semantics (e.g. Text). | |
| static bool canInferSemantics(Component* component); | |
| // Resolve semantic data from a SemanticData component child. | |
| static ResolvedSemanticData resolveSemanticData(Component* component); | |
| // Compute bounds in root artboard space. | |
| static AABB semanticBounds(Component* component); | |
| // Map an AABB in the given artboard's space through its rootTransform | |
| // to the outermost artboard's space. All four corners are mapped and | |
| // re-enclosed so rotation/shear in nested hosts is handled correctly. | |
| static AABB rootTransformAABB(Artboard* ab, const AABB& bounds); | |
| }; | |
| } // namespace rive | |
| #endif |