diff options
author | 2017-04-07 18:41:50 +0000 | |
---|---|---|
committer | 2017-04-07 18:41:50 +0000 | |
commit | 3eafcb2d8b14da0c356e7d075ae5dee5fd5d9b6e (patch) | |
tree | f56ecddd930bdf6155f9a08da5fc031abc8c6bc3 /libs/hwui/SkiaCanvas.cpp | |
parent | 0271fbdaf9ad1154d0756815ad15918faee32755 (diff) | |
parent | 7dfa16c2ef8eb50131cdf8ba7a991d1f16093c09 (diff) |
Merge "Color management, the missing pieces" into oc-dev
am: 7dfa16c2ef
Change-Id: I258ae87aeb739f3df1d1aef00fb055861c757111
Diffstat (limited to 'libs/hwui/SkiaCanvas.cpp')
-rw-r--r-- | libs/hwui/SkiaCanvas.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index 13d7e09b6e79..9f649ead2b52 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -58,8 +58,10 @@ SkiaCanvas::SkiaCanvas(SkCanvas* canvas, XformToSRGB xformToSRGB) } SkiaCanvas::SkiaCanvas(const SkBitmap& bitmap) { + sk_sp<SkColorSpace> cs = bitmap.refColorSpace(); mCanvasOwned = std::unique_ptr<SkCanvas>(new SkCanvas(bitmap)); - mCanvasWrapper = SkCreateColorSpaceXformCanvas(mCanvasOwned.get(), SkColorSpace::MakeSRGB()); + mCanvasWrapper = SkCreateColorSpaceXformCanvas(mCanvasOwned.get(), + cs == nullptr ? SkColorSpace::MakeSRGB() : std::move(cs)); mCanvas = mCanvasWrapper.get(); } @@ -97,9 +99,10 @@ private: }; void SkiaCanvas::setBitmap(const SkBitmap& bitmap) { + sk_sp<SkColorSpace> cs = bitmap.refColorSpace(); std::unique_ptr<SkCanvas> newCanvas = std::unique_ptr<SkCanvas>(new SkCanvas(bitmap)); - std::unique_ptr<SkCanvas> newCanvasWrapper = - SkCreateColorSpaceXformCanvas(newCanvas.get(), SkColorSpace::MakeSRGB()); + std::unique_ptr<SkCanvas> newCanvasWrapper = SkCreateColorSpaceXformCanvas(newCanvas.get(), + cs == nullptr ? SkColorSpace::MakeSRGB() : std::move(cs)); if (!bitmap.isNull()) { // Copy the canvas matrix & clip state. |