summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/Painting/SVGGeometryPaintable.h
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2022-03-10 14:02:25 +0100
committerAndreas Kling <kling@serenityos.org>2022-03-11 00:21:49 +0100
commit02b316fd5cc2039a30cab33edee4595900cb35aa (patch)
tree22c7ac3c6c93d97fd7548a2b1286516260545a05 /Userland/Libraries/LibWeb/Painting/SVGGeometryPaintable.h
parentf6497b64ac52674e99564d83c4fad6229d06b1ef (diff)
downloadserenity-02b316fd5cc2039a30cab33edee4595900cb35aa.zip
LibWeb: Let Paintable perform the painting
This patch adds a bunch of Paintable subclasses, each corresponding to the Layout::Node subclasses that had a paint() override. All painting logic is moved from layout nodes into their corresponding paintables. Paintables are now created by asking a Layout::Box to produce one: static NonnullOwnPtr<Paintable> Layout::Box::create_paintable() Note that inline nodes still have their painting logic. Since they are not boxes, and all paintables have a corresponding box, we'll need to come up with some other solution for them.
Diffstat (limited to 'Userland/Libraries/LibWeb/Painting/SVGGeometryPaintable.h')
-rw-r--r--Userland/Libraries/LibWeb/Painting/SVGGeometryPaintable.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/Userland/Libraries/LibWeb/Painting/SVGGeometryPaintable.h b/Userland/Libraries/LibWeb/Painting/SVGGeometryPaintable.h
new file mode 100644
index 0000000000..4ae8d553a4
--- /dev/null
+++ b/Userland/Libraries/LibWeb/Painting/SVGGeometryPaintable.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <LibWeb/Layout/SVGGeometryBox.h>
+#include <LibWeb/Painting/SVGGraphicsPaintable.h>
+
+namespace Web::Painting {
+
+class SVGGeometryPaintable : public SVGGraphicsPaintable {
+public:
+ static NonnullOwnPtr<SVGGeometryPaintable> create(Layout::SVGGeometryBox const&);
+
+ virtual void paint(PaintContext&, PaintPhase) const override;
+
+ Layout::SVGGeometryBox const& layout_box() const;
+
+protected:
+ SVGGeometryPaintable(Layout::SVGGeometryBox const&);
+};
+
+}