]> www.fi.muni.cz Git - evince.git/commitdiff
Fix some amusing bugs.
authorMichael Meeks <mmeeks@src.gnome.org>
Thu, 3 Jun 1999 19:46:15 +0000 (19:46 +0000)
committerMichael Meeks <mmeeks@src.gnome.org>
Thu, 3 Jun 1999 19:46:15 +0000 (19:46 +0000)
pdf/xpdf/ChangeLog
pdf/xpdf/Makefile.in
pdf/xpdf/Params.cc
pdf/xpdf/gpdf.cc

index e33fe4900b9c4acf7685d10a6a0f4072577512b1..81019bd6f9e907009475f1dd2491015efff17660 100644 (file)
@@ -1,3 +1,14 @@
+1999-06-03  Michael Meeks  <michael@edenproject.org>
+
+       * gpdf.cc (main): Moved freeParams() to after the main
+       loop !
+
+       * Params.cc (initParams): Added assert on fontPathLen.
+       (freeParams): Clean global pointers on free.
+
+       * Makefile.in (CXXFLAGS): Added LTKSRCDIR and
+       Xpm_CFLAGS to CXXFLAGS.
+
 1999-05-29  Michael Meeks  <michael@edenproject.org>
 
        * Makefile.in (GPDF_OBJS): Remove XOutputDev
index 0e1412892f5c8b97e5bd72687e2f642306a7db75..29372f6504abefa7ad4cbef6ebfdd925c39049d0 100644 (file)
@@ -15,7 +15,7 @@ LTKSRCDIR = $(srcdir)/../ltk
 LTKLIBDIR = ../ltk
 
 #CXXFLAGS = @CXXFLAGS@ @DEFS@ @OPTIONS@ -I$(GOOSRCDIR) -I$(LTKSRCDIR) -I$(srcdir) @X_CFLAGS@ @Xpm_CFLAGS@
-CXXFLAGS = @CXXFLAGS@ @DEFS@ @OPTIONS@ -I$(GOOSRCDIR) `gnome-config --cflags gnomeui` -I$(srcdir) @X_CFLAGS@
+CXXFLAGS = @CXXFLAGS@ @DEFS@ @OPTIONS@ -I$(GOOSRCDIR) -I$(LTKSRCDIR) `gnome-config --cflags gnomeui` -I$(srcdir) @Xpm_CFLAGS@ @X_CFLAGS@
 XLIBS = @Xpm_LIBS@ @X_PRE_LIBS@ @X_LIBS@ -lX11 @X_EXTRA_LIBS@
 
 OTHERLIBS = @LIBS@
@@ -68,7 +68,7 @@ CXX_SRC = \
 
 #------------------------------------------------------------------------
 
-all: gpdf
+all: gpdf xpdf
 
 #all: xpdf$(EXE) pdftops$(EXE) pdftotext$(EXE) pdfinfo$(EXE) \
 #      pdftopbm$(EXE) pdfimages$(EXE)
