| 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_ |
| 11 | 11 |
| 12 #include "SkPictureFlat.h" | 12 #include "SkPictureFlat.h" |
| 13 #include "SkCanvas.h" | 13 #include "SkCanvas.h" |
| 14 #include "SkString.h" | 14 #include "SkString.h" |
| 15 | 15 |
| 16 class SK_API SkDrawCommand { | 16 class SK_API SkDrawCommand { |
| 17 public: | 17 public: |
| 18 /* TODO(chudy): Remove subclasses. */ | 18 /* TODO(chudy): Remove subclasses. */ |
| 19 SkDrawCommand(DrawType drawType); | 19 SkDrawCommand(DrawType drawType); |
| 20 SkDrawCommand(); | 20 SkDrawCommand(); |
| 21 | 21 |
| 22 virtual ~SkDrawCommand(); | 22 virtual ~SkDrawCommand(); |
| 23 | 23 |
| 24 virtual SkString toString(); | 24 virtual SkString toString(); |
| 25 | 25 |
| 26 void setOffset(size_t offset) { fOffset = offset; } |
| 27 virtual size_t offset() { return fOffset; } |
| 28 |
| 26 virtual const char* toCString() { | 29 virtual const char* toCString() { |
| 27 return GetCommandString(fDrawType); | 30 return GetCommandString(fDrawType); |
| 28 } | 31 } |
| 29 | 32 |
| 30 bool isVisible() const { | 33 bool isVisible() const { |
| 31 return fVisible; | 34 return fVisible; |
| 32 } | 35 } |
| 33 | 36 |
| 34 void setVisible(bool toggle) { | 37 void setVisible(bool toggle) { |
| 35 fVisible = toggle; | 38 fVisible = toggle; |
| 36 } | 39 } |
| 37 | 40 |
| 38 SkTDArray<SkString*>* Info() {return &fInfo; }; | 41 SkTDArray<SkString*>* Info() {return &fInfo; }; |
| 39 virtual void execute(SkCanvas* canvas) = 0; | 42 virtual void execute(SkCanvas* canvas) = 0; |
| 40 virtual void vizExecute(SkCanvas* canvas) { }; | 43 virtual void vizExecute(SkCanvas* canvas) { }; |
| 41 /** Does nothing by default, but used by save() and restore()-type | 44 /** Does nothing by default, but used by save() and restore()-type |
| 42 subclasses to track unresolved save() calls. */ | 45 subclasses to track unresolved save() calls. */ |
| 43 virtual void trackSaveState(int* state) { }; | 46 virtual void trackSaveState(int* state) { }; |
| 44 | 47 |
| 45 // The next "active" system is only used by save, saveLayer, restore, | 48 // The next "active" system is only used by save, saveLayer, restore, |
| 46 // pushCull and popCull. It is used in two ways: | 49 // pushCull and popCull. It is used in two ways: |
| 47 // To determine which saveLayers are currently active (at a | 50 // To determine which saveLayers are currently active (at a |
| 48 // given point in the rendering). | 51 // given point in the rendering). |
| 49 // save just return a kPushLayer action but don't track active state | 52 // saves just return a kPushLayer action but don't track active state |
| 50 // restore just return a kPopLayer action | 53 // restores just return a kPopLayer action |
| 51 // saveLayers return kPushLayer but also track the active state | 54 // saveLayers return kPushLayer but also track the active state |
| 52 // To determine which culls are currently active (at a given point) | 55 // To determine which culls are currently active (at a given point) |
| 53 // in the rendering). | 56 // in the rendering). |
| 54 // pushCull returns a kPushCull action | 57 // pushCulls return a kPushCull action |
| 55 // popCull returns a kPopCull action | 58 // popCulls return a kPopCull action |
| 56 enum Action { | 59 enum Action { |
| 57 kNone_Action, | 60 kNone_Action, |
| 58 kPopLayer_Action, | 61 kPopLayer_Action, |
| 59 kPushLayer_Action, | 62 kPushLayer_Action, |
| 60 kPopCull_Action, | 63 kPopCull_Action, |
| 61 kPushCull_Action | 64 kPushCull_Action |
| 62 }; | 65 }; |
| 63 virtual Action action() const { return kNone_Action; } | 66 virtual Action action() const { return kNone_Action; } |
| 64 virtual void setActive(bool active) {} | 67 virtual void setActive(bool active) {} |
| 65 virtual bool active() const { return false; } | 68 virtual bool active() const { return false; } |
| 66 | 69 |
| 67 DrawType getType() { return fDrawType; }; | 70 DrawType getType() { return fDrawType; }; |
| 68 | 71 |
| 69 virtual bool render(SkCanvas* canvas) const { return false; } | 72 virtual bool render(SkCanvas* canvas) const { return false; } |
| 70 | 73 |
| 71 static const char* GetCommandString(DrawType type); | 74 static const char* GetCommandString(DrawType type); |
| 72 | 75 |
| 73 protected: | 76 protected: |
| 74 DrawType fDrawType; | |
| 75 SkTDArray<SkString*> fInfo; | 77 SkTDArray<SkString*> fInfo; |
| 76 | 78 |
| 77 private: | 79 private: |
| 78 bool fVisible; | 80 DrawType fDrawType; |
| 81 size_t fOffset; |
| 82 bool fVisible; |
| 79 }; | 83 }; |
| 80 | 84 |
| 81 class SkRestoreCommand : public SkDrawCommand { | 85 class SkRestoreCommand : public SkDrawCommand { |
| 82 public: | 86 public: |
| 83 SkRestoreCommand(); | 87 SkRestoreCommand(); |
| 84 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 88 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 85 virtual void trackSaveState(int* state) SK_OVERRIDE; | 89 virtual void trackSaveState(int* state) SK_OVERRIDE; |
| 86 virtual Action action() const SK_OVERRIDE { return kPopLayer_Action; } | 90 virtual Action action() const SK_OVERRIDE { return kPopLayer_Action; } |
| 87 | 91 |
| 88 private: | 92 private: |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 168 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 165 private: | 169 private: |
| 166 SkMatrix fMatrix; | 170 SkMatrix fMatrix; |
| 167 | 171 |
| 168 typedef SkDrawCommand INHERITED; | 172 typedef SkDrawCommand INHERITED; |
| 169 }; | 173 }; |
| 170 | 174 |
| 171 class SkDrawBitmapCommand : public SkDrawCommand { | 175 class SkDrawBitmapCommand : public SkDrawCommand { |
| 172 public: | 176 public: |
| 173 SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, | 177 SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, |
| 174 const SkPaint* paint); | 178 const SkPaint* paint); |
| 175 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 179 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 176 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; | 180 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
| 177 private: | 181 private: |
| 178 SkBitmap fBitmap; | 182 SkBitmap fBitmap; |
| 179 SkScalar fLeft; | 183 SkScalar fLeft; |
| 180 SkScalar fTop; | 184 SkScalar fTop; |
| 181 SkPaint fPaint; | 185 SkPaint fPaint; |
| 182 SkPaint* fPaintPtr; | 186 SkPaint* fPaintPtr; |
| 183 | 187 |
| 184 typedef SkDrawCommand INHERITED; | 188 typedef SkDrawCommand INHERITED; |
| 185 }; | 189 }; |
| 186 | 190 |
| 187 class SkDrawBitmapMatrixCommand : public SkDrawCommand { | 191 class SkDrawBitmapMatrixCommand : public SkDrawCommand { |
| 188 public: | 192 public: |
| 189 SkDrawBitmapMatrixCommand(const SkBitmap& bitmap, const SkMatrix& matrix, | 193 SkDrawBitmapMatrixCommand(const SkBitmap& bitmap, const SkMatrix& matrix, |
| 190 const SkPaint* paint); | 194 const SkPaint* paint); |
| 191 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 195 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 192 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; | 196 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
| 193 private: | 197 private: |
| 194 SkBitmap fBitmap; | 198 SkBitmap fBitmap; |
| 195 SkMatrix fMatrix; | 199 SkMatrix fMatrix; |
| 196 SkPaint fPaint; | 200 SkPaint fPaint; |
| 197 SkPaint* fPaintPtr; | 201 SkPaint* fPaintPtr; |
| 198 | 202 |
| 199 typedef SkDrawCommand INHERITED; | 203 typedef SkDrawCommand INHERITED; |
| 200 }; | 204 }; |
| 201 | 205 |
| 202 class SkDrawBitmapNineCommand : public SkDrawCommand { | 206 class SkDrawBitmapNineCommand : public SkDrawCommand { |
| 203 public: | 207 public: |
| 204 SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center, | 208 SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center, |
| 205 const SkRect& dst, const SkPaint* paint); | 209 const SkRect& dst, const SkPaint* paint); |
| 206 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 210 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 207 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; | 211 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
| 208 private: | 212 private: |
| 209 SkBitmap fBitmap; | 213 SkBitmap fBitmap; |
| 210 SkIRect fCenter; | 214 SkIRect fCenter; |
| 211 SkRect fDst; | 215 SkRect fDst; |
| 212 SkPaint fPaint; | 216 SkPaint fPaint; |
| 213 SkPaint* fPaintPtr; | 217 SkPaint* fPaintPtr; |
| 214 | 218 |
| 215 typedef SkDrawCommand INHERITED; | 219 typedef SkDrawCommand INHERITED; |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 | 349 |
| 346 private: | 350 private: |
| 347 SkPicture fPicture; | 351 SkPicture fPicture; |
| 348 | 352 |
| 349 typedef SkDrawCommand INHERITED; | 353 typedef SkDrawCommand INHERITED; |
| 350 }; | 354 }; |
| 351 | 355 |
| 352 class SkDrawPointsCommand : public SkDrawCommand { | 356 class SkDrawPointsCommand : public SkDrawCommand { |
| 353 public: | 357 public: |
| 354 SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pt
s[], | 358 SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pt
s[], |
| 355 const SkPaint& paint); | 359 const SkPaint& paint); |
| 356 virtual ~SkDrawPointsCommand() { delete [] fPts; } | 360 virtual ~SkDrawPointsCommand() { delete [] fPts; } |
| 357 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 361 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 358 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; | 362 virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; |
| 359 private: | 363 private: |
| 360 SkCanvas::PointMode fMode; | 364 SkCanvas::PointMode fMode; |
| 361 size_t fCount; | 365 size_t fCount; |
| 362 SkPoint* fPts; | 366 SkPoint* fPts; |
| 363 SkPaint fPaint; | 367 SkPaint fPaint; |
| 364 | 368 |
| 365 typedef SkDrawCommand INHERITED; | 369 typedef SkDrawCommand INHERITED; |
| 366 }; | 370 }; |
| 367 | 371 |
| 368 class SkDrawTextCommand : public SkDrawCommand { | 372 class SkDrawTextCommand : public SkDrawCommand { |
| 369 public: | 373 public: |
| 370 SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar
y, | 374 SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar
y, |
| 371 const SkPaint& paint); | 375 const SkPaint& paint); |
| 372 virtual ~SkDrawTextCommand() { delete [] fText; } | 376 virtual ~SkDrawTextCommand() { delete [] fText; } |
| 373 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 377 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 374 private: | 378 private: |
| 375 char* fText; | 379 char* fText; |
| 376 size_t fByteLength; | 380 size_t fByteLength; |
| 377 SkScalar fX; | 381 SkScalar fX; |
| 378 SkScalar fY; | 382 SkScalar fY; |
| 379 SkPaint fPaint; | 383 SkPaint fPaint; |
| 380 | 384 |
| 381 typedef SkDrawCommand INHERITED; | 385 typedef SkDrawCommand INHERITED; |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 class SkPopCullCommand : public SkDrawCommand { | 625 class SkPopCullCommand : public SkDrawCommand { |
| 622 public: | 626 public: |
| 623 SkPopCullCommand(); | 627 SkPopCullCommand(); |
| 624 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; | 628 virtual void execute(SkCanvas* canvas) SK_OVERRIDE; |
| 625 virtual Action action() const { return kPopCull_Action; } | 629 virtual Action action() const { return kPopCull_Action; } |
| 626 private: | 630 private: |
| 627 typedef SkDrawCommand INHERITED; | 631 typedef SkDrawCommand INHERITED; |
| 628 }; | 632 }; |
| 629 | 633 |
| 630 #endif | 634 #endif |
| OLD | NEW |