On Tue, Sep 30, 2008 at 10:31:31AM +0200, strk wrote: > Zou, I'm having an hard time with that gnash matrix... > > This is the test: > > 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... -strk; _______________________________________________ Gnash-dev mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gnash-dev

