From 75481a7c4d3b557da326c058d7b2d12958f8f018 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Tue, 18 Aug 2009 10:08:37 +0000 Subject: Convert EvDocument interface into an abstract class --- (limited to 'backend') diff --git a/backend/comics/comics-document.c b/backend/comics/comics-document.c index 0c3d37f..3cd6db6 100644 --- a/backend/comics/comics-document.c +++ b/backend/comics/comics-document.c @@ -36,10 +36,10 @@ struct _ComicsDocumentClass { - GObjectClass parent_class; + EvDocumentClass parent_class; }; - -typedef enum + +typedef enum { RARLABS, GNAUNRAR, @@ -49,7 +49,8 @@ typedef enum struct _ComicsDocument { - GObject parent_instance; + EvDocument parent_instance; + gchar *archive, *dir; GSList *page_names; gint n_pages; @@ -80,7 +81,6 @@ struct { typedef struct _ComicsDocumentClass ComicsDocumentClass; -static void comics_document_document_iface_init (EvDocumentIface *iface); static void comics_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface); static GSList* get_supported_image_extensions (void); @@ -721,13 +721,6 @@ comics_document_finalize (GObject *object) G_OBJECT_CLASS (comics_document_parent_class)->finalize (object); } -static void -comics_document_class_init (ComicsDocumentClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = comics_document_finalize; -} - static EvDocumentInfo * comics_document_get_info (EvDocument *document) { @@ -737,14 +730,19 @@ comics_document_get_info (EvDocument *document) } static void -comics_document_document_iface_init (EvDocumentIface *iface) +comics_document_class_init (ComicsDocumentClass *klass) { - iface->load = comics_document_load; - iface->save = comics_document_save; - iface->get_n_pages = comics_document_get_n_pages; - iface->get_page_size = comics_document_get_page_size; - iface->render = comics_document_render; - iface->get_info = comics_document_get_info; + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + EvDocumentClass *ev_document_class = EV_DOCUMENT_CLASS (klass); + + gobject_class->finalize = comics_document_finalize; + + ev_document_class->load = comics_document_load; + ev_document_class->save = comics_document_save; + ev_document_class->get_n_pages = comics_document_get_n_pages; + ev_document_class->get_page_size = comics_document_get_page_size; + ev_document_class->render = comics_document_render; + ev_document_class->get_info = comics_document_get_info; } static void diff --git a/backend/djvu/djvu-document-private.h b/backend/djvu/djvu-document-private.h index a110e15..d1d7ec7 100644 --- a/backend/djvu/djvu-document-private.h +++ b/backend/djvu/djvu-document-private.h @@ -26,7 +26,7 @@ #include struct _DjvuDocument { - GObject parent_instance; + EvDocument parent_instance; ddjvu_context_t *d_context; ddjvu_document_t *d_document; diff --git a/backend/djvu/djvu-document.c b/backend/djvu/djvu-document.c index daf09a5..2bc1f7e 100644 --- a/backend/djvu/djvu-document.c +++ b/backend/djvu/djvu-document.c @@ -46,12 +46,11 @@ enum { struct _DjvuDocumentClass { - GObjectClass parent_class; + EvDocumentClass parent_class; }; typedef struct _DjvuDocumentClass DjvuDocumentClass; -static void djvu_document_document_iface_init (EvDocumentIface *iface); static void djvu_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface); static void djvu_document_file_exporter_iface_init (EvFileExporterIface *iface); static void djvu_document_find_iface_init (EvDocumentFindIface *iface); @@ -387,6 +386,16 @@ djvu_document_render (EvDocument *document, return surface; } +static EvDocumentInfo * +djvu_document_get_info (EvDocument *document) +{ + EvDocumentInfo *info; + + info = g_new0 (EvDocumentInfo, 1); + + return info; +} + static void djvu_document_finalize (GObject *object) { @@ -412,30 +421,17 @@ djvu_document_finalize (GObject *object) static void djvu_document_class_init (DjvuDocumentClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + EvDocumentClass *ev_document_class = EV_DOCUMENT_CLASS (klass); gobject_class->finalize = djvu_document_finalize; -} -static EvDocumentInfo * -djvu_document_get_info (EvDocument *document) -{ - EvDocumentInfo *info; - - info = g_new0 (EvDocumentInfo, 1); - - return info; -} - -static void -djvu_document_document_iface_init (EvDocumentIface *iface) -{ - iface->load = djvu_document_load; - iface->save = djvu_document_save; - iface->get_n_pages = djvu_document_get_n_pages; - iface->get_page_size = djvu_document_get_page_size; - iface->render = djvu_document_render; - iface->get_info = djvu_document_get_info; + ev_document_class->load = djvu_document_load; + ev_document_class->save = djvu_document_save; + ev_document_class->get_n_pages = djvu_document_get_n_pages; + ev_document_class->get_page_size = djvu_document_get_page_size; + ev_document_class->render = djvu_document_render; + ev_document_class->get_info = djvu_document_get_info; } static gchar * diff --git a/backend/dvi/dvi-document.c b/backend/dvi/dvi-document.c index a1097c9..7551f80 100644 --- a/backend/dvi/dvi-document.c +++ b/backend/dvi/dvi-document.c @@ -44,12 +44,12 @@ enum { struct _DviDocumentClass { - GObjectClass parent_class; + EvDocumentClass parent_class; }; struct _DviDocument { - GObject parent_instance; + EvDocument parent_instance; DviContext *context; DviPageSpec *spec; @@ -68,7 +68,6 @@ struct _DviDocument typedef struct _DviDocumentClass DviDocumentClass; -static void dvi_document_document_iface_init (EvDocumentIface *iface); static void dvi_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface); static void dvi_document_file_exporter_iface_init (EvFileExporterIface *iface); static void dvi_document_do_color_special (DviContext *dvi, @@ -230,11 +229,21 @@ dvi_document_finalize (GObject *object) G_OBJECT_CLASS (dvi_document_parent_class)->finalize (object); } +static EvDocumentInfo * +dvi_document_get_info (EvDocument *document) +{ + EvDocumentInfo *info; + + info = g_new0 (EvDocumentInfo, 1); + + return info; +} static void dvi_document_class_init (DviDocumentClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + EvDocumentClass *ev_document_class = EV_DOCUMENT_CLASS (klass); gobject_class->finalize = dvi_document_finalize; @@ -243,27 +252,13 @@ dvi_document_class_init (DviDocumentClass *klass) mdvi_register_fonts (); dvi_context_mutex = g_mutex_new (); -} - -static EvDocumentInfo * -dvi_document_get_info (EvDocument *document) -{ - EvDocumentInfo *info; - - info = g_new0 (EvDocumentInfo, 1); - return info; -} - -static void -dvi_document_document_iface_init (EvDocumentIface *iface) -{ - iface->load = dvi_document_load; - iface->save = dvi_document_save; - iface->get_n_pages = dvi_document_get_n_pages; - iface->get_page_size = dvi_document_get_page_size; - iface->render = dvi_document_render; - iface->get_info = dvi_document_get_info; + ev_document_class->load = dvi_document_load; + ev_document_class->save = dvi_document_save; + ev_document_class->get_n_pages = dvi_document_get_n_pages; + ev_document_class->get_page_size = dvi_document_get_page_size; + ev_document_class->render = dvi_document_render; + ev_document_class->get_info = dvi_document_get_info; } static void diff --git a/backend/impress/impress-document.c b/backend/impress/impress-document.c index 72eb8c1..0d58aaf 100644 --- a/backend/impress/impress-document.c +++ b/backend/impress/impress-document.c @@ -33,12 +33,12 @@ struct _ImpressDocumentClass { - GObjectClass parent_class; + EvDocumentClass parent_class; }; struct _ImpressDocument { - GObject parent_instance; + EvDocument parent_instance; ImpDoc *imp; ImpRenderCtx *ctx; @@ -59,7 +59,6 @@ struct _ImpressDocument typedef struct _ImpressDocumentClass ImpressDocumentClass; -static void impress_document_document_iface_init (EvDocumentIface *iface); static void impress_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface); EV_BACKEND_REGISTER_WITH_CODE (ImpressDocument, impress_document, @@ -425,6 +424,17 @@ impress_document_render (EvDocument *document, return scaled_surface; } +static EvDocumentInfo * +impress_document_get_info (EvDocument *document) +{ + EvDocumentInfo *info; + + info = g_new0 (EvDocumentInfo, 1); + info->fields_mask = 0; + + return info; +} + static void impress_document_finalize (GObject *object) { @@ -454,31 +464,17 @@ impress_document_finalize (GObject *object) static void impress_document_class_init (ImpressDocumentClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + EvDocumentClass *ev_document_class = EV_DOCUMENT_CLASS (klass); gobject_class->finalize = impress_document_finalize; -} -static EvDocumentInfo * -impress_document_get_info (EvDocument *document) -{ - EvDocumentInfo *info; - - info = g_new0 (EvDocumentInfo, 1); - info->fields_mask = 0; - - return info; -} - -static void -impress_document_document_iface_init (EvDocumentIface *iface) -{ - iface->load = impress_document_load; - iface->save = impress_document_save; - iface->get_n_pages = impress_document_get_n_pages; - iface->get_page_size = impress_document_get_page_size; - iface->render = impress_document_render; - iface->get_info = impress_document_get_info; + ev_document_class->load = impress_document_load; + ev_document_class->save = impress_document_save; + ev_document_class->get_n_pages = impress_document_get_n_pages; + ev_document_class->get_page_size = impress_document_get_page_size; + ev_document_class->render = impress_document_render; + ev_document_class->get_info = impress_document_get_info; } static GdkPixbuf * diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc index 0333d71..84314ce 100644 --- a/backend/pdf/ev-poppler.cc +++ b/backend/pdf/ev-poppler.cc @@ -92,12 +92,12 @@ typedef struct { struct _PdfDocumentClass { - GObjectClass parent_class; + EvDocumentClass parent_class; }; struct _PdfDocument { - GObject parent_instance; + EvDocument parent_instance; PopplerDocument *document; gchar *password; @@ -113,7 +113,6 @@ struct _PdfDocument GList *layers; }; -static void pdf_document_document_iface_init (EvDocumentIface *iface); static void pdf_document_security_iface_init (EvDocumentSecurityIface *iface); static void pdf_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface); static void pdf_document_document_links_iface_init (EvDocumentLinksIface *iface); @@ -234,14 +233,6 @@ pdf_document_dispose (GObject *object) } static void -pdf_document_class_init (PdfDocumentClass *klass) -{ - GObjectClass *g_object_class = G_OBJECT_CLASS (klass); - - g_object_class->dispose = pdf_document_dispose; -} - -static void pdf_document_init (PdfDocument *pdf_document) { pdf_document->password = NULL; @@ -448,28 +439,6 @@ pdf_document_render (EvDocument *document, width, height, rc); } -/* EvDocumentSecurity */ - -static gboolean -pdf_document_has_document_security (EvDocumentSecurity *document_security) -{ - /* FIXME: do we really need to have this? */ - return FALSE; -} - -static void -pdf_document_set_password (EvDocumentSecurity *document_security, - const char *password) -{ - PdfDocument *document = PDF_DOCUMENT (document_security); - - if (document->password) - g_free (document->password); - - document->password = g_strdup (password); -} - - /* reference: http://www.pdfa.org/lib/exe/fetch.php?id=pdfa%3Aen%3Atechdoc&cache=cache&media=pdfa:techdoc:tn0001_pdfa-1_and_namespaces_2008-03-18.pdf */ static char * @@ -721,17 +690,42 @@ pdf_document_get_info (EvDocument *document) } static void -pdf_document_document_iface_init (EvDocumentIface *iface) -{ - iface->save = pdf_document_save; - iface->load = pdf_document_load; - iface->get_n_pages = pdf_document_get_n_pages; - iface->get_page = pdf_document_get_page; - iface->get_page_size = pdf_document_get_page_size; - iface->get_page_label = pdf_document_get_page_label; - iface->render = pdf_document_render; - iface->get_info = pdf_document_get_info; -}; +pdf_document_class_init (PdfDocumentClass *klass) +{ + GObjectClass *g_object_class = G_OBJECT_CLASS (klass); + EvDocumentClass *ev_document_class = EV_DOCUMENT_CLASS (klass); + + g_object_class->dispose = pdf_document_dispose; + + ev_document_class->save = pdf_document_save; + ev_document_class->load = pdf_document_load; + ev_document_class->get_n_pages = pdf_document_get_n_pages; + ev_document_class->get_page = pdf_document_get_page; + ev_document_class->get_page_size = pdf_document_get_page_size; + ev_document_class->get_page_label = pdf_document_get_page_label; + ev_document_class->render = pdf_document_render; + ev_document_class->get_info = pdf_document_get_info; +} + +/* EvDocumentSecurity */ +static gboolean +pdf_document_has_document_security (EvDocumentSecurity *document_security) +{ + /* FIXME: do we really need to have this? */ + return FALSE; +} + +static void +pdf_document_set_password (EvDocumentSecurity *document_security, + const char *password) +{ + PdfDocument *document = PDF_DOCUMENT (document_security); + + if (document->password) + g_free (document->password); + + document->password = g_strdup (password); +} static void pdf_document_security_iface_init (EvDocumentSecurityIface *iface) diff --git a/backend/pixbuf/pixbuf-document.c b/backend/pixbuf/pixbuf-document.c index d509b4d..df3af03 100644 --- a/backend/pixbuf/pixbuf-document.c +++ b/backend/pixbuf/pixbuf-document.c @@ -27,12 +27,12 @@ struct _PixbufDocumentClass { - GObjectClass parent_class; + EvDocumentClass parent_class; }; struct _PixbufDocument { - GObject parent_instance; + EvDocument parent_instance; GdkPixbuf *pixbuf; @@ -41,7 +41,6 @@ struct _PixbufDocument typedef struct _PixbufDocumentClass PixbufDocumentClass; -static void pixbuf_document_document_iface_init (EvDocumentIface *iface); static void pixbuf_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface); EV_BACKEND_REGISTER_WITH_CODE (PixbufDocument, pixbuf_document, @@ -139,14 +138,6 @@ pixbuf_document_finalize (GObject *object) G_OBJECT_CLASS (pixbuf_document_parent_class)->finalize (object); } -static void -pixbuf_document_class_init (PixbufDocumentClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - - gobject_class->finalize = pixbuf_document_finalize; -} - static EvDocumentInfo * pixbuf_document_get_info (EvDocument *document) { @@ -159,14 +150,19 @@ pixbuf_document_get_info (EvDocument *document) } static void -pixbuf_document_document_iface_init (EvDocumentIface *iface) +pixbuf_document_class_init (PixbufDocumentClass *klass) { - iface->load = pixbuf_document_load; - iface->save = pixbuf_document_save; - iface->get_n_pages = pixbuf_document_get_n_pages; - iface->get_page_size = pixbuf_document_get_page_size; - iface->render = pixbuf_document_render; - iface->get_info = pixbuf_document_get_info; + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + EvDocumentClass *ev_document_class = EV_DOCUMENT_CLASS (klass); + + gobject_class->finalize = pixbuf_document_finalize; + + ev_document_class->load = pixbuf_document_load; + ev_document_class->save = pixbuf_document_save; + ev_document_class->get_n_pages = pixbuf_document_get_n_pages; + ev_document_class->get_page_size = pixbuf_document_get_page_size; + ev_document_class->render = pixbuf_document_render; + ev_document_class->get_info = pixbuf_document_get_info; } static GdkPixbuf * diff --git a/backend/ps/ev-spectre.c b/backend/ps/ev-spectre.c index 1342c3e..8ee1732 100644 --- a/backend/ps/ev-spectre.c +++ b/backend/ps/ev-spectre.c @@ -31,17 +31,16 @@ #include "ev-document-misc.h" struct _PSDocument { - GObject object; + EvDocument object; SpectreDocument *doc; SpectreExporter *exporter; }; struct _PSDocumentClass { - GObjectClass parent_class; + EvDocumentClass parent_class; }; -static void ps_document_document_iface_init (EvDocumentIface *iface); static void ps_document_file_exporter_iface_init (EvFileExporterIface *iface); static void ps_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface); @@ -77,16 +76,6 @@ ps_document_dispose (GObject *object) G_OBJECT_CLASS (ps_document_parent_class)->dispose (object); } -static void -ps_document_class_init (PSDocumentClass *klass) -{ - GObjectClass *object_class; - - object_class = G_OBJECT_CLASS (klass); - - object_class->dispose = ps_document_dispose; -} - /* EvDocumentIface */ static gboolean ps_document_load (EvDocument *document, @@ -331,16 +320,21 @@ ps_document_render (EvDocument *document, } static void -ps_document_document_iface_init (EvDocumentIface *iface) +ps_document_class_init (PSDocumentClass *klass) { - iface->load = ps_document_load; - iface->save = ps_document_save; - iface->get_n_pages = ps_document_get_n_pages; - iface->get_page = ps_document_get_page; - iface->get_page_size = ps_document_get_page_size; - iface->get_page_label = ps_document_get_page_label; - iface->get_info = ps_document_get_info; - iface->render = ps_document_render; + GObjectClass *object_class = G_OBJECT_CLASS (klass); + EvDocumentClass *ev_document_class = EV_DOCUMENT_CLASS (klass); + + object_class->dispose = ps_document_dispose; + + ev_document_class->load = ps_document_load; + ev_document_class->save = ps_document_save; + ev_document_class->get_n_pages = ps_document_get_n_pages; + ev_document_class->get_page = ps_document_get_page; + ev_document_class->get_page_size = ps_document_get_page_size; + ev_document_class->get_page_label = ps_document_get_page_label; + ev_document_class->get_info = ps_document_get_info; + ev_document_class->render = ps_document_render; } /* EvDocumentThumbnailsIface */ diff --git a/backend/tiff/tiff-document.c b/backend/tiff/tiff-document.c index 7f10c9a..d122ba7 100644 --- a/backend/tiff/tiff-document.c +++ b/backend/tiff/tiff-document.c @@ -37,12 +37,12 @@ struct _TiffDocumentClass { - GObjectClass parent_class; + EvDocumentClass parent_class; }; struct _TiffDocument { - GObject parent_instance; + EvDocument parent_instance; TIFF *tiff; gint n_pages; @@ -53,7 +53,6 @@ struct _TiffDocument typedef struct _TiffDocumentClass TiffDocumentClass; -static void tiff_document_document_iface_init (EvDocumentIface *iface); static void tiff_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface); static void tiff_document_document_file_exporter_iface_init (EvFileExporterIface *iface); @@ -384,39 +383,18 @@ tiff_document_render_pixbuf (EvDocument *document, return rotated_pixbuf; } -static void -tiff_document_finalize (GObject *object) -{ - TiffDocument *tiff_document = TIFF_DOCUMENT (object); - - if (tiff_document->tiff) - TIFFClose (tiff_document->tiff); - if (tiff_document->uri) - g_free (tiff_document->uri); - - G_OBJECT_CLASS (tiff_document_parent_class)->finalize (object); -} - -static void -tiff_document_class_init (TiffDocumentClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - - gobject_class->finalize = tiff_document_finalize; -} - static gchar * tiff_document_get_page_label (EvDocument *document, EvPage *page) { TiffDocument *tiff_document = TIFF_DOCUMENT (document); static gchar *label; - + if (TIFFGetField (tiff_document->tiff, TIFFTAG_PAGENAME, &label) && g_utf8_validate (label, -1, NULL)) { return g_strdup (label); } - + return NULL; } @@ -432,15 +410,33 @@ tiff_document_get_info (EvDocument *document) } static void -tiff_document_document_iface_init (EvDocumentIface *iface) +tiff_document_finalize (GObject *object) +{ + TiffDocument *tiff_document = TIFF_DOCUMENT (object); + + if (tiff_document->tiff) + TIFFClose (tiff_document->tiff); + if (tiff_document->uri) + g_free (tiff_document->uri); + + G_OBJECT_CLASS (tiff_document_parent_class)->finalize (object); +} + +static void +tiff_document_class_init (TiffDocumentClass *klass) { - iface->load = tiff_document_load; - iface->save = tiff_document_save; - iface->get_n_pages = tiff_document_get_n_pages; - iface->get_page_size = tiff_document_get_page_size; - iface->render = tiff_document_render; - iface->get_page_label = tiff_document_get_page_label; - iface->get_info = tiff_document_get_info; + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + EvDocumentClass *ev_document_class = EV_DOCUMENT_CLASS (klass); + + gobject_class->finalize = tiff_document_finalize; + + ev_document_class->load = tiff_document_load; + ev_document_class->save = tiff_document_save; + ev_document_class->get_n_pages = tiff_document_get_n_pages; + ev_document_class->get_page_size = tiff_document_get_page_size; + ev_document_class->render = tiff_document_render; + ev_document_class->get_page_label = tiff_document_get_page_label; + ev_document_class->get_info = tiff_document_get_info; } static GdkPixbuf * -- cgit v0.9.1