]> www.fi.muni.cz Git - evince.git/blob - libdocument/ev-file-exporter.c
Reorganize source tree.
[evince.git] / libdocument / ev-file-exporter.c
1 /* this file is part of evince, a gnome document viewer
2  *
3  *  Copyright (C) 2004 Martin Kretzschmar
4  *
5  *  Author:
6  *    Martin Kretzschmar <martink@gnome.org>
7  *
8  * Evince is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * Evince is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
21  */
22
23 #include "ev-file-exporter.h"
24
25 GType
26 ev_file_exporter_get_type (void)
27 {
28         static GType type = 0;
29
30         if (G_UNLIKELY (type == 0)) {
31                 const GTypeInfo our_info =
32                 {
33                         sizeof (EvFileExporterIface),
34                         NULL,
35                         NULL,
36                 };
37
38                 type = g_type_register_static (G_TYPE_INTERFACE,
39                                                "EvFileExporter",
40                                                &our_info, (GTypeFlags)0);
41         }
42
43         return type;
44 }
45
46 gboolean
47 ev_file_exporter_format_supported (EvFileExporter      *exporter,
48                                    EvFileExporterFormat format)
49 {
50         EvFileExporterIface *iface = EV_FILE_EXPORTER_GET_IFACE (exporter);
51
52         if (format < EV_FILE_FORMAT_PS ||
53             format > EV_FILE_FORMAT_PDF)
54                 return FALSE;
55
56         return iface->format_supported (exporter, format);
57 }
58
59 void
60 ev_file_exporter_begin (EvFileExporter      *exporter,
61                         EvFileExporterFormat format,
62                         const gchar         *filename,
63                         gint                 first_page,
64                         gint                 last_page,
65                         gdouble              paper_width,
66                         gdouble              paper_height,
67                         gboolean             duplex)
68 {
69         EvFileExporterIface *iface = EV_FILE_EXPORTER_GET_IFACE (exporter);
70
71         g_return_if_fail (ev_file_exporter_format_supported (exporter, format));
72
73         iface->begin (exporter, format, filename, first_page, last_page,
74                       paper_width, paper_height, duplex);
75 }
76
77 void
78 ev_file_exporter_do_page (EvFileExporter *exporter, EvRenderContext *rc)
79 {
80         EvFileExporterIface *iface = EV_FILE_EXPORTER_GET_IFACE (exporter);
81
82         iface->do_page (exporter, rc);
83 }
84
85 void
86 ev_file_exporter_end (EvFileExporter *exporter)
87 {
88         EvFileExporterIface *iface = EV_FILE_EXPORTER_GET_IFACE (exporter);
89
90         iface->end (exporter);
91 }