8 #ifndef BOOST_GIL_IO_READ_AND_CONVERT_VIEW_HPP
9 #define BOOST_GIL_IO_READ_AND_CONVERT_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 {
30 template <
typename Reader,
typename View>
33 typename std::enable_if
37 detail::is_reader<Reader>,
38 is_format_tag<typename Reader::format_tag_t>
42 reader.check_image_size(
view.dimensions());
43 reader.init_view(
view, reader._settings);
53 template <
typename Device,
typename View,
typename ColorConverter,
typename FormatTag>
58 image_read_settings<FormatTag>
const& settings,
59 ColorConverter
const& cc,
60 typename std::enable_if
64 detail::is_read_device<FormatTag, Device>,
65 is_format_tag<FormatTag>
69 using read_and_convert_t = detail::read_and_convert<ColorConverter>;
70 using reader_t =
typename get_reader<Device, FormatTag, read_and_convert_t>::type;
72 reader_t reader = make_reader(device, settings, read_and_convert_t{cc});
82 template <
typename String,
typename View,
typename ColorConverter,
typename FormatTag>
85 String
const& file_name,
87 image_read_settings<FormatTag>
const& settings,
88 ColorConverter
const& cc,
89 typename std::enable_if
93 is_format_tag<FormatTag>,
94 detail::is_supported_path_spec<String>
98 using read_and_convert_t = detail::read_and_convert<ColorConverter>;
99 using reader_t =
typename get_reader<String, FormatTag, read_and_convert_t>::type;
101 reader_t reader = make_reader(file_name, settings, read_and_convert_t{cc});
111 template <
typename String,
typename View,
typename ColorConverter,
typename FormatTag>
114 String
const& file_name,
116 ColorConverter
const& cc,
117 FormatTag
const& tag,
118 typename std::enable_if
122 is_format_tag<FormatTag>,
123 detail::is_supported_path_spec<String>
127 using read_and_convert_t = detail::read_and_convert<ColorConverter>;
128 using reader_t =
typename get_reader<String, FormatTag, read_and_convert_t>::type;
130 reader_t reader = make_reader(file_name, tag, read_and_convert_t{cc});
140 template <
typename Device,
typename View,
typename ColorConverter,
typename FormatTag>
145 ColorConverter
const& cc,
146 FormatTag
const& tag,
147 typename std::enable_if
151 detail::is_read_device<FormatTag, Device>,
152 is_format_tag<FormatTag>
156 using read_and_convert_t = detail::read_and_convert<ColorConverter>;
157 using reader_t =
typename get_reader<Device, FormatTag, read_and_convert_t>::type;
159 reader_t reader = make_reader(device, tag, read_and_convert_t{cc});
168 template <
typename String,
typename View,
typename FormatTag>
171 String
const& file_name,
173 image_read_settings<FormatTag>
const& settings,
174 typename std::enable_if
178 is_format_tag<FormatTag>,
179 detail::is_supported_path_spec<String>
183 using read_and_convert_t = detail::read_and_convert<default_color_converter>;
184 using reader_t =
typename get_reader<String, FormatTag, read_and_convert_t>::type;
186 reader_t reader = make_reader(file_name, settings, read_and_convert_t{});
195 template <
typename Device,
typename View,
typename FormatTag>
200 image_read_settings<FormatTag>
const& settings,
201 typename std::enable_if
205 detail::is_read_device<FormatTag, Device>,
206 is_format_tag<FormatTag>
210 using read_and_convert_t = detail::read_and_convert<default_color_converter>;
211 using reader_t =
typename get_reader<Device, FormatTag, read_and_convert_t>::type;
213 reader_t reader = make_reader(device, settings, read_and_convert_t{});
222 template <
typename String,
typename View,
typename FormatTag>
225 String
const& file_name,
227 FormatTag
const& tag,
228 typename std::enable_if
232 is_format_tag<FormatTag>,
233 detail::is_supported_path_spec<String>
237 using read_and_convert_t = detail::read_and_convert<default_color_converter>;
238 using reader_t =
typename get_reader<String, FormatTag, read_and_convert_t>::type;
240 reader_t reader = make_reader(file_name, tag, read_and_convert_t{});
249 template <
typename Device,
typename View,
typename FormatTag>
254 FormatTag
const& tag,
255 typename std::enable_if
259 detail::is_read_device<FormatTag, Device>,
260 is_format_tag<FormatTag>
264 using read_and_convert_t = detail::read_and_convert<default_color_converter>;
265 using reader_t =
typename get_reader<Device, FormatTag, read_and_convert_t>::type;
267 reader_t reader = make_reader(device, tag, read_and_convert_t{});
void read_and_convert_view(Reader &reader, View const &view, typename std::enable_if< mp11::mp_and< detail::is_reader< Reader >, is_format_tag< typename Reader::format_tag_t > >::value >::type *=nullptr)
Reads and color-converts an image view. No memory is allocated.
Definition: read_and_convert_view.hpp:32
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