| /* |
| * Copyright 2011 The Android Open Source Project |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| |
| #ifndef SkBitmapRegionDecoder_DEFINED |
| #define SkBitmapRegionDecoder_DEFINED |
| |
| #include "SkBitmap.h" |
| #include "SkImageDecoder.h" |
| #include "SkStream.h" |
| |
| struct SkIRect; |
| |
| /** |
| * SkBitmapRegionDecoder can be used to decode a specified rect from an image. |
| * This is particularly useful when the original image is large and you only |
| * need parts of the image. |
| * |
| * However, not all image codecs on all platforms support this feature so be |
| * prepared to fallback to standard decoding if decodeRegion(...) returns false. |
| */ |
| class SkBitmapRegionDecoder { |
| public: |
| SkBitmapRegionDecoder(SkImageDecoder* decoder, SkStream* stream, |
| int width, int height) { |
| fDecoder = decoder; |
| fStream = stream; |
| fWidth = width; |
| fHeight = height; |
| } |
| ~SkBitmapRegionDecoder() { |
| SkDELETE(fDecoder); |
| SkSafeUnref(fStream); |
| } |
| |
| bool decodeRegion(SkBitmap* bitmap, const SkIRect& rect, |
| SkBitmap::Config pref, int sampleSize); |
| |
| SkImageDecoder* getDecoder() const { return fDecoder; } |
| int getWidth() const { return fWidth; } |
| int getHeight() const { return fHeight; } |
| |
| private: |
| SkImageDecoder* fDecoder; |
| SkStream* fStream; |
| int fWidth; |
| int fHeight; |
| }; |
| |
| #endif |