diff options
author | 2017-05-04 12:40:30 +0000 | |
---|---|---|
committer | 2017-05-04 12:40:41 +0000 | |
commit | b59a9da7eba4ea5f3101b87deae3d67395c58a7e (patch) | |
tree | e7a147109af134bcfadfb454ed8df71213e9fa27 /gm/makecolorspace.cpp | |
parent | 64dbb89efc9daba9f62b4a385354a77aaa54861e (diff) |
Revert "Add SkImage::makeColorSpace() with correct transfer fn behavior"
This reverts commit 9ad0531a18f854e5a2c8034880140dd6cd3ea3c1.
Reason for revert: Does not handle transfer fn behavior.
Original change's description:
> Add SkImage::makeColorSpace() with correct transfer fn behavior
>
> Completes implementation for lazy and raster images. gpu is
> still a TODO.
>
> Bug: skia:6553
> Change-Id: I04eea5c4fb53c50c0406c2e6b6778b0e21fd85f8
> Reviewed-on: https://skia-review.googlesource.com/14403
> Commit-Queue: Matt Sarett <msarett@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
>
TBR=mtklein@google.com,msarett@google.com,brianosman@google.com,reed@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I3830321aea7d0dc5ab38a40f3318bb53a41df383
Reviewed-on: https://skia-review.googlesource.com/15306
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'gm/makecolorspace.cpp')
-rw-r--r-- | gm/makecolorspace.cpp | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/gm/makecolorspace.cpp b/gm/makecolorspace.cpp deleted file mode 100644 index af0b3d4b19..0000000000 --- a/gm/makecolorspace.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2017 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "gm.h" -#include "Resources.h" -#include "SkCodec.h" -#include "SkColorSpace_Base.h" -#include "SkImage.h" -#include "SkImagePriv.h" - -sk_sp<SkImage> make_raster_image(const char* path, SkTransferFunctionBehavior behavior) { - SkString resourcePath = GetResourcePath(path); - sk_sp<SkData> resourceData = SkData::MakeFromFileName(resourcePath.c_str()); - std::unique_ptr<SkCodec> codec(SkCodec::NewFromData(resourceData)); - - SkBitmap bitmap; - bitmap.allocPixels(codec->getInfo()); - - SkCodec::Options opts; - opts.fPremulBehavior = behavior; - codec->getPixels(codec->getInfo(), bitmap.getPixels(), bitmap.rowBytes(), &opts, - nullptr, nullptr); - return SkImage::MakeFromBitmap(bitmap); -} - -sk_sp<SkImage> make_color_space(sk_sp<SkImage> orig, sk_sp<SkColorSpace> colorSpace, - SkTransferFunctionBehavior behavior) { - sk_sp<SkImage> xform = orig->makeColorSpace(colorSpace, behavior); - - // Assign an sRGB color space on the xformed image, so we can see the effects of the xform - // when we draw. - sk_sp<SkColorSpace> srgb = SkColorSpace::MakeSRGB(); - if (colorSpace->gammaIsLinear()) { - srgb = SkColorSpace::MakeSRGBLinear(); - } - return SkImageMakeRasterCopyAndAssignColorSpace(xform.get(), srgb.get()); -} - -class MakeCSGM : public skiagm::GM { -public: - MakeCSGM() {} - -protected: - SkString onShortName() override { - return SkString("makecolorspace"); - } - - SkISize onISize() override { - return SkISize::Make(128*3, 128*4); - } - - void onDraw(SkCanvas* canvas) override { - SkTransferFunctionBehavior behavior = canvas->imageInfo().colorSpace() ? - SkTransferFunctionBehavior::kRespect : SkTransferFunctionBehavior::kIgnore; - - sk_sp<SkColorSpace> wideGamut = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, - SkColorSpace::kAdobeRGB_Gamut); - sk_sp<SkColorSpace> wideGamutLinear = as_CSB(wideGamut)->makeLinearGamma(); - - // Lazy images - sk_sp<SkImage> opaqueImage = GetResourceAsImage("mandrill_128.png"); - sk_sp<SkImage> premulImage = GetResourceAsImage("color_wheel.png"); - canvas->drawImage(opaqueImage, 0.0f, 0.0f); - canvas->drawImage(make_color_space(opaqueImage, wideGamut, behavior), 128.0f, 0.0f); - canvas->drawImage(make_color_space(opaqueImage, wideGamutLinear, behavior), 256.0f, 0.0f); - canvas->drawImage(premulImage, 0.0f, 128.0f); - canvas->drawImage(make_color_space(premulImage, wideGamut, behavior), 128.0f, 128.0f); - canvas->drawImage(make_color_space(premulImage, wideGamutLinear, behavior), 256.0f, 128.0f); - canvas->translate(0.0f, 256.0f); - - // Raster images - opaqueImage = make_raster_image("mandrill_128.png", behavior); - premulImage = make_raster_image("color_wheel.png", behavior); - canvas->drawImage(opaqueImage, 0.0f, 0.0f); - canvas->drawImage(make_color_space(opaqueImage, wideGamut, behavior), 128.0f, 0.0f); - canvas->drawImage(make_color_space(opaqueImage, wideGamutLinear, behavior), 256.0f, 0.0f); - canvas->drawImage(premulImage, 0.0f, 128.0f); - canvas->drawImage(make_color_space(premulImage, wideGamut, behavior), 128.0f, 128.0f); - canvas->drawImage(make_color_space(premulImage, wideGamutLinear, behavior), 256.0f, 128.0f); - } - -private: - typedef skiagm::GM INHERITED; -}; - -DEF_GM(return new MakeCSGM;) |