aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/viewer/ImageSlide.cpp
diff options
context:
space:
mode:
authorGravatar msarett <msarett@google.com>2016-07-28 17:11:18 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-07-28 17:11:18 -0700
commit39979d8c6b97889f600a212cfc9b063360f3de2f (patch)
tree3a63566b6e7643335fda8c60451b922c73bac92e /tools/viewer/ImageSlide.cpp
parentecf3dbe8f2987a08b21be1aff61b7fbfbb69640a (diff)
Revert of Add color space xform support to SkJpegCodec (includes F16!) (patchset #9 id:260001 of https://codereview.chromium.org/2174493002/ )
Reason for revert: Breaking MSAN Original issue's description: > Add color space xform support to SkJpegCodec (includes F16!) > > Also changes SkColorXform to support: > RGBA->RGBA > RGBA->BGRA > > Instead of: > RGBA->SkPMColor > > TBR=reed@google.com > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002 > CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot > > Committed: https://skia.googlesource.com/skia/+/73d55332e2846dd05e9efdaa2f017bcc3872884b TBR=mtklein@google.com,reed@google.com,herb@google.com,brianosman@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2195523002
Diffstat (limited to 'tools/viewer/ImageSlide.cpp')
-rw-r--r--tools/viewer/ImageSlide.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/tools/viewer/ImageSlide.cpp b/tools/viewer/ImageSlide.cpp
index 7dcee5d5ac..b0471547bc 100644
--- a/tools/viewer/ImageSlide.cpp
+++ b/tools/viewer/ImageSlide.cpp
@@ -37,18 +37,20 @@ void ImageSlide::draw(SkCanvas* canvas) {
void ImageSlide::load(SkScalar, SkScalar) {
sk_sp<SkData> encoded = SkData::MakeFromFileName(fPath.c_str());
+ fImage = SkImage::MakeFromEncoded(encoded);
+ fImage->asLegacyBitmap(&fOriginalBitmap, SkImage::kRO_LegacyBitmapMode);
+
SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded.get()));
- if (!codec) {
- return;
+ sk_sp<SkColorSpace> srcSpace = sk_ref_sp(codec->getInfo().colorSpace());
+ sk_sp<SkColorSpace> dstSpace = SkColorSpace::NewNamed(SkColorSpace::kAdobeRGB_Named);
+ std::unique_ptr<SkColorSpaceXform> xform = SkColorSpaceXform::New(srcSpace, dstSpace);
+ fOriginalBitmap.deepCopyTo(&fXformedBitmap);
+ uint32_t* row = (uint32_t*) fXformedBitmap.getPixels();
+ for (int y = 0; y < fXformedBitmap.height(); y++) {
+ xform->applyTo8888(row, row, fXformedBitmap.width());
+ row = SkTAddOffset<uint32_t>(row, fXformedBitmap.rowBytes());
}
-
- fOriginalBitmap.allocPixels(codec->getInfo());
- codec->getPixels(codec->getInfo(), fOriginalBitmap.getPixels(), fOriginalBitmap.rowBytes());
-
- SkImageInfo xformedInfo = codec->getInfo().makeColorSpace(
- SkColorSpace::NewNamed(SkColorSpace::kAdobeRGB_Named));
- fXformedBitmap.allocPixels(xformedInfo);
- codec->getPixels(xformedInfo, fXformedBitmap.getPixels(), fXformedBitmap.rowBytes());
+ fXformedBitmap.notifyPixelsChanged(); // This is needed for the deepCopy
}
void ImageSlide::unload() {