Chromium Code Reviews| Index: src/utils/debugger/SkDebugCanvas.cpp |
| =================================================================== |
| --- src/utils/debugger/SkDebugCanvas.cpp (revision 12088) |
| +++ src/utils/debugger/SkDebugCanvas.cpp (working copy) |
| @@ -35,6 +35,25 @@ |
| fFilter = false; |
| fIndex = 0; |
| fUserMatrix.reset(); |
| + |
| + // SkPicturePlayback uses the base-class' quickReject calls to cull clipped |
| + // operations. This can lead to problems in the debugger which expects all |
| + // the operations in the captured skp to appear in the debug canvas. To |
| + // circumvent this we create a wide open clip here (an empty clip rect |
| + // is not sufficient). |
| + // Internally, the SkRect passed to clipRect is converted to an SkIRect and |
| + // rounded out. The following code creates a nearly maximal rect that will |
| + // not get collapsed by the coming conversions (Due to precision loss the |
| + // inset has to be surprisingly large). |
| + SkIRect largeIRect = SkIRect::MakeLargest(); |
| + largeIRect.inset(1024, 1024); |
| + SkRect large = SkRect::MakeFromIRect(largeIRect); |
| +#ifdef SK_DEBUG |
| + large.round(&largeIRect); |
|
Justin Novosad
2013/11/06 19:57:35
roundOut instead of round?
robertphillips
2013/11/06 20:07:51
Since it is BW, SkRasterClip::op just does a round
robertphillips
2013/11/06 20:40:21
Done.
|
| + SkASSERT(!largeIRect.isEmpty()); |
| +#endif |
| + INHERITED::clipRect(large, SkRegion::kReplace_Op, false); |
| + |
| } |
| SkDebugCanvas::~SkDebugCanvas() { |