diff --git a/libs/ui/include/psemek/ui/painter.hpp b/libs/ui/include/psemek/ui/painter.hpp index 3f7e2933..de9d997b 100644 --- a/libs/ui/include/psemek/ui/painter.hpp +++ b/libs/ui/include/psemek/ui/painter.hpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -15,6 +16,7 @@ namespace psemek::ui virtual void draw_triangle(geom::triangle> const & tri, gfx::color_rgba const & color) = 0; virtual void draw_glyph(font const & f, char32_t c, geom::box const & rect, gfx::color_rgba const & color) = 0; virtual void draw_image(geom::box const & rect, gfx::texture_2d const & tex, gfx::color_rgba const & color = {0, 0, 0, 0}) = 0; + virtual void draw_image(geom::box const & rect, gfx::texture_view_2d const & tex, gfx::color_rgba const & color = {0, 0, 0, 0}) = 0; virtual void draw_subimage(geom::box const & rect, gfx::texture_2d const & tex, geom::box const & part, gfx::color_rgba const & color = {0, 0, 0, 0}) = 0; virtual void begin_stencil() = 0; diff --git a/libs/ui/include/psemek/ui/painter_impl.hpp b/libs/ui/include/psemek/ui/painter_impl.hpp index ad0df201..663e3a0c 100644 --- a/libs/ui/include/psemek/ui/painter_impl.hpp +++ b/libs/ui/include/psemek/ui/painter_impl.hpp @@ -19,6 +19,7 @@ namespace psemek::ui void draw_triangle(geom::triangle> const & tri, gfx::color_rgba const & color) override; void draw_glyph(font const & f, char32_t c, geom::box const & rect, gfx::color_rgba const & color) override; void draw_image(geom::box const & rect, gfx::texture_2d const & tex, gfx::color_rgba const & color) override; + void draw_image(geom::box const & rect, gfx::texture_view_2d const & tex, gfx::color_rgba const & color = {0, 0, 0, 0}) override; void draw_subimage(geom::box const & rect, gfx::texture_2d const & tex, geom::box const & part, gfx::color_rgba const & color = {0, 0, 0, 0}) override; void begin_stencil() override; diff --git a/libs/ui/source/painter_impl.cpp b/libs/ui/source/painter_impl.cpp index 0c38d47a..6fb774ea 100644 --- a/libs/ui/source/painter_impl.cpp +++ b/libs/ui/source/painter_impl.cpp @@ -342,6 +342,11 @@ void main() draw_subimage(rect, tex, part, color); } + void painter_impl::draw_image(geom::box const & rect, gfx::texture_view_2d const & tex, gfx::color_rgba const & color) + { + draw_subimage(rect, *tex.texture, geom::cast(tex.part), color); + } + void painter_impl::draw_subimage(geom::box const & rect, gfx::texture_2d const & tex, geom::box const & part, gfx::color_rgba const & color) { auto & batch = impl().batch(textured_batch{&tex});