30 class Impl :
public ComponentBase {
32 explicit Impl(std::function<
Element()> render)
33 : render_(std::move(render)) {}
34 Element OnRender()
override {
return render_(); }
35 std::function<
Element()> render_;
63 renderer->Add(std::move(child));
86 class Impl :
public ComponentBase {
88 explicit Impl(std::function<
Element(
bool)> render)
89 : render_(std::move(render)) {}
92 Element OnRender()
override {
return render_(Focused()) | reflect(box_); }
93 bool Focusable()
const override {
return true; }
94 bool OnEvent(Event event)
override {
95 if (event.is_mouse() && box_.Contain(event.mouse().x, event.mouse().y)) {
96 if (!CaptureMouse(event)) {
107 std::function<
Element(
bool)> render_;
128 return [decorator](
Component component) {
129 return Renderer(component, [component, decorator] {
130 return component->Render() | decorator;
Component Renderer(Component child, std::function< Element()>)
|child| に似た、|render| をComponent::Render()イベントとして 使用する新しいComponentを返します。
std::shared_ptr< T > Make(Args &&... args)
std::shared_ptr< Node > Element
std::function< Element(Element)> ElementDecorator
std::function< Component(Component)> ComponentDecorator
std::shared_ptr< ComponentBase > Component