OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "gm.h" | 8 #include "gm.h" |
9 #include "SkColor.h" | 9 #include "SkColor.h" |
10 #include "SkColorSpaceXform.h" | 10 #include "SkColorSpaceXform.h" |
11 #include "SkRect.h" | 11 #include "SkRect.h" |
12 | 12 |
13 class ColorSpaceXformGM : public skiagm::GM { | 13 class ColorSpaceXformGM : public skiagm::GM { |
14 public: | 14 public: |
15 ColorSpaceXformGM() {} | 15 ColorSpaceXformGM() {} |
16 | 16 |
17 protected: | 17 protected: |
18 void onOnceBeforeDraw() override { | 18 void onOnceBeforeDraw() override { |
19 SkColor colors[] = { | 19 SkColor colors[] = { |
20 SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorMAGENTA, SK_ColorC
YAN, SK_ColorYELLOW, | 20 SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorMAGENTA, SK_ColorC
YAN, SK_ColorYELLOW, |
21 SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorMAGENTA, | 21 SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorMAGENTA, |
22 }; | 22 }; |
23 static_assert(kNumColors == SK_ARRAY_COUNT(colors), "Fix number of color
s."); | 23 static_assert(kNumColors == SK_ARRAY_COUNT(colors), "Fix number of color
s."); |
24 | 24 |
25 for (int i = 0; i < kNumColors; i++) { | 25 for (int i = 0; i < kNumColors; i++) { |
26 fSRGBColors[i] = SkColor4f::FromColor(colors[i]); | 26 fSRGBColors[i] = SkColor4f::FromColor(colors[i]); |
27 | |
28 // FIXME (msarett): SkColorSpaceXform does not support BGRA. | |
29 colors[i] = SkSwizzle_RB(colors[i]); | |
30 } | 27 } |
31 | 28 |
32 static constexpr float kWideGamutRGB_toXYZD50[]{ | 29 static constexpr float kWideGamutRGB_toXYZD50[]{ |
33 0.7161046f, 0.1009296f, 0.1471858f, | 30 0.7161046f, 0.1009296f, 0.1471858f, |
34 0.2581874f, 0.7249378f, 0.0168748f, | 31 0.2581874f, 0.7249378f, 0.0168748f, |
35 0.0000000f, 0.0517813f, 0.7734287f, | 32 0.0000000f, 0.0517813f, 0.7734287f, |
36 }; | 33 }; |
37 | 34 |
38 SkMatrix44 wideGamut(SkMatrix44::kUninitialized_Constructor); | 35 SkMatrix44 wideGamut(SkMatrix44::kUninitialized_Constructor); |
39 wideGamut.set3x3RowMajorf(kWideGamutRGB_toXYZD50); | 36 wideGamut.set3x3RowMajorf(kWideGamutRGB_toXYZD50); |
40 | 37 |
41 sk_sp<SkColorSpace> srcSpace = SkColorSpace::NewNamed(SkColorSpace::kSRG
B_Named); | 38 sk_sp<SkColorSpace> srcSpace = SkColorSpace::NewNamed(SkColorSpace::kSRG
B_Named); |
42 sk_sp<SkColorSpace> dstSpace = | 39 sk_sp<SkColorSpace> dstSpace = |
43 SkColorSpace::NewRGB(SkColorSpace::kLinear_RenderTargetGamma, wi
deGamut); | 40 SkColorSpace::NewRGB(SkColorSpace::kLinear_RenderTargetGamma, wi
deGamut); |
44 std::unique_ptr<SkColorSpaceXform> xform = SkColorSpaceXform::New(srcSpa
ce.get(), | 41 std::unique_ptr<SkColorSpaceXform> xform = SkColorSpaceXform::New(srcSpa
ce.get(), |
45 dstSpa
ce.get()); | 42 dstSpa
ce.get()); |
46 | 43 |
47 xform->apply(fWideGamutColors, colors, kNumColors, | 44 xform->apply(fWideGamutColors, colors, kNumColors, |
48 SkColorSpaceXform::kRGBA_F32_ColorFormat, kOpaque_SkAlphaTy
pe); | 45 SkColorSpaceXform::kRGBA_F32_ColorFormat, |
| 46 SkColorSpaceXform::kBGRA_8888_ColorFormat, kOpaque_SkAlphaT
ype); |
49 } | 47 } |
50 | 48 |
51 SkString onShortName() override { | 49 SkString onShortName() override { |
52 return SkString("colorspacexform"); | 50 return SkString("colorspacexform"); |
53 } | 51 } |
54 | 52 |
55 SkISize onISize() override { | 53 SkISize onISize() override { |
56 return SkISize::Make(500, 200); | 54 return SkISize::Make(500, 200); |
57 } | 55 } |
58 | 56 |
(...skipping 23 matching lines...) Expand all Loading... |
82 private: | 80 private: |
83 static constexpr int kNumColors = 10; | 81 static constexpr int kNumColors = 10; |
84 | 82 |
85 SkColor4f fSRGBColors[kNumColors]; | 83 SkColor4f fSRGBColors[kNumColors]; |
86 SkColor4f fWideGamutColors[kNumColors]; | 84 SkColor4f fWideGamutColors[kNumColors]; |
87 | 85 |
88 typedef skiagm::GM INHERITED; | 86 typedef skiagm::GM INHERITED; |
89 }; | 87 }; |
90 | 88 |
91 DEF_GM(return new ColorSpaceXformGM;) | 89 DEF_GM(return new ColorSpaceXformGM;) |
OLD | NEW |