11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 87cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed#ifndef SkBenchmark_DEFINED 97cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed#define SkBenchmark_DEFINED 107cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 117cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed#include "SkRefCnt.h" 127cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed#include "SkPoint.h" 1357382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed#include "SkTDict.h" 147cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed#include "SkTRegistry.h" 157cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifdef SK_DEBUG 171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger #define SkBENCHLOOP(n) 1 181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#else 191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger #define SkBENCHLOOP(n) n 201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif 211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 227cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedclass SkCanvas; 237cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedclass SkPaint; 247cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 2554e0f955c21365271661cd92a29d06a847a18554Mike Reedclass SkTriState { 2654e0f955c21365271661cd92a29d06a847a18554Mike Reedpublic: 2754e0f955c21365271661cd92a29d06a847a18554Mike Reed enum State { 2854e0f955c21365271661cd92a29d06a847a18554Mike Reed kDefault, 2954e0f955c21365271661cd92a29d06a847a18554Mike Reed kTrue, 3054e0f955c21365271661cd92a29d06a847a18554Mike Reed kFalse 3154e0f955c21365271661cd92a29d06a847a18554Mike Reed }; 3254e0f955c21365271661cd92a29d06a847a18554Mike Reed}; 3354e0f955c21365271661cd92a29d06a847a18554Mike Reed 347cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedclass SkBenchmark : public SkRefCnt { 357cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedpublic: 3657382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed SkBenchmark(void* defineDict); 377cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 387cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed const char* getName(); 397cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed SkIPoint getSize(); 407cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed void draw(SkCanvas*); 417cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 427cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed void setForceAlpha(int alpha) { 437cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed fForceAlpha = alpha; 447cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed } 457cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 467cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed void setForceAA(bool aa) { 477cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed fForceAA = aa; 487cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed } 497cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 507cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed void setForceFilter(bool filter) { 517cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed fForceFilter = filter; 527cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed } 5354e0f955c21365271661cd92a29d06a847a18554Mike Reed 5454e0f955c21365271661cd92a29d06a847a18554Mike Reed void setDither(SkTriState::State state) { 5554e0f955c21365271661cd92a29d06a847a18554Mike Reed fDither = state; 5654e0f955c21365271661cd92a29d06a847a18554Mike Reed } 5757382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed 584c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed void setStrokeWidth(SkScalar width) { 594c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed strokeWidth = width; 604c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed fHasStrokeWidth = true; 614c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed } 624c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed 634c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed SkScalar getStrokeWidth() { 644c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed return strokeWidth; 654c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed } 664c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed 674c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed bool hasStrokeWidth() { 684c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed return fHasStrokeWidth; 694c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed } 704c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed 7157382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed const char* findDefine(const char* key) const; 7232a0e74681142badb9efd90be3558bd9a943755eMike Reed bool findDefine32(const char* key, int32_t* value) const; 7332a0e74681142badb9efd90be3558bd9a943755eMike Reed bool findDefineScalar(const char* key, SkScalar* value) const; 7457382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed 757cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedprotected: 767cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed void setupPaint(SkPaint* paint); 777cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 787cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed virtual const char* onGetName() = 0; 797cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed virtual void onDraw(SkCanvas*) = 0; 807cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 817cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed virtual SkIPoint onGetSize(); 827cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 837cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedprivate: 8457382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed const SkTDict<const char*>* fDict; 857cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed int fForceAlpha; 867cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed bool fForceAA; 877cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed bool fForceFilter; 8854e0f955c21365271661cd92a29d06a847a18554Mike Reed SkTriState::State fDither; 894c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed bool fHasStrokeWidth; 904c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed SkScalar strokeWidth; 917cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed}; 927cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 937cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedtypedef SkTRegistry<SkBenchmark*, void*> BenchRegistry; 947cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 957cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed#endif 96