blob: 6db5793b0489ad3aabb27a874bf2f284204fc83c [file] [log] [blame]
Lei Zhang7a9c22b2024-07-29 17:45:14 +00001// Copyright 2024 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "core/fxge/dib/fx_dib.h"
6
7#include <stdint.h>
8
9#include "testing/gtest/include/gtest/gtest.h"
10
11#if defined(PDF_USE_SKIA)
12TEST(PreMultiplyTest, PreMultiplyColor) {
13 FX_ABGR_STRUCT<uint8_t> result = PreMultiplyColor(FX_ABGR_STRUCT<uint8_t>{
14 .alpha = 192, .blue = 0, .green = 255, .red = 100});
15 EXPECT_EQ(192, result.alpha);
16 EXPECT_EQ(0, result.blue);
17 EXPECT_EQ(192, result.green);
18 EXPECT_EQ(75, result.red);
19
20 FX_RGBA_STRUCT<float> result_f = PreMultiplyColor(
21 FX_RGBA_STRUCT<float>{.red = 100, .green = 255, .blue = 0, .alpha = 192});
22 EXPECT_FLOAT_EQ(75.294121f, result_f.red);
23 EXPECT_FLOAT_EQ(192.0f, result_f.green);
24 EXPECT_FLOAT_EQ(0.0f, result_f.blue);
25 EXPECT_FLOAT_EQ(192.0f, result_f.alpha);
26}
27
28TEST(PreMultiplyTest, PreMultiplyColorFullyTransparent) {
29 FX_ABGR_STRUCT<uint8_t> result = PreMultiplyColor(
30 FX_ABGR_STRUCT<uint8_t>{.alpha = 0, .blue = 0, .green = 255, .red = 100});
31 EXPECT_EQ(0, result.alpha);
32 EXPECT_EQ(0, result.blue);
33 EXPECT_EQ(0, result.green);
34 EXPECT_EQ(0, result.red);
35
36 FX_RGBA_STRUCT<float> result_f = PreMultiplyColor(
37 FX_RGBA_STRUCT<float>{.red = 100, .green = 255, .blue = 0, .alpha = 0});
38 EXPECT_FLOAT_EQ(0.0f, result_f.red);
39 EXPECT_FLOAT_EQ(0.0f, result_f.green);
40 EXPECT_FLOAT_EQ(0.0f, result_f.blue);
41 EXPECT_FLOAT_EQ(0.0f, result_f.alpha);
42}
43
44TEST(PreMultiplyTest, PreMultiplyColorFullyOpaque) {
45 FX_ABGR_STRUCT<uint8_t> result = PreMultiplyColor(FX_ABGR_STRUCT<uint8_t>{
46 .alpha = 255, .blue = 0, .green = 255, .red = 100});
47 EXPECT_EQ(255, result.alpha);
48 EXPECT_EQ(0, result.blue);
49 EXPECT_EQ(255, result.green);
50 EXPECT_EQ(100, result.red);
51
52 FX_RGBA_STRUCT<float> result_f = PreMultiplyColor(
53 FX_RGBA_STRUCT<float>{.red = 100, .green = 255, .blue = 0, .alpha = 255});
54 EXPECT_FLOAT_EQ(100.0f, result_f.red);
55 EXPECT_FLOAT_EQ(255.0f, result_f.green);
56 EXPECT_FLOAT_EQ(0.0f, result_f.blue);
57 EXPECT_FLOAT_EQ(255.0f, result_f.alpha);
58}
59#endif // defined(PDF_USE_SKIA)