1 /* imposter (OO.org Impress viewer)
2 ** Copyright (C) 2003-2005 Gurer Ozen
3 ** This code is free software; you can redistribute it and/or
4 ** modify it under the terms of GNU General Public License.
11 _imp_load_xml(ImpDoc *doc, const char *xmlfile)
16 x = zip_load_xml (doc->zfile, xmlfile, &e);
21 imp_open(const char *filename, int *err)
26 doc = calloc(1, sizeof(ImpDoc));
32 doc->stack = iks_stack_new(sizeof(ImpPage) * 32, 0);
39 doc->zfile = zip_open(filename, &e);
46 doc->content = _imp_load_xml(doc, "content.xml");
47 doc->styles = _imp_load_xml(doc, "styles.xml");
48 doc->meta = _imp_load_xml(doc, "meta.xml");
50 if (!doc->content || !doc->styles) {
56 e = _imp_oo13_load(doc);
57 if (e && e != IMP_NOTIMP) {
63 if (e == IMP_NOTIMP) {
64 e = _imp_oasis_load(doc);
76 imp_nr_pages(ImpDoc *doc)
82 imp_get_page(ImpDoc *doc, int page_no)
84 if (page_no == IMP_LAST_PAGE) {
85 return doc->last_page;
88 if (page_no < 0 || page_no > doc->nr_pages) return NULL;
89 for (page = doc->pages; page_no; --page_no) {
97 imp_next_page(ImpPage *page)
103 imp_prev_page(ImpPage *page)
109 imp_get_page_no(ImpPage *page)
115 imp_get_page_name(ImpPage *page)
121 imp_get_xml(ImpDoc *doc, const char *filename)
123 if (strcmp(filename, "content.xml") == 0)
125 else if (strcmp(filename, "styles.xml") == 0)
127 else if (strcmp(filename, "meta.xml") == 0)
134 imp_close(ImpDoc *doc)
136 if (doc->stack) iks_stack_delete(doc->stack);
137 if (doc->zfile) zip_close(doc->zfile);