blob: 313e066e02a0a2138041bf420c06d2b284217aea [file] [edit]
#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