Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Unified Diff: src/core/SkRecordDraw.cpp

Issue 1308703007: Fix filter primitive bounds computations. (Closed) Base URL: https://skia.googlesource.com/skia.git@saveLayer-bounds-not-transformed
Patch Set: Update to ToT Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/core/SkRecordDraw.cpp
diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp
index 4847273f52a826f4eb2510abb75b4e7860cc82d2..90b85d1e969e63277b0eef6679576049c0e15d11 100644
--- a/src/core/SkRecordDraw.cpp
+++ b/src/core/SkRecordDraw.cpp
@@ -221,6 +221,7 @@ private:
int controlOps; // Number of control ops in this Save block, including the Save.
Bounds bounds; // Bounds of everything in the block.
const SkPaint* paint; // Unowned. If set, adjusts the bounds of all ops in this block.
+ SkMatrix ctm;
};
// Only Restore, SetMatrix, and Concat change the CTM.
@@ -301,6 +302,7 @@ private:
sb.bounds =
PaintMayAffectTransparentBlack(paint) ? fCurrentClipBounds : Bounds::MakeEmpty();
sb.paint = paint;
+ sb.ctm = this->fCTM;
fSaveStack.push(sb);
this->pushControl();
@@ -563,9 +565,15 @@ private:
bool adjustForSaveLayerPaints(SkRect* rect, int savesToIgnore = 0) const {
for (int i = fSaveStack.count() - 1 - savesToIgnore; i >= 0; i--) {
+ SkMatrix inverse;
+ if (!fSaveStack[i].ctm.invert(&inverse)) {
+ return false;
+ }
+ inverse.mapRect(rect);
reed1 2015/12/07 20:24:11 Is this change a fix in its own right, or is it co
Stephen White 2015/12/07 20:29:40 IIRC the problem/bug was being papered over by the
Stephen White 2015/12/07 20:51:15 To follow up: this breaks layout tests css3/filter
if (!AdjustForPaint(fSaveStack[i].paint, rect)) {
return false;
}
+ fSaveStack[i].ctm.mapRect(rect);
}
return true;
}

Powered by Google App Engine
This is Rietveld 408576698