diff --git a/libs/gfx/include/psemek/gfx/pixmap.hpp b/libs/gfx/include/psemek/gfx/pixmap.hpp index 02babf58..788cb429 100644 --- a/libs/gfx/include/psemek/gfx/pixmap.hpp +++ b/libs/gfx/include/psemek/gfx/pixmap.hpp @@ -2,6 +2,7 @@ #include #include +#include #include @@ -23,7 +24,7 @@ namespace psemek::gfx void write_pgm(pixmap_monochrome const & p, std::ostream & os); void write_ppm(pixmap_rgb const & p, std::ostream & os); - pixmap_rgba read_png(std::istream & is); - pixmap_monochrome read_png_monochrome(std::istream & is); + pixmap_rgba read_png(io::istream && is); + pixmap_monochrome read_png_monochrome(io::istream && is); } diff --git a/libs/gfx/source/painter.cpp b/libs/gfx/source/painter.cpp index 1209e203..08cc33a7 100644 --- a/libs/gfx/source/painter.cpp +++ b/libs/gfx/source/painter.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include static const char vertex_source[] = @@ -164,8 +164,7 @@ namespace psemek::gfx text_mesh.setup, gfx::normalized, geom::point>(); texture_mesh.setup, gfx::normalized>>(); - util::memory_istream font_data(resource::font_9x12_png); - font_texture.load(gfx::read_png_monochrome(font_data)); + font_texture.load(gfx::read_png_monochrome(io::memory_istream{resource::font_9x12_png})); font_texture.bind(); gl::TexParameteri(gl::TEXTURE_2D, gl::TEXTURE_SWIZZLE_G, gl::RED); diff --git a/libs/gfx/source/png.cpp b/libs/gfx/source/png.cpp index 6bd63cb2..76bd5dcd 100644 --- a/libs/gfx/source/png.cpp +++ b/libs/gfx/source/png.cpp @@ -9,7 +9,7 @@ namespace psemek::gfx { template - basic_pixmap read_png_impl(std::istream & is, png_byte expected_color_type) + basic_pixmap read_png_impl(io::istream & is, png_byte expected_color_type) { png_error_ptr error = [](png_structp, png_const_charp str) { @@ -40,7 +40,7 @@ namespace psemek::gfx if (!end_info) throw std::runtime_error("png_create_info_struct returned null"); png_rw_ptr read = [](png_structp png, png_bytep ptr, size_t count){ - reinterpret_cast(png_get_io_ptr(png))->read(reinterpret_cast(ptr), count); + reinterpret_cast(png_get_io_ptr(png))->read(reinterpret_cast(ptr), count); }; png_set_read_fn(png, &is, read); @@ -74,12 +74,12 @@ namespace psemek::gfx return result; } - pixmap_rgba read_png(std::istream & is) + pixmap_rgba read_png(io::istream && is) { return read_png_impl(is, PNG_COLOR_TYPE_RGBA); } - pixmap_monochrome read_png_monochrome(std::istream & is) + pixmap_monochrome read_png_monochrome(io::istream && is) { return read_png_impl(is, PNG_COLOR_TYPE_GRAY); } diff --git a/libs/ui/source/default_element_factory.cpp b/libs/ui/source/default_element_factory.cpp index 0ac7a7b3..c0785721 100644 --- a/libs/ui/source/default_element_factory.cpp +++ b/libs/ui/source/default_element_factory.cpp @@ -1,7 +1,8 @@ #include #include -#include + +#include #include @@ -548,8 +549,7 @@ namespace psemek::ui default_element_factory::impl::impl() { - util::memory_istream is{resources::cross_red_16x16_png}; - cross_red_16x16 = std::make_shared(gfx::texture_2d::from_pixmap(gfx::read_png(is))); + cross_red_16x16 = std::make_shared(gfx::texture_2d::from_pixmap(gfx::read_png(io::memory_istream{resources::cross_red_16x16_png}))); cross_red_16x16->nearest_filter(); } diff --git a/libs/ui/source/default_fonts.cpp b/libs/ui/source/default_fonts.cpp index 2a7036b3..77c67099 100644 --- a/libs/ui/source/default_fonts.cpp +++ b/libs/ui/source/default_fonts.cpp @@ -3,7 +3,7 @@ #include -#include +#include namespace psemek::ui { @@ -14,8 +14,7 @@ namespace psemek::ui std::string_view name = "default_9x12"; geom::vector size{9, 12}; - util::memory_istream is{gfx::resource::font_9x12_png}; - gfx::texture_2d atlas = gfx::texture_2d::from_pixmap(gfx::read_png_monochrome(is)); + gfx::texture_2d atlas = gfx::texture_2d::from_pixmap(gfx::read_png_monochrome(io::memory_istream{gfx::resource::font_9x12_png})); atlas.nearest_filter(); atlas.clamp(); gl::TexParameteri(atlas.target, gl::TEXTURE_SWIZZLE_G, gl::RED);