| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 | 8 |
| 9 #ifndef SKDEBUGCANVAS_H_ | 9 #ifndef SKDEBUGCANVAS_H_ |
| 10 #define SKDEBUGCANVAS_H_ | 10 #define SKDEBUGCANVAS_H_ |
| 11 | 11 |
| 12 #include "SkCanvas.h" | 12 #include "SkCanvas.h" |
| 13 #include "SkDrawCommand.h" | 13 #include "SkDrawCommand.h" |
| 14 #include "SkPath.h" | 14 #include "SkPath.h" |
| 15 #include "SkPathOps.h" | 15 #include "SkPathOps.h" |
| 16 #include "SkPicture.h" | 16 #include "SkPicture.h" |
| 17 #include "SkString.h" | 17 #include "SkString.h" |
| 18 #include "SkTArray.h" | 18 #include "SkTArray.h" |
| 19 #include "UrlDataManager.h" | 19 #include "UrlDataManager.h" |
| 20 | 20 |
| 21 class GrAuditTrail; | 21 class GrAuditTrail; |
| 22 class SkNWayCanvas; | 22 class SkNWayCanvas; |
| 23 | 23 |
| 24 class SK_API SkDebugCanvas : public SkCanvas { | 24 class SK_API SkDebugCanvas : public SkCanvas { |
| 25 public: | 25 public: |
| 26 SkDebugCanvas(int width, int height); | 26 SkDebugCanvas(int width, int height); |
| 27 | |
| 28 virtual ~SkDebugCanvas(); | 27 virtual ~SkDebugCanvas(); |
| 29 | 28 |
| 30 void toggleFilter(bool toggle) { fFilter = toggle; } | 29 void toggleFilter(bool toggle) { fFilter = toggle; } |
| 31 | 30 |
| 32 void setMegaVizMode(bool megaVizMode) { fMegaVizMode = megaVizMode; } | 31 void setMegaVizMode(bool megaVizMode) { fMegaVizMode = megaVizMode; } |
| 33 | |
| 34 bool getMegaVizMode() const { return fMegaVizMode; } | 32 bool getMegaVizMode() const { return fMegaVizMode; } |
| 35 | 33 |
| 36 /** | 34 /** |
| 37 * Enable or disable overdraw visualization | 35 * Enable or disable overdraw visualization |
| 38 */ | 36 */ |
| 39 void setOverdrawViz(bool overdrawViz); | 37 void setOverdrawViz(bool overdrawViz); |
| 40 | |
| 41 bool getOverdrawViz() const { return fOverdrawViz; } | 38 bool getOverdrawViz() const { return fOverdrawViz; } |
| 42 | 39 |
| 43 /** | 40 /** |
| 44 * Set the color of the clip visualization. An alpha of zero renders the cli
p invisible. | 41 * Set the color of the clip visualization. An alpha of zero renders the cli
p invisible. |
| 45 */ | 42 */ |
| 46 void setClipVizColor(SkColor clipVizColor) { this->fClipVizColor = clipVizCo
lor; } | 43 void setClipVizColor(SkColor clipVizColor) { this->fClipVizColor = clipVizCo
lor; } |
| 47 | |
| 48 SkColor getClipVizColor() const { return fClipVizColor; } | 44 SkColor getClipVizColor() const { return fClipVizColor; } |
| 49 | 45 |
| 50 void setDrawGpuBatchBounds(bool drawGpuBatchBounds) { | 46 void setDrawGpuBatchBounds(bool drawGpuBatchBounds) { |
| 51 fDrawGpuBatchBounds = drawGpuBatchBounds; | 47 fDrawGpuBatchBounds = drawGpuBatchBounds; |
| 52 } | 48 } |
| 53 | 49 |
| 54 bool getDrawGpuBatchBounds() const { return fDrawGpuBatchBounds; } | 50 bool getDrawGpuBatchBounds() const { return fDrawGpuBatchBounds; } |
| 55 | 51 |
| 56 bool getAllowSimplifyClip() const { return fAllowSimplifyClip; } | 52 bool getAllowSimplifyClip() const { return fAllowSimplifyClip; } |
| 57 | 53 |
| 58 void setPicture(SkPicture *picture) { fPicture = picture; } | 54 void setPicture(SkPicture* picture) { fPicture = picture; } |
| 59 | 55 |
| 60 /** | 56 /** |
| 61 * Enable or disable texure filtering override | 57 * Enable or disable texure filtering override |
| 62 */ | 58 */ |
| 63 void overrideTexFiltering(bool overrideTexFiltering, SkFilterQuality); | 59 void overrideTexFiltering(bool overrideTexFiltering, SkFilterQuality); |
| 64 | 60 |
| 65 /** | 61 /** |
| 66 Executes all draw calls to the canvas. | 62 Executes all draw calls to the canvas. |
| 67 @param canvas The canvas being drawn to | 63 @param canvas The canvas being drawn to |
| 68 */ | 64 */ |
| 69 void draw(SkCanvas *canvas); | 65 void draw(SkCanvas* canvas); |
| 70 | 66 |
| 71 /** | 67 /** |
| 72 Executes the draw calls up to the specified index. | 68 Executes the draw calls up to the specified index. |
| 73 @param canvas The canvas being drawn to | 69 @param canvas The canvas being drawn to |
| 74 @param index The index of the final command being executed | 70 @param index The index of the final command being executed |
| 75 @param m an optional Mth gpu batch to highlight, or -1 | 71 @param m an optional Mth gpu batch to highlight, or -1 |
| 76 */ | 72 */ |
| 77 void drawTo(SkCanvas *canvas, int index, int m = -1); | 73 void drawTo(SkCanvas* canvas, int index, int m = -1); |
| 78 | 74 |
| 79 /** | 75 /** |
| 80 Returns the most recently calculated transformation matrix | 76 Returns the most recently calculated transformation matrix |
| 81 */ | 77 */ |
| 82 const SkMatrix &getCurrentMatrix() { | 78 const SkMatrix& getCurrentMatrix() { |
| 83 return fMatrix; | 79 return fMatrix; |
| 84 } | 80 } |
| 85 | 81 |
| 86 /** | 82 /** |
| 87 Returns the most recently calculated clip | 83 Returns the most recently calculated clip |
| 88 */ | 84 */ |
| 89 const SkIRect &getCurrentClip() { | 85 const SkIRect& getCurrentClip() { |
| 90 return fClip; | 86 return fClip; |
| 91 } | 87 } |
| 92 | 88 |
| 93 /** | 89 /** |
| 94 Returns the index of the last draw command to write to the pixel at (x,y
) | 90 Returns the index of the last draw command to write to the pixel at (x,y
) |
| 95 */ | 91 */ |
| 96 int getCommandAtPoint(int x, int y, int index); | 92 int getCommandAtPoint(int x, int y, int index); |
| 97 | 93 |
| 98 /** | 94 /** |
| 99 Removes the command at the specified index | 95 Removes the command at the specified index |
| 100 @param index The index of the command to delete | 96 @param index The index of the command to delete |
| 101 */ | 97 */ |
| 102 void deleteDrawCommandAt(int index); | 98 void deleteDrawCommandAt(int index); |
| 103 | 99 |
| 104 /** | 100 /** |
| 105 Returns the draw command at the given index. | 101 Returns the draw command at the given index. |
| 106 @param index The index of the command | 102 @param index The index of the command |
| 107 */ | 103 */ |
| 108 SkDrawCommand *getDrawCommandAt(int index); | 104 SkDrawCommand* getDrawCommandAt(int index); |
| 109 | 105 |
| 110 /** | 106 /** |
| 111 Sets the draw command for a given index. | 107 Sets the draw command for a given index. |
| 112 @param index The index to overwrite | 108 @param index The index to overwrite |
| 113 @param command The new command | 109 @param command The new command |
| 114 */ | 110 */ |
| 115 void setDrawCommandAt(int index, SkDrawCommand *command); | 111 void setDrawCommandAt(int index, SkDrawCommand* command); |
| 116 | 112 |
| 117 /** | 113 /** |
| 118 Returns information about the command at the given index. | 114 Returns information about the command at the given index. |
| 119 @param index The index of the command | 115 @param index The index of the command |
| 120 */ | 116 */ |
| 121 const SkTDArray<SkString *> *getCommandInfo(int index) const; | 117 const SkTDArray<SkString*>* getCommandInfo(int index) const; |
| 122 | 118 |
| 123 /** | 119 /** |
| 124 Returns the visibility of the command at the given index. | 120 Returns the visibility of the command at the given index. |
| 125 @param index The index of the command | 121 @param index The index of the command |
| 126 */ | 122 */ |
| 127 bool getDrawCommandVisibilityAt(int index); | 123 bool getDrawCommandVisibilityAt(int index); |
| 128 | 124 |
| 129 /** | 125 /** |
| 130 Returns the vector of draw commands | 126 Returns the vector of draw commands |
| 131 */ | 127 */ |
| 132 SK_ATTR_DEPRECATED("please use getDrawCommandAt and getSize instead") | 128 SK_ATTR_DEPRECATED("please use getDrawCommandAt and getSize instead") |
| 133 const SkTDArray<SkDrawCommand *> &getDrawCommands() const; | 129 const SkTDArray<SkDrawCommand*>& getDrawCommands() const; |
| 134 | 130 |
| 135 /** | 131 /** |
| 136 Returns the vector of draw commands. Do not use this entry | 132 Returns the vector of draw commands. Do not use this entry |
| 137 point - it is going away! | 133 point - it is going away! |
| 138 */ | 134 */ |
| 139 SkTDArray<SkDrawCommand *> &getDrawCommands(); | 135 SkTDArray<SkDrawCommand*>& getDrawCommands(); |
| 140 | 136 |
| 141 /** | 137 /** |
| 142 Returns length of draw command vector. | 138 Returns length of draw command vector. |
| 143 */ | 139 */ |
| 144 int getSize() const { | 140 int getSize() const { |
| 145 return fCommandVector.count(); | 141 return fCommandVector.count(); |
| 146 } | 142 } |
| 147 | 143 |
| 148 /** | 144 /** |
| 149 Toggles the visibility / execution of the draw command at index i with | 145 Toggles the visibility / execution of the draw command at index i with |
| 150 the value of toggle. | 146 the value of toggle. |
| 151 */ | 147 */ |
| 152 void toggleCommand(int index, bool toggle); | 148 void toggleCommand(int index, bool toggle); |
| 153 | 149 |
| 154 void setUserMatrix(SkMatrix matrix) { | 150 void setUserMatrix(SkMatrix matrix) { |
| 155 fUserMatrix = matrix; | 151 fUserMatrix = matrix; |
| 156 } | 152 } |
| 157 | 153 |
| 158 SkString clipStackData() const { return fClipStackData; } | 154 SkString clipStackData() const { return fClipStackData; } |
| 159 | 155 |
| 160 /** | 156 /** |
| 161 Returns a JSON object representing up to the Nth draw, where N is less t
han | 157 Returns a JSON object representing up to the Nth draw, where N is less t
han |
| 162 SkDebugCanvas::getSize(). The encoder may use the UrlDataManager to stor
e binary data such | 158 SkDebugCanvas::getSize(). The encoder may use the UrlDataManager to stor
e binary data such |
| 163 as images, referring to them via URLs embedded in the JSON. | 159 as images, referring to them via URLs embedded in the JSON. |
| 164 */ | 160 */ |
| 165 Json::Value toJSON(UrlDataManager &urlDataManager, int n, SkCanvas *); | 161 Json::Value toJSON(UrlDataManager& urlDataManager, int n, SkCanvas*); |
| 166 | 162 |
| 167 Json::Value toJSONBatchList(int n, SkCanvas *); | 163 Json::Value toJSONBatchList(int n, SkCanvas*); |
| 168 | 164 |
| 169 //////////////////////////////////////////////////////////////////////////////// | 165 //////////////////////////////////////////////////////////////////////////////// |
| 170 // Inherited from SkCanvas | 166 // Inherited from SkCanvas |
| 171 //////////////////////////////////////////////////////////////////////////////// | 167 //////////////////////////////////////////////////////////////////////////////// |
| 172 | 168 |
| 173 static const int kVizImageHeight = 256; | 169 static const int kVizImageHeight = 256; |
| 174 static const int kVizImageWidth = 256; | 170 static const int kVizImageWidth = 256; |
| 175 | 171 |
| 176 bool isClipEmpty() const override { return false; } | 172 bool isClipEmpty() const override { return false; } |
| 177 | |
| 178 bool isClipRect() const override { return true; } | 173 bool isClipRect() const override { return true; } |
| 179 | 174 bool getClipBounds(SkRect* bounds) const override { |
| 180 bool getClipBounds(SkRect *bounds) const override { | |
| 181 if (bounds) { | 175 if (bounds) { |
| 182 bounds->setXYWH(0, 0, | 176 bounds->setXYWH(0, 0, |
| 183 SkIntToScalar(this->imageInfo().width()), | 177 SkIntToScalar(this->imageInfo().width()), |
| 184 SkIntToScalar(this->imageInfo().height())); | 178 SkIntToScalar(this->imageInfo().height())); |
| 185 } | 179 } |
| 186 return true; | 180 return true; |
| 187 } | 181 } |
| 188 | 182 bool getClipDeviceBounds(SkIRect* bounds) const override { |
| 189 bool getClipDeviceBounds(SkIRect *bounds) const override { | |
| 190 if (bounds) { | 183 if (bounds) { |
| 191 bounds->setLargest(); | 184 bounds->setLargest(); |
| 192 } | 185 } |
| 193 return true; | 186 return true; |
| 194 } | 187 } |
| 195 | 188 |
| 196 protected: | 189 protected: |
| 197 void willSave() override; | 190 void willSave() override; |
| 198 | 191 SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec&) override; |
| 199 SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec &) override; | |
| 200 | |
| 201 void willRestore() override; | 192 void willRestore() override; |
| 202 | 193 |
| 203 void didConcat(const SkMatrix &) override; | 194 void didConcat(const SkMatrix&) override; |
| 195 void didSetMatrix(const SkMatrix&) override; |
| 204 | 196 |
| 205 void didSetMatrix(const SkMatrix &) override; | |
| 206 | |
| 207 #ifdef SK_EXPERIMENTAL_SHADOWING | |
| 208 void didTranslateZ(SkScalar) override; | 197 void didTranslateZ(SkScalar) override; |
| 209 #else | |
| 210 void didTranslateZ(SkScalar); | |
| 211 #endif | |
| 212 | 198 |
| 213 void onDrawAnnotation(const SkRect&, const char[], SkData*) override; | 199 void onDrawAnnotation(const SkRect&, const char[], SkData*) override; |
| 214 void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; | 200 void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; |
| 215 void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, | 201 void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, |
| 216 const SkPaint&) override; | 202 const SkPaint&) override; |
| 217 void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], | 203 void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], |
| 218 const SkPaint&) override; | 204 const SkPaint&) override; |
| 219 void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos
[], | 205 void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos
[], |
| 220 SkScalar constY, const SkPaint&) override; | 206 SkScalar constY, const SkPaint&) override; |
| 221 void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& pat
h, | 207 void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& pat
h, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 247 const SkPaint*, SrcRectConstraint) override; | 233 const SkPaint*, SrcRectConstraint) override; |
| 248 void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect&
dst, | 234 void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect&
dst, |
| 249 const SkPaint*) override; | 235 const SkPaint*) override; |
| 250 void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) override; | 236 void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) override; |
| 251 void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) override; | 237 void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) override; |
| 252 void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) override; | 238 void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) override; |
| 253 void onClipRegion(const SkRegion& region, SkRegion::Op) override; | 239 void onClipRegion(const SkRegion& region, SkRegion::Op) override; |
| 254 | 240 |
| 255 void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) overri
de; | 241 void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) overri
de; |
| 256 | 242 |
| 257 #ifdef SK_EXPERIMENTAL_SHADOWING | |
| 258 void onDrawShadowedPicture(const SkPicture*, | |
| 259 const SkMatrix*, | |
| 260 const SkPaint*) override; | |
| 261 #else | |
| 262 void onDrawShadowedPicture(const SkPicture*, | |
| 263 const SkMatrix*, | |
| 264 const SkPaint*); | |
| 265 #endif | |
| 266 | |
| 267 void markActiveCommands(int index); | 243 void markActiveCommands(int index); |
| 268 | 244 |
| 269 private: | 245 private: |
| 270 SkTDArray<SkDrawCommand*> fCommandVector; | 246 SkTDArray<SkDrawCommand*> fCommandVector; |
| 271 SkPicture* fPicture; | 247 SkPicture* fPicture; |
| 272 bool fFilter; | 248 bool fFilter; |
| 273 bool fMegaVizMode; | 249 bool fMegaVizMode; |
| 274 SkMatrix fUserMatrix; | 250 SkMatrix fUserMatrix; |
| 275 SkMatrix fMatrix; | 251 SkMatrix fMatrix; |
| 276 SkIRect fClip; | 252 SkIRect fClip; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 GrAuditTrail* getAuditTrail(SkCanvas*); | 294 GrAuditTrail* getAuditTrail(SkCanvas*); |
| 319 | 295 |
| 320 void updatePaintFilterCanvas(); | 296 void updatePaintFilterCanvas(); |
| 321 void drawAndCollectBatches(int n, SkCanvas*); | 297 void drawAndCollectBatches(int n, SkCanvas*); |
| 322 void cleanupAuditTrail(SkCanvas*); | 298 void cleanupAuditTrail(SkCanvas*); |
| 323 | 299 |
| 324 typedef SkCanvas INHERITED; | 300 typedef SkCanvas INHERITED; |
| 325 }; | 301 }; |
| 326 | 302 |
| 327 #endif | 303 #endif |
| OLD | NEW |