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 * fStrategy determines which of various implementations is to be used. 22 * 23 * nanobench.cpp handles creating benchmarks for interesting scaled subsets. We strive to test 24 * on real use cases. 25 */ 26 class BitmapRegionDecoderBench : public Benchmark { 27 public: 28 // Calls encoded->ref() 29 BitmapRegionDecoderBench(const char* basename, SkData* encoded, 30 SkBitmapRegionDecoder::Strategy strategy, SkColorType colorType, 31 uint32_t sampleSize, const SkIRect& subset); 32 33 protected: 34 const char* onGetName() override; 35 bool isSuitableFor(Backend backend) override; 36 void onDraw(int n, SkCanvas* canvas) override; 37 void onDelayedSetup() override; 38 39 private: 40 SkString fName; 41 SkAutoTDelete<SkBitmapRegionDecoder> fBRD; 42 SkAutoTUnref<SkData> fData; 43 const SkBitmapRegionDecoder::Strategy fStrategy; 44 const SkColorType fColorType; 45 const uint32_t fSampleSize; 46 const SkIRect fSubset; 47 typedef Benchmark INHERITED; 48 }; 49 #endif // BitmapRegionDecoderBench_DEFINED 50