| Index: src/utils/debugger/SkDebugCanvas.cpp
|
| diff --git a/src/utils/debugger/SkDebugCanvas.cpp b/src/utils/debugger/SkDebugCanvas.cpp
|
| index 0f2b9e0f05bf3cda5d883dab6c43a56efb4b8b7f..22eef6f9a5530c78b3ad2e909d9a0c8c56251a80 100644
|
| --- a/src/utils/debugger/SkDebugCanvas.cpp
|
| +++ b/src/utils/debugger/SkDebugCanvas.cpp
|
| @@ -92,37 +92,45 @@ int SkDebugCanvas::getCommandAtPoint(int x, int y, int index) {
|
| return layer;
|
| }
|
|
|
| -static SkPMColor OverdrawXferModeProc(SkPMColor src, SkPMColor dst) {
|
| - // This table encodes the color progression of the overdraw visualization
|
| - static const SkPMColor gTable[] = {
|
| - SkPackARGB32(0x00, 0x00, 0x00, 0x00),
|
| - SkPackARGB32(0xFF, 128, 158, 255),
|
| - SkPackARGB32(0xFF, 170, 185, 212),
|
| - SkPackARGB32(0xFF, 213, 195, 170),
|
| - SkPackARGB32(0xFF, 255, 192, 127),
|
| - SkPackARGB32(0xFF, 255, 185, 85),
|
| - SkPackARGB32(0xFF, 255, 165, 42),
|
| - SkPackARGB32(0xFF, 255, 135, 0),
|
| - SkPackARGB32(0xFF, 255, 95, 0),
|
| - SkPackARGB32(0xFF, 255, 50, 0),
|
| - SkPackARGB32(0xFF, 255, 0, 0)
|
| - };
|
| -
|
| - for (size_t i = 0; i < SK_ARRAY_COUNT(gTable)-1; ++i) {
|
| - if (gTable[i] == dst) {
|
| - return gTable[i+1];
|
| +class OverdrawXfermode : public SkXfermode {
|
| +public:
|
| + virtual SkPMColor xferColor(SkPMColor src, SkPMColor dst) const SK_OVERRIDE {
|
| + // This table encodes the color progression of the overdraw visualization
|
| + static const SkPMColor gTable[] = {
|
| + SkPackARGB32(0x00, 0x00, 0x00, 0x00),
|
| + SkPackARGB32(0xFF, 128, 158, 255),
|
| + SkPackARGB32(0xFF, 170, 185, 212),
|
| + SkPackARGB32(0xFF, 213, 195, 170),
|
| + SkPackARGB32(0xFF, 255, 192, 127),
|
| + SkPackARGB32(0xFF, 255, 185, 85),
|
| + SkPackARGB32(0xFF, 255, 165, 42),
|
| + SkPackARGB32(0xFF, 255, 135, 0),
|
| + SkPackARGB32(0xFF, 255, 95, 0),
|
| + SkPackARGB32(0xFF, 255, 50, 0),
|
| + SkPackARGB32(0xFF, 255, 0, 0)
|
| + };
|
| +
|
| + for (size_t i = 0; i < SK_ARRAY_COUNT(gTable)-1; ++i) {
|
| + if (gTable[i] == dst) {
|
| + return gTable[i+1];
|
| + }
|
| }
|
| +
|
| + return gTable[SK_ARRAY_COUNT(gTable)-1];
|
| }
|
|
|
| - return gTable[SK_ARRAY_COUNT(gTable)-1];
|
| -}
|
| + virtual Factory getFactory() const SK_OVERRIDE { return NULL; }
|
| +#ifndef SK_IGNORE_TO_STRING
|
| + virtual void toString(SkString* str) const { str->set("OverdrawXfermode"); }
|
| +#endif
|
| +};
|
|
|
| // The OverdrawFilter modifies every paint to use an SkProcXfermode which
|
| // in turn invokes OverdrawXferModeProc
|
| class SkOverdrawFilter : public SkDrawFilter {
|
| public:
|
| SkOverdrawFilter() {
|
| - fXferMode = SkProcXfermode::Create(OverdrawXferModeProc);
|
| + fXferMode = SkNEW(OverdrawXfermode);
|
| }
|
|
|
| virtual ~SkOverdrawFilter() {
|
|
|