| /* | 
 |  * Copyright 2015 Google Inc. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 | #ifndef BitmapRegionDecoder_DEFINED | 
 | #define BitmapRegionDecoder_DEFINED | 
 |  | 
 | #include "client_utils/android/BRDAllocator.h" | 
 | #include "include/codec/SkAndroidCodec.h" | 
 | #include "include/core/SkBitmap.h" | 
 | #include "include/core/SkData.h" | 
 |  | 
 | namespace android { | 
 | namespace skia { | 
 |  | 
 | class BitmapRegionDecoder final { | 
 | public: | 
 |     static std::unique_ptr<BitmapRegionDecoder> Make(sk_sp<SkData> data); | 
 |  | 
 |     bool decodeRegion(SkBitmap* bitmap, BRDAllocator* allocator, | 
 |                       const SkIRect& desiredSubset, int sampleSize, | 
 |                       SkColorType colorType, bool requireUnpremul, | 
 |                       sk_sp<SkColorSpace> prefColorSpace); | 
 |  | 
 |     SkEncodedImageFormat getEncodedFormat() { return fCodec->getEncodedFormat(); } | 
 |  | 
 |     SkColorType computeOutputColorType(SkColorType requestedColorType) { | 
 |         return fCodec->computeOutputColorType(requestedColorType); | 
 |     } | 
 |  | 
 |     sk_sp<SkColorSpace> computeOutputColorSpace(SkColorType outputColorType, | 
 |             sk_sp<SkColorSpace> prefColorSpace = nullptr) { | 
 |         return fCodec->computeOutputColorSpace(outputColorType, prefColorSpace); | 
 |     } | 
 |  | 
 |     int width() const; | 
 |     int height() const; | 
 |  | 
 | private: | 
 |     BitmapRegionDecoder(std::unique_ptr<SkAndroidCodec> codec); | 
 |  | 
 |     std::unique_ptr<SkAndroidCodec> fCodec; | 
 | }; | 
 |  | 
 | } // namespace skia | 
 | } // namespace android | 
 | #endif  // BitmapRegionDecoder_DEFINED |