/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "Benchmark.h" #include "SkCanvas.h" #include "SkRect.h" #include "SkString.h" class DrawLatticeBench : public Benchmark { public: DrawLatticeBench(int* xDivs, int xCount, int* yDivs, int yCount, const SkISize& srcSize, const SkRect& dst, const char* desc) : fSrcSize(srcSize) , fDst(dst) { fLattice.fXDivs = xDivs; fLattice.fXCount = xCount; fLattice.fYDivs = yDivs; fLattice.fYCount = yCount; fName = SkStringPrintf("DrawLattice_%s", desc); } const char* onGetName() override { return fName.c_str(); } bool isSuitableFor(Backend backend) override { return kRaster_Backend == backend || kGPU_Backend == backend; } void onDelayedSetup() override { fBitmap.allocN32Pixels(fSrcSize.width(), fSrcSize.height()); fBitmap.eraseColor(0x880000FF); } void onDraw(int loops, SkCanvas* canvas) override { for (int i = 0; i < loops; i++) { canvas->drawBitmapLattice(fBitmap, fLattice, fDst); } } private: SkISize fSrcSize; SkCanvas::Lattice fLattice; SkRect fDst; SkString fName; SkBitmap fBitmap; typedef Benchmark INHERITED; }; static int gDivs[2] = { 250, 750, }; DEF_BENCH(return new DrawLatticeBench(gDivs, 2, gDivs, 2, SkISize::Make(1000, 1000), SkRect::MakeWH(4000.0f, 4000.0f), "StandardNine");)