29 #include YFM_YSLib_UI_Selector
30 #include YFM_YSLib_Service_YBlit
31 #include YFM_YSLib_UI_YGUI
37 using namespace Drawing;
47 RectDrawCheckBox(
const PaintContext& pc,
const Size&
s, Hue base_hue,
48 CursorState cursor_state,
bool is_ticked,
bool is_enabled)
50 const bool inside(cursor_state != CursorState::Outside);
52 const SDst rad(min(s.Width, s.Height));
53 const auto&
g(pc.Target);
54 const auto pt(pc.Location + Size(rad, rad));
55 const auto&
bounds(pc.ClipArea);
56 const Rect
r(pc.Location, s);
59 ? hsl_t{30.F, 1.F, .925F} : hsl_t{30.F, 1.F, .976F}, base_hue)
62 ? hsl_t{26.5F, 1.F, .435F} : hsl_t{30.F, 1.F, .6F}, base_hue)
63 : MakeGray(112)) : MakeGray(188));
71 RectDrawRadioBox(
const PaintContext& pc,
const Size& s, Hue base_hue,
72 CursorState cursor_state,
bool is_ticked,
bool is_enabled)
74 const bool inside(cursor_state != CursorState::Outside);
76 const SDst rad(min(s.Width / 2, s.Height / 2));
77 const auto&
g(pc.Target);
78 const auto pt(pc.Location + Size(rad, rad));
79 const auto&
bounds(pc.ClipArea);
80 const Rect
r(pc.Location, s);
83 ? hsl_t{30.F, 1.F, .925F} : hsl_t{30.F, 1.F, .976F}, base_hue)
86 ? hsl_t{26.5F, 1.F, .435F} : hsl_t{30.F, 1.F, .6F}, base_hue)
87 : MakeGray(112)) : MakeGray(188));
89 if(is_ticked &&
YB_LIKELY(
r.Width > 4 &&
r.Height > 4))
100 using namespace Styles;
108 ystdex::polymorphic_downcast<CheckBox&>(e.GetSender()));
110 RectDrawCheckBox(e,
GetSizeOf(cb), cb.GetHue(),
111 cb.GetCursorState(), cb.IsTicked(),
IsEnabled(cb));
117 FetchEvent<Click>(*this) += [
this]{
155 view.GetSizeRef() = {13, 13};
157 view.GetSizeRef() =
s;
174 using namespace Styles;
182 ystdex::polymorphic_downcast<RadioBox&>(e.GetSender()));
184 RectDrawRadioBox(e,
GetSizeOf(rb), rb.GetHue(),
185 rb.GetCursorState(), rb.IsSelected(),
IsEnabled(rb));
191 FetchEvent<Click>(*this) += [
this]{
226 MSharedSelection::ShareTo(rb);
242 view.GetSizeRef() = {13, 13};
244 view.GetSizeRef() =
s;
void ShareTo(RadioBox &) const
向其它对象覆盖状态。
YF_API HandlerTable & FetchDefault()
取默认样式处理器表。
pt pt Y const IWidget &wgt const IWidget &wgt GetSizeOf
无效化:使相对于部件的子部件的指定区域在直接和间接的窗口缓冲区中无效。
shared_ptr< MSelector > p_selector
YF_API void FillCircle(const Graphics &, const Rect &, const Point &, SDst, Color c)
填充圆形。
YF_API GUIState & FetchGUIState()
取默认图形用户界面公共状态。
void SetSelected()
设置选中状态并检查单选框选中事件。
YF_API void FillRect(const Graphics &g, const Rect &, Color c)
填充标准矩形。
YF_API void Invalidate(IWidget &, const Rect &)
无效化:使相对于部件的指定区域在直接和间接的窗口缓冲区中无效。
enum SelectedState:yimpl(size_t){Unchecked=0, Checked=1, Partial=2} StateType
选择框选中状态类型。
MSelector::SelectedArgs TickedArgs
选择框选中状态参数类型。
void Refresh(PaintEventArgs &&) override
刷新:按指定参数绘制界面并更新状态。
std::uint16_t SDst
屏幕坐标距离。
RadioBox(const Rect &={})
构造:使用指定边界。
YF_API void DrawTick(const Graphics &, const Rect &, const Rect &, Color, Color)
void Select()
设置选中状态并触发单选框选中事件。
CursorState
指针设备光标相对于控件的状态。
void Refresh(PaintEventArgs &&) override
刷新:按指定参数绘制界面并更新状态。
MSelector::SelectedArgs SelectedArgs
单选框选中状态参数类型。
bounds c YF_API void DrawCircle(const Graphics &, const Rect &, const Point &, SDst, Color c)
描画圆形。
void SetTicked(StateType)
设置选中状态并检查复选框选中事件。
void Refresh(PaintEventArgs &&) override
刷新:按指定参数绘制界面并更新状态。
CheckButton(const Rect &={})
构造:使用指定边界。
YF_API void DrawText(const Graphics &g, TextState &ts, const String &str, bool line_wrap)
绘制文本。
bool IsEnabled(const IWidget &wgt)
判断部件是否为可用的控件。
Drawing::Padding Margin
文本和容器的间距。
void Tick(StateType)
设置选中状态并触发复选框选中事件。
void Refresh(PaintEventArgs &&) override
刷新:按指定参数绘制界面并更新状态。
empty_base<> raw_tag
直接构造类型(直接构造重载用)。
AController *controller_ptr Renderer *renderer_ptr View *view_ptr GetView()) DefGetterMem(const ynothrow
YF_API Color RollColor(hsl_t, Hue)
色调偏移。
CheckBox(const Rect &={})
构造:使用指定边界。
Styles::StyleMap Styles
样式映射。
p1 p1 p2 p2 c YF_API void DrawRect(const Graphics &g, const Rect &bounds, const Point &pt, const Size &s, Color c)
描画标准矩形。
RadioButton(const Rect &={})
构造:使用指定边界。