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 #include "BitmapRegionDecoderBench.h" 9 #include "CodecBenchPriv.h" 10 #include "SkBitmap.h" 11 #include "SkOSFile.h" 12 13 BitmapRegionDecoderBench::BitmapRegionDecoderBench(const char* baseName, SkData* encoded, 14 SkColorType colorType, uint32_t sampleSize, const SkIRect& subset) 15 : fBRD(nullptr) 16 , fData(SkRef(encoded)) 17 , fColorType(colorType) 18 , fSampleSize(sampleSize) 19 , fSubset(subset) 20 { 21 // Choose a useful name for the color type 22 const char* colorName = color_type_to_str(colorType); 23 24 fName.printf("BRD_%s_%s", baseName, colorName); 25 if (1 != sampleSize) { 26 fName.appendf("_%.3f", 1.0f / (float) sampleSize); 27 } 28 } 29 30 const char* BitmapRegionDecoderBench::onGetName() { 31 return fName.c_str(); 32 } 33 34 bool BitmapRegionDecoderBench::isSuitableFor(Backend backend) { 35 return kNonRendering_Backend == backend; 36 } 37 38 void BitmapRegionDecoderBench::onDelayedSetup() { 39 fBRD.reset(SkBitmapRegionDecoder::Create(fData, SkBitmapRegionDecoder::kAndroidCodec_Strategy)); 40 } 41 42 void BitmapRegionDecoderBench::onDraw(int n, SkCanvas* canvas) { 43 for (int i = 0; i < n; i++) { 44 SkBitmap bm; 45 SkAssertResult(fBRD->decodeRegion(&bm, nullptr, fSubset, fSampleSize, fColorType, false)); 46 } 47 } 48