X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=pdf%2Fxpdf%2Fgpdf.cc;h=4ff49ea18e96207dcfdb28cfbf0880dd5487036c;hb=d2af08d817420cd9cf59b28de23944c1afa138ba;hp=8a8860f4448e95442cfba4afa68ea15290a62b1a;hpb=b0f6e6f4e92ce461fa48d5d95ba7a863fc35966b;p=evince.git diff --git a/pdf/xpdf/gpdf.cc b/pdf/xpdf/gpdf.cc index 8a8860f4..4ff49ea1 100644 --- a/pdf/xpdf/gpdf.cc +++ b/pdf/xpdf/gpdf.cc @@ -38,22 +38,24 @@ #include "config.h" GBool printCommands = gFalse; -gint gpdf_debug; +gint gpdf_debug=1; 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,60 @@ doc_config_event (GtkWidget *widget, DOC_ROOT *doc) widget->allocation.width, widget->allocation.height, -1); - gdk_draw_rectangle (doc->pixmap, - widget->style->white_gc, - TRUE, - 0, 0, - widget->allocation.width, - widget->allocation.height); + + printf ("Creating pixmap of size %d %d\n", + widget->allocation.width, widget->allocation.height); + gdk_color_white (gtk_widget_get_default_colormap(), &doc->paper); + doc->out = new GOutputDev (doc->pixmap, doc->paper); + + + { + GdkGCValues gcValues; + GdkGC *strokeGC; + + gdk_color_white (gtk_widget_get_default_colormap (), &gcValues.foreground); + gdk_color_black (gtk_widget_get_default_colormap (), &gcValues.background); + gcValues.line_width = 1; + gcValues.line_style = GDK_LINE_SOLID; + strokeGC = gdk_gc_new_with_values ( + doc->pixmap, &gcValues, + (enum GdkGCValuesMask)(GDK_GC_FOREGROUND | GDK_GC_BACKGROUND | GDK_GC_LINE_WIDTH | GDK_GC_LINE_STYLE)); + + gdk_draw_rectangle (doc->pixmap, + strokeGC, + TRUE, + 0, 0, + widget->allocation.width, + widget->allocation.height); + } return TRUE; } static gint -doc_redraw_event (GtkWidget *widget, DOC_ROOT *doc) +doc_redraw_event (GtkWidget *widget, GdkEventExpose *event) { -/* 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_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, 86, 0, gTrue); + gdk_draw_line (doc->pixmap, + widget->style->black_gc, + event->area.x, event->area.y, + event->area.width, event->area.height); + 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); + } else + printf ("Null pointer error %p %p\n", doc->out, doc->pdf); - doc->pdf->displayPage(doc->out, 1, 1, 0, gTrue); - -/* 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 +165,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 +176,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 +192,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, @@ -215,6 +252,8 @@ main (int argc, char *argv []) gnome_init_with_popt_table ( "gpdf", "0.1", argc, argv, gpdf_popt_options, 0, &ctx); + + errorInit(); initParams (xpdfConfigFile); /* Init font path */ @@ -233,9 +272,9 @@ main (int argc, char *argv []) poptFreeContext (ctx); - freeParams(); - gtk_main (); + freeParams(); + /* Destroy files */ }