47TEST(DisplayListColor, DlColorFloatConstructor) {
63TEST(DisplayListColor, DlColorComponentGetters) {
68 EXPECT_EQ(test.
getRed(), 0xFF);
70 EXPECT_EQ(test.
getBlue(), 0xFF);
73 EXPECT_EQ(test.
getRedF(), 1.0f);
82 EXPECT_EQ(test.
getRed(), 0xFF);
84 EXPECT_EQ(test.
getBlue(), 0xFF);
87 EXPECT_EQ(test.
getRedF(), 1.0f);
96 EXPECT_EQ(test.
getRed(), 0x00);
98 EXPECT_EQ(test.
getBlue(), 0x00);
101 EXPECT_EQ(test.
getRedF(), 0.0f);
110 EXPECT_EQ(test.
getRed(), 0x00);
112 EXPECT_EQ(test.
getBlue(), 0x00);
115 EXPECT_EQ(test.
getRedF(), 0.0f);
124 EXPECT_EQ(test.
getRed(), 0x7F);
126 EXPECT_EQ(test.
getBlue(), 0x7F);
128 const DlScalar half = 127.0f * (1.0f / 255.0f);
130 EXPECT_NEAR(test.
getAlphaF(), half, 0.00001);
131 EXPECT_NEAR(test.
getRedF(), half, 0.00001);
132 EXPECT_NEAR(test.
getGreenF(), half, 0.00001);
133 EXPECT_NEAR(test.
getBlueF(), half, 0.00001);
140 EXPECT_EQ(test.
getRed(), 0x80);
142 EXPECT_EQ(test.
getBlue(), 0x80);
145 EXPECT_EQ(test.
getRedF(), 0.5);
154 EXPECT_EQ(test.
getRed(), 0x2F);
156 EXPECT_EQ(test.
getBlue(), 0x4F);
158 EXPECT_NEAR(test.
getAlphaF(), 0x1f * (1.0f / 255.0f), 0.00001);
159 EXPECT_NEAR(test.
getRedF(), 0x2f * (1.0f / 255.0f), 0.00001);
160 EXPECT_NEAR(test.
getGreenF(), 0x3f * (1.0f / 255.0f), 0.00001);
161 EXPECT_NEAR(test.
getBlueF(), 0x4f * (1.0f / 255.0f), 0.00001);
167 EXPECT_EQ(test.
getAlpha(), round(0.1f * 255));
168 EXPECT_EQ(test.
getRed(), round(0.2f * 255));
169 EXPECT_EQ(test.
getGreen(), round(0.3f * 255));
170 EXPECT_EQ(test.
getBlue(), round(0.4f * 255));
173 EXPECT_EQ(test.
getRedF(), 0.2f);
181 EXPECT_EQ(test.
getAlpha(), round(0.1f * 255));
182 EXPECT_EQ(test.
getRed(), round(0.2f * 255));
183 EXPECT_EQ(test.
getGreen(), round(0.3f * 255));
184 EXPECT_EQ(test.
getBlue(), round(0.4f * 255));
187 EXPECT_EQ(test.
getRedF(), 0.2f);
193TEST(DisplayListColor, DlColorOpaqueTransparent) {
194 auto test_argb = [](
int a,
int r,
int g,
int b) {
195 ASSERT_TRUE(a >= 0 && a <= 255);
196 ASSERT_TRUE(r >= 0 && r <= 255);
197 ASSERT_TRUE(g >= 0 && g <= 255);
198 ASSERT_TRUE(b >= 0 && b <= 255);
200 int argb = ((a << 24) | (r << 16) | (g << 8) | b);
201 bool is_opaque = (a == 255);
202 bool is_transprent = (a == 0);
204 EXPECT_EQ(
DlColor(argb).isOpaque(), is_opaque);
205 EXPECT_EQ(
DlColor(argb).isTransparent(), is_transprent);
212 EXPECT_EQ(
DlColor::ARGB(aF, rF, gF, bF).isOpaque(), is_opaque);
213 EXPECT_EQ(
DlColor::ARGB(aF, rF, gF, bF).isTransparent(), is_transprent);
215 EXPECT_EQ(
DlColor::RGBA(rF, gF, bF, aF).isOpaque(), is_opaque);
216 EXPECT_EQ(
DlColor::RGBA(rF, gF, bF, aF).isTransparent(), is_transprent);
219 for (
int r = 0; r <= 255; r += 15) {
220 for (
int g = 0; g <= 255; g += 15) {
221 for (
int b = 0; b <= 255; b += 15) {
222 test_argb(0, r, g, b);
223 for (
int a = 15; a < 255; a += 15) {
224 test_argb(a, r, g, b);
226 test_argb(255, r, g, b);
static constexpr DlColor RGBA(DlScalar r, DlScalar g, DlScalar b, DlScalar a)
Construct a 32 bit color from floating point R, G, B, and A color channels.
static constexpr DlColor ARGB(DlScalar a, DlScalar r, DlScalar g, DlScalar b)
Construct a 32 bit color from floating point A, R, G, and B color channels.