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 |