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.
12 _imp_load_xml(ImpDoc *doc, const char *xmlfile)
17 x = zip_load_xml (doc->zfile, xmlfile, &e);
22 imp_open(const char *filename, int *err)
27 doc = calloc(1, sizeof(ImpDoc));
33 doc->stack = iks_stack_new(sizeof(ImpPage) * 32, 0);
40 doc->zfile = zip_open(filename, &e);
47 doc->content = _imp_load_xml(doc, "content.xml");
48 doc->styles = _imp_load_xml(doc, "styles.xml");
49 doc->meta = _imp_load_xml(doc, "meta.xml");
51 if (!doc->content || !doc->styles) {
57 e = _imp_oo13_load(doc);
58 if (e && e != IMP_NOTIMP) {
64 if (e == IMP_NOTIMP) {
65 e = _imp_oasis_load(doc);
77 imp_nr_pages(ImpDoc *doc)
83 imp_get_page(ImpDoc *doc, int page_no)
85 if (page_no == IMP_LAST_PAGE) {
86 return doc->last_page;
89 if (page_no < 0 || page_no > doc->nr_pages) return NULL;
90 for (page = doc->pages; page_no; --page_no) {
98 imp_next_page(ImpPage *page)
104 imp_prev_page(ImpPage *page)
110 imp_get_page_no(ImpPage *page)
116 imp_get_page_name(ImpPage *page)
122 imp_get_xml(ImpDoc *doc, const char *filename)
124 if (strcmp(filename, "content.xml") == 0)
126 else if (strcmp(filename, "styles.xml") == 0)
128 else if (strcmp(filename, "meta.xml") == 0)
135 imp_close(ImpDoc *doc)
137 if (doc->stack) iks_stack_delete(doc->stack);
138 if (doc->zfile) zip_close(doc->zfile);