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 BitmapRegionDecoderBench_DEFINED 9 #define BitmapRegionDecoderBench_DEFINED 10 11 #include "Benchmark.h" 12 #include "SkBitmapRegionDecoder.h" 13 #include "SkData.h" 14 #include "SkImageInfo.h" 15 #include "SkRefCnt.h" 16 #include "SkString.h" 17 18 /** 19 * Benchmark Android's BitmapRegionDecoder for a particular colorType, sampleSize, and subset. 20 * 21 * nanobench.cpp handles creating benchmarks for interesting scaled subsets. We strive to test 22 * on real use cases. 23 */ 24 class BitmapRegionDecoderBench : public Benchmark { 25 public: 26 // Calls encoded->ref() 27 BitmapRegionDecoderBench(const char* basename, SkData* encoded, SkColorType colorType, 28 uint32_t sampleSize, const SkIRect& subset); 29 30 protected: 31 const char* onGetName() override; 32 bool isSuitableFor(Backend backend) override; 33 void onDraw(int n, SkCanvas* canvas) override; 34 void onDelayedSetup() override; 35 36 private: 37 SkString fName; 38 std::unique_ptr<SkBitmapRegionDecoder> fBRD; 39 sk_sp<SkData> fData; 40 const SkColorType fColorType; 41 const uint32_t fSampleSize; 42 const SkIRect fSubset; 43 typedef Benchmark INHERITED; 44 }; 45 #endif // BitmapRegionDecoderBench_DEFINED 46