From 9df70bb74db8294283e8d2d8e20c95d290d2a34d Mon Sep 17 00:00:00 2001 From: Matt Sarett Date: Tue, 14 Feb 2017 13:50:43 -0500 Subject: Picture backed images must have a bit depth and color space Enforce that picture backed images created by the public API must have a non-null SkColorSpace. SkPictureShader uses a private call to get around this restriction. BUG=skia: Change-Id: I2fc11a8ffe583035d09e83abf40b827fbf575321 Reviewed-on: https://skia-review.googlesource.com/8415 Reviewed-by: Mike Reed Commit-Queue: Matt Sarett --- src/core/SkPictureImageGenerator.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/core/SkPictureImageGenerator.h (limited to 'src/core/SkPictureImageGenerator.h') diff --git a/src/core/SkPictureImageGenerator.h b/src/core/SkPictureImageGenerator.h new file mode 100644 index 0000000000..cfb36a3601 --- /dev/null +++ b/src/core/SkPictureImageGenerator.h @@ -0,0 +1,35 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkImageGenerator.h" +#include "SkTLazy.h" + +class SkPictureImageGenerator : SkImageGenerator { +public: + static SkImageGenerator* Create(const SkISize&, const SkPicture*, const SkMatrix*, + const SkPaint*, SkImage::BitDepth, sk_sp); + +protected: + bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, SkPMColor ctable[], + int* ctableCount) override; + bool onComputeScaledDimensions(SkScalar scale, SupportedSizes*) override; + bool onGenerateScaledPixels(const SkPixmap&) override; + +#if SK_SUPPORT_GPU + GrTexture* onGenerateTexture(GrContext*, const SkImageInfo&, const SkIPoint&) override; +#endif + +private: + SkPictureImageGenerator(const SkImageInfo& info, const SkPicture*, const SkMatrix*, + const SkPaint*); + + sk_sp fPicture; + SkMatrix fMatrix; + SkTLazy fPaint; + + typedef SkImageGenerator INHERITED; +}; -- cgit v1.2.3