OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 #ifndef SKDRAWCOMMAND_H_ | 9 #ifndef SKDRAWCOMMAND_H_ |
10 #define SKDRAWCOMMAND_H_ | 10 #define SKDRAWCOMMAND_H_ |
(...skipping 24 matching lines...) Expand all Loading... |
35 fVisible = toggle; | 35 fVisible = toggle; |
36 } | 36 } |
37 | 37 |
38 SkTDArray<SkString*>* Info() {return &fInfo; }; | 38 SkTDArray<SkString*>* Info() {return &fInfo; }; |
39 virtual void execute(SkCanvas* canvas)=0; | 39 virtual void execute(SkCanvas* canvas)=0; |
40 /** Does nothing by default, but used by save() and restore()-type | 40 /** Does nothing by default, but used by save() and restore()-type |
41 subclassse to track unresolved save() calls. */ | 41 subclassse to track unresolved save() calls. */ |
42 virtual void trackSaveState(int* state) { }; | 42 virtual void trackSaveState(int* state) { }; |
43 DrawType getType() { return fDrawType; }; | 43 DrawType getType() { return fDrawType; }; |
44 | 44 |
45 virtual const SkBitmap* getBitmap() const { return NULL; } | 45 virtual bool render(SkCanvas* canvas) const { return false; } |
46 | 46 |
47 static const char* GetCommandString(DrawType type); | 47 static const char* GetCommandString(DrawType type); |
48 | 48 |
49 protected: | 49 protected: |
50 DrawType fDrawType; | 50 DrawType fDrawType; |
51 SkTDArray<SkString*> fInfo; | 51 SkTDArray<SkString*> fInfo; |
52 | 52 |
53 private: | 53 private: |
54 bool fVisible; | 54 bool fVisible; |
55 }; | 55 }; |
(...skipping 13 matching lines...) Expand all Loading... |
69 Clear(SkColor color); | 69 Clear(SkColor color); |
70 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 70 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
71 private: | 71 private: |
72 SkColor fColor; | 72 SkColor fColor; |
73 | 73 |
74 typedef SkDrawCommand INHERITED; | 74 typedef SkDrawCommand INHERITED; |
75 }; | 75 }; |
76 | 76 |
77 class ClipPath : public SkDrawCommand { | 77 class ClipPath : public SkDrawCommand { |
78 public: | 78 public: |
79 ClipPath(const SkPath& path, SkRegion::Op op, bool doAA, SkBitmap& bitmap); | 79 ClipPath(const SkPath& path, SkRegion::Op op, bool doAA); |
80 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 80 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
81 virtual const SkBitmap* getBitmap() const SK_OVERRIDE; | 81 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
82 private: | 82 private: |
83 SkPath fPath; | 83 SkPath fPath; |
84 SkRegion::Op fOp; | 84 SkRegion::Op fOp; |
85 bool fDoAA; | 85 bool fDoAA; |
86 SkBitmap fBitmap; | |
87 | 86 |
88 typedef SkDrawCommand INHERITED; | 87 typedef SkDrawCommand INHERITED; |
89 }; | 88 }; |
90 | 89 |
91 class ClipRegion : public SkDrawCommand { | 90 class ClipRegion : public SkDrawCommand { |
92 public: | 91 public: |
93 ClipRegion(const SkRegion& region, SkRegion::Op op); | 92 ClipRegion(const SkRegion& region, SkRegion::Op op); |
94 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 93 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
95 private: | 94 private: |
96 SkRegion fRegion; | 95 SkRegion fRegion; |
(...skipping 16 matching lines...) Expand all Loading... |
113 SkRegion::Op fOp; | 112 SkRegion::Op fOp; |
114 bool fDoAA; | 113 bool fDoAA; |
115 | 114 |
116 typedef SkDrawCommand INHERITED; | 115 typedef SkDrawCommand INHERITED; |
117 }; | 116 }; |
118 | 117 |
119 class ClipRRect : public SkDrawCommand { | 118 class ClipRRect : public SkDrawCommand { |
120 public: | 119 public: |
121 ClipRRect(const SkRRect& rrect, SkRegion::Op op, bool doAA); | 120 ClipRRect(const SkRRect& rrect, SkRegion::Op op, bool doAA); |
122 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 121 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 122 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
123 | 123 |
124 const SkRRect& rrect() const { return fRRect; } | 124 const SkRRect& rrect() const { return fRRect; } |
125 SkRegion::Op op() const { return fOp; } | 125 SkRegion::Op op() const { return fOp; } |
126 bool doAA() const { return fDoAA; } | 126 bool doAA() const { return fDoAA; } |
127 | 127 |
128 private: | 128 private: |
129 SkRRect fRRect; | 129 SkRRect fRRect; |
130 SkRegion::Op fOp; | 130 SkRegion::Op fOp; |
131 bool fDoAA; | 131 bool fDoAA; |
132 | 132 |
133 typedef SkDrawCommand INHERITED; | 133 typedef SkDrawCommand INHERITED; |
134 }; | 134 }; |
135 | 135 |
136 class Concat : public SkDrawCommand { | 136 class Concat : public SkDrawCommand { |
137 public: | 137 public: |
138 Concat(const SkMatrix& matrix); | 138 Concat(const SkMatrix& matrix); |
139 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 139 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
140 private: | 140 private: |
141 SkMatrix fMatrix; | 141 SkMatrix fMatrix; |
142 | 142 |
143 typedef SkDrawCommand INHERITED; | 143 typedef SkDrawCommand INHERITED; |
144 }; | 144 }; |
145 | 145 |
146 class DrawBitmap : public SkDrawCommand { | 146 class DrawBitmap : public SkDrawCommand { |
147 public: | 147 public: |
148 DrawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, | 148 DrawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, |
149 const SkPaint* paint, SkBitmap& resizedBitmap); | 149 const SkPaint* paint); |
150 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 150 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
151 virtual const SkBitmap* getBitmap() const SK_OVERRIDE; | 151 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
152 private: | 152 private: |
153 SkBitmap fBitmap; | 153 SkBitmap fBitmap; |
154 SkScalar fLeft; | 154 SkScalar fLeft; |
155 SkScalar fTop; | 155 SkScalar fTop; |
156 SkPaint fPaint; | 156 SkPaint fPaint; |
157 SkPaint* fPaintPtr; | 157 SkPaint* fPaintPtr; |
158 SkBitmap fResizedBitmap; | |
159 | 158 |
160 typedef SkDrawCommand INHERITED; | 159 typedef SkDrawCommand INHERITED; |
161 }; | 160 }; |
162 | 161 |
163 class DrawBitmapMatrix : public SkDrawCommand { | 162 class DrawBitmapMatrix : public SkDrawCommand { |
164 public: | 163 public: |
165 DrawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix, | 164 DrawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix, |
166 const SkPaint* paint, SkBitmap& resizedBitmap); | 165 const SkPaint* paint); |
167 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 166 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
168 virtual const SkBitmap* getBitmap() const SK_OVERRIDE; | 167 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
169 private: | 168 private: |
170 SkBitmap fBitmap; | 169 SkBitmap fBitmap; |
171 SkMatrix fMatrix; | 170 SkMatrix fMatrix; |
172 SkPaint fPaint; | 171 SkPaint fPaint; |
173 SkPaint* fPaintPtr; | 172 SkPaint* fPaintPtr; |
174 SkBitmap fResizedBitmap; | |
175 | 173 |
176 typedef SkDrawCommand INHERITED; | 174 typedef SkDrawCommand INHERITED; |
177 }; | 175 }; |
178 | 176 |
179 class DrawBitmapNine : public SkDrawCommand { | 177 class DrawBitmapNine : public SkDrawCommand { |
180 public: | 178 public: |
181 DrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, | 179 DrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, |
182 const SkRect& dst, const SkPaint* paint, | 180 const SkRect& dst, const SkPaint* paint); |
183 SkBitmap& resizedBitmap); | |
184 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 181 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
185 virtual const SkBitmap* getBitmap() const SK_OVERRIDE; | 182 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
186 private: | 183 private: |
187 SkBitmap fBitmap; | 184 SkBitmap fBitmap; |
188 SkIRect fCenter; | 185 SkIRect fCenter; |
189 SkRect fDst; | 186 SkRect fDst; |
190 SkPaint fPaint; | 187 SkPaint fPaint; |
191 SkPaint* fPaintPtr; | 188 SkPaint* fPaintPtr; |
192 SkBitmap fResizedBitmap; | |
193 | 189 |
194 typedef SkDrawCommand INHERITED; | 190 typedef SkDrawCommand INHERITED; |
195 }; | 191 }; |
196 | 192 |
197 class DrawBitmapRect : public SkDrawCommand { | 193 class DrawBitmapRect : public SkDrawCommand { |
198 public: | 194 public: |
199 DrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, | 195 DrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, |
200 const SkRect& dst, const SkPaint* paint, | 196 const SkRect& dst, const SkPaint* paint); |
201 SkBitmap& resizedBitmap); | |
202 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 197 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
203 virtual const SkBitmap* getBitmap() const SK_OVERRIDE; | 198 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
204 | 199 |
205 const SkBitmap& bitmap() const { return fBitmap; } | 200 const SkBitmap& bitmap() const { return fBitmap; } |
206 | 201 |
207 // The non-const 'paint' method allows modification of this object's | 202 // The non-const 'paint' method allows modification of this object's |
208 // SkPaint. For this reason the ctor and setPaint method make a local copy. | 203 // SkPaint. For this reason the ctor and setPaint method make a local copy. |
209 // The 'fPaintPtr' member acts a signal that the local SkPaint is valid | 204 // The 'fPaintPtr' member acts a signal that the local SkPaint is valid |
210 // (since only an SkPaint* is passed into the ctor). | 205 // (since only an SkPaint* is passed into the ctor). |
211 const SkPaint* paint() const { return fPaintPtr; } | 206 const SkPaint* paint() const { return fPaintPtr; } |
212 SkPaint* paint() { return fPaintPtr; } | 207 SkPaint* paint() { return fPaintPtr; } |
213 | 208 |
214 void setPaint(const SkPaint& paint) { fPaint = paint; fPaintPtr = &fPaint; } | 209 void setPaint(const SkPaint& paint) { fPaint = paint; fPaintPtr = &fPaint; } |
215 | 210 |
216 const SkRect* srcRect() const { return fSrc.isEmpty() ? NULL : &fSrc; } | 211 const SkRect* srcRect() const { return fSrc.isEmpty() ? NULL : &fSrc; } |
217 const SkRect& dstRect() const { return fDst; } | 212 const SkRect& dstRect() const { return fDst; } |
218 | 213 |
219 void setSrcRect(const SkRect& src) { fSrc = src; } | 214 void setSrcRect(const SkRect& src) { fSrc = src; } |
220 void setDstRect(const SkRect& dst) { fDst = dst; } | 215 void setDstRect(const SkRect& dst) { fDst = dst; } |
221 | 216 |
222 private: | 217 private: |
223 SkBitmap fBitmap; | 218 SkBitmap fBitmap; |
224 SkRect fSrc; | 219 SkRect fSrc; |
225 SkRect fDst; | 220 SkRect fDst; |
226 SkPaint fPaint; | 221 SkPaint fPaint; |
227 SkPaint* fPaintPtr; | 222 SkPaint* fPaintPtr; |
228 SkBitmap fResizedBitmap; | |
229 | 223 |
230 typedef SkDrawCommand INHERITED; | 224 typedef SkDrawCommand INHERITED; |
231 }; | 225 }; |
232 | 226 |
233 class DrawData : public SkDrawCommand { | 227 class DrawData : public SkDrawCommand { |
234 public: | 228 public: |
235 DrawData(const void* data, size_t length); | 229 DrawData(const void* data, size_t length); |
236 virtual ~DrawData() { delete [] fData; } | 230 virtual ~DrawData() { delete [] fData; } |
237 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 231 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
238 private: | 232 private: |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 canvas->endCommentGroup(); | 268 canvas->endCommentGroup(); |
275 }; | 269 }; |
276 private: | 270 private: |
277 typedef SkDrawCommand INHERITED; | 271 typedef SkDrawCommand INHERITED; |
278 }; | 272 }; |
279 | 273 |
280 class DrawOval : public SkDrawCommand { | 274 class DrawOval : public SkDrawCommand { |
281 public: | 275 public: |
282 DrawOval(const SkRect& oval, const SkPaint& paint); | 276 DrawOval(const SkRect& oval, const SkPaint& paint); |
283 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 277 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 278 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
284 private: | 279 private: |
285 SkRect fOval; | 280 SkRect fOval; |
286 SkPaint fPaint; | 281 SkPaint fPaint; |
287 | 282 |
288 typedef SkDrawCommand INHERITED; | 283 typedef SkDrawCommand INHERITED; |
289 }; | 284 }; |
290 | 285 |
291 class DrawPaint : public SkDrawCommand { | 286 class DrawPaint : public SkDrawCommand { |
292 public: | 287 public: |
293 DrawPaint(const SkPaint& paint); | 288 DrawPaint(const SkPaint& paint); |
294 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 289 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 290 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
295 private: | 291 private: |
296 SkPaint fPaint; | 292 SkPaint fPaint; |
297 | 293 |
298 typedef SkDrawCommand INHERITED; | 294 typedef SkDrawCommand INHERITED; |
299 }; | 295 }; |
300 | 296 |
301 class DrawPath : public SkDrawCommand { | 297 class DrawPath : public SkDrawCommand { |
302 public: | 298 public: |
303 DrawPath(const SkPath& path, const SkPaint& paint, SkBitmap& bitmap); | 299 DrawPath(const SkPath& path, const SkPaint& paint); |
304 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 300 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
305 virtual const SkBitmap* getBitmap() const SK_OVERRIDE; | 301 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
306 | 302 |
307 private: | 303 private: |
308 SkPath fPath; | 304 SkPath fPath; |
309 SkPaint fPaint; | 305 SkPaint fPaint; |
310 SkBitmap fBitmap; | |
311 | 306 |
312 typedef SkDrawCommand INHERITED; | 307 typedef SkDrawCommand INHERITED; |
313 }; | 308 }; |
314 | 309 |
315 class DrawPicture : public SkDrawCommand { | 310 class DrawPicture : public SkDrawCommand { |
316 public: | 311 public: |
317 DrawPicture(SkPicture& picture); | 312 DrawPicture(SkPicture& picture); |
318 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 313 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
319 private: | 314 private: |
320 SkPicture fPicture; | 315 SkPicture fPicture; |
321 | 316 |
322 typedef SkDrawCommand INHERITED; | 317 typedef SkDrawCommand INHERITED; |
323 }; | 318 }; |
324 | 319 |
325 class DrawPoints : public SkDrawCommand { | 320 class DrawPoints : public SkDrawCommand { |
326 public: | 321 public: |
327 DrawPoints(SkCanvas::PointMode mode, size_t count, const SkPoint pts[], | 322 DrawPoints(SkCanvas::PointMode mode, size_t count, const SkPoint pts[], |
328 const SkPaint& paint); | 323 const SkPaint& paint); |
329 virtual ~DrawPoints() { delete [] fPts; } | 324 virtual ~DrawPoints() { delete [] fPts; } |
330 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 325 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
331 | 326 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
332 private: | 327 private: |
333 SkCanvas::PointMode fMode; | 328 SkCanvas::PointMode fMode; |
334 size_t fCount; | 329 size_t fCount; |
335 SkPoint* fPts; | 330 SkPoint* fPts; |
336 SkPaint fPaint; | 331 SkPaint fPaint; |
337 | 332 |
338 typedef SkDrawCommand INHERITED; | 333 typedef SkDrawCommand INHERITED; |
339 }; | 334 }; |
340 | 335 |
341 /* TODO(chudy): DrawText is a predefined macro and was breaking something | 336 /* TODO(chudy): DrawText is a predefined macro and was breaking something |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 SkRect fRect; | 410 SkRect fRect; |
416 SkPaint fPaint; | 411 SkPaint fPaint; |
417 | 412 |
418 typedef SkDrawCommand INHERITED; | 413 typedef SkDrawCommand INHERITED; |
419 }; | 414 }; |
420 | 415 |
421 class DrawRRect : public SkDrawCommand { | 416 class DrawRRect : public SkDrawCommand { |
422 public: | 417 public: |
423 DrawRRect(const SkRRect& rrect, const SkPaint& paint); | 418 DrawRRect(const SkRRect& rrect, const SkPaint& paint); |
424 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 419 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 420 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
425 private: | 421 private: |
426 SkRRect fRRect; | 422 SkRRect fRRect; |
427 SkPaint fPaint; | 423 SkPaint fPaint; |
428 | 424 |
429 typedef SkDrawCommand INHERITED; | 425 typedef SkDrawCommand INHERITED; |
430 }; | 426 }; |
431 | 427 |
432 class DrawSprite : public SkDrawCommand { | 428 class DrawSprite : public SkDrawCommand { |
433 public: | 429 public: |
434 DrawSprite(const SkBitmap& bitmap, int left, int top, const SkPaint* paint, | 430 DrawSprite(const SkBitmap& bitmap, int left, int top, const SkPaint* paint); |
435 SkBitmap& resizedBitmap); | |
436 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 431 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
437 virtual const SkBitmap* getBitmap() const SK_OVERRIDE; | 432 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
438 private: | 433 private: |
439 SkBitmap fBitmap; | 434 SkBitmap fBitmap; |
440 int fLeft; | 435 int fLeft; |
441 int fTop; | 436 int fTop; |
442 SkPaint fPaint; | 437 SkPaint fPaint; |
443 SkPaint* fPaintPtr; | 438 SkPaint* fPaintPtr; |
444 SkBitmap fResizedBitmap; | |
445 | 439 |
446 typedef SkDrawCommand INHERITED; | 440 typedef SkDrawCommand INHERITED; |
447 }; | 441 }; |
448 | 442 |
449 class DrawVertices : public SkDrawCommand { | 443 class DrawVertices : public SkDrawCommand { |
450 public: | 444 public: |
451 DrawVertices(SkCanvas::VertexMode vmode, int vertexCount, | 445 DrawVertices(SkCanvas::VertexMode vmode, int vertexCount, |
452 const SkPoint vertices[], const SkPoint texs[], | 446 const SkPoint vertices[], const SkPoint texs[], |
453 const SkColor colors[], SkXfermode* xfermode, | 447 const SkColor colors[], SkXfermode* xfermode, |
454 const uint16_t indices[], int indexCount, | 448 const uint16_t indices[], int indexCount, |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 SkScalar y() const { return fDy; } | 547 SkScalar y() const { return fDy; } |
554 | 548 |
555 private: | 549 private: |
556 SkScalar fDx; | 550 SkScalar fDx; |
557 SkScalar fDy; | 551 SkScalar fDy; |
558 | 552 |
559 typedef SkDrawCommand INHERITED; | 553 typedef SkDrawCommand INHERITED; |
560 }; | 554 }; |
561 | 555 |
562 #endif | 556 #endif |
OLD | NEW |