ES-DE/source/geometryelement.h
Leon Styhre 3acd894f37 Squashed 'external/lunasvg/' changes from 7417baa0a..d13d8e521
d13d8e521 Refactoring
4925c87a8 Update
794c38591 Update
49eee9643 Update
914aee5ea Update
3bb00ecee Fix ParserString string-view iterator cast in windows
fabea2008 Fix string-view iterator cast in windows
bbcf0d34f Update
081df20f2 Update
fe3101f91 Refactoring
e9a41dc83 Refactoring
637121f89 Update lunasvg.cpp
d0abdccb1 Remove Document transformation methods
caa4b2410 Fix ft_stroke_border_export assertion
592533914 Fix SW_FT_Outline points overflow #55
0d40b061c Update

git-subtree-dir: external/lunasvg
git-subtree-split: d13d8e521c21f5f750ef0f6f92163f0131afdd3e
2022-10-03 20:53:48 +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