index 35adfdfe00ad4b1544e2e51c27acec60caaee6be..8b6c5083b27050f3edc7b1b68b44315ae00df054 100644 (file)
@@ -73,9 +73,12 @@ void freeParams() {
   int i;
 
   if (fontPath) {
-    for (i = 0; i < fontPathLen; ++i)
+    for (i = 0; i < fontPathLen; ++i) {
       gfree(fontPath[i]);
+      fontPath[i] = NULL;
+    }
     gfree(fontPath);
+    fontPath = NULL;
   }
   if (devFontMap) {
     for (i = 0; i < devFontMapLen; ++i) {
index 8a8860f4448e95442cfba4afa68ea15290a62b1a..147222b409aefcbbf3c6f700a18cdd07180137ba 100644 (file)
@@ -41,19 +41,21 @@ GBool printCommands = gFalse;
 gint  gpdf_debug;
 poptContext ctx;
 
+#define DOC_ROOT_MAGIC 0xad3f556d
 struct DOC_ROOT {
+  guint32        magic;
   GString        *title;
   PDFDoc         *pdf;
   GtkWidget      *toplevel;
   GtkWidget      *table;
   GnomeAppBar    *appbar;
   GtkDrawingArea *area;
-  GdkVisual      *visual;
   GdkPixmap      *pixmap;
   OutputDev      *out;
   GdkColor        paper;
 };
 
+DOC_ROOT *hack_global = NULL;
 
 static void
 crummy_cmd (GtkWidget *widget, DOC_ROOT *tmp)
@@ -85,10 +87,12 @@ static GnomeUIInfo main_menu [] = {
 //------------------------------------------------------------------------
 
 static gint
-doc_config_event (GtkWidget *widget, DOC_ROOT *doc)
+doc_config_event (GtkWidget *widget, void *ugly)
 {
-  if (!doc)
-    return TRUE;
+  DOC_ROOT *doc = hack_global;
+
+  g_return_val_if_fail (doc, FALSE);
+  g_return_val_if_fail (doc->magic == DOC_ROOT_MAGIC, FALSE);
 
   if (doc->pixmap)
     gdk_pixmap_unref(doc->pixmap);
@@ -97,32 +101,43 @@ doc_config_event (GtkWidget *widget, DOC_ROOT *doc)
                                widget->allocation.width,
                                widget->allocation.height,
                                -1);
-  gdk_draw_rectangle (doc->pixmap,
+
+  gdk_color_white (gtk_widget_get_default_colormap(), &doc->paper);
+  doc->out    = new GOutputDev (doc->pixmap, doc->paper);
+
+/*  gdk_draw_rectangle (doc->pixmap,
                      widget->style->white_gc,
                      TRUE,
                      0, 0,
                      widget->allocation.width,
-                     widget->allocation.height);
+                     widget->allocation.height);*/
+  printf ("Configured...\n");
   return TRUE;
 }
 
 static gint
-doc_redraw_event (GtkWidget *widget, DOC_ROOT *doc)
+doc_redraw_event (GtkWidget *widget, void *ugly)
 {
-/* Redraw the screen from the backing pixmap */
-
-  gdk_color_white (gtk_widget_get_default_colormap(), &doc->paper);
-  doc->out    = new GOutputDev (doc->pixmap, doc->paper);
-  
-  doc->pdf->displayPage(doc->out, 1, 1, 0, gTrue);
+  DOC_ROOT *doc = hack_global;
+
+  g_return_val_if_fail (doc, FALSE);
+  g_return_val_if_fail (doc->magic == DOC_ROOT_MAGIC, FALSE);
+
+  if (doc->out && doc->pdf) {
+    printf ("There are %d pages\n", doc->pdf->getNumPages());
+
+    doc->pdf->displayPage(doc->out, 1, 72, 0, gTrue);
+    gdk_draw_pixmap (widget->window,
+                    widget->style->white_gc,
+                    doc->pixmap,
+                    0, 0,
+                    0, 0,
+                    widget->allocation.width,
+                    widget->allocation.height);
+    
+  } else
+    printf ("Null pointer error %p %p\n", doc->out, doc->pdf);
   
-/*  gdk_draw_pixmap(widget->window,
-                 widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
-                 doc->pixmap,
-                 event->area.x, event->area.y,
-                 event->area.x, event->area.y,
-                 event->area.width, event->area.height);*/
-
   return FALSE;
 }
 
@@ -133,6 +148,9 @@ loadFile(GString *fileName)
   char s[20];
   char *p;
 
+  hack_global = doc;
+
+  doc->magic = DOC_ROOT_MAGIC;
   // open PDF file
   doc->pdf = new PDFDoc(fileName);
   if (!doc->pdf->isOk()) {
@@ -141,6 +159,8 @@ loadFile(GString *fileName)
     return gFalse;
   }
 
+  g_assert (doc->pdf->getCatalog());
+
   doc->toplevel = gnome_app_new ("gpdf", "gpdf");
   gtk_window_set_policy(GTK_WINDOW(doc->toplevel), 1, 1, 0);
   gtk_window_set_default_size (GTK_WINDOW(doc->toplevel), 600, 400);
@@ -155,10 +175,10 @@ loadFile(GString *fileName)
 
   doc->pixmap = NULL;
   doc->area   = GTK_DRAWING_AREA (gtk_drawing_area_new ());
-  gtk_signal_connect (GTK_OBJECT (doc->area), "expose_event",
-                     (GtkSignalFunc) doc_redraw_event, NULL);
   gtk_signal_connect (GTK_OBJECT(doc->area),"configure_event",
-                     (GtkSignalFunc) doc_config_event, NULL);
+                     (GtkSignalFunc) doc_config_event, doc);
+  gtk_signal_connect (GTK_OBJECT (doc->area), "expose_event",
+                     (GtkSignalFunc) doc_redraw_event, doc);
 
   gtk_table_attach (GTK_TABLE (doc->table), GTK_WIDGET (doc->area),
                    0, 1, 1, 2,
@@ -233,9 +253,9 @@ main (int argc, char *argv [])
 
   poptFreeContext (ctx);
 
-  freeParams();
-
   gtk_main ();
 
+  freeParams();
+
   /* Destroy files */
 }