| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef SkAndroidCodec_DEFINED | 8 #ifndef SkAndroidCodec_DEFINED |
| 9 #define SkAndroidCodec_DEFINED | 9 #define SkAndroidCodec_DEFINED |
| 10 | 10 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 static SkAndroidCodec* NewFromData(SkData*, SkPngChunkReader* = NULL); | 43 static SkAndroidCodec* NewFromData(SkData*, SkPngChunkReader* = NULL); |
| 44 | 44 |
| 45 virtual ~SkAndroidCodec() {} | 45 virtual ~SkAndroidCodec() {} |
| 46 | 46 |
| 47 | 47 |
| 48 const SkImageInfo& getInfo() const { return fInfo; } | 48 const SkImageInfo& getInfo() const { return fInfo; } |
| 49 | 49 |
| 50 /** | 50 /** |
| 51 * Format of the encoded data. | 51 * Format of the encoded data. |
| 52 */ | 52 */ |
| 53 SkEncodedFormat getEncodedFormat() const { return this->onGetEncodedFormat()
; } | 53 SkEncodedFormat getEncodedFormat() const { return fCodec->getEncodedFormat()
; } |
| 54 | 54 |
| 55 /** | 55 /** |
| 56 * Returns the dimensions of the scaled output image, for an input | 56 * Returns the dimensions of the scaled output image, for an input |
| 57 * sampleSize. | 57 * sampleSize. |
| 58 * | 58 * |
| 59 * When the sample size divides evenly into the original dimensions, the | 59 * When the sample size divides evenly into the original dimensions, the |
| 60 * scaled output dimensions will simply be equal to the original | 60 * scaled output dimensions will simply be equal to the original |
| 61 * dimensions divided by the sample size. | 61 * dimensions divided by the sample size. |
| 62 * | 62 * |
| 63 * When the sample size does not divide even into the original | 63 * When the sample size does not divide even into the original |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 const AndroidOptions* options); | 201 const AndroidOptions* options); |
| 202 | 202 |
| 203 /** | 203 /** |
| 204 * Simplified version of getAndroidPixels() where we supply the default And
roidOptions. | 204 * Simplified version of getAndroidPixels() where we supply the default And
roidOptions. |
| 205 * | 205 * |
| 206 * This will return an error if the info is kIndex_8_SkColorType and also w
ill not perform | 206 * This will return an error if the info is kIndex_8_SkColorType and also w
ill not perform |
| 207 * any scaling or subsetting. | 207 * any scaling or subsetting. |
| 208 */ | 208 */ |
| 209 SkCodec::Result getAndroidPixels(const SkImageInfo& info, void* pixels, size
_t rowBytes); | 209 SkCodec::Result getAndroidPixels(const SkImageInfo& info, void* pixels, size
_t rowBytes); |
| 210 | 210 |
| 211 /** |
| 212 * Some images may initially report that they have alpha due to the format |
| 213 * of the encoded data, but then never use any colors which have alpha |
| 214 * less than 100%. This function can be called *after* decoding to |
| 215 * determine if such an image truly had alpha. Calling it before decoding |
| 216 * is undefined. |
| 217 * FIXME: see skbug.com/3582. |
| 218 */ |
| 219 bool reallyHasAlpha() const { |
| 220 return fCodec->reallyHasAlpha(); |
| 221 } |
| 222 |
| 211 protected: | 223 protected: |
| 212 | 224 |
| 213 SkAndroidCodec(const SkImageInfo&); | 225 SkAndroidCodec(SkCodec*); |
| 214 | 226 |
| 215 virtual SkEncodedFormat onGetEncodedFormat() const = 0; | 227 SkCodec* codec() const { return fCodec.get(); } |
| 216 | 228 |
| 217 virtual SkISize onGetSampledDimensions(int sampleSize) const = 0; | 229 virtual SkISize onGetSampledDimensions(int sampleSize) const = 0; |
| 218 | 230 |
| 219 virtual bool onGetSupportedSubset(SkIRect* desiredSubset) const = 0; | 231 virtual bool onGetSupportedSubset(SkIRect* desiredSubset) const = 0; |
| 220 | 232 |
| 221 virtual SkCodec::Result onGetAndroidPixels(const SkImageInfo& info, void* pi
xels, | 233 virtual SkCodec::Result onGetAndroidPixels(const SkImageInfo& info, void* pi
xels, |
| 222 size_t rowBytes, const AndroidOptions& options) = 0; | 234 size_t rowBytes, const AndroidOptions& options) = 0; |
| 223 | 235 |
| 224 private: | 236 private: |
| 225 | 237 |
| 226 // This will always be a reference to the info that is contained by the | 238 // This will always be a reference to the info that is contained by the |
| 227 // embedded SkCodec. | 239 // embedded SkCodec. |
| 228 const SkImageInfo& fInfo; | 240 const SkImageInfo& fInfo; |
| 241 |
| 242 SkAutoTDelete<SkCodec> fCodec; |
| 229 }; | 243 }; |
| 230 #endif // SkAndroidCodec_DEFINED | 244 #endif // SkAndroidCodec_DEFINED |
| OLD | NEW |