aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/CanvasRenderObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/render/CanvasRenderObject.cpp')
-rw-r--r--src/ui/render/CanvasRenderObject.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/ui/render/CanvasRenderObject.cpp b/src/ui/render/CanvasRenderObject.cpp
new file mode 100644
index 00000000..16ac9239
--- /dev/null
+++ b/src/ui/render/CanvasRenderObject.cpp
@@ -0,0 +1,28 @@
+#include "cru/ui/render/CanvasRenderObject.hpp"
+
+#include "cru/ui/render/LayoutUtility.hpp"
+
+namespace cru::ui::render {
+CanvasRenderObject::CanvasRenderObject() : RenderObject(ChildMode::None) {}
+
+CanvasRenderObject::~CanvasRenderObject() = default;
+
+void CanvasRenderObject::Draw(platform::graph::IPainter* painter) {
+ const auto rect = GetContentRect();
+ CanvasPaintEventArgs args{painter, rect};
+ paint_event_.Raise(args);
+}
+
+RenderObject* CanvasRenderObject::HitTest(const Point& point) {
+ const auto padding_rect = GetPaddingRect();
+ return padding_rect.IsPointInside(point) ? this : nullptr;
+}
+
+Size CanvasRenderObject::OnMeasureContent(const Size& available_size) {
+ return Min(available_size, GetDesiredSize());
+}
+
+void CanvasRenderObject::OnLayoutContent(const Rect& content_rect) {
+ CRU_UNUSED(content_rect)
+}
+} // namespace cru::ui::render