1924352685d894e5985eab250a51e507e75e00007robertphillips@google.com/* 2924352685d894e5985eab250a51e507e75e00007robertphillips@google.com * Copyright 2012 Google Inc. 3924352685d894e5985eab250a51e507e75e00007robertphillips@google.com * 4924352685d894e5985eab250a51e507e75e00007robertphillips@google.com * Use of this source code is governed by a BSD-style license that can be 5924352685d894e5985eab250a51e507e75e00007robertphillips@google.com * found in the LICENSE file. 6924352685d894e5985eab250a51e507e75e00007robertphillips@google.com */ 7924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 8f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina#include "Benchmark.h" 9924352685d894e5985eab250a51e507e75e00007robertphillips@google.com#include "SkCanvas.h" 10924352685d894e5985eab250a51e507e75e00007robertphillips@google.com#include "SkRect.h" 11924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 12924352685d894e5985eab250a51e507e75e00007robertphillips@google.comstatic const SkScalar kCellWidth = SkIntToScalar(20); 13924352685d894e5985eab250a51e507e75e00007robertphillips@google.comstatic const SkScalar kCellHeight = SkIntToScalar(10); 14924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 15924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// This bench draws a table in the manner of Google spreadsheet and sahadan.com. 16924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// ____________ ___ 17924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// | 1 | 2 | 18924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// |____________|___| 19924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// | 3 | 4 | 20924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// |____________|___| 21924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// 22924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// Areas 1-4 are first all draw white. Areas 3&4 are then drawn grey. Areas 23924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// 2&4 are then drawn grey. Areas 2&3 are thus double drawn while area 4 is 24924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// triple drawn. 25924352685d894e5985eab250a51e507e75e00007robertphillips@google.com// This trio of drawRects is then repeat for the next cell. 26f168b86d7fafc5c20c87bebc6fd393cb17e120catfarinaclass TableBench : public Benchmark { 27924352685d894e5985eab250a51e507e75e00007robertphillips@google.compublic: 28924352685d894e5985eab250a51e507e75e00007robertphillips@google.com static const int kNumRows = 48; 29924352685d894e5985eab250a51e507e75e00007robertphillips@google.com static const int kNumCols = 32; 30924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 31924352685d894e5985eab250a51e507e75e00007robertphillips@google.comprotected: 327cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com virtual const char* onGetName() { 337cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com return "tablebench"; 34924352685d894e5985eab250a51e507e75e00007robertphillips@google.com } 35924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 363361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org virtual void onDraw(const int loops, SkCanvas* canvas) { 37924352685d894e5985eab250a51e507e75e00007robertphillips@google.com SkPaint cellPaint; 38924352685d894e5985eab250a51e507e75e00007robertphillips@google.com cellPaint.setColor(0xFFFFFFF); 39924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 40924352685d894e5985eab250a51e507e75e00007robertphillips@google.com SkPaint borderPaint; 41924352685d894e5985eab250a51e507e75e00007robertphillips@google.com borderPaint.setColor(0xFFCCCCCC); 42924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 433361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org for (int i = 0; i < loops; ++i) { 44924352685d894e5985eab250a51e507e75e00007robertphillips@google.com for (int row = 0; row < kNumRows; ++row) { 45924352685d894e5985eab250a51e507e75e00007robertphillips@google.com for (int col = 0; col < kNumCols; ++col) { 467cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com SkRect cell = SkRect::MakeLTRB(col * kCellWidth, 477cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com row * kCellHeight, 487cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com (col+1) * kCellWidth, 49924352685d894e5985eab250a51e507e75e00007robertphillips@google.com (row+1) * kCellHeight); 50924352685d894e5985eab250a51e507e75e00007robertphillips@google.com canvas->drawRect(cell, cellPaint); 51924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 527cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com SkRect bottom = SkRect::MakeLTRB(col * kCellWidth, 537cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com row * kCellHeight + (kCellHeight-SK_Scalar1), 547cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com (col+1) * kCellWidth, 55924352685d894e5985eab250a51e507e75e00007robertphillips@google.com (row+1) * kCellHeight); 56924352685d894e5985eab250a51e507e75e00007robertphillips@google.com canvas->drawRect(bottom, borderPaint); 57924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 587cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com SkRect right = SkRect::MakeLTRB(col * kCellWidth + (kCellWidth-SK_Scalar1), 597cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com row * kCellHeight, 607cc7f494796afc681355b15e88c57ef2709a9220skia.committer@gmail.com (col+1) * kCellWidth, 61924352685d894e5985eab250a51e507e75e00007robertphillips@google.com (row+1) * kCellHeight); 62924352685d894e5985eab250a51e507e75e00007robertphillips@google.com canvas->drawRect(right, borderPaint); 63924352685d894e5985eab250a51e507e75e00007robertphillips@google.com } 64924352685d894e5985eab250a51e507e75e00007robertphillips@google.com } 65924352685d894e5985eab250a51e507e75e00007robertphillips@google.com } 66924352685d894e5985eab250a51e507e75e00007robertphillips@google.com } 67924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 68924352685d894e5985eab250a51e507e75e00007robertphillips@google.comprivate: 69f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina typedef Benchmark INHERITED; 70924352685d894e5985eab250a51e507e75e00007robertphillips@google.com}; 71924352685d894e5985eab250a51e507e75e00007robertphillips@google.com 72410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new TableBench(); ) 73