gnash-commit
[Top][All Lists]
Advanced

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

Re: [Gnash-commit] gnash ChangeLog server/character.cpp testsuite/...


From: zou lunkai
Subject: Re: [Gnash-commit] gnash ChangeLog server/character.cpp testsuite/...
Date: Wed, 18 Apr 2007 16:51:10 +0800

-     w = TWIPS_TO_PIXELS(int(bounds.width()));
+    w = TWIPS_TO_PIXELS(rint(bounds.width()));

Does this fix any testcase?   This is the reference I get from
internet. "rint" is implementation-dependent, either identical to
ceil() or floor(). Then why not just using ceil()  or  floor()
instead?

original link:
http://www.opengroup.org/onlinepubs/7990989775/xsh/rint.html



double rint(double x);

DESCRIPTION
The rint() function returns the integral value (represented as a
double) nearest x in the direction of the current rounding mode. The
current rounding mode is implementation-dependent.
If the current rounding mode rounds toward negative infinity, then
rint() is identical to floor(). If the current rounding mode rounds
toward positive infinity, then rint() is identical to ceil().





On 4/15/07, Sandro Santilli <address@hidden> wrote:
CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/04/14 18:19:49

Modified files:
       .              : ChangeLog
       server         : character.cpp
       testsuite/swfdec: PASSING
       testsuite/misc-ming.all: Makefile.am
Added files:
       testsuite/misc-ming.all: matrix_test.c

Log message:
               * server/character.cpp (height_getset, width_getset): round
                 width and heights to nearest integer twip.
               * testsuite/swfdec/PASSING: height4.swf succeeds.
               * testsuite/misc-ming.all: Makefile.am, matrix_test.c: new test
                 for statically-defined matrix interpretation (just started, 
needs
                 many more tests).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2873&r2=1.2874
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.33&r2=1.34
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/swfdec/PASSING?cvsroot=gnash&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/Makefile.am?cvsroot=gnash&r1=1.90&r2=1.91
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/matrix_test.c?cvsroot=gnash&rev=1.1

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2873
retrieving revision 1.2874
diff -u -b -r1.2873 -r1.2874
--- ChangeLog   14 Apr 2007 16:27:22 -0000      1.2873
+++ ChangeLog   14 Apr 2007 18:19:49 -0000      1.2874
@@ -1,5 +1,14 @@
 2007-04-14 Sandro Santilli <address@hidden>

+       * server/character.cpp (height_getset, width_getset): round
+         width and heights to nearest integer twip.
+       * testsuite/swfdec/PASSING: height4.swf succeeds.
+       * testsuite/misc-ming.all: Makefile.am, matrix_test.c: new test
+         for statically-defined matrix interpretation (just started, needs
+         many more tests).
+
+2007-04-14 Sandro Santilli <address@hidden>
+
       * server/sprite_instance.cpp (sprite_getBounds): round bounds
         to twips.
       * testsuite/actionscript.all/MovieClip.as: more successes.

Index: server/character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/character.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -b -r1.33 -r1.34
--- server/character.cpp        12 Apr 2007 16:29:14 -0000      1.33
+++ server/character.cpp        14 Apr 2007 18:19:49 -0000      1.34
@@ -18,7 +18,7 @@
 //
 //

-/* $Id: character.cpp,v 1.33 2007/04/12 16:29:14 strk Exp $ */
+/* $Id: character.cpp,v 1.34 2007/04/14 18:19:49 strk Exp $ */

 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -458,13 +458,13 @@
       as_value rv;
       if ( fn.nargs == 0 ) // getter
       {
-               float w = 0;
+               double w = 0;
               if ( bounds.isFinite() )
               {
                       matrix m = ptr->get_matrix();
                       m.transform(bounds);
                       assert(bounds.isFinite());
-                       w = TWIPS_TO_PIXELS(int(bounds.width()));
+                       w = TWIPS_TO_PIXELS(rint(bounds.width()));
               }
               rv = as_value(w);
       }
