From 574e69fb379cd54fc3034fe45a155e770435b97d Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Sun, 15 Sep 2019 17:06:34 +0800 Subject: ... --- include/cru/ui/render/border_render_object.hpp | 55 ++++++++++++-------------- 1 file changed, 26 insertions(+), 29 deletions(-) (limited to 'include/cru/ui/render') diff --git a/include/cru/ui/render/border_render_object.hpp b/include/cru/ui/render/border_render_object.hpp index 69372eb8..5c147df5 100644 --- a/include/cru/ui/render/border_render_object.hpp +++ b/include/cru/ui/render/border_render_object.hpp @@ -33,48 +33,41 @@ struct CornerRadius { }; struct BorderStyle { - std::shared_ptr brush; - Thickness thickness; - CornerRadius corner_radius; + std::shared_ptr brush{}; + Thickness thickness{}; + CornerRadius corner_radius{}; }; class BorderRenderObject : public RenderObject { public: - explicit BorderRenderObject(std::shared_ptr brush); + BorderRenderObject(); BorderRenderObject(const BorderRenderObject& other) = delete; BorderRenderObject(BorderRenderObject&& other) = delete; BorderRenderObject& operator=(const BorderRenderObject& other) = delete; BorderRenderObject& operator=(BorderRenderObject&& other) = delete; - ~BorderRenderObject() override = default; + ~BorderRenderObject() override; - bool IsEnabled() const { return is_enabled_; } - void SetEnabled(bool enabled) { is_enabled_ = enabled; } + bool IsBorderEnabled() const { return is_border_enabled_; } + void SetBorderEnabled(bool enabled) { is_border_enabled_ = enabled; } - std::shared_ptr GetBrush() const { - return style_.brush; - } - void SetBrush(std::shared_ptr new_brush) { - style_.brush = std::move(new_brush); + BorderStyle* GetBorderStyle() { + return &border_style_; } - Thickness GetBorderWidth() const { return style_.thickness; } - // Remember to call Refresh after set shape properties. - void SetBorderWidth(const Thickness& thickness) { - style_.thickness = thickness; + std::shared_ptr GetForegroundBrush() { + return foreground_brush_; } - CornerRadius GetCornerRadius() const { return style_.corner_radius; } - // Remember to call Refresh after set shape properties. - void SetCornerRadius(const CornerRadius& new_corner_radius) { - style_.corner_radius = new_corner_radius; + void SetForegroundBrush(std::shared_ptr brush) { + foreground_brush_ = std::move(brush); } - BorderStyle GetStyle() const { - return style_; + std::shared_ptr GetBackgroundBrush() { + return foreground_brush_; } - // Remember to call Refresh after set shape properties. - void SetStyle(BorderStyle newStyle) { - style_ = std::move(newStyle); + + void SetBackgroundBrush(std::shared_ptr brush) { + foreground_brush_ = std::move(brush); } void Refresh() { RecreateGeometry(); } @@ -101,13 +94,17 @@ class BorderRenderObject : public RenderObject { void RecreateGeometry(); private: - bool is_enabled_ = false; + bool is_border_enabled_ = false; + BorderStyle border_style_; - BorderStyle style_; + std::shared_ptr foreground_brush_; + std::shared_ptr background_brush_; // The ring. Used for painting. - std::shared_ptr geometry_ = nullptr; + std::unique_ptr geometry_; + // Area including inner area of the border. Used for painting foreground and background. + std::unique_ptr border_inner_geometry_; // Area including border ring and inner area. Used for hit test. - std::shared_ptr border_outer_geometry_ = nullptr; + std::unique_ptr border_outer_geometry_; }; } // namespace cru::ui::render -- cgit v1.2.3