gnash-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnash-dev] Matrix hell


From: strk
Subject: Re: [Gnash-dev] Matrix hell
Date: Tue, 30 Sep 2008 10:51:32 +0200

On Tue, Sep 30, 2008 at 10:49:26AM +0200, strk wrote:

> > 1) Matrix is read from SWF:
> >     (a=1, b=0, c=0, d=-2, tx=200, ty=200)
> >     _xscale==100;
> >     _yscale==200; // expected to be positive on extraction
> >     _rotation==0;
> > 
> > 2) _yscale is set to 100:
> >     (a=1, b=0, c=0, d=-1, tx=200, ty=200) // 'd' expected to retain sign
> >     _xscale==100;
> >     _yscale==100; // expected to be positive 
> >     _rotation==0;
> > 
> > 3) _yscale is set to -100
> >     (a=1, b=0, c=0, d=1, tx=200, ty=200) // 'd' expected to change sign
> >     _xscale==100;
> >     _yscale==-100; // as set by AS
> >     _rotation==0;
> > 
> > 4) _yscale is set to 100 [ HERE GNASH FAILS ]
> >     (a=1, b=0, c=0, d=-1, tx=200, ty=200) // gnash gives 'd=1'
> >     _xscale==100;
> >     _yscale==100;
> >     _rotation==0;
> 
> Just an observation: from step (3) to step (4)
> we're basically callin matrix::set_y_scale(100)
> to a matrix that's already an identity.
> There's no way we can have matrix::set_y_scale()
> determine whether or not that 'd' element of the
> matrix should be sign-swapped or not by only
> taking _yscale ! The same input would result
> in another output if the matrix was read as
> an identity one from the start...

Another observation: even taking all the parameters
(_xscale,_yscale,_rotation) won't suffice, as we'd
get an identity matrix as a result in that case.

Swfdec remembers the *original* matrix.
Having that might be a solution to this problem
(dunno by using which math though..)

--strk;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]