| 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 |