blob: 24178817e7b673ab88b7f972aadb759c8ca6ddb8 [file] [log] [blame]
reed@android.com00dae862009-06-10 15:38:48 +00001#include "SkGraphics.h"
2#include "gm.h"
3
4using namespace skiagm;
5
6// need to explicitly declare this, or we get some weird infinite loop llist
7template GMRegistry* GMRegistry::gHead;
8
9class Iter {
10public:
11 Iter() {
reed@android.comdd0ac282009-06-20 02:38:16 +000012 fReg = GMRegistry::Head();
reed@android.com00dae862009-06-10 15:38:48 +000013 }
14
reed@android.comdd0ac282009-06-20 02:38:16 +000015 GM* next() {
reed@android.com00dae862009-06-10 15:38:48 +000016 if (fReg) {
reed@android.comdd0ac282009-06-20 02:38:16 +000017 GMRegistry::Factory fact = fReg->factory();
reed@android.com00dae862009-06-10 15:38:48 +000018 fReg = fReg->next();
reed@android.comdd0ac282009-06-20 02:38:16 +000019 return fact(0);
reed@android.com00dae862009-06-10 15:38:48 +000020 }
21 return NULL;
22 }
23
24 static int Count() {
reed@android.comdd0ac282009-06-20 02:38:16 +000025 const GMRegistry* reg = GMRegistry::Head();
reed@android.com00dae862009-06-10 15:38:48 +000026 int count = 0;
27 while (reg) {
28 count += 1;
29 reg = reg->next();
30 }
31 return count;
32 }
33
34private:
35 const GMRegistry* fReg;
36};
37
38class SkAutoGraphics {
39public:
40 SkAutoGraphics() {
41 SkGraphics::Init();
42 }
43 ~SkAutoGraphics() {
44 SkGraphics::Term();
45 }
46};
47
48static const struct {
49 SkBitmap::Config fConfig;
50 bool fUsePicture;
51 const char* fName;
52} gRec[] = {
53 { SkBitmap::kARGB_8888_Config, false, "8888" },
54 { SkBitmap::kARGB_4444_Config, false, "4444" },
55 { SkBitmap::kRGB_565_Config, false, "565" },
56 { SkBitmap::kA8_Config, false, "A8" },
57};
58
59int main (int argc, char * const argv[]) {
60 SkAutoGraphics ag;
61
62 Iter iter;
63 GM* gm;
64
65 while ((gm = iter.next()) != NULL) {
66 SkISize size = gm->getISize();
reed@android.comdd0ac282009-06-20 02:38:16 +000067 SkDebugf("---- gm %p [%d %d]\n", gm, size.width(), size.height());
reed@android.com00dae862009-06-10 15:38:48 +000068 SkBitmap bitmap;
reed@android.comdd0ac282009-06-20 02:38:16 +000069 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); i++) {
reed@android.com00dae862009-06-10 15:38:48 +000070 bitmap.setConfig(gRec[i].fConfig, size.width(), size.height());
71 bitmap.allocPixels();
72 bitmap.eraseColor(0);
73 SkCanvas canvas(bitmap);
74
reed@android.comdd0ac282009-06-20 02:38:16 +000075 SkDebugf("------- drawing to %s config\n", gRec[i].fName);
reed@android.com00dae862009-06-10 15:38:48 +000076 gm->draw(&canvas);
reed@android.comdd0ac282009-06-20 02:38:16 +000077#if 0
reed@android.com00dae862009-06-10 15:38:48 +000078 if (gRec[i].fUsePicture) {
79 SkPicture picture;
80 gm->draw(picture.beginRecording(size.width(), size.height(), 0));
81 canvas.drawPicture(picture);
82 } else {
83 }
reed@android.comdd0ac282009-06-20 02:38:16 +000084#endif
reed@android.com00dae862009-06-10 15:38:48 +000085 }
86 SkDELETE(gm);
87 }
88 return 0;
89}
reed@android.comdd0ac282009-06-20 02:38:16 +000090
91///////////////////////////////////////////////////////////////////////////////
92
93using namespace skiagm;
94
95GM::GM() {}
96GM::~GM() {}
97
98void GM::draw(SkCanvas* canvas) {
99 this->onDraw(canvas);
100}
101
102