| /* | |
| * 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 BitmapRegionDecoderBench_DEFINED | |
| #define BitmapRegionDecoderBench_DEFINED | |
| #include "bench/Benchmark.h" | |
| #ifdef SK_ENABLE_ANDROID_UTILS | |
| #include "include/core/SkData.h" | |
| #include "include/core/SkImageInfo.h" | |
| #include "include/core/SkRefCnt.h" | |
| #include "include/core/SkString.h" | |
| namespace android { | |
| namespace skia { | |
| class BitmapRegionDecoder; | |
| } // namespace skia | |
| } // namespace android | |
| /** | |
| * Benchmark Android's BitmapRegionDecoder for a particular colorType, sampleSize, and subset. | |
| * | |
| * nanobench.cpp handles creating benchmarks for interesting scaled subsets. We strive to test | |
| * on real use cases. | |
| */ | |
| class BitmapRegionDecoderBench : public Benchmark { | |
| public: | |
| // Calls encoded->ref() | |
| BitmapRegionDecoderBench(const char* basename, SkData* encoded, SkColorType colorType, | |
| uint32_t sampleSize, const SkIRect& subset); | |
| protected: | |
| const char* onGetName() override; | |
| bool isSuitableFor(Backend backend) override; | |
| void onDraw(int n, SkCanvas* canvas) override; | |
| void onDelayedSetup() override; | |
| private: | |
| SkString fName; | |
| std::unique_ptr<android::skia::BitmapRegionDecoder> fBRD; | |
| sk_sp<SkData> fData; | |
| const SkColorType fColorType; | |
| const uint32_t fSampleSize; | |
| const SkIRect fSubset; | |
| using INHERITED = Benchmark; | |
| }; | |
| #endif // SK_ENABLE_ANDROID_UTILS | |
| #endif // BitmapRegionDecoderBench_DEFINED |