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 #include "SkClipStack.h" | 8 #include "SkClipStack.h" |
9 #include "SkColorPriv.h" | 9 #include "SkColorPriv.h" |
10 #include "SkDebugCanvas.h" | 10 #include "SkDebugCanvas.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 idx = 7 - (SkColorGetB(dst)+21)/42; | 43 idx = 7 - (SkColorGetB(dst)+21)/42; |
44 } else { // 7-9 | 44 } else { // 7-9 |
45 idx = 10 - (SkColorGetG(dst)+22)/45; | 45 idx = 10 - (SkColorGetG(dst)+22)/45; |
46 } | 46 } |
47 ++idx; | 47 ++idx; |
48 SkASSERT(idx < (int)SK_ARRAY_COUNT(gTable)); | 48 SkASSERT(idx < (int)SK_ARRAY_COUNT(gTable)); |
49 | 49 |
50 return gTable[idx]; | 50 return gTable[idx]; |
51 } | 51 } |
52 | 52 |
53 Factory getFactory() const override { return NULL; } | 53 Factory getFactory() const override { return nullptr; } |
54 #ifndef SK_IGNORE_TO_STRING | 54 #ifndef SK_IGNORE_TO_STRING |
55 void toString(SkString* str) const override { str->set("OverdrawXfermode");
} | 55 void toString(SkString* str) const override { str->set("OverdrawXfermode");
} |
56 #endif | 56 #endif |
57 }; | 57 }; |
58 | 58 |
59 class DebugPaintFilterCanvas : public SkPaintFilterCanvas { | 59 class DebugPaintFilterCanvas : public SkPaintFilterCanvas { |
60 public: | 60 public: |
61 DebugPaintFilterCanvas(int width, | 61 DebugPaintFilterCanvas(int width, |
62 int height, | 62 int height, |
63 bool overdrawViz, | 63 bool overdrawViz, |
64 bool overrideFilterQuality, | 64 bool overrideFilterQuality, |
65 SkFilterQuality quality) | 65 SkFilterQuality quality) |
66 : INHERITED(width, height) | 66 : INHERITED(width, height) |
67 , fOverdrawXfermode(overdrawViz ? new OverdrawXfermode : NULL) | 67 , fOverdrawXfermode(overdrawViz ? new OverdrawXfermode : nullptr) |
68 , fOverrideFilterQuality(overrideFilterQuality) | 68 , fOverrideFilterQuality(overrideFilterQuality) |
69 , fFilterQuality(quality) {} | 69 , fFilterQuality(quality) {} |
70 | 70 |
71 protected: | 71 protected: |
72 void onFilterPaint(SkPaint* paint, Type) const override { | 72 void onFilterPaint(SkPaint* paint, Type) const override { |
73 if (NULL != fOverdrawXfermode.get()) { | 73 if (nullptr != fOverdrawXfermode.get()) { |
74 paint->setAntiAlias(false); | 74 paint->setAntiAlias(false); |
75 paint->setXfermode(fOverdrawXfermode.get()); | 75 paint->setXfermode(fOverdrawXfermode.get()); |
76 } | 76 } |
77 | 77 |
78 if (fOverrideFilterQuality) { | 78 if (fOverrideFilterQuality) { |
79 paint->setFilterQuality(fFilterQuality); | 79 paint->setFilterQuality(fFilterQuality); |
80 } | 80 } |
81 } | 81 } |
82 | 82 |
83 void onDrawPicture(const SkPicture* picture, | 83 void onDrawPicture(const SkPicture* picture, |
84 const SkMatrix* matrix, | 84 const SkMatrix* matrix, |
85 const SkPaint* paint) override { | 85 const SkPaint* paint) override { |
86 // We need to replay the picture onto this canvas in order to filter its
internal paints. | 86 // We need to replay the picture onto this canvas in order to filter its
internal paints. |
87 this->SkCanvas::onDrawPicture(picture, matrix, paint); | 87 this->SkCanvas::onDrawPicture(picture, matrix, paint); |
88 } | 88 } |
89 | 89 |
90 private: | 90 private: |
91 SkAutoTUnref<SkXfermode> fOverdrawXfermode; | 91 SkAutoTUnref<SkXfermode> fOverdrawXfermode; |
92 | 92 |
93 bool fOverrideFilterQuality; | 93 bool fOverrideFilterQuality; |
94 SkFilterQuality fFilterQuality; | 94 SkFilterQuality fFilterQuality; |
95 | 95 |
96 typedef SkPaintFilterCanvas INHERITED; | 96 typedef SkPaintFilterCanvas INHERITED; |
97 }; | 97 }; |
98 | 98 |
99 } | 99 } |
100 | 100 |
101 SkDebugCanvas::SkDebugCanvas(int width, int height) | 101 SkDebugCanvas::SkDebugCanvas(int width, int height) |
102 : INHERITED(width, height) | 102 : INHERITED(width, height) |
103 , fPicture(NULL) | 103 , fPicture(nullptr) |
104 , fFilter(false) | 104 , fFilter(false) |
105 , fMegaVizMode(false) | 105 , fMegaVizMode(false) |
106 , fOverdrawViz(false) | 106 , fOverdrawViz(false) |
107 , fOverrideFilterQuality(false) | 107 , fOverrideFilterQuality(false) |
108 , fFilterQuality(kNone_SkFilterQuality) { | 108 , fFilterQuality(kNone_SkFilterQuality) { |
109 fUserMatrix.reset(); | 109 fUserMatrix.reset(); |
110 | 110 |
111 // SkPicturePlayback uses the base-class' quickReject calls to cull clipped | 111 // SkPicturePlayback uses the base-class' quickReject calls to cull clipped |
112 // operations. This can lead to problems in the debugger which expects all | 112 // operations. This can lead to problems in the debugger which expects all |
113 // the operations in the captured skp to appear in the debug canvas. To | 113 // the operations in the captured skp to appear in the debug canvas. To |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 const SkTDArray <SkDrawCommand*>& SkDebugCanvas::getDrawCommands() const { | 352 const SkTDArray <SkDrawCommand*>& SkDebugCanvas::getDrawCommands() const { |
353 return fCommandVector; | 353 return fCommandVector; |
354 } | 354 } |
355 | 355 |
356 SkTDArray <SkDrawCommand*>& SkDebugCanvas::getDrawCommands() { | 356 SkTDArray <SkDrawCommand*>& SkDebugCanvas::getDrawCommands() { |
357 return fCommandVector; | 357 return fCommandVector; |
358 } | 358 } |
359 | 359 |
360 void SkDebugCanvas::updatePaintFilterCanvas() { | 360 void SkDebugCanvas::updatePaintFilterCanvas() { |
361 if (!fOverdrawViz && !fOverrideFilterQuality) { | 361 if (!fOverdrawViz && !fOverrideFilterQuality) { |
362 fPaintFilterCanvas.reset(NULL); | 362 fPaintFilterCanvas.reset(nullptr); |
363 return; | 363 return; |
364 } | 364 } |
365 | 365 |
366 const SkImageInfo info = this->imageInfo(); | 366 const SkImageInfo info = this->imageInfo(); |
367 fPaintFilterCanvas.reset(new DebugPaintFilterCanvas(info.width(), info.heigh
t(), fOverdrawViz, | 367 fPaintFilterCanvas.reset(new DebugPaintFilterCanvas(info.width(), info.heigh
t(), fOverdrawViz, |
368 fOverrideFilterQuality,
fFilterQuality)); | 368 fOverrideFilterQuality,
fFilterQuality)); |
369 } | 369 } |
370 | 370 |
371 void SkDebugCanvas::setOverdrawViz(bool overdrawViz) { | 371 void SkDebugCanvas::setOverdrawViz(bool overdrawViz) { |
372 if (fOverdrawViz == overdrawViz) { | 372 if (fOverdrawViz == overdrawViz) { |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
508 const SkPoint texCoords[4], SkXfermode* xmode, | 508 const SkPoint texCoords[4], SkXfermode* xmode, |
509 const SkPaint& paint) { | 509 const SkPaint& paint) { |
510 this->addDrawCommand(new SkDrawPatchCommand(cubics, colors, texCoords, xmode
, paint)); | 510 this->addDrawCommand(new SkDrawPatchCommand(cubics, colors, texCoords, xmode
, paint)); |
511 } | 511 } |
512 | 512 |
513 void SkDebugCanvas::onDrawVertices(VertexMode vmode, int vertexCount, const SkPo
int vertices[], | 513 void SkDebugCanvas::onDrawVertices(VertexMode vmode, int vertexCount, const SkPo
int vertices[], |
514 const SkPoint texs[], const SkColor colors[], | 514 const SkPoint texs[], const SkColor colors[], |
515 SkXfermode*, const uint16_t indices[], int in
dexCount, | 515 SkXfermode*, const uint16_t indices[], int in
dexCount, |
516 const SkPaint& paint) { | 516 const SkPaint& paint) { |
517 this->addDrawCommand(new SkDrawVerticesCommand(vmode, vertexCount, vertices, | 517 this->addDrawCommand(new SkDrawVerticesCommand(vmode, vertexCount, vertices, |
518 texs, colors, NULL, indices, indexCount, paint)); | 518 texs, colors, nullptr, indices, indexCount, paint)); |
519 } | 519 } |
520 | 520 |
521 void SkDebugCanvas::willRestore() { | 521 void SkDebugCanvas::willRestore() { |
522 this->addDrawCommand(new SkRestoreCommand()); | 522 this->addDrawCommand(new SkRestoreCommand()); |
523 this->INHERITED::willRestore(); | 523 this->INHERITED::willRestore(); |
524 } | 524 } |
525 | 525 |
526 void SkDebugCanvas::willSave() { | 526 void SkDebugCanvas::willSave() { |
527 this->addDrawCommand(new SkSaveCommand()); | 527 this->addDrawCommand(new SkSaveCommand()); |
528 this->INHERITED::willSave(); | 528 this->INHERITED::willSave(); |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 } | 663 } |
664 | 664 |
665 bool SkDebugCanvas::lastClipStackData(const SkPath& devPath) { | 665 bool SkDebugCanvas::lastClipStackData(const SkPath& devPath) { |
666 if (fCalledAddStackData) { | 666 if (fCalledAddStackData) { |
667 fClipStackData.appendf("<br>"); | 667 fClipStackData.appendf("<br>"); |
668 addPathData(devPath, "pathOut"); | 668 addPathData(devPath, "pathOut"); |
669 return true; | 669 return true; |
670 } | 670 } |
671 return false; | 671 return false; |
672 } | 672 } |
OLD | NEW |