Home | History | Annotate | Download | only in bench
      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