psemek/libs/ui/source/element_factory.cpp
2021-03-05 15:51:17 +03:00

78 lines
1.8 KiB
C++

#include <psemek/ui/element_factory.hpp>
namespace psemek::ui
{
std::shared_ptr<button> element_factory::make_button() { return nullptr; }
std::shared_ptr<button> element_factory::make_button(std::string text)
{
auto b = make_button();
if (b)
{
auto l = make_label(std::move(text));
if (l)
{
l->set_valign(label::valignment::center);
l->set_halign(label::halignment::center);
l->set_overflow(label::overflow_mode::ellipsis);
l->set_multiline(label::multiline_mode::none);
b->set_label(l);
}
}
return b;
}
std::shared_ptr<button> element_factory::make_button(std::shared_ptr<gfx::texture_2d> image)
{
auto b = make_button();
if (b)
{
auto i = make_image_view(std::move(image));
if (i)
{
i->set_downscale(false);
i->set_upscale(false);
b->set_icon(i);
}
}
return b;
}
std::shared_ptr<label> element_factory::make_label(std::string text)
{
return std::make_shared<label>(std::move(text));
}
std::shared_ptr<frame> element_factory::make_frame() { return nullptr; }
std::shared_ptr<window> element_factory::make_window(std::string) { return nullptr; }
std::shared_ptr<screen> element_factory::make_screen()
{
return std::make_shared<screen>();
}
std::shared_ptr<grid_layout> element_factory::make_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)
{
auto i = std::make_shared<image_view>();
i->set_image(std::move(image));
return i;
}
std::shared_ptr<rich_image_view> element_factory::make_rich_image_view(std::shared_ptr<gfx::texture_2d> image)
{
auto i = std::make_shared<rich_image_view>();
i->set_image(std::move(image));
return i;
}
std::shared_ptr<slider> element_factory::make_slider() { return nullptr; }
}