• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include <boost/gil.hpp>
9 #include <boost/gil/extension/io/pnm.hpp>
10 
11 #include <boost/core/lightweight_test.hpp>
12 
13 #include <string>
14 
15 #include "paths.hpp"
16 #include "scanline_read_test.hpp"
17 
18 namespace gil = boost::gil;
19 
20 template <typename Image>
write(Image & img,std::string const & file_name)21 void write(Image& img, std::string const& file_name)
22 {
23 #ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
24     gil::write_view(pnm_out + file_name, gil::view(img), gil::pnm_tag());
25 #endif  // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
26 }
27 
28 template <typename Image>
test_pnm_scanline_reader(std::string filename)29 void test_pnm_scanline_reader(std::string filename)
30 {
31     test_scanline_reader<Image, gil::pnm_tag>(std::string(pnm_in + filename).c_str());
32 }
33 
34 #ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
test_read_header()35 void test_read_header()
36 {
37     using backend_t   = gil::get_reader_backend<std::string const, gil::pnm_tag>::type;
38     backend_t backend = gil::read_image_info(pnm_filename, gil::pnm_tag());
39 
40     BOOST_TEST_EQ(backend._info._type, gil::pnm_image_type::color_bin_t::value);
41     BOOST_TEST_EQ(backend._info._width, 256u);
42     BOOST_TEST_EQ(backend._info._height, 256u);
43     BOOST_TEST_EQ(backend._info._max_value, 255u);
44 }
45 
46 #ifdef BOOST_GIL_IO_USE_PNM_TEST_SUITE_IMAGES
test_read_reference_images()47 void test_read_reference_images()
48 {
49     // p1.pnm
50     {
51         gil::gray8_image_t img;
52         gil::read_image(pnm_in + "p1.pnm", img, gil::pnm_tag());
53         BOOST_TEST_EQ(view(img).width(), 200u);
54         BOOST_TEST_EQ(view(img).height(), 200u);
55 
56         write(img, "p1.pnm");
57         test_pnm_scanline_reader<gil::gray8_image_t>("p1.pnm");
58     }
59     // p2.pnm
60     {
61         gil::gray8_image_t img;
62         gil::read_image(pnm_in + "p2.pnm", img, gil::pnm_tag());
63         BOOST_TEST_EQ(view(img).width(), 200u);
64         BOOST_TEST_EQ(view(img).height(), 200u);
65 
66         write(img, "p2.pnm");
67         test_pnm_scanline_reader<gil::gray8_image_t>("p2.pnm");
68     }
69     // p3.pnm
70     {
71         gil::rgb8_image_t img;
72         gil::read_image(pnm_in + "p3.pnm", img, gil::pnm_tag());
73         BOOST_TEST_EQ(view(img).width(), 256u);
74         BOOST_TEST_EQ(view(img).height(), 256u);
75 
76         write(img, "p3.pnm");
77         test_pnm_scanline_reader<rgb8_image_t>("p3.pnm");
78     }
79     // p4.pnm
80     {
81         gil::gray1_image_t img;
82         gil::read_image(pnm_in + "p4.pnm", img, gil::pnm_tag());
83         BOOST_TEST_EQ(view(img).width(), 200u);
84         BOOST_TEST_EQ(view(img).height(), 200u);
85 
86         write(img, "p4.pnm");
87         test_pnm_scanline_reader<gil::gray1_image_t>("p4.pnm");
88     }
89     // p5.pnm
90     {
91         gil::gray8_image_t img;
92         gil::read_image(pnm_in + "p5.pnm", img, gil::pnm_tag());
93         BOOST_TEST_EQ(view(img).width(), 200u);
94         BOOST_TEST_EQ(view(img).height(), 200u);
95 
96         write(img, "p5.pnm");
97         test_pnm_scanline_reader<gil::gray8_image_t>("p5.pnm");
98     }
99     // p6.pnm
100     {
101         gil::rgb8_image_t img;
102         gil::read_image(pnm_in + "p6.pnm", img, gil::pnm_tag());
103         BOOST_TEST_EQ(view(img).width(), 256u);
104         BOOST_TEST_EQ(view(img).height(), 256u);
105 
106         write(img, "p6.pnm");
107         test_pnm_scanline_reader<gil::rgb8_image_t>("p6.pnm");
108     }
109 }
110 #endif // BOOST_GIL_IO_USE_PNM_TEST_SUITE_IMAGES
111 
main()112 int main()
113 {
114     test_read_header();
115 
116 #ifdef BOOST_GIL_IO_USE_PNM_TEST_SUITE_IMAGES
117     test_read_reference_images();
118 #endif
119 
120     return boost::report_errors();
121 }
122 #else
main()123 int main() {}
124 #endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
125