diff options
author | 杨宇千 <crupest@outlook.com> | 2018-11-13 22:44:07 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-13 22:44:07 +0800 |
commit | b08ba6c83902d140fb14131b3f01837985d39c17 (patch) | |
tree | 98719593d5854f2162ea8d87b7fecdc3472968bc /CruUI-Generate/cru_ui.hpp | |
parent | 91dda866a0919f9e6cfb5e7857ac0466572d96d8 (diff) | |
parent | 6d0a44597eb6e35993b46642ebf85abd94bca2d7 (diff) | |
download | cru-b08ba6c83902d140fb14131b3f01837985d39c17.tar.gz cru-b08ba6c83902d140fb14131b3f01837985d39c17.tar.bz2 cru-b08ba6c83902d140fb14131b3f01837985d39c17.zip |
Merge pull request #18 from crupest/bound
Add support for enhanced bound check.
Diffstat (limited to 'CruUI-Generate/cru_ui.hpp')
-rw-r--r-- | CruUI-Generate/cru_ui.hpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/CruUI-Generate/cru_ui.hpp b/CruUI-Generate/cru_ui.hpp index d6df9b13..302ce611 100644 --- a/CruUI-Generate/cru_ui.hpp +++ b/CruUI-Generate/cru_ui.hpp @@ -1596,6 +1596,8 @@ namespace cru::ui //Absolute point to local point. Point WindowToControl(const Point& point) const; + // Default implement in Control is test point in border geometry's + // fill and stroke with width of border. virtual bool IsPointInside(const Point& point); @@ -1743,6 +1745,8 @@ namespace cru::ui void RaisePositionChangedEvent(events::PositionChangedEventArgs& args); void RaiseSizeChangedEvent(events::SizeChangedEventArgs& args); + void RegenerateBorderGeometry(); + //*************** region: mouse event *************** virtual void OnMouseEnter(events::MouseEventArgs& args); virtual void OnMouseLeave(events::MouseEventArgs& args); @@ -1847,6 +1851,8 @@ namespace cru::ui bool is_bordered_ = false; BorderProperty border_property_; + Microsoft::WRL::ComPtr<ID2D1Geometry> border_geometry_ = nullptr; + AnyMap additional_property_map_{}; bool is_focus_on_pressed_ = true; @@ -2094,6 +2100,9 @@ namespace cru::ui //This method has no effect for a window. Use SetClientSize instead. void SetSize(const Size& size) override final; + //Override. If point is in client area, it is in window. + bool IsPointInside(const Point& point) override final; + //*************** region: layout *************** void WindowInvalidateLayout(); @@ -3025,6 +3034,11 @@ namespace cru::ui namespace cru::ui { + inline D2D1_POINT_2F Convert(const Point& point) + { + return D2D1::Point2F(point.x, point.y); + } + inline D2D1_RECT_F Convert(const Rect& rect) { return D2D1::RectF(rect.left, rect.top, rect.left + rect.width, rect.top + rect.height); |