| // Copyright 2024 The PDFium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "core/fxge/dib/fx_dib.h" |
| |
| #include <stdint.h> |
| |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| #if defined(PDF_USE_SKIA) |
| TEST(PreMultiplyTest, PreMultiplyColor) { |
| FX_ABGR_STRUCT<uint8_t> result = PreMultiplyColor(FX_ABGR_STRUCT<uint8_t>{ |
| .alpha = 192, .blue = 0, .green = 255, .red = 100}); |
| EXPECT_EQ(192, result.alpha); |
| EXPECT_EQ(0, result.blue); |
| EXPECT_EQ(192, result.green); |
| EXPECT_EQ(75, result.red); |
| |
| FX_RGBA_STRUCT<float> result_f = PreMultiplyColor( |
| FX_RGBA_STRUCT<float>{.red = 100, .green = 255, .blue = 0, .alpha = 192}); |
| EXPECT_FLOAT_EQ(75.294121f, result_f.red); |
| EXPECT_FLOAT_EQ(192.0f, result_f.green); |
| EXPECT_FLOAT_EQ(0.0f, result_f.blue); |
| EXPECT_FLOAT_EQ(192.0f, result_f.alpha); |
| } |
| |
| TEST(PreMultiplyTest, PreMultiplyColorFullyTransparent) { |
| FX_ABGR_STRUCT<uint8_t> result = PreMultiplyColor( |
| FX_ABGR_STRUCT<uint8_t>{.alpha = 0, .blue = 0, .green = 255, .red = 100}); |
| EXPECT_EQ(0, result.alpha); |
| EXPECT_EQ(0, result.blue); |
| EXPECT_EQ(0, result.green); |
| EXPECT_EQ(0, result.red); |
| |
| FX_RGBA_STRUCT<float> result_f = PreMultiplyColor( |
| FX_RGBA_STRUCT<float>{.red = 100, .green = 255, .blue = 0, .alpha = 0}); |
| EXPECT_FLOAT_EQ(0.0f, result_f.red); |
| EXPECT_FLOAT_EQ(0.0f, result_f.green); |
| EXPECT_FLOAT_EQ(0.0f, result_f.blue); |
| EXPECT_FLOAT_EQ(0.0f, result_f.alpha); |
| } |
| |
| TEST(PreMultiplyTest, PreMultiplyColorFullyOpaque) { |
| FX_ABGR_STRUCT<uint8_t> result = PreMultiplyColor(FX_ABGR_STRUCT<uint8_t>{ |
| .alpha = 255, .blue = 0, .green = 255, .red = 100}); |
| EXPECT_EQ(255, result.alpha); |
| EXPECT_EQ(0, result.blue); |
| EXPECT_EQ(255, result.green); |
| EXPECT_EQ(100, result.red); |
| |
| FX_RGBA_STRUCT<float> result_f = PreMultiplyColor( |
| FX_RGBA_STRUCT<float>{.red = 100, .green = 255, .blue = 0, .alpha = 255}); |
| EXPECT_FLOAT_EQ(100.0f, result_f.red); |
| EXPECT_FLOAT_EQ(255.0f, result_f.green); |
| EXPECT_FLOAT_EQ(0.0f, result_f.blue); |
| EXPECT_FLOAT_EQ(255.0f, result_f.alpha); |
| } |
| #endif // defined(PDF_USE_SKIA) |