aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2016-12-16 11:55:18 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-12-16 18:09:02 +0000
commit138ea97c1acaed4b968540220724dd5bf671e8db (patch)
treebd98e545885ec57bf16cc457e10766655b2fec22 /gm
parent8ced688a3a3489ac696e5ee2d10557b389fd4ebf (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.cpp6
-rw-r--r--gm/image_pict.cpp8
-rw-r--r--gm/image_shader.cpp3
-rw-r--r--gm/pictureimagegenerator.cpp11
-rw-r--r--gm/verylargebitmap.cpp3
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]);