#pragma once #include "NoChildControl.hpp" namespace cru::ui::controls { template class TextControlService; class TextBlock : public NoChildControl { public: static constexpr std::u16string_view control_type = u"TextBlock"; static TextBlock* Create(); static TextBlock* Create(std::u16string text, bool selectable = false); protected: TextBlock(); public: TextBlock(const TextBlock& other) = delete; TextBlock(TextBlock&& other) = delete; TextBlock& operator=(const TextBlock& other) = delete; TextBlock& operator=(TextBlock&& other) = delete; ~TextBlock() override; std::u16string_view GetControlType() const final { return control_type; } render::RenderObject* GetRenderObject() const override; std::u16string GetText() const; void SetText(std::u16string text); bool IsSelectable() const; void SetSelectable(bool value); gsl::not_null GetTextRenderObject(); render::ScrollRenderObject* GetScrollRenderObject() { return nullptr; } private: std::unique_ptr text_render_object_; std::unique_ptr> service_; }; } // namespace cru::ui::controls