From 6c3ca0cf2c626fce12897ea0937c07f2d7863d2f Mon Sep 17 00:00:00 2001 From: Martin Kretzschmar Date: Thu, 23 Dec 2004 01:08:19 +0000 Subject: add GnomePrintJob to EvPrintJob constructor arguments. * shell/ev-window.c (ev_window_print): add GnomePrintJob to EvPrintJob constructor arguments. * backend/ev-ps-exporter.c, backend/ev-ps-exporter.h: interface for documents that can export PostScript (page by page). * backend/Makefile.am (libevbackend_la_SOURCES): add them. * pdf/xpdf/pdf-document.cc (pdf_document_ps_export_begin) (pdf_document_ps_export_do_page, pdf_document_ps_export_end) (pdf_document_ps_exporter_iface_init: Implement EvPSExporter. * pdf/xpdf/Makefile.am (libxpdf_la_SOURCES): build PSOutputDev. --- (limited to 'backend') diff --git a/backend/Makefile.am b/backend/Makefile.am index 2f54157..5ccd5a1 100644 --- a/backend/Makefile.am +++ b/backend/Makefile.am @@ -17,6 +17,8 @@ libevbackend_la_SOURCES= \ ev-document-thumbnails.h \ ev-document-bookmarks.c \ ev-document-bookmarks.h \ + ev-ps-exporter.c \ + ev-ps-exporter.h \ $(NULL) ev-backend-marshalers.h: ev-backend-marshalers.list diff --git a/backend/ev-ps-exporter.c b/backend/ev-ps-exporter.c new file mode 100644 index 0000000..f5b5568 --- /dev/null +++ b/backend/ev-ps-exporter.c @@ -0,0 +1,71 @@ +/* this file is part of evince, a gnome document viewer + * + * Copyright (C) 2004 Martin Kretzschmar + * + * Author: + * Martin Kretzschmar + * + * Evince 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 of the License, or + * (at your option) any later version. + * + * Evince 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. + */ + +#include "config.h" + +#include "ev-ps-exporter.h" + +GType +ev_ps_exporter_get_type (void) +{ + static GType type = 0; + + if (G_UNLIKELY (type == 0)) + { + static const GTypeInfo our_info = + { + sizeof (EvPSExporterIface), + NULL, + NULL, + }; + + type = g_type_register_static (G_TYPE_INTERFACE, + "EvPSExporter", + &our_info, (GTypeFlags)0); + } + + return type; +} + +void +ev_ps_exporter_begin (EvPSExporter *exporter, const char *filename) +{ + EvPSExporterIface *iface = EV_PS_EXPORTER_GET_IFACE (exporter); + + iface->begin (exporter, filename); +} + +void +ev_ps_exporter_do_page (EvPSExporter *exporter, int page) +{ + EvPSExporterIface *iface = EV_PS_EXPORTER_GET_IFACE (exporter); + + iface->do_page (exporter, page); +} + +void +ev_ps_exporter_end (EvPSExporter *exporter) +{ + EvPSExporterIface *iface = EV_PS_EXPORTER_GET_IFACE (exporter); + + iface->end (exporter); +} diff --git a/backend/ev-ps-exporter.h b/backend/ev-ps-exporter.h new file mode 100644 index 0000000..58917e8 --- /dev/null +++ b/backend/ev-ps-exporter.h @@ -0,0 +1,58 @@ +/* this file is part of evince, a gnome document viewer + * + * Copyright (C) 2004 Martin Kretzschmar + * + * Author: + * Martin Kretzschmar + * + * Evince 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 of the License, or + * (at your option) any later version. + * + * Evince 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 EV_PS_EXPORTER_H +#define EV_PS_EXPORTER_H + +#include + +G_BEGIN_DECLS + +#define EV_TYPE_PS_EXPORTER (ev_ps_exporter_get_type ()) +#define EV_PS_EXPORTER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EV_TYPE_PS_EXPORTER, EvPSExporter)) +#define EV_PS_EXPORTER_IFACE(k) (G_TYPE_CHECK_CLASS_CAST((k), EV_TYPE_PS_EXPORTER, EvPSExporterIface)) +#define EV_IS_PS_EXPORTER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EV_TYPE_PS_EXPORTER)) +#define EV_IS_PS_EXPORTER_IFACE(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EV_TYPE_PS_EXPORTER)) +#define EV_PS_EXPORTER_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), EV_TYPE_PS_EXPORTER, EvPSExporterIface)) + +typedef struct _EvPSExporter EvPSExporter; +typedef struct _EvPSExporterIface EvPSExporterIface; + +struct _EvPSExporterIface { + GTypeInterface base_iface; + + /* Methods */ + void (* begin) (EvPSExporter *exporter, + const char *filename); + void (* do_page) (EvPSExporter *exporter, + int page); + void (* end) (EvPSExporter *exporter); +}; + +GType ev_ps_exporter_get_type (void); +void ev_ps_exporter_begin (EvPSExporter *exporter, const char *filename); +void ev_ps_exporter_do_page (EvPSExporter *exporter, int page); +void ev_ps_exporter_end (EvPSExporter *exporter); + +G_END_DECLS + +#endif -- cgit v0.9.1