subimage_view.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //
  2. // Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
  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. #define BOOST_TEST_MODULE test_image_view_subimage_view
  10. #include "unit_test.hpp"
  11. #include "unit_test_utility.hpp"
  12. #include "core/image/test_fixture.hpp"
  13. namespace gil = boost::gil;
  14. namespace fixture = boost::gil::test::fixture;
  15. BOOST_AUTO_TEST_SUITE(subimage_view)
  16. BOOST_AUTO_TEST_CASE_TEMPLATE(subimage_equals_image, Image, fixture::image_types)
  17. {
  18. auto i0 = fixture::create_image<Image>(4, 4, 128);
  19. auto const v0 = gil::const_view(i0);
  20. BOOST_TEST(v0.dimensions().x == 4);
  21. BOOST_TEST(v0.dimensions().y == 4);
  22. // request with 2 x point_t values
  23. {
  24. auto v1 = gil::subimage_view(gil::view(i0), {0, 0}, i0.dimensions());
  25. BOOST_TEST(v0.dimensions() == v1.dimensions());
  26. BOOST_TEST(gil::equal_pixels(v0, v1));
  27. }
  28. // request with 4 x dimension values
  29. {
  30. auto v1 = gil::subimage_view(gil::view(i0), 0, 0, i0.dimensions().x, i0.dimensions().y);
  31. BOOST_TEST(v0.dimensions() == v1.dimensions());
  32. BOOST_TEST(gil::equal_pixels(v0, v1));
  33. }
  34. }
  35. BOOST_AUTO_TEST_CASE_TEMPLATE(subimage_equals_image_quadrants, Image, fixture::image_types)
  36. {
  37. auto i0 = fixture::create_image<Image>(4, 4, 0);
  38. auto v0 = gil::view(i0);
  39. // create test image and set values of pixels in:
  40. // quadrant 1
  41. auto const i1 = fixture::create_image<Image>(2, 2, 255);
  42. v0[2] = v0[3] = v0[6] = v0[7] = gil::const_view(i1)[0];
  43. // quadrant 2
  44. auto const i2 = fixture::create_image<Image>(2, 2, 128);
  45. v0[0] = v0[1] = v0[4] = v0[5] = gil::const_view(i2)[0];
  46. // quadrant 3
  47. auto const i3 = fixture::create_image<Image>(2, 2, 64);
  48. v0[8] = v0[9] = v0[12] = v0[13] = gil::const_view(i3)[0];
  49. // quadrant 4
  50. auto const i4 = fixture::create_image<Image>(2, 2, 32);
  51. v0[10] = v0[11] = v0[14] = v0[15] = gil::const_view(i4)[0];
  52. auto v1 = gil::subimage_view(gil::view(i0), { 2, 0 }, i0.dimensions() / 2);
  53. BOOST_TEST(gil::equal_pixels(v1, gil::const_view(i1)));
  54. auto v2 = gil::subimage_view(gil::view(i0), { 0, 0 }, i0.dimensions() / 2);
  55. BOOST_TEST(gil::equal_pixels(v2, gil::const_view(i2)));
  56. auto v3 = gil::subimage_view(gil::view(i0), { 0, 2 }, i0.dimensions() / 2);
  57. BOOST_TEST(gil::equal_pixels(v3, gil::const_view(i3)));
  58. auto v4 = gil::subimage_view(gil::view(i0), { 2, 2 }, i0.dimensions() / 2);
  59. BOOST_TEST(gil::equal_pixels(v4, gil::const_view(i4)));
  60. }
  61. BOOST_AUTO_TEST_SUITE_END()