| /* | |
| * Copyright 2012 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #include "bench/Benchmark.h" | |
| #include "include/core/SkCanvas.h" | |
| #include "include/core/SkRect.h" | |
| static const SkScalar kCellWidth = SkIntToScalar(20); | |
| static const SkScalar kCellHeight = SkIntToScalar(10); | |
| // This bench draws a table in the manner of Google spreadsheet and sahadan.com. | |
| // ____________ ___ | |
| // | 1 | 2 | | |
| // |____________|___| | |
| // | 3 | 4 | | |
| // |____________|___| | |
| // | |
| // Areas 1-4 are first all draw white. Areas 3&4 are then drawn grey. Areas | |
| // 2&4 are then drawn grey. Areas 2&3 are thus double drawn while area 4 is | |
| // triple drawn. | |
| // This trio of drawRects is then repeat for the next cell. | |
| class TableBench : public Benchmark { | |
| public: | |
| static const int kNumRows = 48; | |
| static const int kNumCols = 32; | |
| protected: | |
| const char* onGetName() override { | |
| return "tablebench"; | |
| } | |
| void onDraw(int loops, SkCanvas* canvas) override { | |
| SkPaint cellPaint; | |
| cellPaint.setColor(0xFFFFFFF); | |
| SkPaint borderPaint; | |
| borderPaint.setColor(0xFFCCCCCC); | |
| for (int i = 0; i < loops; ++i) { | |
| for (int row = 0; row < kNumRows; ++row) { | |
| for (int col = 0; col < kNumCols; ++col) { | |
| SkRect cell = SkRect::MakeLTRB(col * kCellWidth, | |
| row * kCellHeight, | |
| (col+1) * kCellWidth, | |
| (row+1) * kCellHeight); | |
| canvas->drawRect(cell, cellPaint); | |
| SkRect bottom = SkRect::MakeLTRB(col * kCellWidth, | |
| row * kCellHeight + (kCellHeight-SK_Scalar1), | |
| (col+1) * kCellWidth, | |
| (row+1) * kCellHeight); | |
| canvas->drawRect(bottom, borderPaint); | |
| SkRect right = SkRect::MakeLTRB(col * kCellWidth + (kCellWidth-SK_Scalar1), | |
| row * kCellHeight, | |
| (col+1) * kCellWidth, | |
| (row+1) * kCellHeight); | |
| canvas->drawRect(right, borderPaint); | |
| } | |
| } | |
| } | |
| } | |
| private: | |
| using INHERITED = Benchmark; | |
| }; | |
| DEF_BENCH( return new TableBench(); ) |