• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2011 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 #ifndef skiagm_DEFINED
9 #define skiagm_DEFINED
10 
11 #include "SkBitmap.h"
12 #include "SkCanvas.h"
13 #include "SkDevice.h"
14 #include "SkPaint.h"
15 #include "SkRefCnt.h"
16 #include "SkSize.h"
17 #include "SkString.h"
18 #include "SkTRegistry.h"
19 
20 namespace skiagm {
21 
make_isize(int w,int h)22 	static inline SkISize make_isize(int w, int h) {
23 		SkISize sz;
24 		sz.set(w, h);
25 		return sz;
26 	}
27 
28     class GM {
29     public:
30         GM();
31         virtual ~GM();
32 
33         enum Flags {
34             kSkipPDF_Flag       = 1 << 0,
35             kSkipPicture_Flag   = 1 << 1
36         };
37 
38         void draw(SkCanvas*);
39         void drawBackground(SkCanvas*);
40         void drawContent(SkCanvas*);
41 
getISize()42 		SkISize getISize() { return this->onISize(); }
43         const char* shortName();
44 
getFlags()45         uint32_t getFlags() const {
46             return this->onGetFlags();
47         }
48 
getBGColor()49         SkColor getBGColor() const { return fBGColor; }
50         void setBGColor(SkColor);
51 
52         // helper: fill a rect in the specified color based on the
53         // GM's getISize bounds.
54         void drawSizeBounds(SkCanvas*, SkColor);
55 
56 	protected:
57 		virtual void onDraw(SkCanvas*) = 0;
58 		virtual void onDrawBackground(SkCanvas*);
59 		virtual SkISize onISize() = 0;
60         virtual SkString onShortName() = 0;
onGetFlags()61         virtual uint32_t onGetFlags() const { return 0; }
62 
63     private:
64         SkString fShortName;
65         SkColor  fBGColor;
66     };
67 
68     typedef SkTRegistry<GM*, void*> GMRegistry;
69 }
70 
71 #endif
72