@@ -503,13 +503,13 @@
       as_value rv;
       if ( fn.nargs == 0 ) // getter
       {
-               float h = 0;
+               double h = 0;
               if ( bounds.isFinite() )
               {
                       matrix m = ptr->get_matrix();
                       m.transform(bounds);
                       assert(bounds.isFinite());
-                       h = TWIPS_TO_PIXELS(int(bounds.height()));
+                       h = TWIPS_TO_PIXELS(rint(bounds.height()));
               }
               rv = as_value(h);
       }

Index: testsuite/swfdec/PASSING
===================================================================
RCS file: /sources/gnash/gnash/testsuite/swfdec/PASSING,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- testsuite/swfdec/PASSING    12 Apr 2007 09:14:37 -0000      1.15
+++ testsuite/swfdec/PASSING    14 Apr 2007 18:19:49 -0000      1.16
@@ -52,3 +52,4 @@
 undefined2-7.swf
 height1.swf
 height3.swf
+height4.swf

Index: testsuite/misc-ming.all/Makefile.am
===================================================================
RCS file: /sources/gnash/gnash/testsuite/misc-ming.all/Makefile.am,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -b -r1.90 -r1.91
--- testsuite/misc-ming.all/Makefile.am 9 Apr 2007 09:04:09 -0000       1.90
+++ testsuite/misc-ming.all/Makefile.am 14 Apr 2007 18:19:49 -0000      1.91
@@ -52,7 +52,6 @@
       -DMING_VERSION_CODE=$(MING_VERSION_CODE) \
       $(NULL)

-
 check_PROGRAMS = \
       ButtonEventsTest \
       ButtonEventsTest-Runner \
@@ -86,6 +85,7 @@
       registerClassTestRunner \
       goto_frame_test \
       consecutive_goto_frame_test \
+       matrix_test \
       multi_doactions_and_goto_frame_test \
       simple_loop_test \
       simple_loop_testrunner \
@@ -140,6 +140,7 @@
       reverse_execute_PlaceObject2_test2runner \
       displaylist_depths_testrunner \
       get_frame_number_testrunner \
+       matrix_testrunner \
       $(NULL)

 if MAKESWF_SUPPORTS_PREBUILT_CLIPS
@@ -372,6 +373,20 @@
       sh $< -r5 $(top_builddir) displaylist_depths_test.swf > $@
       chmod 755 $@

+matrix_test_SOURCES =  \
+       matrix_test.c   \
+       ming_utils.h            \
+       ming_utils.c            \
+       $(NULL)
+matrix_test_LDADD = $(MING_LIBS)
+
+matrix_test.swf: matrix_test
+       ./matrix_test $(top_srcdir)/testsuite/media
+
+matrix_testrunner: $(srcdir)/../generic-testrunner.sh matrix_test.swf
+       sh $< -r5 $(top_builddir) matrix_test.swf > $@
+       chmod 755 $@
+
 get_frame_number_test_SOURCES =        \
       get_frame_number_test.c \
       ming_utils.h            \
@@ -892,6 +907,7 @@
       reverse_execute_PlaceObject2_test1runner \
       reverse_execute_PlaceObject2_test2runner \
       displaylist_depths_testrunner \
+       matrix_testrunner \
       $(NULL)

 if MAKESWF_SUPPORTS_PREBUILT_CLIPS

