8 #ifndef BOOST_GIL_IO_MAKE_READER_HPP 9 #define BOOST_GIL_IO_MAKE_READER_HPP 11 #include <boost/gil/io/get_reader.hpp> 13 #include <boost/mpl/and.hpp> 15 #include <type_traits> 17 namespace boost {
namespace gil {
19 template <
typename String,
typename FormatTag,
typename ConversionPolicy>
22 String
const&file_name,
23 image_read_settings<FormatTag>
const& settings,
24 ConversionPolicy
const&,
25 typename std::enable_if
29 detail::is_supported_path_spec<String>,
30 is_format_tag<FormatTag>
33 ->
typename get_reader<String, FormatTag, ConversionPolicy>::type
35 typename get_read_device<String, FormatTag>::type device(
36 detail::convert_to_native_string(file_name),
37 typename detail::file_stream_device<FormatTag>::read_tag());
40 typename get_reader<String, FormatTag, ConversionPolicy>::type(device, settings);
43 template<
typename FormatTag
44 ,
typename ConversionPolicy
47 typename get_reader< std::wstring
51 make_reader(
const std::wstring& file_name
52 ,
const image_read_settings< FormatTag >& settings
53 ,
const ConversionPolicy&
56 const char* str = detail::convert_to_native_string( file_name );
58 typename get_read_device< std::wstring
61 ,
typename detail::file_stream_device< FormatTag >::read_tag()
66 return typename get_reader< std::wstring
74 #ifdef BOOST_GIL_IO_ADD_FS_PATH_SUPPORT 75 template<
typename FormatTag
76 ,
typename ConversionPolicy
79 typename get_reader< std::wstring
83 make_reader(
const filesystem::path& path
84 ,
const image_read_settings< FormatTag >& settings
85 ,
const ConversionPolicy& cc
88 return make_reader( path.wstring()
93 #endif // BOOST_GIL_IO_ADD_FS_PATH_SUPPORT 95 template <
typename Device,
typename FormatTag,
typename ConversionPolicy>
99 image_read_settings<FormatTag>
const& settings,
100 ConversionPolicy
const&,
101 typename std::enable_if
105 detail::is_adaptable_input_device<FormatTag, Device>,
106 is_format_tag<FormatTag>
109 ->
typename get_reader<Device, FormatTag, ConversionPolicy>::type
111 typename get_read_device<Device, FormatTag>::type device(file);
114 typename get_reader<Device, FormatTag, ConversionPolicy>::type(device, settings);
119 template <
typename String,
typename FormatTag,
typename ConversionPolicy>
122 String
const&file_name,
124 ConversionPolicy
const& cc,
125 typename std::enable_if
129 detail::is_supported_path_spec<String>,
130 is_format_tag<FormatTag>
133 ->
typename get_reader<String, FormatTag, ConversionPolicy>::type
135 return make_reader(file_name, image_read_settings<FormatTag>(), cc);
138 template<
typename FormatTag
139 ,
typename ConversionPolicy
142 typename get_reader< std::wstring
146 make_reader(
const std::wstring& file_name
148 ,
const ConversionPolicy& cc
151 return make_reader( file_name
152 , image_read_settings< FormatTag >()
157 #ifdef BOOST_GIL_IO_ADD_FS_PATH_SUPPORT 158 template<
typename FormatTag
159 ,
typename ConversionPolicy
162 typename get_reader< std::wstring
166 make_reader(
const filesystem::path& path
168 ,
const ConversionPolicy& cc
171 return make_reader( path.wstring()
172 , image_read_settings< FormatTag >()
176 #endif // BOOST_GIL_IO_ADD_FS_PATH_SUPPORT 178 template <
typename Device,
typename FormatTag,
typename ConversionPolicy>
183 ConversionPolicy
const& cc,
184 typename std::enable_if
188 detail::is_adaptable_input_device<FormatTag, Device>,
189 is_format_tag<FormatTag>
192 ->
typename get_reader<Device, FormatTag, ConversionPolicy>::type
194 return make_reader(file, image_read_settings<FormatTag>(), cc);
Definition: algorithm.hpp:30