Summary: | Need to add multLeft() to TransformationMatrix and WebKitCSSMatrix | ||
---|---|---|---|
Product: | WebKit | Reporter: | Simon Fraser (smfr) <simon.fraser> |
Component: | Layout and Rendering | Assignee: | Chris Marrin <cmarrin> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | dino, jeffschiller |
Priority: | P2 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | Mac | ||
OS: | OS X 10.5 |
Description
Simon Fraser (smfr)
2009-01-11 13:04:26 PST
I don't think it's really necessary to have both variants. This is usually provided as an optimization, since the operation is self-modifying. Today, if you wanted to multiply b * a, but put the result in a, you would have to: TransformationMatrix tmp = b; a = tmp.multiply(a); Which isn't that bad. Alternatively, we could change to a non-destructive multiply, which would ALWAYS be more inefficient, rather than just when you need to flip the operation order. I don't think our use of TransformationMatrix is extensive enough to warrant this. We have determined that SVGMatrix's multiply() is a multRight(), which also does not match its scale() etc, and indeed we think that TransformationMatrix should be more explicit about left vs. right multiply. Now multiply() does a multRight() in TransformationMatrix, CSSMatrix and SVGMatrix. I think we should leave it that way for compatibility and add a multLeft() function (at least to TransformationMatrix and CSSMatrix). I'm ready and willing to hack - does anyone care to mentor me through this and Bug 16062? Is there a good IRC channel to ask questions? Find me (smfr) on #webkit later today. In looking at the source, TransformationMatrix now has an explicit multLeft() and a multiply(), which does a multRight. This was done by cmarrin for Bug 6868 and landed r40761. I will fix SVGMatrix's incorrect matrix multiplication as part of Bug 16062. Is there anything left to do for this bug? smfr: I think this bug can be closed, do you agree? Yes. |