kerning table fixes
[swftools.git] / lib / pdf / InfoOutputDev.h
index 699c4c7..66958da 100644 (file)
 #else
 #include "GHash.h"
 #endif
+#include "../gfxdevice.h"
+#include "../gfxtools.h"
+#include "../gfxfont.h"
+#include "../q.h"
 
-struct AdvanceSample
-{
-    double advance;
-    struct AdvanceSample*next;
-};
+#define INTERNAL_FONT_SIZE 1024.0
+#define GLYPH_IS_SPACE(g) ((!(g)->line || ((g)->line->type==gfx_moveTo && !(g)->line->next)) && (g)->advance)
 
 struct GlyphInfo
 {
@@ -56,18 +57,23 @@ struct GlyphInfo
     double advance;
     double x1,y1,x2,y2;
 
-    double estimateAdvance();
-
-    AdvanceSample*advance_samples;
+    double advance_max;
 };
 
-struct FontInfo
+class FontInfo
 {
-    FontInfo();
+    gfxfont_t*gfxfont;
+
+    char*id;
+public:
+    FontInfo(char*id);
     ~FontInfo();
 
+    gfxfont_t* getGfxFont();
+
     double lastx,lasty;
     int lastchar;
+    int lastadvance;
 
     double ascender,descender;
 
@@ -77,9 +83,12 @@ struct FontInfo
     double max_size;
     int num_glyphs;
     GlyphInfo**glyphs;
-    int*charid2glyph;
+    dict_t**kerning;
+
     SplashFont*splash_font;
     char seen;
+    int space_char;
+    float average_advance;
 };
 
 extern char*getFontID(GfxFont*font);
@@ -94,9 +103,13 @@ class InfoOutputDev: public OutputDev
     public:
     int x1,y1,x2,y2;
     int num_links;
-    int num_images;
+    int num_ppm_images;
+    int num_jpeg_images;
     int num_fonts;
     int num_polygons;
+    int num_textfields;
+
+    void dumpfonts(gfxdevice_t*dev);
 
     InfoOutputDev(XRef*xref);
     virtual ~InfoOutputDev(); 
@@ -140,6 +153,7 @@ class InfoOutputDev: public OutputDev
                                      Stream *maskStr,
                                      int maskWidth, int maskHeight,
                                      GfxImageColorMap *maskColorMap);
+
     virtual FontInfo* getFont(char*id);
 };