On Thu, Jun 5, 2014 at 9:58 PM, Dirk Schulze <dschu...@adobe.com> wrote:
> > On Jun 6, 2014, at 6:52 AM, Rik Cabanier <caban...@gmail.com> wrote: > > > > > > > > > On Thu, Jun 5, 2014 at 9:40 PM, Dirk Schulze <dschu...@adobe.com> wrote: > > > > On Jun 6, 2014, at 6:27 AM, Robert O'Callahan <rob...@ocallahan.org> > wrote: > > > > > On Fri, Jun 6, 2014 at 4:22 PM, Dirk Schulze <dschu...@adobe.com> > wrote: > > > What about > > > > > > DOMMatrix(1,0,0,1,0,0) or > > > DOMMatrix(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1) > > > > > > Do we check the values and determine if the matrix is identity or not? > If we do, then authors could write DOMMatrix(other.a, other.b, other.c, > other.d, other.e, other.f) and check any kind of matrix after transforming > for identity. In this case, a real isIdentity check wouldn’t be worst IMO. > > > > > > I would lean towards just setting isIdentity to false for that case, > but I could go either way. If authors try really hard to shoot themselves > in the foot, they can. > > > > > > Rob > > > > Just as comparison: Gecko checks for IsIdentity 75 times (exclusive the > definitions in matrix and matrix4x4). Every time the values are simply > checked for 0 and 1. Means Gecko is shooting itself in the foot quite often > :P. (In WebKit it is about ~70 times as well.) > > > > The question is not that 'isIdentity' is bad. Benoit's issue was that > checking for 'isIdentity' after doing transformations might cause jittery > results (ie switch to true or false depending on the conditions). > > Quickle scanning mozilla's codebase, our current definition of > 'isIdentity' would return the correct result in all cases. > > > > Just take the first result of many: > > static PathInterpolationResult > CanInterpolate(const SVGPathDataAndInfo& aStart, > const SVGPathDataAndInfo& aEnd) > { > if (aStart.IsIdentity()) { > return eCanInterpolate; > } > … > > Where can you guarantee that you don’t see jittering? aStart could be > modified > That one does not check for an identity matrix: /** * Returns true if this object is an "identity" value, from the perspective * of SMIL. In other words, returns true until the initial value set up in * SVGPathSegListSMILType::Init() has been changed with a SetElement() call. */ bool IsIdentity() const { if (!mElement) { NS_ABORT_IF_FALSE(IsEmpty(), "target element propagation failure"); return true; } return false; } Maybe you and I should take this offline... _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform