Make image_view use texture_view instead of owning a texture
This commit is contained in:
parent
39cbb8b60d
commit
eb78e2cdb7
5 changed files with 19 additions and 18 deletions
|
|
@ -23,13 +23,13 @@ namespace psemek::ui
|
||||||
{
|
{
|
||||||
virtual std::shared_ptr<rich_button> make_button();
|
virtual std::shared_ptr<rich_button> make_button();
|
||||||
virtual std::shared_ptr<rich_button> make_button(std::string text);
|
virtual std::shared_ptr<rich_button> make_button(std::string text);
|
||||||
virtual std::shared_ptr<rich_button> make_button(std::shared_ptr<gfx::texture_2d> icon);
|
virtual std::shared_ptr<rich_button> make_button(gfx::texture_view_2d icon);
|
||||||
virtual std::shared_ptr<label> make_label(std::string text);
|
virtual std::shared_ptr<label> make_label(std::string text);
|
||||||
virtual std::shared_ptr<frame> make_frame();
|
virtual std::shared_ptr<frame> make_frame();
|
||||||
virtual std::shared_ptr<window> make_window(std::string caption);
|
virtual std::shared_ptr<window> make_window(std::string caption);
|
||||||
virtual std::shared_ptr<screen> make_screen();
|
virtual std::shared_ptr<screen> make_screen();
|
||||||
virtual std::shared_ptr<grid_layout> make_grid_layout();
|
virtual std::shared_ptr<grid_layout> make_grid_layout();
|
||||||
virtual std::shared_ptr<image_view> make_image_view(std::shared_ptr<gfx::texture_2d> image);
|
virtual std::shared_ptr<image_view> make_image_view(gfx::texture_view_2d image);
|
||||||
virtual std::shared_ptr<rich_image_view> make_rich_image_view(std::shared_ptr<gfx::texture_2d> image);
|
virtual std::shared_ptr<rich_image_view> make_rich_image_view(std::shared_ptr<gfx::texture_2d> image);
|
||||||
virtual std::shared_ptr<checkbox> make_checkbox(bool value);
|
virtual std::shared_ptr<checkbox> make_checkbox(bool value);
|
||||||
virtual std::shared_ptr<slider> make_slider();
|
virtual std::shared_ptr<slider> make_slider();
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
#include <psemek/ui/element.hpp>
|
#include <psemek/ui/element.hpp>
|
||||||
#include <psemek/ui/box_shape.hpp>
|
#include <psemek/ui/box_shape.hpp>
|
||||||
|
|
||||||
#include <psemek/gfx/texture.hpp>
|
#include <psemek/gfx/texture_view.hpp>
|
||||||
|
|
||||||
namespace psemek::ui
|
namespace psemek::ui
|
||||||
{
|
{
|
||||||
|
|
@ -20,8 +20,8 @@ namespace psemek::ui
|
||||||
virtual bool keep_aspect_ratio() const { return keep_aspect_ratio_; }
|
virtual bool keep_aspect_ratio() const { return keep_aspect_ratio_; }
|
||||||
virtual void set_keep_aspect_ratio(bool value);
|
virtual void set_keep_aspect_ratio(bool value);
|
||||||
|
|
||||||
virtual std::shared_ptr<gfx::texture_2d> image() const { return image_; }
|
virtual gfx::texture_view_2d image() const { return image_; }
|
||||||
virtual void set_image(std::shared_ptr<gfx::texture_2d> image);
|
virtual void set_image(gfx::texture_view_2d image);
|
||||||
|
|
||||||
virtual gfx::color_rgba const & color() const { return color_; }
|
virtual gfx::color_rgba const & color() const { return color_; }
|
||||||
virtual void set_color(gfx::color_rgba const & c) { color_ = c; }
|
virtual void set_color(gfx::color_rgba const & c) { color_ = c; }
|
||||||
|
|
@ -37,7 +37,7 @@ namespace psemek::ui
|
||||||
bool upscale_ = true;
|
bool upscale_ = true;
|
||||||
bool downscale_ = true;
|
bool downscale_ = true;
|
||||||
bool keep_aspect_ratio_ = true;
|
bool keep_aspect_ratio_ = true;
|
||||||
std::shared_ptr<gfx::texture_2d> image_;
|
gfx::texture_view_2d image_;
|
||||||
gfx::color_rgba color_{0, 0, 0, 0};
|
gfx::color_rgba color_{0, 0, 0, 0};
|
||||||
box_shape shape_;
|
box_shape shape_;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -207,11 +207,12 @@ namespace psemek::ui
|
||||||
: window
|
: window
|
||||||
{
|
{
|
||||||
window_impl(std::shared_ptr<gfx::texture_2d> close_icon)
|
window_impl(std::shared_ptr<gfx::texture_2d> close_icon)
|
||||||
: caption_(std::make_shared<label>())
|
: close_texture_(std::move(close_icon))
|
||||||
|
, caption_(std::make_shared<label>())
|
||||||
, close_button_(std::make_shared<button_impl>())
|
, close_button_(std::make_shared<button_impl>())
|
||||||
{
|
{
|
||||||
close_button_->set_icon(std::make_shared<image_view>());
|
close_button_->set_icon(std::make_shared<image_view>());
|
||||||
close_button_->icon()->set_image(close_icon);
|
close_button_->icon()->set_image({close_texture_.get()});
|
||||||
|
|
||||||
caption_->set_parent(this);
|
caption_->set_parent(this);
|
||||||
close_button_->set_parent(this);
|
close_button_->set_parent(this);
|
||||||
|
|
@ -390,6 +391,7 @@ namespace psemek::ui
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
std::shared_ptr<gfx::texture_2d> close_texture_;
|
||||||
std::shared_ptr<label> caption_;
|
std::shared_ptr<label> caption_;
|
||||||
std::shared_ptr<rich_button> close_button_;
|
std::shared_ptr<rich_button> close_button_;
|
||||||
std::shared_ptr<element> child_;
|
std::shared_ptr<element> child_;
|
||||||
|
|
|
||||||
|
|
@ -22,12 +22,12 @@ namespace psemek::ui
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<rich_button> element_factory::make_button(std::shared_ptr<gfx::texture_2d> image)
|
std::shared_ptr<rich_button> element_factory::make_button(gfx::texture_view_2d icon)
|
||||||
{
|
{
|
||||||
auto b = make_button();
|
auto b = make_button();
|
||||||
if (b)
|
if (b)
|
||||||
{
|
{
|
||||||
auto i = make_image_view(std::move(image));
|
auto i = make_image_view(icon);
|
||||||
if (i)
|
if (i)
|
||||||
{
|
{
|
||||||
i->set_downscale(false);
|
i->set_downscale(false);
|
||||||
|
|
@ -36,7 +36,6 @@ namespace psemek::ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return b;
|
return b;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<label> element_factory::make_label(std::string text)
|
std::shared_ptr<label> element_factory::make_label(std::string text)
|
||||||
|
|
@ -58,10 +57,10 @@ namespace psemek::ui
|
||||||
return std::make_shared<grid_layout>();
|
return std::make_shared<grid_layout>();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<image_view> element_factory::make_image_view(std::shared_ptr<gfx::texture_2d> image)
|
std::shared_ptr<image_view> element_factory::make_image_view(gfx::texture_view_2d image)
|
||||||
{
|
{
|
||||||
auto i = std::make_shared<image_view>();
|
auto i = std::make_shared<image_view>();
|
||||||
i->set_image(std::move(image));
|
i->set_image(image);
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,9 @@ namespace psemek::ui
|
||||||
post_reshape();
|
post_reshape();
|
||||||
}
|
}
|
||||||
|
|
||||||
void image_view::set_image(std::shared_ptr<gfx::texture_2d> image)
|
void image_view::set_image(gfx::texture_view_2d image)
|
||||||
{
|
{
|
||||||
image_ = std::move(image);
|
image_ = image;
|
||||||
post_reshape();
|
post_reshape();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace psemek::ui
|
||||||
|
|
||||||
if (image_)
|
if (image_)
|
||||||
{
|
{
|
||||||
auto const size = image_->size();
|
auto const size = image_.size();
|
||||||
|
|
||||||
if (!downscale_)
|
if (!downscale_)
|
||||||
{
|
{
|
||||||
|
|
@ -55,7 +55,7 @@ namespace psemek::ui
|
||||||
{
|
{
|
||||||
if (!image_) return;
|
if (!image_) return;
|
||||||
|
|
||||||
auto const size = image_->size();
|
auto const size = image_.size();
|
||||||
|
|
||||||
auto box = shape_.box;
|
auto box = shape_.box;
|
||||||
|
|
||||||
|
|
@ -81,7 +81,7 @@ namespace psemek::ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p.draw_image(box, *image_, color_);
|
p.draw_image(box, image_, color_);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue