mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-23 06:35:38 +00:00
0d52738239
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
123 lines
1.9 KiB
C++
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
|