8 #ifndef BOOST_GIL_IO_READ_VIEW_HPP
9 #define BOOST_GIL_IO_READ_VIEW_HPP
11 #include <boost/gil/io/base.hpp>
12 #include <boost/gil/io/conversion_policies.hpp>
13 #include <boost/gil/io/device.hpp>
14 #include <boost/gil/io/get_reader.hpp>
15 #include <boost/gil/io/path_spec.hpp>
16 #include <boost/gil/detail/mp11.hpp>
18 #include <type_traits>
20 namespace boost {
namespace gil {
29 template <
typename Reader,
typename View>
32 typename std::enable_if
36 detail::is_reader<Reader>,
37 typename is_format_tag<typename Reader::format_tag_t>::type,
40 typename get_pixel_type<View>::type,
41 typename Reader::format_tag_t
46 reader.check_image_size(
view.dimensions());
47 reader.init_view(
view, reader._settings);
56 template <
typename Device,
typename View,
typename FormatTag>
61 image_read_settings<FormatTag>
const& settings,
62 typename std::enable_if
66 detail::is_read_device<FormatTag, Device>,
67 typename is_format_tag<FormatTag>::type,
68 typename is_read_supported
70 typename get_pixel_type<View>::type,
77 typename get_reader<Device, FormatTag, detail::read_and_no_convert>::type;
79 reader_t reader = make_reader(file, settings, detail::read_and_no_convert());
88 template <
typename Device,
typename View,
typename FormatTag>
90 void read_view(Device& file, View
const&
view, FormatTag
const& tag,
91 typename std::enable_if
95 typename is_format_tag<FormatTag>::type,
96 detail::is_read_device<FormatTag, Device>,
97 typename is_read_supported
99 typename get_pixel_type<View>::type,
102 >::value>::type* =
nullptr)
105 typename get_reader<Device, FormatTag, detail::read_and_no_convert>::type;
107 reader_t reader = make_reader(file, tag, detail::read_and_no_convert());
116 template <
typename String,
typename View,
typename FormatTag>
119 String
const& file_name,
121 image_read_settings<FormatTag>
const& settings,
122 typename std::enable_if
126 typename detail::is_supported_path_spec<String>::type,
127 typename is_format_tag<FormatTag>::type,
128 typename is_read_supported
130 typename get_pixel_type<View>::type,
137 typename get_reader<String, FormatTag, detail::read_and_no_convert>::type;
139 reader_t reader = make_reader(file_name, settings, detail::read_and_no_convert());
148 template <
typename String,
typename View,
typename FormatTag>
150 void read_view(String
const& file_name, View
const&
view, FormatTag
const& tag,
151 typename std::enable_if
155 typename detail::is_supported_path_spec<String>::type,
156 typename is_format_tag<FormatTag>::type,
157 typename is_read_supported
159 typename get_pixel_type<View>::type,
166 typename get_reader<String, FormatTag, detail::read_and_no_convert>::type;
168 reader_t reader = make_reader(file_name, tag, detail::read_and_no_convert());
void read_view(Reader reader, View const &view, typename std::enable_if< mp11::mp_and< detail::is_reader< Reader >, typename is_format_tag< typename Reader::format_tag_t >::type, typename is_read_supported< typename get_pixel_type< View >::type, typename Reader::format_tag_t >::type >::value >::type *=nullptr)
Reads an image view without conversion. No memory is allocated.
Definition: read_view.hpp:31
auto view(image< Pixel, IsPlanar, Alloc > &img) -> typename image< Pixel, IsPlanar, Alloc >::view_t const &
Returns the non-constant-pixel view of an image.
Definition: image.hpp:565
defined(BOOST_NO_CXX17_HDR_MEMORY_RESOURCE)
Definition: algorithm.hpp:36