aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/render')
-rw-r--r--src/ui/render/render_object.cpp21
-rw-r--r--src/ui/render/text_render_object.cpp13
2 files changed, 34 insertions, 0 deletions
diff --git a/src/ui/render/render_object.cpp b/src/ui/render/render_object.cpp
index 54c2d1b4..5cce6d0d 100644
--- a/src/ui/render/render_object.cpp
+++ b/src/ui/render/render_object.cpp
@@ -35,6 +35,27 @@ void RenderObject::RemoveChild(const int position) {
OnRemoveChild(removed_child, position);
}
+Point RenderObject::GetTotalOffset() const {
+ Point result{};
+ const RenderObject* render_object = this;
+
+ while (render_object != nullptr) {
+ const auto o = render_object->GetOffset();
+ result.x += o.x;
+ result.y += o.y;
+ render_object = render_object->GetParent();
+ }
+
+ return result;
+}
+
+Point RenderObject::FromRootToContent(const Point& point) const {
+ const auto offset = GetTotalOffset();
+ const auto rect = GetContentRect();
+ return Point{point.x - (offset.x + rect.left),
+ point.y - (offset.y + rect.top)};
+}
+
void RenderObject::Measure(const Size& available_size) {
OnMeasureCore(available_size);
}
diff --git a/src/ui/render/text_render_object.cpp b/src/ui/render/text_render_object.cpp
index 6048f731..d14a46e2 100644
--- a/src/ui/render/text_render_object.cpp
+++ b/src/ui/render/text_render_object.cpp
@@ -47,6 +47,19 @@ void TextRenderObject::SetFont(std::shared_ptr<platform::graph::IFont> font) {
text_layout_->SetFont(std::move(font));
}
+std::vector<Rect> TextRenderObject::TextRangeRect(const TextRange& text_range) {
+ return text_layout_->TextRangeRect(text_range);
+}
+
+Point TextRenderObject::TextSingleRect(int position, bool trailing) {
+ return text_layout_->TextSingleRect(position, trailing);
+}
+
+platform::graph::TextHitTestResult TextRenderObject::TextHitTest(
+ const Point& point) {
+ return text_layout_->HitTest(point);
+}
+
void TextRenderObject::Draw(platform::graph::IPainter* painter) {
platform::graph::util::WithTransform(
painter,