diff options
author | Bastien Nocera <hadess@hadess.net> | 2006-07-10 21:04:30 (GMT) |
---|---|---|
committer | Nickolay V. Shmyrev <nshmyrev@src.gnome.org> | 2006-07-10 21:04:30 (GMT) |
commit | f00b898dd13b85e510188714f6b9d9a349d23ed2 (patch) | |
tree | 03e0fbeee50a46690b969c5de567fffa88cf7056 /backend | |
parent | d626744c21e61733228f6dfc6b29dec1f38a92e4 (diff) |
New backend to support impress slides. Fixes bug #30867.
2006-07-11 Bastien Nocera <hadess@hadess.net>
* Makefile.am:
* backend/Makefile.am:
* backend/ev-document-factory.c: (ev_document_factory_add_filters):
* backend/ev-document-factory.h:
* configure.ac:
* impress/.cvsignore:
* impress/Makefile.am:
* impress/common.h:
* impress/document.c: (_imp_load_xml), (imp_open), (imp_nr_pages),
(imp_get_page), (imp_next_page), (imp_prev_page),
(imp_get_page_no), (imp_get_page_name), (imp_get_xml), (imp_close):
* impress/f_oasis.c: (render_object), (render_page),
(get_geometry), (_imp_oasis_load):
* impress/f_oo13.c: (render_object), (render_page), (get_geometry),
(_imp_oo13_load):
* impress/iksemel.c: (iks_malloc), (iks_free), (iks_set_mem_funcs),
(iks_strdup), (iks_strcat), (iks_strcmp), (iks_strcasecmp),
(iks_strncmp), (iks_strncasecmp), (iks_strlen), (iks_escape),
(iks_unescape), (find_space), (iks_stack_new), (iks_stack_alloc),
(iks_stack_strdup), (iks_stack_strcat), (iks_stack_stat),
(iks_stack_delete), (iks_sax_new), (iks_sax_extend),
(iks_parser_stack), (iks_user_data), (iks_nr_bytes),
(iks_nr_lines), (stack_init), (stack_expand), (sax_core),
(iks_parse), (iks_parser_reset), (iks_parser_delete), (iks_new),
(iks_new_within), (iks_insert), (iks_insert_cdata),
(iks_insert_attrib), (iks_insert_node), (iks_hide), (iks_delete),
(iks_next), (iks_next_tag), (iks_prev), (iks_prev_tag),
(iks_parent), (iks_root), (iks_child), (iks_first_tag),
(iks_attrib), (iks_find), (iks_find_cdata), (iks_find_attrib),
(iks_find_with_attrib), (iks_stack), (iks_type), (iks_name),
(iks_cdata), (iks_cdata_size), (iks_has_children),
(iks_has_attribs), (escape_size), (my_strcat), (escape),
(iks_string), (iks_copy_within), (iks_copy), (tagHook),
(cdataHook), (deleteHook), (iks_dom_new), (iks_set_size_hint),
(iks_tree), (iks_load), (iks_save):
* impress/iksemel.h:
* impress/imposter.h:
* impress/impress-document.c: (G_DEFINE_TYPE_WITH_CODE),
(imp_render_draw_bezier_real), (imp_render_get_size),
(imp_render_set_fg_color), (imp_render_draw_line),
(imp_render_draw_rect), (imp_render_draw_polygon),
(imp_render_draw_arc), (imp_render_draw_bezier),
(imp_render_open_image), (imp_render_get_image_size),
(imp_render_scale_image), (imp_render_draw_image),
(imp_render_close_image), (imp_render_markup),
(imp_render_get_text_size), (imp_render_draw_text),
(impress_document_load), (impress_document_save),
(impress_document_get_n_pages), (impress_document_get_page_size),
(imp_render_get_from_drawable), (impress_document_render_pixbuf),
(impress_document_finalize), (impress_document_class_init),
(impress_document_can_get_text), (impress_document_get_info),
(impress_document_document_iface_init),
(impress_document_thumbnails_get_thumbnail),
(impress_document_thumbnails_get_dimensions),
(impress_document_document_thumbnails_iface_init),
(impress_document_init):
* impress/impress-document.h:
* impress/internal.h:
* impress/r_back.c: (_imp_fill_back):
* impress/r_draw.c: (_imp_draw_rect), (_imp_draw_line_end),
(_imp_draw_image), (_imp_tile_image):
* impress/r_geometry.c: (r_parse_color), (r_get_color), (fg_color),
(r_get_x), (r_get_y), (r_get_angle), (r_get_viewbox), (r_polygon),
(r_polyline):
* impress/r_gradient.c: (poly_rotate), (r_draw_gradient_simple),
(r_draw_gradient_complex), (r_draw_gradient):
* impress/r_style.c: (get_style), (r_get_style), (get_style_x),
(r_get_bullet):
* impress/r_text.c: (add_line), (add_span), (calc_sizes),
(calc_pos), (_imp_draw_layout), (text_span), (text_p), (text_list),
(r_text):
* impress/render.c: (imp_create_context), (imp_context_set_page),
(imp_context_set_step), (imp_render), (imp_delete_context):
* impress/render.h:
* impress/zip.c: (zip_error), (find_cd), (get_long), (get_word),
(list_files), (zip_open), (zip_close), (find_file), (seek_file),
(zip_load_xml), (zip_get_size), (zip_load):
* impress/zip.h:
* shell/ev-utils.c:
New backend to support impress slides. Fixes bug #30867.
Diffstat (limited to 'backend')
-rw-r--r-- | backend/Makefile.am | 6 | ||||
-rw-r--r-- | backend/ev-document-factory.c | 17 | ||||
-rw-r--r-- | backend/ev-document-factory.h | 3 |
3 files changed, 25 insertions, 1 deletions
diff --git a/backend/Makefile.am b/backend/Makefile.am index db21e4c..f92c607 100644 --- a/backend/Makefile.am +++ b/backend/Makefile.am @@ -7,6 +7,7 @@ INCLUDES= \ -I$(top_srcdir)/ps \ -I$(top_srcdir)/djvu \ -I$(top_srcdir)/dvi \ + -I$(top_srcdir)/impress \ -I$(top_srcdir)/comics \ $(BACKEND_CFLAGS) \ $(WARN_CFLAGS) \ @@ -83,6 +84,11 @@ libevbackend_la_LIBADD += \ $(top_builddir)/comics/libcomicsdocument.la endif +if ENABLE_IMPRESS +libevbackend_la_LIBADD += \ + $(top_builddir)/impress/libimpressdocument.la +endif + BUILT_SOURCES= \ ev-backend-marshalers.h \ ev-backend-marshalers.c diff --git a/backend/ev-document-factory.c b/backend/ev-document-factory.c index e3f384f..23364a2 100644 --- a/backend/ev-document-factory.c +++ b/backend/ev-document-factory.c @@ -28,6 +28,8 @@ #include "ev-poppler.h" #include "pixbuf-document.h" #include "tiff-document.h" +#include "impress-document.h" + #ifdef ENABLE_PS #include "ps-document.h" #endif @@ -67,6 +69,11 @@ const EvDocumentType document_types[] = { {"image/x-eps", EV_BACKEND_PS, ps_document_get_type}, #endif +#ifdef ENABLE_IMPRESS + /* Impress slides: */ + {"application/vnd.sun.xml.impress", EV_BACKEND_IMPRESS, impress_document_get_type}, +#endif + #ifdef ENABLE_TIFF /* Tiff: */ {"image/tiff", EV_BACKEND_TIFF, tiff_document_get_type}, @@ -395,6 +402,16 @@ ev_document_factory_add_filters (GtkWidget *chooser, EvDocument *document) } #endif +#ifdef ENABLE_IMPRESS + if (document == NULL || backend == EV_BACKEND_IMPRESS) { + default_filter = filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("Impress Slides")); + mime_types = ev_document_factory_get_mime_types (EV_BACKEND_IMPRESS); + file_filter_add_mime_list_and_free (filter, mime_types); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); + } +#endif + filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All Files")); gtk_file_filter_add_pattern (filter, "*"); diff --git a/backend/ev-document-factory.h b/backend/ev-document-factory.h index 215f50b..886be69 100644 --- a/backend/ev-document-factory.h +++ b/backend/ev-document-factory.h @@ -33,7 +33,8 @@ typedef enum { EV_BACKEND_PIXBUF, EV_BACKEND_DJVU, EV_BACKEND_DVI, - EV_BACKEND_COMICS + EV_BACKEND_COMICS, + EV_BACKEND_IMPRESS } EvBackend; EvDocument* ev_document_factory_get_document (const char *uri, GError **error); |