diff options
author | Brian Osman <brianosman@google.com> | 2016-12-16 11:55:18 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-12-16 18:09:02 +0000 |
commit | 138ea97c1acaed4b968540220724dd5bf671e8db (patch) | |
tree | bd98e545885ec57bf16cc457e10766655b2fec22 /gm | |
parent | 8ced688a3a3489ac696e5ee2d10557b389fd4ebf (diff) |
Add color space to picture image as a creation parameter
This gives a picture image a preferred "native" color space, which
facilitates caching and other things.
BUG=skia:
Change-Id: I95988c14d17f96d7d870b3d1c3b723c36e2c170d
Reviewed-on: https://skia-review.googlesource.com/6158
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'gm')
-rw-r--r-- | gm/image.cpp | 6 | ||||
-rw-r--r-- | gm/image_pict.cpp | 8 | ||||
-rw-r--r-- | gm/image_shader.cpp | 3 | ||||
-rw-r--r-- | gm/pictureimagegenerator.cpp | 11 | ||||
-rw-r--r-- | gm/verylargebitmap.cpp | 3 |
5 files changed, 21 insertions, 10 deletions
diff --git a/gm/image.cpp b/gm/image.cpp index c1d3372db0..0bdd994b7e 100644 --- a/gm/image.cpp +++ b/gm/image.cpp @@ -246,7 +246,8 @@ static sk_sp<SkImage> make_picture(const SkImageInfo& info, GrContext*, void (*d SkPictureRecorder recorder; draw(recorder.beginRecording(SkRect::MakeIWH(info.width(), info.height()))); return SkImage::MakeFromPicture(recorder.finishRecordingAsPicture(), - info.dimensions(), nullptr, nullptr); + info.dimensions(), nullptr, nullptr, + SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named)); } static sk_sp<SkImage> make_codec(const SkImageInfo& info, GrContext*, void (*draw)(SkCanvas*)) { @@ -343,7 +344,8 @@ static SkImageGenerator* gen_picture(const SkImageInfo& info) { SkPictureRecorder recorder; draw_opaque_contents(recorder.beginRecording(SkRect::MakeIWH(info.width(), info.height()))); sk_sp<SkPicture> pict(recorder.finishRecordingAsPicture()); - return SkImageGenerator::NewFromPicture(info.dimensions(), pict.get(), nullptr, nullptr); + return SkImageGenerator::NewFromPicture(info.dimensions(), pict.get(), nullptr, nullptr, + SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named)); } static SkImageGenerator* gen_png(const SkImageInfo& info) { diff --git a/gm/image_pict.cpp b/gm/image_pict.cpp index d2e1ebad95..229f3c5054 100644 --- a/gm/image_pict.cpp +++ b/gm/image_pict.cpp @@ -62,14 +62,15 @@ protected: // extract enough just for the oval. const SkISize size = SkISize::Make(100, 100); + auto srgbColorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); SkMatrix matrix; matrix.setTranslate(-100, -100); - fImage0 = SkImage::MakeFromPicture(fPicture, size, &matrix, nullptr); + fImage0 = SkImage::MakeFromPicture(fPicture, size, &matrix, nullptr, srgbColorSpace); matrix.postTranslate(-50, -50); matrix.postRotate(45); matrix.postTranslate(50, 50); - fImage1 = SkImage::MakeFromPicture(fPicture, size, &matrix, nullptr); + fImage1 = SkImage::MakeFromPicture(fPicture, size, &matrix, nullptr, srgbColorSpace); } void drawSet(SkCanvas* canvas) const { @@ -107,7 +108,8 @@ DEF_GM( return new ImagePictGM; ) static SkImageGenerator* make_pic_generator(GrContext*, SkPicture* pic) { SkMatrix matrix; matrix.setTranslate(-100, -100); - return SkImageGenerator::NewFromPicture(SkISize::Make(100, 100), pic, &matrix, nullptr); + return SkImageGenerator::NewFromPicture(SkISize::Make(100, 100), pic, &matrix, nullptr, + SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named)); } class RasterGenerator : public SkImageGenerator { diff --git a/gm/image_shader.cpp b/gm/image_shader.cpp index 49b1ed524c..78037390b1 100644 --- a/gm/image_shader.cpp +++ b/gm/image_shader.cpp @@ -47,7 +47,8 @@ static sk_sp<SkImage> make_texture(GrContext* ctx, SkPicture* pic, const SkImage } static sk_sp<SkImage> make_pict_gen(GrContext*, SkPicture* pic, const SkImageInfo& info) { - return SkImage::MakeFromPicture(sk_ref_sp(pic), info.dimensions(), nullptr, nullptr); + return SkImage::MakeFromPicture(sk_ref_sp(pic), info.dimensions(), nullptr, nullptr, + SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named)); } static sk_sp<SkImage> make_encode_gen(GrContext* ctx, SkPicture* pic, const SkImageInfo& info) { diff --git a/gm/pictureimagegenerator.cpp b/gm/pictureimagegenerator.cpp index ab4c808fd1..b247af2f7a 100644 --- a/gm/pictureimagegenerator.cpp +++ b/gm/pictureimagegenerator.cpp @@ -138,6 +138,7 @@ protected: { SkISize::Make(200, 100), -1, -1, 0.5f }, }; + auto srgbColorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); const unsigned kDrawsPerRow = 4; const SkScalar kDrawSize = 250; @@ -154,10 +155,14 @@ protected: } std::unique_ptr<SkImageGenerator> gen( SkImageGenerator::NewFromPicture(configs[i].size, fPicture.get(), &m, - p.getAlpha() != 255 ? &p : nullptr)); + p.getAlpha() != 255 ? &p : nullptr, + srgbColorSpace)); + + SkImageInfo bmInfo = gen->getInfo().makeColorSpace( + sk_ref_sp(canvas->imageInfo().colorSpace())); + SkBitmap bm; - SkAssertResult(gen->tryGenerateBitmap(&bm, SkImageInfo::MakeN32Premul(configs[i].size), - nullptr)); + SkAssertResult(gen->tryGenerateBitmap(&bm, bmInfo, nullptr)); const SkScalar x = kDrawSize * (i % kDrawsPerRow); const SkScalar y = kDrawSize * (i / kDrawsPerRow); diff --git a/gm/verylargebitmap.cpp b/gm/verylargebitmap.cpp index 08ca481c43..280d117684 100644 --- a/gm/verylargebitmap.cpp +++ b/gm/verylargebitmap.cpp @@ -32,7 +32,8 @@ static sk_sp<SkImage> make_picture_image(int width, int height, SkColor colors[2 SkPictureRecorder recorder; draw(recorder.beginRecording(SkRect::MakeIWH(width, height)), width, height, colors); return SkImage::MakeFromPicture(recorder.finishRecordingAsPicture(), - SkISize::Make(width, height), nullptr, nullptr); + SkISize::Make(width, height), nullptr, nullptr, + SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named)); } typedef sk_sp<SkImage> (*ImageMakerProc)(int width, int height, SkColor colors[2]); |