Index: testsuite/misc-ming.all/matrix_test.c
===================================================================
RCS file: testsuite/misc-ming.all/matrix_test.c
diff -N testsuite/misc-ming.all/matrix_test.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ testsuite/misc-ming.all/matrix_test.c       14 Apr 2007 18:19:49 -0000      
1.1
@@ -0,0 +1,138 @@
+/*
+ *   Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+/*
+ * Sandro Santilli, address@hidden
+ *
+ * Test extracting _width, _height, _xscale, _yscale, _x, _y and _rotation
+ * from hard-coded matrices.
+ *
+ * run as ./matrix_test
+ */
+
+#include "ming_utils.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <ming.h>
+
+#define OUTPUT_VERSION 6
+#define OUTPUT_FILENAME "matrix_test.swf"
+
+SWFDisplayItem add_static_mc(SWFMovie mo, const char* name, int depth, int x, 
int y, int width, int height);
+
+SWFDisplayItem
+add_static_mc(SWFMovie mo, const char* name, int depth, int x, int y, int 
width, int height)
+{
+       SWFShape sh;
+       SWFMovieClip mc, mc2;
+       SWFDisplayItem it;
+
+       sh = make_fill_square (-(width/2), -(height/2), width, height, 255, 0, 
0, 255, 0, 0);
+       mc = newSWFMovieClip();
+       SWFMovieClip_add(mc, (SWFBlock)sh);
+
+       sh = make_square (-(width/2)+5, -(height/2)+5, width-10, height-10, 0, 
0, 0);
+       mc2 = newSWFMovieClip(); // child
+       SWFMovieClip_add(mc2, (SWFBlock)sh);
+       SWFMovieClip_nextFrame(mc2);
+
+       it = SWFMovieClip_add(mc, (SWFBlock)mc2);
+       SWFDisplayItem_setName(it, "child");
+       SWFMovieClip_nextFrame(mc);
+
+       it = SWFMovie_add(mo, (SWFBlock)mc);
+       SWFDisplayItem_setDepth(it, depth);
+       SWFDisplayItem_moveTo(it, x, y);
+       SWFDisplayItem_setName(it, name);
+
+       return it;
+}
+
+
+int
+main(int argc, char** argv)
+{
+       SWFMovie mo;
+       SWFMovieClip dejagnuclip;
+       SWFDisplayItem it;
+       int i;
+
+       const char *srcdir=".";
+       if ( argc>1 )
+               srcdir=argv[1];
+       else
+       {
+               //fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]);
+               //return 1;
+       }
+
+       Ming_init();
+       mo = newSWFMovieWithVersion(OUTPUT_VERSION);
+       SWFMovie_setDimension(mo, 800, 600);
+       SWFMovie_setRate (mo, 1);
+
+       dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 
0, 0, 800, 600);
+       SWFMovie_add(mo, (SWFBlock)dejagnuclip);
+
+       add_actions(mo, "printBounds = function(b) { return ''+b.xMin+','+b.yMin+' 
'+b.xMax+','+b.yMax; };");
+
+       SWFMovie_nextFrame(mo);
+
+
+       // Static 60x60 movieclip
+       it = add_static_mc(mo, "staticmc", 3, 50, 300, 60, 60);
+
+       // Check if we cleaned them all now
+       check_equals(mo, "typeof(staticmc)", "'movieclip'");
+       check_equals(mo, "staticmc._x", "50");
+       check_equals(mo, "staticmc._y", "300");
+       check_equals(mo, "staticmc._xscale", "100");
+       check_equals(mo, "staticmc._yscale", "100");
+       check_equals(mo, "staticmc._rotation", "0");
+       check_equals(mo, "Math.round(staticmc._width)", "60");
+       check_equals(mo, "Math.round(staticmc._height)", "60");
+
+       SWFMovie_nextFrame(mo);
+
+       SWFDisplayItem_rotate(it, -45);
+
+       check_equals(mo, "staticmc._x", "50");
+       check_equals(mo, "staticmc._y", "300");
+       check_equals(mo, "Math.round(staticmc._xscale)", "100");
+       check_equals(mo, "Math.round(staticmc._yscale)", "100");
+       check_equals(mo, "staticmc._rotation", "45");
+       check_equals(mo, "printBounds(staticmc.getBounds())", "'-30.05,-30.05 
30.05,30.05'");
+       check_equals(mo, "printBounds(staticmc.getBounds(_root))", "'7.5,257.5 
92.5,342.5'");
+       check_equals(mo, "staticmc._width", "85");
+       check_equals(mo, "staticmc._height", "85");
+
+       // TODO:
+       // - test mixing rotation and scale !
+
+
+
+       add_actions(mo, "_root.totals(); stop();");
+       SWFMovie_nextFrame(mo);
+
+       //Output movie
+       puts("Saving " OUTPUT_FILENAME );
+       SWFMovie_save(mo, OUTPUT_FILENAME);
+
+       return 0;
+}


_______________________________________________
Gnash-commit mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/gnash-commit





reply via email to

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