5#include "core/fxge/dib/fx_dib.h"
9#include "testing/gtest/include/gtest/gtest.h"
11TEST(FxDibTest, ArgbToBGRAStruct) {
12 FX_BGRA_STRUCT<uint8_t> white = ArgbToBGRAStruct(0xffffffff);
13 EXPECT_EQ(0xff, white.blue);
14 EXPECT_EQ(0xff, white.green);
15 EXPECT_EQ(0xff, white.red);
16 EXPECT_EQ(0xff, white.alpha);
18 FX_BGRA_STRUCT<uint8_t> black = ArgbToBGRAStruct(0xff000000);
19 EXPECT_EQ(0, black.blue);
20 EXPECT_EQ(0, black.green);
21 EXPECT_EQ(0, black.red);
22 EXPECT_EQ(0xff, black.alpha);
24 FX_BGRA_STRUCT<uint8_t> abeebead = ArgbToBGRAStruct(0xabeebead);
25 EXPECT_EQ(0xad, abeebead.blue);
26 EXPECT_EQ(0xbe, abeebead.green);
27 EXPECT_EQ(0xee, abeebead.red);
28 EXPECT_EQ(0xab, abeebead.alpha);
31#if defined(PDF_USE_SKIA)
32TEST(PreMultiplyTest, PreMultiplyColor) {
33 FX_ABGR_STRUCT<uint8_t> result = PreMultiplyColor(FX_ABGR_STRUCT<uint8_t>{
34 .alpha = 192, .blue = 0, .green = 255, .red = 100});
35 EXPECT_EQ(192, result.alpha);
36 EXPECT_EQ(0, result.blue);
37 EXPECT_EQ(192, result.green);
38 EXPECT_EQ(75, result.red);
40 FX_RGBA_STRUCT<
float> result_f = PreMultiplyColor(
41 FX_RGBA_STRUCT<
float>{.red = 100, .green = 255, .blue = 0, .alpha = 192});
42 EXPECT_FLOAT_EQ(75.294121f, result_f.red);
43 EXPECT_FLOAT_EQ(192.0f, result_f.green);
44 EXPECT_FLOAT_EQ(0.0f, result_f.blue);
45 EXPECT_FLOAT_EQ(192.0f, result_f.alpha);
48TEST(PreMultiplyTest, PreMultiplyColorFullyTransparent) {
49 FX_ABGR_STRUCT<uint8_t> result = PreMultiplyColor(
50 FX_ABGR_STRUCT<uint8_t>{.alpha = 0, .blue = 0, .green = 255, .red = 100});
51 EXPECT_EQ(0, result.alpha);
52 EXPECT_EQ(0, result.blue);
53 EXPECT_EQ(0, result.green);
54 EXPECT_EQ(0, result.red);
56 FX_RGBA_STRUCT<
float> result_f = PreMultiplyColor(
57 FX_RGBA_STRUCT<
float>{.red = 100, .green = 255, .blue = 0, .alpha = 0});
58 EXPECT_FLOAT_EQ(0.0f, result_f.red);
59 EXPECT_FLOAT_EQ(0.0f, result_f.green);
60 EXPECT_FLOAT_EQ(0.0f, result_f.blue);
61 EXPECT_FLOAT_EQ(0.0f, result_f.alpha);
64TEST(PreMultiplyTest, PreMultiplyColorFullyOpaque) {
65 FX_ABGR_STRUCT<uint8_t> result = PreMultiplyColor(FX_ABGR_STRUCT<uint8_t>{
66 .alpha = 255, .blue = 0, .green = 255, .red = 100});
67 EXPECT_EQ(255, result.alpha);
68 EXPECT_EQ(0, result.blue);
69 EXPECT_EQ(255, result.green);
70 EXPECT_EQ(100, result.red);
72 FX_RGBA_STRUCT<
float> result_f = PreMultiplyColor(
73 FX_RGBA_STRUCT<
float>{.red = 100, .green = 255, .blue = 0, .alpha = 255});
74 EXPECT_FLOAT_EQ(100.0f, result_f.red);
75 EXPECT_FLOAT_EQ(255.0f, result_f.green);
76 EXPECT_FLOAT_EQ(0.0f, result_f.blue);
77 EXPECT_FLOAT_EQ(255.0f, result_f.alpha);
80TEST(PreMultiplyTest, UnPreMultiplyColor) {
81 FX_ABGR_STRUCT<uint8_t> result = UnPreMultiplyColor(FX_ABGR_STRUCT<uint8_t>{
82 .alpha = 192, .blue = 0, .green = 192, .red = 100});
83 EXPECT_EQ(192, result.alpha);
84 EXPECT_EQ(0, result.blue);
85 EXPECT_EQ(255, result.green);
86 EXPECT_EQ(132, result.red);
88 FX_RGBA_STRUCT<
float> result_f = UnPreMultiplyColor(
89 FX_RGBA_STRUCT<
float>{.red = 100, .green = 192, .blue = 0, .alpha = 192});
90 EXPECT_FLOAT_EQ(132.8125f, result_f.red);
91 EXPECT_FLOAT_EQ(255.0f, result_f.green);
92 EXPECT_FLOAT_EQ(0.0f, result_f.blue);
93 EXPECT_FLOAT_EQ(192.0f, result_f.alpha);
96TEST(PreMultiplyTest, UnPreMultiplyColorFullyTransparent) {
97 FX_ABGR_STRUCT<uint8_t> result = UnPreMultiplyColor(
98 FX_ABGR_STRUCT<uint8_t>{.alpha = 0, .blue = 0, .green = 0, .red = 0});
99 EXPECT_EQ(0, result.alpha);
100 EXPECT_EQ(0, result.blue);
101 EXPECT_EQ(0, result.green);
102 EXPECT_EQ(0, result.red);
104 FX_RGBA_STRUCT<
float> result_f = UnPreMultiplyColor(
105 FX_RGBA_STRUCT<
float>{.red = 0, .green = 0, .blue = 0, .alpha = 0});
106 EXPECT_FLOAT_EQ(0.0f, result_f.red);
107 EXPECT_FLOAT_EQ(0.0f, result_f.green);
108 EXPECT_FLOAT_EQ(0.0f, result_f.blue);
109 EXPECT_FLOAT_EQ(0.0f, result_f.alpha);
112TEST(PreMultiplyTest, UnPreMultiplyColorFullyOpaque) {
113 FX_ABGR_STRUCT<uint8_t> result = UnPreMultiplyColor(FX_ABGR_STRUCT<uint8_t>{
114 .alpha = 255, .blue = 0, .green = 255, .red = 100});
115 EXPECT_EQ(255, result.alpha);
116 EXPECT_EQ(0, result.blue);
117 EXPECT_EQ(255, result.green);
118 EXPECT_EQ(100, result.red);
120 FX_RGBA_STRUCT<
float> result_f = UnPreMultiplyColor(
121 FX_RGBA_STRUCT<
float>{.red = 100, .green = 255, .blue = 0, .alpha = 255});
122 EXPECT_FLOAT_EQ(100.0f, result_f.red);
123 EXPECT_FLOAT_EQ(255.0f, result_f.green);
124 EXPECT_FLOAT_EQ(0.0f, result_f.blue);
125 EXPECT_FLOAT_EQ(255.0f, result_f.alpha);
TEST(FXCRYPT, CryptToBase16)