skia2/bench/SkBenchmark.h
reed@android.com 4bc1983e01 add options to bench: -repeat N -forceOpaque -forceBlend -forceAA -forceBW
output stats for all configs (should be a option)



git-svn-id: http://skia.googlecode.com/svn/trunk@73 2bbb7eff-a529-9590-31e7-b0007b416f81
2009-01-19 20:08:35 +00:00

72 lines
1.3 KiB
C++

#ifndef SkBenchmark_DEFINED
#define SkBenchmark_DEFINED
#include "SkRefCnt.h"
#include "SkPoint.h"
class SkCanvas;
class SkPaint;
class SkBenchmark : public SkRefCnt {
public:
SkBenchmark();
const char* getName();
SkIPoint getSize();
void draw(SkCanvas*);
void setForceAlpha(int alpha) {
fForceAlpha = alpha;
}
void setForceAA(bool aa) {
fForceAA = aa;
}
protected:
void setupPaint(SkPaint* paint);
virtual const char* onGetName() = 0;
virtual SkIPoint onGetSize() = 0;
virtual void onDraw(SkCanvas*) = 0;
private:
int fForceAlpha;
bool fForceAA;
};
static inline SkIPoint SkMakeIPoint(int x, int y) {
SkIPoint p;
p.set(x, y);
return p;
}
///////////////////////////////////////////////////////////////////////////////
template <typename T> class SkTRegistry : SkNoncopyable {
public:
typedef T* (*Factory)();
SkTRegistry(Factory fact) {
fFact = fact;
fChain = gHead;
gHead = this;
}
static const SkTRegistry* Head() { return gHead; }
SkTRegistry* next() const { return fChain; }
Factory factory() const { return fFact; }
private:
Factory fFact;
SkTRegistry* fChain;
static SkTRegistry* gHead;
};
template <typename T> SkTRegistry<T>* SkTRegistry<T>::gHead;
#endif