diff options
Diffstat (limited to 'backend')
-rw-r--r-- | backend/Makefile.am | 4 | ||||
-rw-r--r-- | backend/ev-file-exporter.c | 91 | ||||
-rw-r--r-- | backend/ev-file-exporter.h | 84 | ||||
-rw-r--r-- | backend/ev-ps-exporter.c | 74 | ||||
-rw-r--r-- | backend/ev-ps-exporter.h | 68 |
5 files changed, 177 insertions, 144 deletions
diff --git a/backend/Makefile.am b/backend/Makefile.am index bcf975a..2de2f5f 100644 --- a/backend/Makefile.am +++ b/backend/Makefile.am @@ -43,8 +43,8 @@ libevbackend_la_SOURCES= \ ev-document-find.c \ ev-document-find.h \ ev-document-info.h \ - ev-ps-exporter.c \ - ev-ps-exporter.h \ + ev-file-exporter.c \ + ev-file-exporter.h \ ev-render-context.h \ ev-render-context.c \ ev-selection.h \ diff --git a/backend/ev-file-exporter.c b/backend/ev-file-exporter.c new file mode 100644 index 0000000..7a4e902 --- /dev/null +++ b/backend/ev-file-exporter.c @@ -0,0 +1,91 @@ +/* this file is part of evince, a gnome document viewer + * + * Copyright (C) 2004 Martin Kretzschmar + * + * Author: + * Martin Kretzschmar <martink@gnome.org> + * + * 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 "ev-file-exporter.h" + +GType +ev_file_exporter_get_type (void) +{ + static GType type = 0; + + if (G_UNLIKELY (type == 0)) { + const GTypeInfo our_info = + { + sizeof (EvFileExporterIface), + NULL, + NULL, + }; + + type = g_type_register_static (G_TYPE_INTERFACE, + "EvFileExporter", + &our_info, (GTypeFlags)0); + } + + return type; +} + +gboolean +ev_file_exporter_format_supported (EvFileExporter *exporter, + EvFileExporterFormat format) +{ + EvFileExporterIface *iface = EV_FILE_EXPORTER_GET_IFACE (exporter); + + if (format < EV_FILE_FORMAT_PS || + format > EV_FILE_FORMAT_PDF) + return FALSE; + + return iface->format_supported (exporter, format); +} + +void +ev_file_exporter_begin (EvFileExporter *exporter, + EvFileExporterFormat format, + const gchar *filename, + gint first_page, + gint last_page, + gdouble paper_width, + gdouble paper_height, + gboolean duplex) +{ + EvFileExporterIface *iface = EV_FILE_EXPORTER_GET_IFACE (exporter); + + g_return_if_fail (ev_file_exporter_format_supported (exporter, format)); + + iface->begin (exporter, format, filename, first_page, last_page, + paper_width, paper_height, duplex); +} + +void +ev_file_exporter_do_page (EvFileExporter *exporter, EvRenderContext *rc) +{ + EvFileExporterIface *iface = EV_FILE_EXPORTER_GET_IFACE (exporter); + + iface->do_page (exporter, rc); +} + +void +ev_file_exporter_end (EvFileExporter *exporter) +{ + EvFileExporterIface *iface = EV_FILE_EXPORTER_GET_IFACE (exporter); + + iface->end (exporter); +} diff --git a/backend/ev-file-exporter.h b/backend/ev-file-exporter.h new file mode 100644 index 0000000..f0e517c --- /dev/null +++ b/backend/ev-file-exporter.h @@ -0,0 +1,84 @@ +/* this file is part of evince, a gnome document viewer + * + * Copyright (C) 2004 Martin Kretzschmar + * + * Author: + * Martin Kretzschmar <martink@gnome.org> + * + * 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_FILE_EXPORTER_H +#define EV_FILE_EXPORTER_H + +#include <glib-object.h> + +#include "ev-render-context.h" + +G_BEGIN_DECLS + +typedef enum { + EV_FILE_FORMAT_PS, + EV_FILE_FORMAT_PDF, + EV_FILE_FORMAT_UNKNOWN +} EvFileExporterFormat; + +#define EV_TYPE_FILE_EXPORTER (ev_file_exporter_get_type ()) +#define EV_FILE_EXPORTER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EV_TYPE_FILE_EXPORTER, EvFileExporter)) +#define EV_FILE_EXPORTER_IFACE(k) (G_TYPE_CHECK_CLASS_CAST((k), EV_TYPE_FILE_EXPORTER, EvFileExporterIface)) +#define EV_IS_FILE_EXPORTER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EV_TYPE_FILE_EXPORTER)) +#define EV_IS_FILE_EXPORTER_IFACE(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EV_TYPE_FILE_EXPORTER)) +#define EV_FILE_EXPORTER_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), EV_TYPE_FILE_EXPORTER, EvFileExporterIface)) + +typedef struct _EvFileExporter EvFileExporter; +typedef struct _EvFileExporterIface EvFileExporterIface; + +struct _EvFileExporterIface { + GTypeInterface base_iface; + + /* Methods */ + gboolean (* format_supported) (EvFileExporter *exporter, + EvFileExporterFormat format); + void (* begin) (EvFileExporter *exporter, + EvFileExporterFormat format, + const gchar *filename, + gint first_page, + gint last_page, + gdouble paper_width, + gdouble paper_height, + gboolean duplex); + void (* do_page) (EvFileExporter *exporter, + EvRenderContext *rc); + void (* end) (EvFileExporter *exporter); +}; + +GType ev_file_exporter_get_type (void) G_GNUC_CONST; +gboolean ev_file_exporter_format_supported (EvFileExporter *exporter, + EvFileExporterFormat format); +void ev_file_exporter_begin (EvFileExporter *exporter, + EvFileExporterFormat format, + const gchar *filename, + gint first_page, + gint last_page, + gdouble paper_width, + gdouble paper_height, + gboolean duplex); +void ev_file_exporter_do_page (EvFileExporter *exporter, + EvRenderContext *rc); +void ev_file_exporter_end (EvFileExporter *exporter); + +G_END_DECLS + +#endif diff --git a/backend/ev-ps-exporter.c b/backend/ev-ps-exporter.c deleted file mode 100644 index 18c3536..0000000 --- a/backend/ev-ps-exporter.c +++ /dev/null @@ -1,74 +0,0 @@ -/* this file is part of evince, a gnome document viewer - * - * Copyright (C) 2004 Martin Kretzschmar - * - * Author: - * Martin Kretzschmar <martink@gnome.org> - * - * 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)) - { - 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, - int first_page, int last_page, - double paper_width, double paper_height, gboolean duplex) -{ - EvPSExporterIface *iface = EV_PS_EXPORTER_GET_IFACE (exporter); - - iface->begin (exporter, filename, first_page, last_page, - paper_width, paper_height, duplex); -} - -void -ev_ps_exporter_do_page (EvPSExporter *exporter, EvRenderContext *rc) -{ - EvPSExporterIface *iface = EV_PS_EXPORTER_GET_IFACE (exporter); - - iface->do_page (exporter, rc); -} - -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 deleted file mode 100644 index 4115e3a..0000000 --- a/backend/ev-ps-exporter.h +++ /dev/null @@ -1,68 +0,0 @@ -/* this file is part of evince, a gnome document viewer - * - * Copyright (C) 2004 Martin Kretzschmar - * - * Author: - * Martin Kretzschmar <martink@gnome.org> - * - * 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 <glib-object.h> - -#include "ev-render-context.h" - -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, - int first_page, - int last_page, - double paper_width, - double paper_height, - gboolean duplex); - void (* do_page) (EvPSExporter *exporter, - EvRenderContext *rc); - void (* end) (EvPSExporter *exporter); -}; - -GType ev_ps_exporter_get_type (void); -void ev_ps_exporter_begin (EvPSExporter *exporter, const char *filename, - int first_page, int last_page, - double paper_width, double paper_height, - gboolean duplex); -void ev_ps_exporter_do_page (EvPSExporter *exporter, EvRenderContext *rc); -void ev_ps_exporter_end (EvPSExporter *exporter); - -G_END_DECLS - -#endif |