diff options
author | Kristian Høgsberg <krh@redhat.com> | 2006-04-12 02:07:07 +0000 |
---|---|---|
committer | Kristian Høgsberg <krh@redhat.com> | 2006-04-12 02:07:07 +0000 |
commit | d839a0bd78361930e5e2fe889df12e1e853ffed3 (patch) | |
tree | e0bb395c98ad609c8f08c112df82700bb124d990 | |
parent | b198c9801c668014c0979c57033a0637e7e046e2 (diff) |
2006-04-11 Kristian Høgsberg <krh@redhat.com>
* configure.ac:
* poppler-glib.pc.in:
* glib/Makefile.am:
* glib/poppler-page.cc:
* glib/poppler-page.h:
* glib/poppler.h:
* poppler/CairoOutputDev.cc:
* poppler/CairoOutputDev.h:
* glib/poppler-features.h.in:
Make the CairoOutputDev render to a cairo_t instead of a
cairo_surface_t and expose that functionality in the glib wrapper
(poppler_page_render).
* test/Makefile.am:
* test/gtk-cairo-test.cc:
Update gtk-cairo-test to use this new interface and add a spin
button for changing page (#5951).
* utils/Makefile.am (EXTRA_DIST): Fix warning where this was
assigned twice.
-rw-r--r-- | ChangeLog | 23 | ||||
-rw-r--r-- | configure.ac | 8 | ||||
-rw-r--r-- | glib/Makefile.am | 10 | ||||
-rw-r--r-- | glib/poppler-features.h.in | 24 | ||||
-rw-r--r-- | glib/poppler-page.cc | 63 | ||||
-rw-r--r-- | glib/poppler-page.h | 10 | ||||
-rw-r--r-- | glib/poppler.h | 1 | ||||
-rw-r--r-- | poppler-glib.pc.in | 2 | ||||
-rw-r--r-- | poppler/CairoOutputDev.cc | 23 | ||||
-rw-r--r-- | poppler/CairoOutputDev.h | 6 | ||||
-rw-r--r-- | test/Makefile.am | 4 | ||||
-rw-r--r-- | test/gtk-cairo-test.cc | 286 | ||||
-rw-r--r-- | utils/Makefile.am | 6 |
13 files changed, 221 insertions, 245 deletions
@@ -1,3 +1,26 @@ +2006-04-11 Kristian Høgsberg <krh@redhat.com> + + * configure.ac: + * poppler-glib.pc.in: + * glib/Makefile.am: + * glib/poppler-page.cc: + * glib/poppler-page.h: + * glib/poppler.h: + * poppler/CairoOutputDev.cc: + * poppler/CairoOutputDev.h: + * glib/poppler-features.h.in: + Make the CairoOutputDev render to a cairo_t instead of a + cairo_surface_t and expose that functionality in the glib wrapper + (poppler_page_render). + + * test/Makefile.am: + * test/gtk-cairo-test.cc: + Update gtk-cairo-test to use this new interface and add a spin + button for changing page (#5951). + + * utils/Makefile.am (EXTRA_DIST): Fix warning where this was + assigned twice. + 2006-04-10 Jeff Muizelaar <jeff@infidigm.net> * poppler/CairoOutputDev.cc: take originX and originY into account in diff --git a/configure.ac b/configure.ac index 0686a531..987fc4cd 100644 --- a/configure.ac +++ b/configure.ac @@ -182,7 +182,14 @@ AM_CONDITIONAL(BUILD_CAIRO_OUTPUT, test x$enable_cairo_output = xyes) AH_TEMPLATE([HAVE_CAIRO], [Use cairo for rendering.]) if test x$enable_cairo_output = xyes; then AC_DEFINE(HAVE_CAIRO) + CAIRO_FEATURE="#define POPPLER_HAS_CAIRO 1" + CAIRO_REQ="cairo" +else + CAIRO_FEATURE="#undef POPPLER_HAS_CAIRO" + CAIRO_REQ="" fi +AC_SUBST(CAIRO_FEATURE) +AC_SUBST(CAIRO_REQ) AC_ARG_ENABLE(poppler-glib, AC_HELP_STRING([--disable-poppler-glib], @@ -306,6 +313,7 @@ splash/Makefile poppler/Makefile utils/Makefile glib/Makefile +glib/poppler-features.h glib/reference/Makefile test/Makefile qt/Makefile diff --git a/glib/Makefile.am b/glib/Makefile.am index b534abe4..1a3f97df 100644 --- a/glib/Makefile.am +++ b/glib/Makefile.am @@ -66,7 +66,8 @@ poppler_glib_includedir = $(includedir)/poppler/glib poppler_glib_include_HEADERS = \ $(poppler_glib_public_headers) \ - poppler-enums.h + poppler-enums.h \ + poppler-features.h lib_LTLIBRARIES = libpoppler-glib.la libpoppler_glib_la_SOURCES = \ @@ -98,9 +99,10 @@ test_poppler_glib_LDADD = \ $(FREETYPE_LIBS) \ $(cairo_libs) -BUILT_SOURCES = \ - poppler-enums.c \ - poppler-enums.h +BUILT_SOURCES = \ + poppler-enums.c \ + poppler-enums.h \ + poppler-features.h CLEANFILES = $(BUILT_SOURCES) $(stamp_files) DISTCLEANFILES = $(BUILT_SOURCES) $(stamp_files) diff --git a/glib/poppler-features.h.in b/glib/poppler-features.h.in new file mode 100644 index 00000000..addf1852 --- /dev/null +++ b/glib/poppler-features.h.in @@ -0,0 +1,24 @@ +/* poppler-features.h: glib interface to poppler + * Copyright (C) 2006, Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __POPPLER_FEATURES_H__ +#define __POPPLER_FEATURES_H__ + +@CAIRO_FEATURE@ + +#endif /* __POPPLER_FEATURES_H__ */ diff --git a/glib/poppler-page.cc b/glib/poppler-page.cc index 8d196d4b..41b88d21 100644 --- a/glib/poppler-page.cc +++ b/glib/poppler-page.cc @@ -127,6 +127,7 @@ poppler_page_get_index (PopplerPage *page) typedef struct { unsigned char *cairo_data; cairo_surface_t *surface; + cairo_t *cairo; } OutputDevData; static void @@ -138,19 +139,13 @@ poppler_page_prepare_output_dev (PopplerPage *page, { CairoOutputDev *output_dev; cairo_surface_t *surface; + double width, height; int cairo_width, cairo_height, cairo_rowstride; - int rotate; unsigned char *cairo_data; - rotate = (rotation + page->page->getRotate()) % 360; - - if (rotate == 90 || rotate == 270) { - cairo_width = MAX ((int)(page->page->getCropHeight() * scale + 0.5), 1); - cairo_height = MAX ((int)(page->page->getCropWidth() * scale + 0.5), 1); - } else { - cairo_width = MAX ((int)(page->page->getCropWidth() * scale + 0.5), 1); - cairo_height = MAX ((int)(page->page->getCropHeight() * scale + 0.5), 1); - } + poppler_page_get_size (page, &width, &height); + cairo_width = (int) ceil(width * scale); + cairo_height = (int) ceil(height * scale); output_dev = page->document->output_dev; cairo_rowstride = cairo_width * 4; @@ -167,7 +162,8 @@ poppler_page_prepare_output_dev (PopplerPage *page, output_dev_data->cairo_data = cairo_data; output_dev_data->surface = surface; - output_dev->setSurface (surface); + output_dev_data->cairo = cairo_create (surface); + output_dev->setCairo (output_dev_data->cairo); } static void @@ -194,7 +190,6 @@ poppler_page_copy_to_pixbuf (PopplerPage *page, cairo_width = gdk_pixbuf_get_width (pixbuf); if (cairo_height > gdk_pixbuf_get_height (pixbuf)) cairo_height = gdk_pixbuf_get_height (pixbuf); - for (y = 0; y < cairo_height; y++) { src = (unsigned int *) (cairo_data + y * cairo_rowstride); @@ -211,8 +206,9 @@ poppler_page_copy_to_pixbuf (PopplerPage *page, } } - page->document->output_dev->setSurface (NULL); + page->document->output_dev->setCairo (NULL); cairo_surface_destroy (output_dev_data->surface); + cairo_destroy (output_dev_data->cairo); gfree (output_dev_data->cairo_data); } @@ -282,13 +278,44 @@ poppler_page_copy_to_pixbuf(PopplerPage *page, #endif +#if defined (HAVE_CAIRO) + +/** + * poppler_page_render: + * @page: the page to render from + * @cairo: cairo context to render to + * + * Render the page to the given cairo context. + **/ +void +poppler_page_render (PopplerPage *page, + cairo_t *cairo) +{ + CairoOutputDev *output_dev; + + g_return_if_fail (POPPLER_IS_PAGE (page)); + + output_dev = page->document->output_dev; + output_dev->setCairo (cairo); + + page->page->displaySlice(output_dev, + 72.0, 72.0, 0, + gFalse, /* useMediaBox */ + gTrue, /* Crop */ + 0, 0, + (int) ceil (page->page->getCropWidth ()), + (int) ceil (page->page->getCropHeight ()), + NULL, /* links */ + page->document->doc->getCatalog ()); + + output_dev->setCairo (NULL); +} + +#endif + /** - * poppler_page_render_to_pixbuf: + * poppler_page_render: * @page: the page to render from - * @src_x: x coordinate of upper left corner - * @src_y: y coordinate of upper left corner - * @src_width: width of rectangle to render - * @src_height: height of rectangle to render * @scale: scale specified as pixels per point * @rotation: rotate the document by the specified degree * @pixbuf: pixbuf to render into diff --git a/glib/poppler-page.h b/glib/poppler-page.h index fce6baf6..c613bf42 100644 --- a/glib/poppler-page.h +++ b/glib/poppler-page.h @@ -24,6 +24,10 @@ #include <gdk/gdkcolor.h> #include <gdk-pixbuf/gdk-pixbuf.h> +#ifdef POPPLER_HAS_CAIRO +#include <cairo.h> +#endif + #include "poppler.h" G_BEGIN_DECLS @@ -43,6 +47,12 @@ void poppler_page_render_to_pixbuf (PopplerPage *page, double scale, int rotation, GdkPixbuf *pixbuf); + +#ifdef POPPLER_HAS_CAIRO +void poppler_page_render (PopplerPage *page, + cairo_t *cairo); +#endif + void poppler_page_get_size (PopplerPage *page, double *width, double *height); diff --git a/glib/poppler.h b/glib/poppler.h index 61fc522b..cdd3ebed 100644 --- a/glib/poppler.h +++ b/glib/poppler.h @@ -65,6 +65,7 @@ const char * poppler_get_version (void); G_END_DECLS +#include "poppler-features.h" #include "poppler-document.h" #include "poppler-page.h" #include "poppler-action.h" diff --git a/poppler-glib.pc.in b/poppler-glib.pc.in index 287ba99b..016d4671 100644 --- a/poppler-glib.pc.in +++ b/poppler-glib.pc.in @@ -6,7 +6,7 @@ includedir=@includedir@ Name: poppler-glib Description: GLib wrapper for poppler Version: @VERSION@ -Requires: poppler = @VERSION@ gobject-2.0 gdk-pixbuf-2.0 +Requires: poppler = @VERSION@ gobject-2.0 gdk-pixbuf-2.0 @CAIRO_REQ@ Libs: -L${libdir} -lpoppler-glib Cflags: -I${includedir}/poppler/glib diff --git a/poppler/CairoOutputDev.cc b/poppler/CairoOutputDev.cc index 7407978a..fdb8a233 100644 --- a/poppler/CairoOutputDev.cc +++ b/poppler/CairoOutputDev.cc @@ -52,12 +52,12 @@ CairoOutputDev::CairoOutputDev() { FT_Init_FreeType(&ft_lib); fontEngine = NULL; glyphs = NULL; - surface = NULL; fill_pattern = NULL; stroke_pattern = NULL; stroke_opacity = 1.0; fill_opacity = 1.0; textClipPath = NULL; + cairo = NULL; } CairoOutputDev::~CairoOutputDev() { @@ -65,16 +65,19 @@ CairoOutputDev::~CairoOutputDev() { delete fontEngine; } FT_Done_FreeType(ft_lib); - cairo_surface_destroy (surface); + cairo_destroy (cairo); cairo_pattern_destroy (stroke_pattern); cairo_pattern_destroy (fill_pattern); } -void CairoOutputDev::setSurface(cairo_surface_t *surface) +void CairoOutputDev::setCairo(cairo_t *cairo) { - cairo_surface_destroy (this->surface); - cairo_surface_reference (surface); - this->surface = surface; + if (this->cairo != NULL) + cairo_destroy (this->cairo); + if (cairo != NULL) + this->cairo = cairo_reference (cairo); + else + this->cairo = NULL; } void CairoOutputDev::startDoc(XRef *xrefA) { @@ -85,14 +88,6 @@ void CairoOutputDev::startDoc(XRef *xrefA) { fontEngine = new CairoFontEngine(ft_lib); } -void CairoOutputDev::startPage(int pageNum, GfxState *state) { - cairo = cairo_create (surface); -} - -void CairoOutputDev::endPage() { - cairo_destroy (cairo); -} - void CairoOutputDev::drawLink(Link *link, Catalog *catalog) { } diff --git a/poppler/CairoOutputDev.h b/poppler/CairoOutputDev.h index bbf0ce44..f2c7284a 100644 --- a/poppler/CairoOutputDev.h +++ b/poppler/CairoOutputDev.h @@ -57,10 +57,10 @@ public: //----- initialization and control // Start a page. - virtual void startPage(int pageNum, GfxState *state); + virtual void startPage(int pageNum, GfxState *state) { } // End a page. - virtual void endPage(); + virtual void endPage() { } //----- link borders virtual void drawLink(Link *link, Catalog *catalog); @@ -136,7 +136,7 @@ public: GBool isReverseVideo() { return gFalse; } - void setSurface (cairo_surface_t *surface); + void setCairo (cairo_t *cr); protected: void doPath(GfxState *state, GfxPath *path); diff --git a/test/Makefile.am b/test/Makefile.am index 744d8519..f16b9b79 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -30,6 +30,8 @@ endif INCLUDES = \ -I$(top_srcdir) \ -I$(top_srcdir)/poppler \ + -I$(top_srcdir)/glib \ + -I$(top_builddir)/glib \ $(cairo_includes) \ $(GTK_TEST_CFLAGS) @@ -47,7 +49,7 @@ gtk_cairo_test_SOURCES = \ gtk_cairo_test_LDADD = \ $(top_builddir)/poppler/libpoppler.la \ - $(top_builddir)/poppler/libpoppler-cairo.la \ + $(top_builddir)/glib/libpoppler-glib.la \ $(CAIRO_LIBS) \ $(GTK_TEST_LIBS) diff --git a/test/gtk-cairo-test.cc b/test/gtk-cairo-test.cc index e3596118..df8eb5ed 100644 --- a/test/gtk-cairo-test.cc +++ b/test/gtk-cairo-test.cc @@ -13,136 +13,23 @@ #pragma implementation #endif -#include <goo/gmem.h> -#include <splash/SplashTypes.h> -#include <splash/SplashBitmap.h> -#include "Object.h" -#include "GfxState.h" - +#include <math.h> #include <gdk/gdk.h> #include <gdk/gdkx.h> -#include "CairoOutputDev.h" #include <cairo-xlib.h> #include <X11/Xutil.h> - -#include "PDFDoc.h" -#include "GlobalParams.h" -#include "ErrorCodes.h" #include <gtk/gtk.h> - -class GDKCairoOutputDev: public CairoOutputDev { -public: - - GDKCairoOutputDev(GdkDrawable *drawable, - void (*redrawCbkA)(void *data), - void *redrawCbkDataA); - - virtual ~GDKCairoOutputDev(); - - // Start a page. - virtual void startPage(int pageNum, GfxState *state); - - //----- special access - - // Clear out the document (used when displaying an empty window). - void clear(); - - // Copy the rectangle (srcX, srcY, width, height) to (destX, destY) - // in destDC. - void redraw(int srcX, int srcY, - GdkDrawable *drawable, - int destX, int destY, - int width, int height); - - int getPixmapWidth (void) { return pixmapWidth; } - int getPixmapHeight (void) { return pixmapHeight; } - -private: - - int incrementalUpdate; - void (*redrawCbk)(void *data); - void *redrawCbkData; - int pixmapWidth, pixmapHeight; - GdkPixmap *pixmap, *drawable; -}; - -GDKCairoOutputDev::GDKCairoOutputDev(GdkDrawable *drawableA, - void (*redrawCbkA)(void *data), - void *redrawCbkDataA): - CairoOutputDev() -{ - drawable = drawableA; - redrawCbk = redrawCbkA; - redrawCbkData = redrawCbkDataA; - pixmap = NULL; -} - -GDKCairoOutputDev::~GDKCairoOutputDev() { -} - -void -GDKCairoOutputDev::startPage(int pageNum, GfxState *state) { - Display *display; - Drawable xid; - GdkGC *gc; - GdkColor white; - cairo_surface_t *surface; - int w, h; - - w = state ? (int)(state->getPageWidth() + 0.5) : 1; - h = state ? (int)(state->getPageHeight() + 0.5) : 1; - - if (!pixmap || pixmapWidth != w || h != pixmapHeight != h) { - if (pixmap) - g_object_unref (G_OBJECT (pixmap)); - - pixmap = gdk_pixmap_new (drawable, w, h, -1); - pixmapWidth = w; - pixmapHeight = h; - - gc = gdk_gc_new (pixmap); - white.red = 0xffff; - white.green = 0xffff; - white.blue = 0xffff; - gdk_gc_set_rgb_fg_color (gc, &white); - gdk_draw_rectangle (pixmap, gc, TRUE, 0, 0, w, h); - g_object_unref (G_OBJECT (gc)); - } - - if (pixmap) { - display = gdk_x11_drawable_get_xdisplay (pixmap); - xid = gdk_x11_drawable_get_xid (pixmap); - - surface = cairo_xlib_surface_create(display, xid, - DefaultVisual(display, DefaultScreen(display)), - w, h); - setSurface(surface); - cairo_surface_destroy (surface); - } - - CairoOutputDev::startPage(pageNum, state); -} - -void GDKCairoOutputDev::redraw(int srcX, int srcY, - GdkDrawable *drawable, - int destX, int destY, - int width, int height) { - GdkGC *gc; - - gc = gdk_gc_new (drawable); - gdk_draw_drawable (drawable, gc, - pixmap, srcX, srcY, - destX, destY, width, height); - g_object_unref (gc); -} +#include <poppler.h> typedef struct { GtkWidget *window; GtkWidget *sw; GtkWidget *drawing_area; - GDKCairoOutputDev *out; - PDFDoc *doc; + PopplerPage *page; + PopplerDocument *document; + cairo_surface_t *surface; + int *window_count; } View; static void @@ -153,109 +40,117 @@ drawing_area_expose (GtkWidget *drawing_area, View *v = (View*) data; GdkRectangle document; GdkRectangle draw; + cairo_t *cr; gdk_window_clear (drawing_area->window); - - document.x = 0; - document.y = 0; - document.width = v->out->getPixmapWidth(); - document.height = v->out->getPixmapHeight(); + cr = gdk_cairo_create (drawing_area->window); - if (gdk_rectangle_intersect (&document, &event->area, &draw)) - { - v->out->redraw (draw.x, draw.y, - drawing_area->window, - draw.x, draw.y, - draw.width, draw.height); - } + cairo_set_source_surface (cr, v->surface, 0, 0); + cairo_paint (cr); + cairo_destroy (cr); } -static int -view_load (View *v, - const char *filename) +static void +view_set_page (View *v, int page) { - PDFDoc *newDoc; int err; - GooString *filename_g; int w, h; - - filename_g = new GooString (filename); - - // open the PDF file - newDoc = new PDFDoc(filename_g, 0, 0); - - delete filename_g; - - if (!newDoc->isOk()) - { - err = newDoc->getErrorCode(); - delete newDoc; - return err; - } - - if (v->doc) - delete v->doc; - v->doc = newDoc; - - v->out->startDoc(v->doc->getXRef()); - - v->doc->displayPage (v->out, 1, 72, 72, 0, gFalse, gTrue, gTrue); - - w = v->out->getPixmapWidth(); - h = v->out->getPixmapHeight(); - + double width, height; + cairo_t *cr; + + v->page = poppler_document_get_page (v->document, page); + poppler_page_get_size (v->page, &width, &height); + w = (int) ceil(width); + h = (int) ceil(height); + cairo_surface_destroy (v->surface); + v->surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, w, h); + cr = cairo_create (v->surface); + poppler_page_render (v->page, cr); + cairo_destroy (cr); gtk_widget_set_size_request (v->drawing_area, w, h); - - return errNone; + gtk_widget_queue_draw (v->drawing_area); } static void -view_show (View *v) +redraw_callback (void *data) { - gtk_widget_show (v->window); + View *v = (View*) data; + + gtk_widget_queue_draw (v->drawing_area); } static void -redraw_callback (void *data) +page_changed_callback (GtkSpinButton *button, View *v) { - View *v = (View*) data; + int page; - gtk_widget_queue_draw (v->drawing_area); + page = gtk_spin_button_get_value_as_int (button); + view_set_page (v, page); +} + +static void +destroy_window_callback (GtkWindow *window, View *v) +{ + if (--(*v->window_count) == 0) + gtk_main_quit(); } static View* -view_new (void) +view_new (const char *filename, int *window_count) { View *v; GtkWidget *window; GtkWidget *drawing_area; GtkWidget *sw; + GtkWidget *vbox, *hbox; + GtkWidget *spin_button; + int n_pages; + + v = g_new0 (View, 1); + + v->document = poppler_document_new_from_file (filename, NULL, NULL); + if (v->document == NULL) + return NULL; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + vbox = gtk_vbox_new(FALSE, 5); + gtk_container_add (GTK_CONTAINER (window), vbox); drawing_area = gtk_drawing_area_new (); sw = gtk_scrolled_window_new (NULL, NULL); - gtk_container_add (GTK_CONTAINER (window), sw); - gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), drawing_area); + gtk_box_pack_end (GTK_BOX (vbox), sw, TRUE, TRUE, 0); + gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), + drawing_area); - gtk_widget_show_all (sw); - gtk_widget_realize (window); + n_pages = poppler_document_get_n_pages (v->document); + spin_button = gtk_spin_button_new_with_range (0, n_pages - 1, 1); + g_signal_connect (G_OBJECT (spin_button), "value-changed", + G_CALLBACK (page_changed_callback), v); + hbox = gtk_hbox_new (FALSE, 5); + gtk_box_pack_end (GTK_BOX (hbox), spin_button, FALSE, TRUE, 0); - v = g_new0 (View, 1); + gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); + + gtk_widget_show_all (window); + gtk_widget_realize (window); v->window = window; v->drawing_area = drawing_area; v->sw = sw; - v->out = new GDKCairoOutputDev (window->window, redraw_callback, (void*) v); - v->doc = 0; + v->window_count = window_count; g_signal_connect (drawing_area, "expose_event", G_CALLBACK (drawing_area_expose), (void*) v); + g_signal_connect (window, + "destroy", + G_CALLBACK (destroy_window_callback), + (void*) v); + return v; } @@ -263,39 +158,30 @@ int main (int argc, char *argv []) { View *v; - int i; - + int i, window_count; + gtk_init (&argc, &argv); - globalParams = new GlobalParams("/etc/xpdfrc"); - if (argc == 1) { fprintf (stderr, "usage: %s PDF-FILES...\n", argv[0]); return -1; } - - i = 1; - while (i < argc) - { - int err; - - v = view_new (); - - err = view_load (v, argv[i]); - - if (err != errNone) - g_printerr ("Error loading document!\n"); + window_count = 0; + for (i = 1; i < argc; i++) { + v = view_new (argv[i], &window_count); + if (v == NULL) { + g_printerr ("Error loading %s\n", argv[i]); + continue; + } - view_show (v); - - ++i; - } - - gtk_main (); + view_set_page (v, 0); + window_count++; + } - delete globalParams; + if (window_count > 0) + gtk_main (); return 0; } diff --git a/utils/Makefile.am b/utils/Makefile.am index 3b502342..a84f4a15 100644 --- a/utils/Makefile.am +++ b/utils/Makefile.am @@ -29,8 +29,6 @@ bin_PROGRAMS = \ pdftohtml \ $(pdftoppm_binary) -EXTRA_DIST = pdf2xml.dtd - dist_man1_MANS = \ pdffonts.1 \ pdfimages.1 \ @@ -75,6 +73,6 @@ pdftohtml_SOURCES = \ $(common) # Yay, automake! It should be able to figure out that it has to dist -# this file, but nooo. So we just add it here. +# pdftoppm.1, but nooo. So we just add it here. -EXTRA_DIST = pdftoppm.1 +EXTRA_DIST = pdf2xml.dtd pdftoppm.1 |