diff options
author | Matt Sarett <msarett@google.com> | 2017-02-14 13:50:43 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-02-14 21:32:10 +0000 |
commit | 9df70bb74db8294283e8d2d8e20c95d290d2a34d (patch) | |
tree | 47f70a2a36d254599db76e77cb6c93a31b895b7d /src/core/SkPictureImageGenerator.cpp | |
parent | 6f449692c148c6b36d65c4bfa2941e3b09e25c38 (diff) |
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 <reed@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/core/SkPictureImageGenerator.cpp')
-rw-r--r-- | src/core/SkPictureImageGenerator.cpp | 35 |
1 files changed, 7 insertions, 28 deletions
diff --git a/src/core/SkPictureImageGenerator.cpp b/src/core/SkPictureImageGenerator.cpp index 762654af70..5f69db647b 100644 --- a/src/core/SkPictureImageGenerator.cpp +++ b/src/core/SkPictureImageGenerator.cpp @@ -6,39 +6,12 @@ */ #include "SkImage_Base.h" -#include "SkImageGenerator.h" #include "SkCanvas.h" #include "SkMatrix.h" #include "SkPaint.h" #include "SkPicture.h" +#include "SkPictureImageGenerator.h" #include "SkSurface.h" -#include "SkTLazy.h" - -class SkPictureImageGenerator : SkImageGenerator { -public: - static SkImageGenerator* Create(const SkISize&, const SkPicture*, const SkMatrix*, - const SkPaint*, SkImage::BitDepth, sk_sp<SkColorSpace>); - -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<const SkPicture> fPicture; - SkMatrix fMatrix; - SkTLazy<SkPaint> fPaint; - - typedef SkImageGenerator INHERITED; -}; SkImageGenerator* SkPictureImageGenerator::Create(const SkISize& size, const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint, @@ -141,6 +114,12 @@ SkImageGenerator* SkImageGenerator::NewFromPicture(const SkISize& size, const Sk const SkMatrix* matrix, const SkPaint* paint, SkImage::BitDepth bitDepth, sk_sp<SkColorSpace> colorSpace) { + // Check this here (rather than in SkPictureImageGenerator::Create) so SkPictureShader + // has a private entry point to create legacy picture backed images. + if (!colorSpace) { + return nullptr; + } + return SkPictureImageGenerator::Create(size, picture, matrix, paint, bitDepth, std::move(colorSpace)); } |