Just for update: we fixed all known bugs (except accuracy) w/out storing original matrix [ only using cached values instead ]
--strk; On Tue, Sep 30, 2008 at 10:51:32AM +0200, strk wrote: > 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; > > > _______________________________________________ > Gnash-dev mailing list > [email protected] > http://lists.gnu.org/mailman/listinfo/gnash-dev -- () ASCII Ribbon Campaign /\ Keep it simple! _______________________________________________ Gnash-dev mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gnash-dev

