28 #ifndef YSL_INC_UI_ywidget_h_
29 #define YSL_INC_UI_ywidget_h_ 1
32 #include YFM_YSLib_UI_YFocus
34 #include YFM_YSLib_UI_YWidgetView
35 #include YFM_YSLib_UI_YRenderer
123 ImplRet(ContainsVisible(wgt, pt.X, pt.
Y))
131 inline
PDefH(IWidget*, FetchContainerPtr, const IWidget& wgt)
132 ImplRet(wgt.GetView().ContainerPtr)
141 ImplRet(wgt.GetView().FocusingPtr)
149 ImplRet(wgt.GetView().GetLocation())
157 ImplRet(wgt.GetView().GetSize())
178 inline PDefH(
void, SetContainerPtrOf, IWidget&
wgt, IWidget* pCon = {})
179 ImplExpr(wgt.GetView().ContainerPtr = pCon)
216 inline PDefH(
void, SetVisibleOf, IWidget& wgt,
bool b)
217 ImplExpr(wgt.GetView().SetVisible(b))
323 PaintChild(IWidget& wgt, const PaintContext& pc);
390 template<
typename _tView,
typename _tRenderer,
typename _tController>
392 Widget(_tView&& pView_ = make_unique<View>(),
393 _tRenderer&& pRenderer_ = make_unique<Renderer>(),
394 _tController&& pController_ = {})
396 controller_ptr(
yforward(pController_)), Background()
456 SetRenderer(unique_ptr<Renderer>);
463 SetView(unique_ptr<View>&&);
void InvalidateParent(IWidget &wgt)
pt pt Y const IWidget &wgt const IWidget &wgt GetSizeOf
无效化:使相对于部件的子部件的指定区域在直接和间接的窗口缓冲区中无效。
void Refresh(PaintEventArgs &&) override
刷新:按指定参数绘制界面并更新状态。
pt pt Y const IWidget &wgt GetLocationOf
YF_API void SetLocationOf(IWidget &, const Point &)
设置部件左上角所在位置(相对于容器的偏移坐标)。
void SetBoundsOf(IWidget &wgt, const Rect &r)
YF_API void Invalidate(IWidget &, const Rect &)
无效化:使相对于部件的指定区域在直接和间接的窗口缓冲区中无效。
void InvalidateAll(IWidget &wgt, const Rect &bounds)
YF_API void PaintChild(IWidget &wgt, PaintEventArgs &&e)
调用指定子部件的 Paint 事件绘制参数指定的事件发送者。
unique_ptr< View > view_ptr
部件视图指针。
void SetInvalidationOf(IWidget &wgt)
YF_API void SetSizeOf(IWidget &, const Size &)
设置部件大小。
void InvalidateVisibleParent(IWidget &wgt)
YF_API void Hide(IWidget &)
隐藏部件。
std::uint16_t SDst
屏幕坐标距离。
#define yforward(_expr)
根据参数类型使用 std::forward 传递对应参数。
#define DefGetter(_q, _t, _n,...)
YF_API void Show(IWidget &)
显示部件。
#define DefSetterMem(_t, _n, _m)
pair< WidgetIterator, WidgetIterator > WidgetRange
两个部件迭代器组成的左闭右开区间确定的迭代器范围。
PDefH(void, Activate, Console &console, Drawing::Color fc=Drawing::ColorSpace::White) ImplExpr(Activate(console
激活:使用指定屏幕、有效性、前景色和默认背景色。
YF_API void PaintVisibleChild(IWidget &, PaintEventArgs &)
调用 PaintChild 指定子部件并合并参数的重绘区域。
YF_API void InvalidateVisible(IWidget &, const Rect &)
无效化:使相对于可见的部件的指定区域在直接和间接的窗口缓冲区中无效。
GBinaryGroup< SPos > Point
屏幕二维点(直角坐标表示)。
pt pt Y bool YF_API ContainsVisible(const IWidget &wgt, SPos x, SPos y)
判断点是否在可见部件的可视区域内。
pt pt Y const IWidget &wgt const IWidget &wgt const IWidget &wgt GetBoundsOf
#define ynothrow
YSLib 无异常抛出保证:若支持 noexcept 关键字, 指定特定的 noexcept 异常规范。
#define YAssertNonnull(_expr)
std::function< void(PaintEventArgs &&)> HBrush
画刷回调函数。
Widget(_tView &&pView_=make_unique< View >(), _tRenderer &&pRenderer_=make_unique< Renderer >(), _tController &&pController_={})
构造:使用视图指针、渲染器指针和控制器指针,无背景。
Selected const shared_ptr< ListType > const pair< Color, Color > viewer Contains
DeclI(YF_API, IResource) EndDeclnamespace Drawing
资源接口。
const IWidget &wgt ImplRet(wgt.GetView().IsVisible()) bool YF_API Contains(const IWidget &
判断点是否在部件的可视区域内。
DefGetterMem(const ynothrow, ListType::size_type, SelectedIndex, viewer) SDst GetFullViewHeight() const
取完整视图高。
YF_API void SetInvalidationToParent(IWidget &)
在容器设置部件的无效区域。
YF_API void RequestToFront(IWidget &)
请求提升至容器前端。
if(YB_UNLIKELY(r >=sGraphics.Height)) throw std return pBuffer r *sGraphics Width
void InvalidateChildren(IWidget &wgt, const Rect &bounds)
unique_ptr< Renderer > renderer_ptr
渲染器指针。
unique_ptr< AController > controller_ptr
控制器指针。
#define DefDelMoveCtor(_t)