blob: 7d05b96285cdea5e52b4a38cec4711325cf5ed40 [file]
#ifndef _RIVE_DEFORMER_HPP_
#define _RIVE_DEFORMER_HPP_
#include <vector>
namespace rive
{
class Component;
class RawPath;
class Mat2D;
class Deformer
{
public:
virtual Component* asComponent() = 0;
virtual ~Deformer() {}
};
class RenderPathDeformer : public Deformer
{
public:
static RenderPathDeformer* from(Component* component);
virtual void deformLocalRenderPath(
RawPath& path,
const Mat2D& worldTransform,
const Mat2D& inverseWorld) const = 0;
virtual void deformWorldRenderPath(RawPath& path) const = 0;
virtual ~RenderPathDeformer() {}
};
class PointDeformer : public Deformer
{
public:
static PointDeformer* from(Component* component);
virtual Vec2D deformLocalPoint(
Vec2D point,
const Mat2D& worldTransform,
const Mat2D& inverseWorld) const = 0;
virtual Vec2D deformWorldPoint(Vec2D point) const = 0;
virtual ~PointDeformer() {}
};
} // namespace rive
#endif