diff options
author | Yuqian Yang <crupest@outlook.com> | 2018-10-04 16:52:11 +0000 |
---|---|---|
committer | Yuqian Yang <crupest@outlook.com> | 2018-10-04 16:52:11 +0000 |
commit | 7e870dd16e2f5b41fa6c6f687723aaa50c16274d (patch) | |
tree | be2b26a42dc9fde97379f98f035113e08e0bc331 /src/ui/controls/toggle_button.cpp | |
parent | 30ecda8bb354d5982978af97aa90b5f49d9ea195 (diff) | |
parent | c5384d496e9ed429ca2baa3ca5e586ff255235eb (diff) | |
download | cru-7e870dd16e2f5b41fa6c6f687723aaa50c16274d.tar.gz cru-7e870dd16e2f5b41fa6c6f687723aaa50c16274d.tar.bz2 cru-7e870dd16e2f5b41fa6c6f687723aaa50c16274d.zip |
Merge branch '12-layout' into 'master'
Resolve "Add padding, margin, border to Control."
Closes #12
See merge request crupest/CruUI!12
Diffstat (limited to 'src/ui/controls/toggle_button.cpp')
-rw-r--r-- | src/ui/controls/toggle_button.cpp | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/src/ui/controls/toggle_button.cpp b/src/ui/controls/toggle_button.cpp index 68bd0fc9..3cd5d3ef 100644 --- a/src/ui/controls/toggle_button.cpp +++ b/src/ui/controls/toggle_button.cpp @@ -1,4 +1,4 @@ -#include "toggle_button.h" +#include "toggle_button.h" #include <fmt/format.h> @@ -83,9 +83,9 @@ namespace cru::ui::controls } - void ToggleButton::OnDraw(ID2D1DeviceContext* device_context) + void ToggleButton::OnDrawContent(ID2D1DeviceContext* device_context) { - Control::OnDraw(device_context); + Control::OnDrawContent(device_context); const auto size = GetSize(); graph::WithTransform(device_context, D2D1::Matrix3x2F::Translation(size.width / 2, size.height / 2), [this](ID2D1DeviceContext* device_context) { @@ -108,34 +108,11 @@ namespace cru::ui::controls Toggle(); } - Size ToggleButton::OnMeasure(const Size& available_size) + Size ToggleButton::OnMeasureContent(const Size& available_size) { - const auto layout_params = GetLayoutParams(); - - auto&& get_measure_length = [](const LayoutSideParams& layout_length, const float available_length, const float fix_length) -> float - { - switch (layout_length.mode) - { - case MeasureMode::Exactly: - { - return std::max(std::min(layout_length.length, available_length), fix_length); - } - case MeasureMode::Stretch: - { - return std::max(available_length, fix_length); - } - case MeasureMode::Content: - { - return fix_length; - } - default: - UnreachableCode(); - } - }; - const Size result_size( - get_measure_length(layout_params->width, available_size.width, half_width * 2 + stroke_width), - get_measure_length(layout_params->height, available_size.height, half_height * 2 + stroke_width) + half_width * 2 + stroke_width, + half_height * 2 + stroke_width ); return result_size; |