Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 /* | |
| 2 * Copyright 2016 Google Inc. | |
| 3 * | |
| 4 * Use of this source code is governed by a BSD-style license that can be | |
| 5 * found in the LICENSE file. | |
| 6 */ | |
| 7 | |
| 8 #include "ImageSlide.h" | |
| 9 | |
| 10 #include "SkBitmap.h" | |
| 11 #include "SkCodec.h" | |
| 12 #include "SkColorSpaceXform.h" | |
| 13 #include "SkColorSpace.h" | |
| 14 #include "SkCanvas.h" | |
| 15 #include "SkData.h" | |
| 16 #include "SkImage.h" | |
| 17 #include "SkMetaData.h" | |
| 18 | |
| 19 ImageSlide::ImageSlide(const SkString& name, const SkString& path) : fPath(path) { | |
| 20 fName = name; | |
| 21 } | |
| 22 | |
| 23 SkISize ImageSlide::getDimensions() const { | |
| 24 return fImage ? fImage->dimensions() : SkISize::Make(0, 0); | |
| 25 } | |
| 26 | |
| 27 void ImageSlide::draw(SkCanvas* canvas) { | |
| 28 if (canvas->getMetaData().hasBool(kImageColorXformMetaData, true)) { | |
| 29 canvas->drawBitmap(fXformedBitmap, 0, 0); | |
| 30 } else { | |
| 31 // canvas->drawImage(fImage.get(), 0, 0); // drawImage is currently havi ng bugs | |
|
msarett
2016/06/13 14:56:26
I would say go ahead and file a bug. That way the
liyuqian
2016/06/13 16:10:40
Done.
| |
| 32 canvas->drawBitmap(fOriginalBitmap, 0, 0); | |
| 33 } | |
| 34 } | |
| 35 | |
| 36 void ImageSlide::load() { | |
| 37 sk_sp<SkData> encoded(SkData::NewFromFileName(fPath.c_str())); | |
|
msarett
2016/06/13 14:56:26
nit:
sk_sp<SkData> encoded = SkData::NewFromFileN
liyuqian
2016/06/13 16:10:40
no viable conversion from 'SkData *' to 'sk_sp<SkD
msarett
2016/06/13 16:57:35
Ahh sorry! You should use SkData::MakeFromFileNam
liyuqian
2016/06/13 19:02:29
Done.
| |
| 38 fImage = SkImage::MakeFromEncoded(encoded); | |
| 39 fImage->asLegacyBitmap(&fOriginalBitmap, SkImage::kRO_LegacyBitmapMode); | |
| 40 | |
| 41 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded.get())); | |
| 42 sk_sp<SkColorSpace> srcSpace = sk_ref_sp(codec->getColorSpace()); | |
| 43 sk_sp<SkColorSpace> dstSpace = SkColorSpace::NewNamed(SkColorSpace::kAdobeRG B_Named); | |
| 44 std::unique_ptr<SkColorSpaceXform> xform = SkColorSpaceXform::New(srcSpace, dstSpace); | |
| 45 fImage->asLegacyBitmap(&fXformedBitmap, SkImage::kRW_LegacyBitmapMode); | |
|
msarett
2016/06/13 14:56:26
nit: I believe that MakeFromEncoded() is lazy, mea
liyuqian
2016/06/13 16:10:40
Done.
| |
| 46 uint32_t* row = (uint32_t*) fXformedBitmap.getPixels(); | |
| 47 for (int y = 0; y < fXformedBitmap.height(); y++) { | |
| 48 xform->xform_RGBA_8888(row, row, fXformedBitmap.width()); | |
| 49 row = SkTAddOffset<uint32_t>(row, fXformedBitmap.rowBytes()); | |
| 50 } | |
| 51 } | |
| 52 | |
| 53 void ImageSlide::unload() { | |
| 54 fImage.reset(nullptr); | |
| 55 } | |
| OLD | NEW |