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
|