Benchmark.h revision bd700c391dd45acd8ea1a40321789c9d92a14bb8
1727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#ifndef SkBenchmark_DEFINED 2727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SkBenchmark_DEFINED 3727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 4727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#include "SkRefCnt.h" 5727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#include "SkPoint.h" 6727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 79c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbodclass SkCanvas; 8727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 9727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leaseclass SkBenchmark : public SkRefCnt { 10727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leasepublic: 11727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease const char* getName(); 12727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease SkIPoint getSize(); 13727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease void draw(SkCanvas*); 14727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 15727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leaseprotected: 16727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease virtual const char* onGetName() = 0; 17727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease virtual SkIPoint onGetSize() = 0; 18727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease virtual void onDraw(SkCanvas*) = 0; 19727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease}; 20727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 21727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leasestatic inline SkIPoint SkMakeIPoint(int x, int y) { 22727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease SkIPoint p; 23727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease p.set(x, y); 24727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease return p; 25727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease} 26727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 27727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/////////////////////////////////////////////////////////////////////////////// 28727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 29727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leasetemplate <typename T> class SkTRegistry : SkNoncopyable { 30727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leasepublic: 31727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease typedef T* (*Factory)(); 32727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 33727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease SkTRegistry(Factory fact) { 34727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease fFact = fact; 35727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease fChain = gHead; 36727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease gHead = this; 37727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease } 38727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 39727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease static const SkTRegistry* Head() { return gHead; } 40727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 41727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease SkTRegistry* next() const { return fChain; } 42727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease Factory factory() const { return fFact; } 43727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 44727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leaseprivate: 45727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease Factory fFact; 46727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease SkTRegistry* fChain; 47727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 48727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease static SkTRegistry* gHead; 49727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease}; 50727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 51727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leasetemplate <typename T> SkTRegistry<T>* SkTRegistry<T>::gHead; 52727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 53727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#endif 54727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 55727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease