diff options
Diffstat (limited to 'libstorycode/presentation.c')
-rw-r--r-- | libstorycode/presentation.c | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/libstorycode/presentation.c b/libstorycode/presentation.c deleted file mode 100644 index 925f011..0000000 --- a/libstorycode/presentation.c +++ /dev/null @@ -1,220 +0,0 @@ -/* - * presentation.c - * - * Copyright © 2019 Thomas White <taw@bitwiz.org.uk> - * - * This file is part of Colloquium. - * - * Colloquium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdlib.h> -#include <string.h> -#include <assert.h> -#include <stdio.h> -#include <gio/gio.h> - -#ifdef HAVE_PANGO -#include <pango/pango.h> -#endif - -#include "presentation.h" -#include "stylesheet.h" -#include "slide.h" -#include "narrative.h" -#include "imagestore.h" -#include "storycode.h" - -struct _presentation -{ - Stylesheet *stylesheet; - Narrative *narrative; - ImageStore *imagestore; - int n_slides; - Slide **slides; - int max_slides; - int saved; - const char *language; -}; - - -Presentation *presentation_new() -{ - Presentation *p; - p = malloc(sizeof(*p)); - if ( p == NULL ) return NULL; - p->stylesheet = NULL; - p->narrative = NULL; - p->slides = NULL; - p->n_slides = 0; - p->max_slides = 0; - p->imagestore = NULL; - p->saved = 1; -#ifdef HAVE_PANGO - p->language = pango_language_to_string(pango_language_get_default()); -#else - p->language = NULL; -#endif - return p; -} - - -Presentation *presentation_load(GFile *file) -{ - GBytes *bytes; - const char *text; - size_t len; - Presentation *p; - - bytes = g_file_load_bytes(file, NULL, NULL, NULL); - if ( bytes == NULL ) return NULL; - - text = g_bytes_get_data(bytes, &len); - p = storycode_parse_presentation(text); - g_bytes_unref(bytes); - if ( p == NULL ) return NULL; - - p->imagestore = imagestore_new("."); /* FIXME: From app config */ - imagestore_set_parent(p->imagestore, g_file_get_parent(file)); - return p; -} - - -int presentation_save(Presentation *p, GFile *file) -{ - /* FIXME: Implementation */ - return 1; -} - - -void presentation_set_unsaved(Presentation *p) -{ - p->saved = 0; -} - - -int presentation_get_unsaved(Presentation *p) -{ - return !p->saved; -} - - -void presentation_free(Presentation *p) -{ - /* FIXME: Free narrative, slides, imagestore */ - free(p); -} - - -void presentation_add_stylesheet(Presentation *p, Stylesheet *ss) -{ - assert(p->stylesheet == NULL); - p->stylesheet = ss; -} - - -void presentation_add_narrative(Presentation *p, Narrative *n) -{ - assert(p->narrative == NULL); - p->narrative = n; -} - - -void presentation_add_slide(Presentation *p, Slide *s) -{ - assert(p->n_slides <= p->max_slides); - if ( p->n_slides == p->max_slides ) { - Slide **nslides = realloc(p->slides, - (p->max_slides+8)*sizeof(Slide *)); - if ( nslides == NULL ) { - fprintf(stderr, "Failed to allocate memory for slide\n"); - return; - } - p->slides = nslides; - p->max_slides += 8; - } - - p->slides[p->n_slides++] = s; -} - - -void presentation_insert_slide(Presentation *p, Slide *s, int pos) -{ - int i; - presentation_add_slide(p, NULL); - assert(pos < p->n_slides); - for ( i=p->n_slides-1; i>pos+1; i-- ) { - p->slides[i] = p->slides[i-1]; - } - p->slides[pos] = s; -} - - -int presentation_get_num_slides(Presentation *p) -{ - return p->n_slides; -} - - -Slide *presentation_get_slide_by_number(Presentation *p, int i) -{ - if ( i >= p->n_slides ) return NULL; - if ( i < 0 ) return NULL; - return p->slides[i]; -} - - -signed int presentation_get_slide_number(Presentation *p, Slide *s) -{ - int i; - if ( p == NULL ) return -1; - for ( i=0; i<p->n_slides; i++ ) { - if ( s == p->slides[i] ) return i; - } - return -1; -} - - -Stylesheet *presentation_get_stylesheet(Presentation *p) -{ - if ( p == NULL ) return NULL; - return p->stylesheet; -} - - -Narrative *presentation_get_narrative(Presentation *p) -{ - if ( p == NULL ) return NULL; - return p->narrative; -} - - -const char *presentation_get_language(Presentation *p) -{ - if ( p == NULL ) return NULL; - return p->language; -} - - -ImageStore *presentation_get_imagestore(Presentation *p) -{ - if ( p == NULL ) return NULL; - return p->imagestore; -} |