12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /*
- * Copyright 2015 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "bench/BitmapRegionDecoderBench.h"
- #include "bench/CodecBenchPriv.h"
- #include "include/core/SkBitmap.h"
- #include "src/core/SkOSFile.h"
- BitmapRegionDecoderBench::BitmapRegionDecoderBench(const char* baseName, SkData* encoded,
- SkColorType colorType, uint32_t sampleSize, const SkIRect& subset)
- : fBRD(nullptr)
- , fData(SkRef(encoded))
- , fColorType(colorType)
- , fSampleSize(sampleSize)
- , fSubset(subset)
- {
- // Choose a useful name for the color type
- const char* colorName = color_type_to_str(colorType);
- fName.printf("BRD_%s_%s", baseName, colorName);
- if (1 != sampleSize) {
- fName.appendf("_%.3f", 1.0f / (float) sampleSize);
- }
- }
- const char* BitmapRegionDecoderBench::onGetName() {
- return fName.c_str();
- }
- bool BitmapRegionDecoderBench::isSuitableFor(Backend backend) {
- return kNonRendering_Backend == backend;
- }
- void BitmapRegionDecoderBench::onDelayedSetup() {
- fBRD.reset(SkBitmapRegionDecoder::Create(fData, SkBitmapRegionDecoder::kAndroidCodec_Strategy));
- }
- void BitmapRegionDecoderBench::onDraw(int n, SkCanvas* canvas) {
- auto ct = fBRD->computeOutputColorType(fColorType);
- auto cs = fBRD->computeOutputColorSpace(ct, nullptr);
- for (int i = 0; i < n; i++) {
- SkBitmap bm;
- SkAssertResult(fBRD->decodeRegion(&bm, nullptr, fSubset, fSampleSize, ct, false, cs));
- }
- }
|