aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/colorspacexform.cpp
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2017-03-20 19:06:18 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-21 12:46:37 +0000
commit4c55027dbf57d0701361b123e36b8fad46c341c3 (patch)
treea31d6c056c414b3336d02740c1558c5d65588e44 /gm/colorspacexform.cpp
parenteb35f4dfaa10b9d751abbc9a1406456eb3b1649d (diff)
Add support for F32 sources to SkColorSpaceXform
This also subtlely allows clients to convert between F32 and F16. BUG=skia: CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Ied5f2295fce00c69d8cf85730be899f3f8597915 Reviewed-on: https://skia-review.googlesource.com/9914 Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'gm/colorspacexform.cpp')
-rw-r--r--gm/colorspacexform.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/gm/colorspacexform.cpp b/gm/colorspacexform.cpp
index dfb343778c..4657f6ad11 100644
--- a/gm/colorspacexform.cpp
+++ b/gm/colorspacexform.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 Google Inc.
+ * Copyright 2016 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
@@ -7,6 +7,7 @@
#include "gm.h"
#include "SkColor.h"
+#include "SkColorSpace_Base.h"
#include "SkColorSpaceXform.h"
#include "SkRect.h"
@@ -35,15 +36,22 @@ protected:
SkMatrix44 wideGamut(SkMatrix44::kUninitialized_Constructor);
wideGamut.set3x3RowMajorf(kWideGamutRGB_toXYZD50);
+ // Test BGRA input.
sk_sp<SkColorSpace> srcSpace = SkColorSpace::MakeSRGB();
sk_sp<SkColorSpace> dstSpace =
SkColorSpace::MakeRGB(SkColorSpace::kLinear_RenderTargetGamma, wideGamut);
std::unique_ptr<SkColorSpaceXform> xform = SkColorSpaceXform::New(srcSpace.get(),
dstSpace.get());
-
- xform->apply(SkColorSpaceXform::kRGBA_F32_ColorFormat, fWideGamutColors,
+ xform->apply(SkColorSpaceXform::kRGBA_F32_ColorFormat, fWideGamutColors0,
SkColorSpaceXform::kBGRA_8888_ColorFormat, colors, kNumColors,
kOpaque_SkAlphaType);
+
+ // Test F32 input.
+ srcSpace = as_CSB(srcSpace)->makeLinearGamma();
+ xform = SkColorSpaceXform::New(srcSpace.get(), dstSpace.get());
+ xform->apply(SkColorSpaceXform::kRGBA_F32_ColorFormat, fWideGamutColors1,
+ SkColorSpaceXform::kRGBA_F32_ColorFormat, fSRGBColors, kNumColors,
+ kOpaque_SkAlphaType);
}
SkString onShortName() override {
@@ -51,7 +59,7 @@ protected:
}
SkISize onISize() override {
- return SkISize::Make(500, 200);
+ return SkISize::Make(500, 300);
}
void onDraw(SkCanvas* canvas) override {
@@ -73,14 +81,17 @@ protected:
// Wide gamut colors should appear darker - we are simulating a more intense display.
drawColors(fSRGBColors);
canvas->translate(0.0f, 100.0f);
- drawColors(fWideGamutColors);
+ drawColors(fWideGamutColors0);
+ canvas->translate(0.0f, 100.0f);
+ drawColors(fWideGamutColors1);
}
private:
static constexpr int kNumColors = 10;
SkColor4f fSRGBColors[kNumColors];
- SkColor4f fWideGamutColors[kNumColors];
+ SkColor4f fWideGamutColors0[kNumColors];
+ SkColor4f fWideGamutColors1[kNumColors];
typedef skiagm::GM INHERITED;
};