replaced libart with new polygon code
[swftools.git] / lib / modules / swfshape.c
index 3163556..d51f510 100644 (file)
@@ -21,6 +21,8 @@
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
 
+#include "../rfxswf.h"
+
 #define SF_MOVETO       0x01
 #define SF_FILL0        0x02
 #define SF_FILL1        0x04
@@ -347,7 +349,12 @@ int swf_ShapeSetMove(TAG * t,SHAPE * s,S32 x,S32 y)
   
   b = swf_CountBits(x,0);
   b = swf_CountBits(y,b);
-  
+
+  if(b>31) {
+      fprintf(stderr, "Warning: bad moveTo (%f,%f)\n", x/20.0, y/20.0);
+      b=31;
+  }
+    
   swf_SetBits(t,b,5);
   swf_SetBits(t,x,b);
   swf_SetBits(t,y,b);
@@ -418,9 +425,9 @@ int swf_ShapeSetLine(TAG * t,SHAPE * s,S32 x,S32 y)
     b = swf_CountBits(y,b);
     if (b<2) b=2;
     if(b >= 18) {
-        if(b >= 18 + 6) {
+        if(b > 18 + 6) {
             /* do not split into more than 64 segments. If the line is *that* long, something's broken */
-            fprintf(stderr, "Warning: Line to %.2f,%.2f is too long\n", (double)x,(double)y);
+            fprintf(stderr, "Warning: Line to %.2f,%.2f is too long (%d bits)\n", (double)x,(double)y, b);
             return -1;
         } else {
             /* split line */