From 23bf673f9582d7bc99eb6440be1df0cf5c43b725 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 25 Jul 2020 23:57:16 +0800 Subject: Implement ScrollRenderObject::ScrollToContain . --- include/cru/ui/render/ScrollRenderObject.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'include/cru/ui/render/ScrollRenderObject.hpp') diff --git a/include/cru/ui/render/ScrollRenderObject.hpp b/include/cru/ui/render/ScrollRenderObject.hpp index 45fa3993..9b0cbf9a 100644 --- a/include/cru/ui/render/ScrollRenderObject.hpp +++ b/include/cru/ui/render/ScrollRenderObject.hpp @@ -3,6 +3,8 @@ #include "cru/platform/graph/util/Painter.hpp" +#include + namespace cru::ui::render { // Measure logic: // Measure child with unspecified min and max size. @@ -26,9 +28,19 @@ class ScrollRenderObject : public RenderObject { // Return the coerced scroll offset. Point GetScrollOffset(); void SetScrollOffset(const Point& offset); + void SetScrollOffset(std::optional x, std::optional y); Point GetRawScrollOffset() const { return scroll_offset_; } + // Return the viewable area rect. + // Lefttop is scroll offset. Size is content size. + // If size exceeds view area, left and top is more important when calculate + // new scroll offset. + Rect GetViewRect() { + return Rect{GetScrollOffset(), GetContentRect().GetSize()}; + } + // Rect lefttop relative to content rect. + // Param margin is just for convenience and it will just add to the rect. void ScrollToContain(const Rect& rect, const Thickness& margin = Thickness{}); protected: -- cgit v1.2.3