| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
| 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 | 8 |
| 9 #include "SkImageDecoder.h" | 9 #include "SkImageDecoder.h" |
| 10 #include "SkBitmap.h" | 10 #include "SkBitmap.h" |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 bool SkImageDecoder::decodeSubset(SkBitmap* bm, const SkIRect& rect, | 206 bool SkImageDecoder::decodeSubset(SkBitmap* bm, const SkIRect& rect, |
| 207 SkBitmap::Config pref) { | 207 SkBitmap::Config pref) { |
| 208 // we reset this to false before calling onDecodeSubset | 208 // we reset this to false before calling onDecodeSubset |
| 209 fShouldCancelDecode = false; | 209 fShouldCancelDecode = false; |
| 210 // assign this, for use by getPrefConfig(), in case fUsePrefTable is false | 210 // assign this, for use by getPrefConfig(), in case fUsePrefTable is false |
| 211 fDefaultPref = pref; | 211 fDefaultPref = pref; |
| 212 | 212 |
| 213 return this->onDecodeSubset(bm, rect); | 213 return this->onDecodeSubset(bm, rect); |
| 214 } | 214 } |
| 215 | 215 |
| 216 bool SkImageDecoder::buildTileIndex(SkStream* stream, | 216 bool SkImageDecoder::buildTileIndex(SkStreamRewindable* stream, |
| 217 int *width, int *height) { | 217 int *width, int *height) { |
| 218 // we reset this to false before calling onBuildTileIndex | 218 // we reset this to false before calling onBuildTileIndex |
| 219 fShouldCancelDecode = false; | 219 fShouldCancelDecode = false; |
| 220 | 220 |
| 221 return this->onBuildTileIndex(stream, width, height); | 221 return this->onBuildTileIndex(stream, width, height); |
| 222 } | 222 } |
| 223 | 223 |
| 224 bool SkImageDecoder::cropBitmap(SkBitmap *dst, SkBitmap *src, int sampleSize, | 224 bool SkImageDecoder::cropBitmap(SkBitmap *dst, SkBitmap *src, int sampleSize, |
| 225 int dstX, int dstY, int width, int height, | 225 int dstX, int dstY, int width, int height, |
| 226 int srcX, int srcY) { | 226 int srcX, int srcY) { |
| 227 int w = width / sampleSize; | 227 int w = width / sampleSize; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 return true; | 269 return true; |
| 270 } | 270 } |
| 271 | 271 |
| 272 /////////////////////////////////////////////////////////////////////////////// | 272 /////////////////////////////////////////////////////////////////////////////// |
| 273 | 273 |
| 274 bool SkImageDecoder::DecodeFile(const char file[], SkBitmap* bm, | 274 bool SkImageDecoder::DecodeFile(const char file[], SkBitmap* bm, |
| 275 SkBitmap::Config pref, Mode mode, Format* format) { | 275 SkBitmap::Config pref, Mode mode, Format* format) { |
| 276 SkASSERT(file); | 276 SkASSERT(file); |
| 277 SkASSERT(bm); | 277 SkASSERT(bm); |
| 278 | 278 |
| 279 SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(file)); | 279 SkAutoTUnref<SkStreamRewindable> stream(SkStream::NewFromFile(file)); |
| 280 if (stream.get()) { | 280 if (stream.get()) { |
| 281 if (SkImageDecoder::DecodeStream(stream, bm, pref, mode, format)) { | 281 if (SkImageDecoder::DecodeStream(stream, bm, pref, mode, format)) { |
| 282 bm->pixelRef()->setURI(file); | 282 bm->pixelRef()->setURI(file); |
| 283 return true; | 283 return true; |
| 284 } | 284 } |
| 285 } | 285 } |
| 286 return false; | 286 return false; |
| 287 } | 287 } |
| 288 | 288 |
| 289 bool SkImageDecoder::DecodeMemory(const void* buffer, size_t size, SkBitmap* bm, | 289 bool SkImageDecoder::DecodeMemory(const void* buffer, size_t size, SkBitmap* bm, |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 } | 438 } |
| 439 bm.setConfig(bm.config(), bm.width(), bm.height(), target->fRowBytes); | 439 bm.setConfig(bm.config(), bm.width(), bm.height(), target->fRowBytes); |
| 440 } | 440 } |
| 441 | 441 |
| 442 // SkMemoryStream.rewind() will always return true. | 442 // SkMemoryStream.rewind() will always return true. |
| 443 SkAssertResult(stream.rewind()); | 443 SkAssertResult(stream.rewind()); |
| 444 return decode_pixels_to_8888(decoder.get(), &stream, &bm, target->fAddr); | 444 return decode_pixels_to_8888(decoder.get(), &stream, &bm, target->fAddr); |
| 445 } | 445 } |
| 446 | 446 |
| 447 | 447 |
| 448 bool SkImageDecoder::DecodeStream(SkStream* stream, SkBitmap* bm, | 448 bool SkImageDecoder::DecodeStream(SkStreamRewindable* stream, SkBitmap* bm, |
| 449 SkBitmap::Config pref, Mode mode, Format* format) { | 449 SkBitmap::Config pref, Mode mode, |
| 450 Format* format) { |
| 450 SkASSERT(stream); | 451 SkASSERT(stream); |
| 451 SkASSERT(bm); | 452 SkASSERT(bm); |
| 452 | 453 |
| 453 bool success = false; | 454 bool success = false; |
| 454 SkImageDecoder* codec = SkImageDecoder::Factory(stream); | 455 SkImageDecoder* codec = SkImageDecoder::Factory(stream); |
| 455 | 456 |
| 456 if (NULL != codec) { | 457 if (NULL != codec) { |
| 457 success = codec->decode(stream, bm, pref, mode); | 458 success = codec->decode(stream, bm, pref, mode); |
| 458 if (success && format) { | 459 if (success && format) { |
| 459 *format = codec->getFormat(); | 460 *format = codec->getFormat(); |
| 460 if (kUnknown_Format == *format) { | 461 if (kUnknown_Format == *format) { |
| 461 if (stream->rewind()) { | 462 if (stream->rewind()) { |
| 462 *format = GetStreamFormat(stream); | 463 *format = GetStreamFormat(stream); |
| 463 } | 464 } |
| 464 } | 465 } |
| 465 } | 466 } |
| 466 delete codec; | 467 delete codec; |
| 467 } | 468 } |
| 468 return success; | 469 return success; |
| 469 } | 470 } |
| OLD | NEW |