You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.5 KiB
51 lines
1.5 KiB
/*
|
|
* 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
|