On Jun 6, 2014, at 8:00 AM, "Rik Cabanier" 
<caban...@gmail.com<mailto:caban...@gmail.com>> wrote:




On Thu, Jun 5, 2014 at 9:58 PM, Dirk Schulze 
<dschu...@adobe.com<mailto:dschu...@adobe.com>> wrote:

On Jun 6, 2014, at 6:52 AM, Rik Cabanier 
<caban...@gmail.com<mailto:caban...@gmail.com>> wrote:

>
>
>
> On Thu, Jun 5, 2014 at 9:40 PM, Dirk Schulze 
> <dschu...@adobe.com<mailto:dschu...@adobe.com>> wrote:
>
> On Jun 6, 2014, at 6:27 AM, Robert O'Callahan 
> <rob...@ocallahan.org<mailto:rob...@ocallahan.org>> wrote:
>
> > On Fri, Jun 6, 2014 at 4:22 PM, Dirk Schulze 
> > <dschu...@adobe.com<mailto: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;
  }

Right, as I noted on IRC I accidentally copied the wrong example. But there are 
still a lot of examples where the identity of a matrix is checked and used as a 
condition to perform or no to perform actions.


Maybe you and I should take this offline...

I think this is very much related to the discussion and demonstrates that real 
world applications are indeed using isIdentity() in the way you would like to 
deny for web application writers.

Greetings
Dirk

_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to