blob: fceeb47fa127538cbcff0f4521b4ed5f65713974 [file] [log] [blame]
mtkleina2f4be72015-02-23 10:04:34 -08001#include "SkPMFloat.h"
2#include "Test.h"
3
4DEF_TEST(SkPMFloat, r) {
mtklein870b9ea2015-02-26 10:43:16 -08005 // Test SkPMColor <-> SkPMFloat
mtkleina2f4be72015-02-23 10:04:34 -08006 SkPMColor c = SkPreMultiplyColor(0xFFCC9933);
7
8 SkPMFloat pmf;
9 pmf.set(c);
mtklein60d2a322015-03-03 07:46:15 -080010 REPORTER_ASSERT(r, SkScalarNearlyEqual(255.0f, pmf.a()));
11 REPORTER_ASSERT(r, SkScalarNearlyEqual(204.0f, pmf.r()));
12 REPORTER_ASSERT(r, SkScalarNearlyEqual(153.0f, pmf.g()));
13 REPORTER_ASSERT(r, SkScalarNearlyEqual( 51.0f, pmf.b()));
mtkleina2f4be72015-02-23 10:04:34 -080014
15 REPORTER_ASSERT(r, c == pmf.get());
16
mtklein870b9ea2015-02-26 10:43:16 -080017 // Test clamping.
mtkleina2f4be72015-02-23 10:04:34 -080018 SkPMFloat unclamped;
mtklein60d2a322015-03-03 07:46:15 -080019 unclamped.setA(+510.0f);
20 unclamped.setR(+153.0f);
21 unclamped.setG( +1.0f);
22 unclamped.setB( -0.2f);
mtkleina2f4be72015-02-23 10:04:34 -080023
24 SkPMFloat clamped;
25 clamped.set(unclamped.clamped());
26
mtklein60d2a322015-03-03 07:46:15 -080027 REPORTER_ASSERT(r, SkScalarNearlyEqual(255.0f, clamped.a()));
28 REPORTER_ASSERT(r, SkScalarNearlyEqual(153.0f, clamped.r()));
29 REPORTER_ASSERT(r, SkScalarNearlyEqual( 1.0f, clamped.g()));
30 REPORTER_ASSERT(r, SkScalarNearlyEqual( 0.0f, clamped.b()));
mtklein870b9ea2015-02-26 10:43:16 -080031
32 // Test SkPMFloat <-> Sk4f conversion.
33 Sk4f fs = clamped;
mtklein60d2a322015-03-03 07:46:15 -080034 SkPMFloat scaled = fs.multiply(0.25f);
mtklein870b9ea2015-02-26 10:43:16 -080035
mtklein60d2a322015-03-03 07:46:15 -080036 REPORTER_ASSERT(r, SkScalarNearlyEqual(63.75f, scaled.a()));
37 REPORTER_ASSERT(r, SkScalarNearlyEqual(38.25f, scaled.r()));
38 REPORTER_ASSERT(r, SkScalarNearlyEqual( 0.25f, scaled.g()));
39 REPORTER_ASSERT(r, SkScalarNearlyEqual( 0.00f, scaled.b()));
mtkleina2f4be72015-02-23 10:04:34 -080040}