1/*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkBitmapRegionCodec_DEFINED
9#define SkBitmapRegionCodec_DEFINED
10
11#include "include/android/SkBitmapRegionDecoder.h"
12#include "include/codec/SkAndroidCodec.h"
13#include "include/core/SkBitmap.h"
14
15/*
16 * This class implements SkBitmapRegionDecoder using an SkAndroidCodec.
17 */
18class SkBitmapRegionCodec : public SkBitmapRegionDecoder {
19public:
20
21 /*
22 * Takes ownership of pointer to codec
23 */
24 SkBitmapRegionCodec(SkAndroidCodec* codec);
25
26 bool decodeRegion(SkBitmap* bitmap, SkBRDAllocator* allocator,
27 const SkIRect& desiredSubset, int sampleSize,
28 SkColorType colorType, bool requireUnpremul,
29 sk_sp<SkColorSpace> prefColorSpace) override;
30
31 SkEncodedImageFormat getEncodedFormat() override { return fCodec->getEncodedFormat(); }
32
33 SkColorType computeOutputColorType(SkColorType requestedColorType) override {
34 return fCodec->computeOutputColorType(requestedColorType);
35 }
36
37 sk_sp<SkColorSpace> computeOutputColorSpace(SkColorType outputColorType,
38 sk_sp<SkColorSpace> prefColorSpace = nullptr) override {
39 return fCodec->computeOutputColorSpace(outputColorType, prefColorSpace);
40 }
41
42private:
43
44 std::unique_ptr<SkAndroidCodec> fCodec;
45
46 typedef SkBitmapRegionDecoder INHERITED;
47
48};
49#endif // SkBitmapRegionCodec_DEFINED
50