ES-DE/source/geometryelement.h
Leon Styhre 0d52738239 Squashed 'external/lunasvg/' changes from d13d8e521..e0f786c9b
e0f786c9b Fix parseStyle
REVERT: d13d8e521 Refactoring
REVERT: 4925c87a8 Update
REVERT: 794c38591 Update
REVERT: 49eee9643 Update
REVERT: 914aee5ea Update
REVERT: 3bb00ecee Fix ParserString string-view iterator cast in windows
REVERT: fabea2008 Fix string-view iterator cast in windows
REVERT: bbcf0d34f Update
REVERT: 081df20f2 Update
REVERT: fe3101f91 Refactoring
REVERT: e9a41dc83 Refactoring

git-subtree-dir: external/lunasvg
git-subtree-split: e0f786c9be6fae1ffabddfe56fb1e0a1a7eb775d
2022-10-03 23:55:09 +02:00

123 lines
1.9 KiB
C++

#ifndef GEOMETRYELEMENT_H
#define GEOMETRYELEMENT_H
#include "graphicselement.h"
namespace lunasvg {
class LayoutShape;
class GeometryElement : public GraphicsElement
{
public:
GeometryElement(ElementId id);
bool isGeometry() const { return true; }
virtual void layout(LayoutContext* context, LayoutContainer* current) const;
virtual Path path() const = 0;
};
class PathElement : public GeometryElement
{
public:
PathElement();
Path d() const;
Path path() const;
std::unique_ptr<Node> clone() const;
};
class PolyElement : public GeometryElement
{
public:
PolyElement(ElementId id);
PointList points() const;
};
class PolygonElement : public PolyElement
{
public:
PolygonElement();
Path path() const;
std::unique_ptr<Node> clone() const;
};
class PolylineElement : public PolyElement
{
public:
PolylineElement();
Path path() const;
std::unique_ptr<Node> clone() const;
};
class CircleElement : public GeometryElement
{
public:
CircleElement();
Length cx() const;
Length cy() const;
Length r() const;
Path path() const;
std::unique_ptr<Node> clone() const;
};
class EllipseElement : public GeometryElement
{
public:
EllipseElement();
Length cx() const;
Length cy() const;
Length rx() const;
Length ry() const;
Path path() const;
std::unique_ptr<Node> clone() const;
};
class LineElement : public GeometryElement
{
public:
LineElement();
Length x1() const;
Length y1() const;
Length x2() const;
Length y2() const;
Path path() const;
std::unique_ptr<Node> clone() const;
};
class RectElement : public GeometryElement
{
public:
RectElement();
Length x() const;
Length y() const;
Length rx() const;
Length ry() const;
Length width() const;
Length height() const;
Path path() const;
std::unique_ptr<Node> clone() const;
};
} // namespace lunasvg
#endif // GEOMETRYELEMENT_H