count number of polygons
[swftools.git] / lib / pdf / InfoOutputDev.cc
index f081075..a0a4cac 100644 (file)
@@ -1,3 +1,4 @@
+#include "Object.h"
 #include "SplashTypes.h"
 #include "SplashOutputDev.h"
 #include "SplashPath.h"
@@ -12,6 +13,7 @@ InfoOutputDev::InfoOutputDev(XRef*xref)
     num_links = 0;
     num_images = 0;
     num_fonts = 0;
+    num_polygons= 0;
     currentfont = 0;
     currentglyph = 0;
     id2font = new GHash(1);
@@ -30,8 +32,8 @@ InfoOutputDev::~InfoOutputDev()
     }
     id2font->killIter(&i);
 
-    delete id2font;
-    delete splash;
+    delete id2font;id2font=0;
+    delete splash;splash=0;
 }
 void FontInfo::grow(int size)
 {
@@ -64,6 +66,7 @@ FontInfo::~FontInfo()
            glyphs[t]=0;
        }
     }
+    free(glyphs);glyphs=0;
 }
 GBool InfoOutputDev::upsideDown() {return gTrue;}
 GBool InfoOutputDev::useDrawChar() {return gTrue;}
@@ -146,12 +149,23 @@ void InfoOutputDev::updateFont(GfxState *state)
 
     state->setCTM(1.0,0,0,1.0,0,0);
     splash->updateCTM(state, 0,0,0,0,0,0);
-    state->setTextMat(1.0,0,0,-1.0,0,0);
+    state->setTextMat(1.0,0,0,1.0,0,0);
     state->setFont(font, 1024.0);
     splash->doUpdateFont(state);
     currentfont->splash_font = splash->getCurrentFont();
     free(id);
 }
+
+void InfoOutputDev::fill(GfxState *state)
+{
+    num_polygons++;
+}
+
+void InfoOutputDev::eoFill(GfxState *state)
+{
+    num_polygons++;
+}
+
 FontInfo* InfoOutputDev::getFont(char*id)
 {
     return (FontInfo*)id2font->lookup(id);
@@ -216,7 +230,7 @@ GBool InfoOutputDev::beginType3Char(GfxState *state, double x, double y, double
        currentglyph->x1=0;
        currentglyph->y1=0;
        currentglyph->x2=dx;
-       currentglyph->y2=-dy;
+       currentglyph->y2=dy;
        return gFalse;
     } else {
        return gTrue;
@@ -228,15 +242,15 @@ void InfoOutputDev::type3D0(GfxState *state, double wx, double wy)
     currentglyph->x1=0;
     currentglyph->y1=0;
     currentglyph->x2=wx;
-    currentglyph->y2=-wy;
+    currentglyph->y2=wy;
 }
 
 void InfoOutputDev::type3D1(GfxState *state, double wx, double wy, double llx, double lly, double urx, double ury)
 {
     currentglyph->x1=llx;
-    currentglyph->y1=-lly;
+    currentglyph->y1=lly;
     currentglyph->x2=urx;
-    currentglyph->y2=-ury;
+    currentglyph->y2=ury;
 }
 
 void InfoOutputDev::endType3Char(GfxState *state)