I've just realised the patch should be fabs(patternMatrix->xx) and fabs(patternMatrix->yy) in case someone has written scale(-40) which should invert the image as well as scaling it. The patch as written would not render scale(-40).
Comment on attachment 564442 [details] [diff] [review] patch Could you add a reftest for the situation described in comment 1? (with inverting coming into play) r=me with that.
Created attachment 564471 [details] [diff] [review] address comments
And backed out as the reftest fails on Linux.
Created attachment 564502 [details] [diff] [review] try to fix reftest failures
Try run for 696085573f75 is complete. Detailed breakdown of the results available here: https://tbpl.mozilla.org/?tree=Try&rev=696085573f75 Results (out of 9 total builds): success: 4 warnings: 5 Builds available at http://firstname.lastname@example.org
Try run for 6b114ae3b4c4 is complete. Detailed breakdown of the results available here: https://tbpl.mozilla.org/?tree=Try&rev=6b114ae3b4c4 Results (out of 9 total builds): success: 9 Builds available at http://email@example.com
fixed reftest and landed as https://hg.mozilla.org/integration/mozilla-inbound/rev/e05e1b35ebed
antialiasing sucks when you're writing reftests :-(
Looking back on this, I think we should have used patternMatrix->GetScaleFactors() to get the scale factors, instead of using patternMatrix->xx / patternMatrix->yy. (assuming patternMatrix is non-singular) Otherwise, I think rotations / skews could mess us up here. Robert: am I missing something, or does that make sense? I'm happy to file a followup on that, just wanted to sanity-check here first.
Yup, sorry for getting the wrong name there. Actually I'm getting less sure about ScaleFactors, though, from looking at the impl... I'm not sure we'd always be able to pass the right value of "xMajor". (the existing code also only has 2 calls to ScaleFactors, with 'true' in both places, but I don't think that's necessarily right in this spot) So, I think I rescind comment 13 (at least partly)... sorry for my confusion on this.