make.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. //
  2. // Copyright 2013 Christian Henning
  3. //
  4. // Distributed under the Boost Software License, Version 1.0
  5. // See accompanying file LICENSE_1_0.txt or copy at
  6. // http://www.boost.org/LICENSE_1_0.txt
  7. //
  8. #define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
  9. #define BOOST_FILESYSTEM_VERSION 3
  10. #include <boost/gil/extension/io/bmp.hpp>
  11. #include <boost/gil.hpp>
  12. #include <boost/gil/detail/mp11.hpp>
  13. #include <boost/test/unit_test.hpp>
  14. #include <fstream>
  15. #include <type_traits>
  16. #include "paths.hpp"
  17. using namespace std;
  18. using namespace boost;
  19. using namespace gil;
  20. namespace fs = boost::filesystem;
  21. BOOST_AUTO_TEST_SUITE( gil_io_tests )
  22. #ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
  23. BOOST_AUTO_TEST_CASE( make_reader_backend_test )
  24. {
  25. {
  26. static_assert(std::is_same<gil::detail::is_supported_path_spec<char*>::type, std::true_type>::value, "");
  27. get_reader_backend< const char*, bmp_tag >::type backend_char = make_reader_backend( bmp_filename.c_str(), bmp_tag() );
  28. get_reader_backend< std::string, bmp_tag >::type backend_string = make_reader_backend( bmp_filename, bmp_tag() );
  29. FILE* file = fopen( bmp_filename.c_str(), "rb" );
  30. get_reader_backend< FILE*, bmp_tag >::type backend_file = make_reader_backend( file, bmp_tag() );
  31. ifstream in( bmp_filename.c_str(), ios::binary );
  32. get_reader_backend< std::ifstream, bmp_tag >::type backend_ifstream = make_reader_backend( in, bmp_tag() );
  33. fs::path my_path( bmp_filename );
  34. get_reader_backend< std::wstring, bmp_tag >::type backend_wstring = make_reader_backend( my_path.wstring(), bmp_tag() );
  35. get_reader_backend< fs::path , bmp_tag >::type backend_path = make_reader_backend( my_path , bmp_tag() );
  36. }
  37. {
  38. get_reader_backend< const char*, bmp_tag >::type backend_char = make_reader_backend( bmp_filename.c_str(), image_read_settings<bmp_tag>() );
  39. get_reader_backend< std::string, bmp_tag >::type backend_string = make_reader_backend( bmp_filename, image_read_settings<bmp_tag>() );
  40. FILE* file = fopen( bmp_filename.c_str(), "rb" );
  41. get_reader_backend< FILE*, bmp_tag >::type backend_file = make_reader_backend( file, image_read_settings<bmp_tag>() );
  42. ifstream in( bmp_filename.c_str(), ios::binary );
  43. get_reader_backend< std::ifstream, bmp_tag >::type backend_ifstream = make_reader_backend( in, image_read_settings<bmp_tag>() );
  44. fs::path my_path( bmp_filename );
  45. get_reader_backend< std::wstring, bmp_tag >::type backend_wstring = make_reader_backend( my_path.wstring(), image_read_settings<bmp_tag>() );
  46. get_reader_backend< fs::path, bmp_tag >::type backend_path = make_reader_backend( my_path , image_read_settings<bmp_tag>() );
  47. }
  48. }
  49. BOOST_AUTO_TEST_CASE( make_reader_test )
  50. {
  51. {
  52. get_reader_backend< const char*, bmp_tag >::type reader_char = make_reader( bmp_filename.c_str(), bmp_tag(), gil::detail::read_and_no_convert() );
  53. get_reader_backend< std::string, bmp_tag >::type reader_string = make_reader( bmp_filename, bmp_tag(), gil::detail::read_and_no_convert() );
  54. FILE* file = fopen( bmp_filename.c_str(), "rb" );
  55. get_reader_backend< FILE*, bmp_tag >::type reader_file = make_reader( file, bmp_tag(), gil::detail::read_and_no_convert() );
  56. ifstream in( bmp_filename.c_str(), ios::binary );
  57. get_reader_backend< std::ifstream, bmp_tag >::type reader_ifstream = make_reader( in, bmp_tag(), gil::detail::read_and_no_convert() );
  58. fs::path my_path( bmp_filename );
  59. get_reader_backend< std::wstring, bmp_tag >::type reader_wstring = make_reader( my_path.wstring(), bmp_tag(), gil::detail::read_and_no_convert() );
  60. get_reader_backend< fs::path , bmp_tag >::type reader_path = make_reader( my_path , bmp_tag(), gil::detail::read_and_no_convert() );
  61. }
  62. {
  63. get_reader_backend< const char*, bmp_tag >::type reader_char = make_reader( bmp_filename.c_str(), image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
  64. get_reader_backend< std::string, bmp_tag >::type reader_string = make_reader( bmp_filename, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
  65. FILE* file = fopen( bmp_filename.c_str(), "rb" );
  66. get_reader_backend< FILE*, bmp_tag >::type reader_file = make_reader( file, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
  67. ifstream in( bmp_filename.c_str(), ios::binary );
  68. get_reader_backend< std::ifstream, bmp_tag >::type reader_ifstream = make_reader( in, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
  69. fs::path my_path( bmp_filename );
  70. get_reader_backend< std::wstring, bmp_tag >::type reader_wstring = make_reader( my_path.wstring(), image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
  71. get_reader_backend< fs::path, bmp_tag >::type reader_path = make_reader( my_path , image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
  72. }
  73. }
  74. BOOST_AUTO_TEST_CASE( make_dynamic_image_reader_test )
  75. {
  76. {
  77. get_dynamic_image_reader< const char*, bmp_tag >::type reader_char = make_dynamic_image_reader( bmp_filename.c_str(), bmp_tag() );
  78. get_dynamic_image_reader< std::string, bmp_tag >::type reader_string = make_dynamic_image_reader( bmp_filename, bmp_tag() );
  79. FILE* file = fopen( bmp_filename.c_str(), "rb" );
  80. get_dynamic_image_reader< FILE*, bmp_tag >::type reader_file = make_dynamic_image_reader( file, bmp_tag() );
  81. ifstream in( bmp_filename.c_str(), ios::binary );
  82. get_dynamic_image_reader< std::ifstream, bmp_tag >::type reader_ifstream = make_dynamic_image_reader( in, bmp_tag() );
  83. fs::path my_path( bmp_filename );
  84. get_dynamic_image_reader< std::wstring, bmp_tag >::type reader_wstring = make_dynamic_image_reader( my_path.wstring(), bmp_tag() );
  85. get_dynamic_image_reader< fs::path , bmp_tag >::type reader_path = make_dynamic_image_reader( my_path , bmp_tag() );
  86. }
  87. {
  88. get_dynamic_image_reader< const char*, bmp_tag >::type reader_char = make_dynamic_image_reader( bmp_filename.c_str(), image_read_settings< bmp_tag >() );
  89. get_dynamic_image_reader< std::string, bmp_tag >::type reader_string = make_dynamic_image_reader( bmp_filename, image_read_settings< bmp_tag >() );
  90. FILE* file = fopen( bmp_filename.c_str(), "rb" );
  91. get_dynamic_image_reader< FILE*, bmp_tag >::type reader_file = make_dynamic_image_reader( file, image_read_settings< bmp_tag >() );
  92. ifstream in( bmp_filename.c_str(), ios::binary );
  93. get_dynamic_image_reader< std::ifstream, bmp_tag >::type reader_ifstream = make_dynamic_image_reader( in, image_read_settings< bmp_tag >() );
  94. fs::path my_path( bmp_filename );
  95. get_dynamic_image_reader< std::wstring, bmp_tag >::type reader_wstring = make_dynamic_image_reader( my_path.wstring(), image_read_settings< bmp_tag >() );
  96. get_dynamic_image_reader< fs::path , bmp_tag >::type reader_path = make_dynamic_image_reader( my_path , image_read_settings< bmp_tag >() );
  97. }
  98. }
  99. BOOST_AUTO_TEST_CASE( make_writer_test )
  100. {
  101. {
  102. using writer_t = get_writer<char const*, bmp_tag>::type;
  103. static_assert(std::is_same<gil::detail::is_writer<writer_t>::type, std::true_type>::value, "");
  104. }
  105. {
  106. get_writer< const char*, bmp_tag >::type writer_char = make_writer(( bmp_out + "make_test.bmp" ).c_str(), bmp_tag() );
  107. get_writer< std::string, bmp_tag >::type writer_string = make_writer(( bmp_out + "make_test.bmp" ), bmp_tag() );
  108. FILE* file = fopen(( bmp_out + "make_test.bmp" ).c_str(), "wb" );
  109. get_writer< FILE*, bmp_tag >::type writer_file = make_writer( file, bmp_tag() );
  110. ofstream out(( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
  111. get_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_writer( out, bmp_tag() );
  112. fs::path my_path( ( bmp_out + "make_test.bmp" ).c_str() );
  113. get_writer< std::wstring, bmp_tag >::type writer_wstring = make_writer( my_path.wstring(), bmp_tag() );
  114. get_writer< fs::path , bmp_tag >::type writer_path = make_writer( my_path , bmp_tag() );
  115. }
  116. {
  117. get_writer< const char*, bmp_tag >::type writer_char = make_writer(( bmp_out + "make_test.bmp" ).c_str(), image_write_info< bmp_tag >() );
  118. get_writer< std::string, bmp_tag >::type writer_string = make_writer(( bmp_out + "make_test.bmp" ) , image_write_info< bmp_tag >() );
  119. FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
  120. get_writer< FILE*, bmp_tag >::type writer_file = make_writer( file, image_write_info< bmp_tag >() );
  121. ofstream out( ( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
  122. get_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_writer( out, image_write_info< bmp_tag >() );
  123. fs::path my_path( bmp_out + "make_test.bmp" );
  124. get_writer< std::wstring, bmp_tag >::type writer_wstring = make_writer( my_path.wstring(), image_write_info< bmp_tag >() );
  125. get_writer< fs::path , bmp_tag >::type writer_path = make_writer( my_path , image_write_info< bmp_tag >() );
  126. }
  127. }
  128. BOOST_AUTO_TEST_CASE( make_dynamic_image_writer_test )
  129. {
  130. {
  131. get_dynamic_image_writer< const char*, bmp_tag >::type writer_char = make_dynamic_image_writer( (bmp_out + string( "make_test.bmp")).c_str(), bmp_tag() );
  132. get_dynamic_image_writer< std::string, bmp_tag >::type writer_string = make_dynamic_image_writer( bmp_out + "make_test.bmp", bmp_tag() );
  133. FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
  134. get_dynamic_image_writer< FILE*, bmp_tag >::type writer_file = make_dynamic_image_writer( file, bmp_tag() );
  135. ofstream out(( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
  136. get_dynamic_image_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_dynamic_image_writer( out, bmp_tag() );
  137. fs::path my_path( bmp_out + "make_test.bmp" );
  138. get_dynamic_image_writer< std::wstring, bmp_tag >::type writer_wstring = make_dynamic_image_writer( my_path.wstring(), bmp_tag() );
  139. get_dynamic_image_writer< fs::path , bmp_tag >::type writer_path = make_dynamic_image_writer( my_path , bmp_tag() );
  140. }
  141. {
  142. get_dynamic_image_writer< const char*, bmp_tag >::type writer_char = make_dynamic_image_writer( (bmp_out + string( "make_test.bmp")).c_str(), image_write_info< bmp_tag >() );
  143. get_dynamic_image_writer< std::string, bmp_tag >::type writer_string = make_dynamic_image_writer( bmp_out + "make_test.bmp", image_write_info< bmp_tag >() );
  144. FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
  145. get_dynamic_image_writer< FILE*, bmp_tag >::type writer_file = make_dynamic_image_writer( file, image_write_info< bmp_tag >() );
  146. ofstream out(( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
  147. get_dynamic_image_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_dynamic_image_writer( out, image_write_info< bmp_tag >() );
  148. fs::path my_path( bmp_out + "make_test.bmp" );
  149. get_dynamic_image_writer< std::wstring, bmp_tag >::type writer_wstring = make_dynamic_image_writer( my_path.wstring(), image_write_info< bmp_tag >() );
  150. get_dynamic_image_writer< fs::path , bmp_tag >::type writer_path = make_dynamic_image_writer( my_path , image_write_info< bmp_tag >() );
  151. }
  152. }
  153. #endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
  154. BOOST_AUTO_TEST_SUITE_END()