summaryrefslogtreecommitdiff
path: root/libs/hwui/SkiaCanvas.cpp
diff options
context:
space:
mode:
author Romain Guy <romainguy@google.com> 2017-04-07 18:48:57 +0000
committer android-build-merger <android-build-merger@google.com> 2017-04-07 18:48:57 +0000
commit0246a298f909832119cfb341ce9c4ce81f32ca95 (patch)
tree24ad65d26ad1a32060937a8a2121cd058449fa48 /libs/hwui/SkiaCanvas.cpp
parent718264a3f80916f3dd35e0531734bfbcb6bedf9c (diff)
parent3eafcb2d8b14da0c356e7d075ae5dee5fd5d9b6e (diff)
Merge "Color management, the missing pieces" into oc-dev am: 7dfa16c2ef
am: 3eafcb2d8b Change-Id: I079d8d17982eecc022f2a53e1e6ca193dc7a3ace
Diffstat (limited to 'libs/hwui/SkiaCanvas.cpp')
-rw-r--r--libs/hwui/SkiaCanvas.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 6f366891ca03..5c7d8d8b8b77 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.