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