#pragma once #include class SvgDocument; class SvgShapeElement; class XmlAttribute; class Scene; class SceneModel; class SceneText; class Transform; class SvgPainter { public: std::unique_ptr paint(Scene* scene, double width = 800.0, double height = 800.0) const; private: void paintMesh(SvgDocument* document, SceneModel* model, bool showOutline = false) const; void paintPrimitive(SvgDocument* document, SceneModel* model) const; void paintRect(SvgDocument* document, SceneModel* model) const; void paintCircle(SvgDocument* document, SceneModel* model) const; void paintLine(SvgDocument* document, SceneModel* model) const; void paintLineSegment(SvgDocument* document, SceneModel* model) const; void paintPath(SvgDocument* document, SceneModel* model) const; void paintPolygon(SvgDocument* document, SceneModel* model) const; void paintText(SvgDocument* document, SceneText* model) const; void setStyle(SceneModel* model, SvgShapeElement* element) const; std::unique_ptr toTransform(const Transform& transform) const; };