From 3928ff8e0b617c3a00eee1963bc31ce5470fba6d Mon Sep 17 00:00:00 2001 From: Matt Sarett Date: Tue, 6 Jun 2017 10:11:34 -0400 Subject: Create an SkColorSpaceXform image generator This should be immediately useful in the Skia-Android rendering pipeline. Possible future uses include creating a "renderable" SkImage from a bitmap with a funny color space. Inspired by: https://skia-review.googlesource.com/c/13981/ Bug: b/62347704 Change-Id: I388c7af1fc43834b8ad22022d0caf3ac90b734c8 Reviewed-on: https://skia-review.googlesource.com/18598 Reviewed-by: Mike Reed Commit-Queue: Matt Sarett --- gm/xform_image_gen.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 gm/xform_image_gen.cpp (limited to 'gm') diff --git a/gm/xform_image_gen.cpp b/gm/xform_image_gen.cpp new file mode 100644 index 0000000000..69a1ce173f --- /dev/null +++ b/gm/xform_image_gen.cpp @@ -0,0 +1,48 @@ +/* + * 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 "SkColorSpaceXformImageGenerator.h" + +class ColorXformImageGenGM : public skiagm::GM { +public: + ColorXformImageGenGM() {} + +protected: + + SkString onShortName() override { + return SkString("color_xform_image_gen"); + } + + SkISize onISize() override { + return SkISize::Make(100, 100); + } + + void onDraw(SkCanvas* canvas) override { + SkBitmap bitmap; + SkImageInfo info = + SkImageInfo::MakeN32(100, 100, kOpaque_SkAlphaType, SkColorSpace::MakeSRGB()); + bitmap.allocPixels(info); + bitmap.eraseColor(SK_ColorRED); + bitmap.eraseArea(SkIRect::MakeWH(25, 25), SK_ColorBLUE); // We should not see any blue. + + std::unique_ptr gen = SkColorSpaceXformImageGenerator::Make( + bitmap, + SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, + SkColorSpace::kRec2020_Gamut), + kNever_SkCopyPixelsMode); + + SkIRect subset = SkIRect::MakeXYWH(25, 25, 50, 50); + sk_sp image = SkImage::MakeFromGenerator(std::move(gen), &subset); + canvas->drawImage(image, 25, 25); + } + +private: + typedef GM INHERITED; +}; + +DEF_GM( return new ColorXformImageGenGM(); ) -- cgit v1.2.3