diff --git a/libs/ui/include/psemek/ui/label.hpp b/libs/ui/include/psemek/ui/label.hpp index 97edd4a9..729f0c86 100644 --- a/libs/ui/include/psemek/ui/label.hpp +++ b/libs/ui/include/psemek/ui/label.hpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -58,6 +59,9 @@ namespace psemek::ui virtual void set_skip_spaces(bool value); virtual bool skip_spaces() const { return skip_spaces_; } + virtual struct image_provider * set_image_provider(struct image_provider * provider); + virtual struct image_provider * image_provider() const { return image_provider_; } + struct shape const & shape() const override { return shape_; } void reshape(geom::box const & bbox) override; @@ -83,6 +87,8 @@ namespace psemek::ui overflow_mode overflow_ = overflow_mode::ignore; bool skip_spaces_ = false; + struct image_provider * image_provider_ = nullptr; + box_shape shape_; struct text_chunk diff --git a/libs/ui/source/label.cpp b/libs/ui/source/label.cpp index 6572bd32..d8b51de0 100644 --- a/libs/ui/source/label.cpp +++ b/libs/ui/source/label.cpp @@ -119,6 +119,13 @@ namespace psemek::ui on_state_changed(); } + image_provider * label::set_image_provider(struct image_provider * provider) + { + std::swap(provider, image_provider_); + on_state_changed(); + return provider; + } + void label::set_overflow(overflow_mode value) { overflow_ = value;