TestGfxBitmap.cpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /*
  2. * Copyright (c) 2022, the SerenityOS developers.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibGfx/Bitmap.h>
  7. #include <LibTest/TestCase.h>
  8. TEST_CASE(0001_bitmap_upscaling_width1_height1)
  9. {
  10. auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, Gfx::IntSize { 1, 1 });
  11. EXPECT_EQ(bitmap.is_error(), false);
  12. bitmap.value()->fill(Gfx::Color::White);
  13. auto scaledBitmap = bitmap.value()->scaled(5.5f, 5.5f);
  14. EXPECT_EQ(scaledBitmap.is_error(), false);
  15. EXPECT_EQ(scaledBitmap.value()->size(), Gfx::IntSize(6, 6));
  16. for (auto x = 0; x < scaledBitmap.value()->width(); x++) {
  17. for (auto y = 0; y < scaledBitmap.value()->height(); y++) {
  18. EXPECT_EQ(scaledBitmap.value()->get_pixel(x, y), bitmap.value()->get_pixel(0, 0));
  19. }
  20. }
  21. }
  22. TEST_CASE(0002_bitmap_upscaling_width1)
  23. {
  24. auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, Gfx::IntSize { 1, 10 });
  25. EXPECT_EQ(bitmap.is_error(), false);
  26. bitmap.value()->fill(Gfx::Color::White);
  27. auto scaledBitmap = bitmap.value()->scaled(5.5f, 5.5f);
  28. EXPECT_EQ(scaledBitmap.is_error(), false);
  29. EXPECT_EQ(scaledBitmap.value()->size(), Gfx::IntSize(6, 55));
  30. for (auto x = 0; x < scaledBitmap.value()->width(); x++) {
  31. for (auto y = 0; y < scaledBitmap.value()->height(); y++) {
  32. EXPECT_EQ(scaledBitmap.value()->get_pixel(x, y), bitmap.value()->get_pixel(0, 0));
  33. }
  34. }
  35. }
  36. TEST_CASE(0003_bitmap_upscaling_height1)
  37. {
  38. auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, Gfx::IntSize { 10, 1 });
  39. EXPECT_EQ(bitmap.is_error(), false);
  40. bitmap.value()->fill(Gfx::Color::White);
  41. auto scaledBitmap = bitmap.value()->scaled(5.5f, 5.5f);
  42. EXPECT_EQ(scaledBitmap.is_error(), false);
  43. EXPECT_EQ(scaledBitmap.value()->size(), Gfx::IntSize(55, 6));
  44. for (auto x = 0; x < scaledBitmap.value()->width(); x++) {
  45. for (auto y = 0; y < scaledBitmap.value()->height(); y++) {
  46. EXPECT_EQ(scaledBitmap.value()->get_pixel(x, y), bitmap.value()->get_pixel(0, 0));
  47. }
  48. }
  49. }
  50. TEST_CASE(0004_bitmap_upscaling_keep_width)
  51. {
  52. auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, Gfx::IntSize { 1, 10 });
  53. EXPECT_EQ(bitmap.is_error(), false);
  54. bitmap.value()->fill(Gfx::Color::White);
  55. auto scaledBitmap = bitmap.value()->scaled(1.f, 5.5f);
  56. EXPECT_EQ(scaledBitmap.is_error(), false);
  57. EXPECT_EQ(scaledBitmap.value()->size(), Gfx::IntSize(1, 55));
  58. for (auto x = 0; x < scaledBitmap.value()->width(); x++) {
  59. for (auto y = 0; y < scaledBitmap.value()->height(); y++) {
  60. EXPECT_EQ(scaledBitmap.value()->get_pixel(x, y), bitmap.value()->get_pixel(0, 0));
  61. }
  62. }
  63. }
  64. TEST_CASE(0005_bitmap_upscaling_keep_height)
  65. {
  66. auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, Gfx::IntSize { 10, 1 });
  67. EXPECT_EQ(bitmap.is_error(), false);
  68. bitmap.value()->fill(Gfx::Color::White);
  69. auto scaledBitmap = bitmap.value()->scaled(5.5f, 1.f);
  70. EXPECT_EQ(scaledBitmap.is_error(), false);
  71. EXPECT_EQ(scaledBitmap.value()->size(), Gfx::IntSize(55, 1));
  72. for (auto x = 0; x < scaledBitmap.value()->width(); x++) {
  73. for (auto y = 0; y < scaledBitmap.value()->height(); y++) {
  74. EXPECT_EQ(scaledBitmap.value()->get_pixel(x, y), bitmap.value()->get_pixel(0, 0));
  75. }
  76. }
  77. }
  78. TEST_CASE(0006_bitmap_downscaling_width1_height1)
  79. {
  80. auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, Gfx::IntSize { 10, 10 });
  81. EXPECT_EQ(bitmap.is_error(), false);
  82. bitmap.value()->fill(Gfx::Color::White);
  83. auto scaledBitmap = bitmap.value()->scaled(0.099f, 0.099f);
  84. EXPECT_EQ(scaledBitmap.is_error(), false);
  85. EXPECT_EQ(scaledBitmap.value()->size(), Gfx::IntSize(1, 1));
  86. for (auto x = 0; x < scaledBitmap.value()->width(); x++) {
  87. for (auto y = 0; y < scaledBitmap.value()->height(); y++) {
  88. EXPECT_EQ(scaledBitmap.value()->get_pixel(x, y), bitmap.value()->get_pixel(0, 0));
  89. }
  90. }
  91. }
  92. TEST_CASE(0007_bitmap_downscaling_width1)
  93. {
  94. auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, Gfx::IntSize { 10, 10 });
  95. EXPECT_EQ(bitmap.is_error(), false);
  96. bitmap.value()->fill(Gfx::Color::White);
  97. auto scaledBitmap = bitmap.value()->scaled(1.f, 0.099f);
  98. EXPECT_EQ(scaledBitmap.is_error(), false);
  99. EXPECT_EQ(scaledBitmap.value()->size(), Gfx::IntSize(10, 1));
  100. for (auto x = 0; x < scaledBitmap.value()->width(); x++) {
  101. for (auto y = 0; y < scaledBitmap.value()->height(); y++) {
  102. EXPECT_EQ(scaledBitmap.value()->get_pixel(x, y), bitmap.value()->get_pixel(0, 0));
  103. }
  104. }
  105. }
  106. TEST_CASE(0008_bitmap_downscaling_height1)
  107. {
  108. auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, Gfx::IntSize { 10, 10 });
  109. EXPECT_EQ(bitmap.is_error(), false);
  110. bitmap.value()->fill(Gfx::Color::White);
  111. auto scaledBitmap = bitmap.value()->scaled(0.099f, 1.f);
  112. EXPECT_EQ(scaledBitmap.is_error(), false);
  113. EXPECT_EQ(scaledBitmap.value()->size(), Gfx::IntSize(1, 10));
  114. for (auto x = 0; x < scaledBitmap.value()->width(); x++) {
  115. for (auto y = 0; y < scaledBitmap.value()->height(); y++) {
  116. EXPECT_EQ(scaledBitmap.value()->get_pixel(x, y), bitmap.value()->get_pixel(0, 0));
  117. }
  118. }
  119. }