1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
//
// Copyright 2013 Christian Henning
//
// Distributed under the Boost Software License, Version 1.0
// See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt
//
#include <boost/gil.hpp>
#include <boost/gil/extension/io/tiff.hpp>
#include <boost/core/lightweight_test.hpp>
#include <fstream>
#include <sstream>
#include "mandel_view.hpp"
#include "paths.hpp"
#include "subimage_test.hpp"
namespace gil = boost::gil;
#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/stringize.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
#include <boost/preprocessor/comparison/less.hpp>
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
#define BOOST_GIL_TEST_NAME_SUBIMAGE_TEST(n, data) \
BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(test_, BOOST_PP_CAT(data, _)), n), bit_bit_aligned)
#define BOOST_GIL_TEST_GENERATE_SUBIMAGE_TEST(z, n, data) \
void BOOST_GIL_TEST_NAME_SUBIMAGE_TEST(n, data) () \
{ \
std::string filename_strip(tiff_in_GM + "tiger-" + BOOST_PP_STRINGIZE(data) + "-strip-"); \
std::string filename_tile(tiff_in_GM + "tiger-" + BOOST_PP_STRINGIZE(data) + "-tile-"); \
std::string padding(""); \
if (BOOST_PP_LESS(n, 10) == 1) \
padding = "0"; \
filename_strip = filename_strip + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
filename_tile = filename_tile + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
gil::bit_aligned_image1_type<n, gil::gray_layout_t>::type img1, img2, img3; \
gil::point_t top_left(10, 10); \
gil::point_t dim(32, 32); \
gil::image_read_settings<gil::tiff_tag> settings(top_left, dim); \
gil::read_image(filename_strip, img1, settings); \
gil::read_image(filename_tile, img2, settings); \
gil::read_image(filename_strip, img3, gil::tiff_tag()); \
BOOST_TEST(gil::equal_pixels(gil::const_view(img1), gil::const_view(img2))); \
BOOST_TEST(gil::equal_pixels( \
gil::const_view(img1), gil::subimage_view(gil::view(img3), top_left, dim))); \
}
#define BOOST_GIL_TEST_CALL_SUBIMAGE_TEST(z, n, data) \
BOOST_GIL_TEST_NAME_SUBIMAGE_TEST(n, data);
BOOST_PP_REPEAT_FROM_TO(1, 8, BOOST_GIL_TEST_GENERATE_SUBIMAGE_TEST, minisblack)
BOOST_PP_REPEAT_FROM_TO(9, 16, BOOST_GIL_TEST_GENERATE_SUBIMAGE_TEST, minisblack)
BOOST_PP_REPEAT_FROM_TO(17, 27, BOOST_GIL_TEST_GENERATE_SUBIMAGE_TEST, minisblack)
// TODO: there is a bug somewhere when the number of bits is 27 up to 31.
void test_subimage_test_8()
{
gil::gray8_image_t img1, img2, img3;
gil::point_t top_left(10, 10);
gil::point_t dim(32, 32);
gil::image_read_settings<gil::tiff_tag> settings(top_left, dim);
gil::read_image(tiff_in_GM + "tiger-minisblack-strip-08.tif", img1, settings);
gil::read_image(tiff_in_GM + "tiger-minisblack-tile-08.tif", img2, settings);
gil::read_image(tiff_in_GM + "tiger-minisblack-strip-08.tif", img3, gil::tiff_tag());
BOOST_TEST(gil::equal_pixels(gil::const_view(img1), gil::const_view(img2)));
BOOST_TEST(gil::equal_pixels(gil::const_view(img1), gil::subimage_view(gil::view(img3), top_left, dim)));
}
void test_subimage_test_16()
{
gil::gray16_image_t img1, img2, img3;
gil::point_t top_left(10, 10);
gil::point_t dim(32, 32);
gil::image_read_settings<gil::tiff_tag> settings(top_left, dim);
gil::read_image(tiff_in_GM + "tiger-minisblack-strip-16.tif", img1, settings);
gil::read_image(tiff_in_GM + "tiger-minisblack-tile-16.tif", img2, settings);
gil::read_image(tiff_in_GM + "tiger-minisblack-strip-16.tif", img3, gil::tiff_tag());
BOOST_TEST(gil::equal_pixels(gil::const_view(img1), gil::const_view(img2)));
BOOST_TEST(gil::equal_pixels(gil::const_view(img1), gil::subimage_view(gil::view(img3), top_left, dim)));
}
void test_subimage_test_32()
{
using gray32_pixel_t = gil::pixel<unsigned int, gil::gray_layout_t>;
gil::image<gray32_pixel_t, false> img1, img2, img3;
gil::point_t top_left(10, 10);
gil::point_t dim(32, 32);
gil::image_read_settings<gil::tiff_tag> settings(top_left, dim);
gil::read_image(tiff_in_GM + "tiger-minisblack-strip-32.tif", img1, settings);
gil::read_image(tiff_in_GM + "tiger-minisblack-tile-32.tif", img2, settings);
gil::read_image(tiff_in_GM + "tiger-minisblack-strip-32.tif", img3, gil::tiff_tag());
BOOST_TEST(gil::equal_pixels(gil::const_view(img1), gil::const_view(img2)));
BOOST_TEST(gil::equal_pixels(gil::const_view(img1), gil::subimage_view(gil::view(img3), top_left, dim)));
}
int main()
{
test_subimage_test_8();
test_subimage_test_16();
test_subimage_test_32();
BOOST_PP_REPEAT_FROM_TO(1, 8, BOOST_GIL_TEST_CALL_SUBIMAGE_TEST, minisblack)
BOOST_PP_REPEAT_FROM_TO(9, 16, BOOST_GIL_TEST_CALL_SUBIMAGE_TEST, minisblack)
BOOST_PP_REPEAT_FROM_TO(17, 27, BOOST_GIL_TEST_CALL_SUBIMAGE_TEST, minisblack)
return boost::report_errors();
}
#else
int main() {}
#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
|