28TEST(math_color, RGBToYUVRoundtrip)
30 const float orig_rgb[3] = {0.1f, 0.2f, 0.3f};
34 EXPECT_V3_NEAR(orig_rgb, rgb, 1
e-4);
37TEST(math_color, RGBToYCCRoundtrip)
39 const float orig_rgb[3] = {0.1f, 0.2f, 0.3f};
44 EXPECT_V3_NEAR(orig_rgb, rgb, 1
e-3);
48 EXPECT_V3_NEAR(orig_rgb, rgb, 1
e-3);
52 EXPECT_V3_NEAR(orig_rgb, rgb, 1
e-3);
85 const float kTolerance = 1.0e-8f;
86 const float linear_color[3] = {0.0023f, 0.0024f, 0.0025f};
88 EXPECT_NEAR(0.029716f, srgb_color[0], kTolerance);
89 EXPECT_NEAR(0.031008f, srgb_color[1], kTolerance);
90 EXPECT_NEAR(0.032300f, srgb_color[2], kTolerance);
94 const float kTolerance = 5.0e-7f;
95 const float linear_color[3] = {0.71f, 0.75f, 0.78f};
97 EXPECT_NEAR(0.859662f, srgb_color[0], kTolerance);
98 EXPECT_NEAR(0.880790f, srgb_color[1], kTolerance);
99 EXPECT_NEAR(0.896209f, srgb_color[2], kTolerance);
104 const float kTolerance = 1.3e-7f;
105 const float linear_color[3] = {1.5f, 2.8f, 5.6f};
107 EXPECT_NEAR(1.1942182f, srgb_color[0], kTolerance);
108 EXPECT_NEAR(1.5654286f, srgb_color[1], kTolerance);
109 EXPECT_NEAR(2.1076257f, srgb_color[2], kTolerance);
115 const float kTolerance = 1.0e-12f;
116 float linear_color[3];
118 const float srgb_color[3] = {0.0023f, 0.0024f, 0.0025f};
120 EXPECT_NEAR(0.00017801858f, linear_color[0], kTolerance);
121 EXPECT_NEAR(0.00018575852f, linear_color[1], kTolerance);
122 EXPECT_NEAR(0.00019349845f, linear_color[2], kTolerance);
126 const float srgb_color[3] = {0.71f, 0.72f, 0.73f};
128 EXPECT_NEAR(0.46236148477f, linear_color[0], kTolerance);
129 EXPECT_NEAR(0.47699990869f, linear_color[1], kTolerance);
130 EXPECT_NEAR(0.49190518260f, linear_color[2], kTolerance);
135 const float srgb_color[3] = {1.1f, 2.5f, 5.6f};
137 EXPECT_NEAR(1.24277031422f, linear_color[0], kTolerance);
138 EXPECT_NEAR(8.35472869873f, linear_color[1], kTolerance);
139 EXPECT_NEAR(56.2383270264f, linear_color[2], kTolerance);
143TEST(math_color, BlendModeConsistency_SoftLight)
146 float fcolora[4] = {0.0f, 0.0f, 0.0f, 1.0f};
147 float fcolorb[4] = {1.0f, 1.0f, 1.0f, 1.0f};
148 float fcolorc[4] = {1.0f, 1.0f, 1.0f, 0.5f};
149 float fcolord[4] = {0.5f, 0.5f, 0.5f, 0.5f};
151 uchar bcolora[4] = {0, 0, 0, 255};
152 uchar bcolorb[4] = {255, 255, 255, 255};
153 uchar bcolorc[4] = {255, 255, 255, 128};
154 uchar bcolord[4] = {128, 128, 128, 128};
158 EXPECT_NEAR(fdst[0] * 255.0f, bdst[0], 1.0f);
159 EXPECT_NEAR(fdst[1] * 255.0f, bdst[1], 1.0f);
160 EXPECT_NEAR(fdst[2] * 255.0f, bdst[2], 1.0f);
164 EXPECT_NEAR(fdst[0] * 255.0f, bdst[0], 1.0f);
165 EXPECT_NEAR(fdst[1] * 255.0f, bdst[1], 1.0f);
166 EXPECT_NEAR(fdst[2] * 255.0f, bdst[2], 1.0f);
170 EXPECT_NEAR(fdst[0] * 255.0f, bdst[0], 1.0f);
171 EXPECT_NEAR(fdst[1] * 255.0f, bdst[1], 1.0f);
172 EXPECT_NEAR(fdst[2] * 255.0f, bdst[2], 1.0f);
176 EXPECT_NEAR(fdst[0] * 255.0f, bdst[0], 1.0f);
177 EXPECT_NEAR(fdst[1] * 255.0f, bdst[1], 1.0f);
178 EXPECT_NEAR(fdst[2] * 255.0f, bdst[2], 1.0f);