aboutsummaryrefslogtreecommitdiff
path: root/src/presentation.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/presentation.c')
-rw-r--r--src/presentation.c371
1 files changed, 0 insertions, 371 deletions
diff --git a/src/presentation.c b/src/presentation.c
deleted file mode 100644
index 36e2abe..0000000
--- a/src/presentation.c
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * presentation.c
- *
- * Colloquium - A tiny presentation program
- *
- * Copyright (c) 2011 Thomas White <taw@bitwiz.org.uk>
- *
- * This program 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 <gtk/gtk.h>
-
-#include "presentation.h"
-#include "objects.h"
-#include "stylesheet.h"
-#include "tool_select.h"
-#include "tool_text.h"
-#include "tool_image.h"
-
-
-static int num_presentations = 0;
-
-
-void free_presentation(struct presentation *p)
-{
- int i;
- int final = 0;
-
- for ( i=0; i<p->num_slides; i++ ) {
- free_slide(p->slides[i]);
- }
-
- (*p->num_presentations)--;
- if ( *p->num_presentations == 0 ) final = 1;
-
- /* FIXME: Loads of stuff leaks here */
- free(p->filename);
- free(p);
-
- if ( final ) {
- gtk_main_quit();
- }
-}
-
-
-int insert_slide(struct presentation *p, struct slide *new, int pos)
-{
- struct slide **try;
-// int i;
-
- try = realloc(p->slides, (1+p->num_slides)*sizeof(struct slide *));
- if ( try == NULL ) {
- free(new);
- return 1;
- }
- p->slides = try;
- p->completely_empty = 0;
-
- /* Insert into list. Yuk yuk yuk etc. */
- if ( (p->num_slides>1) && (pos<p->num_slides-1) ) {
-
- int i;
-
- for ( i=p->num_slides; i>pos+1; i-- ) {
- p->slides[i] = p->slides[i-1];
- }
- p->slides[pos+1] = new;
-
- } else if ( pos == p->num_slides-1 ) {
-
- p->slides[pos+1] = new;
-
- } else {
- assert(pos == 0);
- p->slides[pos] = new;
- }
-
- new->parent = p;
- p->num_slides++;
-
- /* Update slide numbers for all subsequent slides */
-// for ( i=pos+1; i<p->num_slides; i++ ) {
-// struct object *o = p->slides[i]->roles[S_ROLE_SLIDENUMBER];
-// if ( o != NULL ) {
-// o->update_object(o);
-// }
-// }
-
- return 0;
-}
-
-
-struct slide *new_slide()
-{
- struct slide *new;
-
- new = calloc(1, sizeof(struct slide));
- if ( new == NULL ) return NULL;
-
- /* No frames to start with */
- new->num_frames = 0;
- new->frames = NULL;
-
- new->rendered_edit = NULL;
- new->rendered_proj = NULL;
- new->rendered_thumb = NULL;
-
- new->notes = strdup("");
-
- return new;
-}
-
-
-static void free_frame(struct frame *fr)
-{
- int i;
-
- for ( i=0; i<fr->num_children; i++ ) {
- free_frame(fr->children[i]);
- }
-
- free(fr->sc);
-
- free(fr);
-}
-
-
-void free_slide(struct slide *s)
-{
- int i;
-
- for ( i=0; i<s->num_frames; i++ ) {
- free_frame(s->frames[i]);
- }
-
- free(s);
-}
-
-
-struct slide *add_slide(struct presentation *p, int pos)
-{
- struct slide *s = new_slide();
- if ( insert_slide(p, s, pos) ) {
- free_slide(s);
- return NULL;
- }
-
-#if 0
- /* Copy roles and references to this slide as applicable */
- if ( pos >= 0 ) {
-
- struct slide *ex = p->slides[pos];
-
- s->roles[S_ROLE_PTITLE_REF] = ex->roles[S_ROLE_PTITLE_REF];
- s->roles[S_ROLE_PAUTHOR_REF] = ex->roles[S_ROLE_PAUTHOR_REF];
- s->roles[S_ROLE_PDATE_REF] = ex->roles[S_ROLE_PDATE_REF];
-
- if ( ex->roles[S_ROLE_PTITLE] != NULL ) {
- p->text_tool->create_default(p,
- ex->roles[S_ROLE_PTITLE]->style, s,
- p->text_tool);
- }
-
- if ( ex->roles[S_ROLE_SLIDENUMBER] != NULL ) {
- p->text_tool->create_default(p,
- ex->roles[S_ROLE_SLIDENUMBER]->style, s,
- p->text_tool);
- }
-
- if ( ex->roles[S_ROLE_PAUTHOR] != NULL ) {
- p->text_tool->create_default(p,
- ex->roles[S_ROLE_PAUTHOR]->style, s,
- p->text_tool);
- }
-
- if ( ex->roles[S_ROLE_PDATE] != NULL ) {
- p->text_tool->create_default(p,
- ex->roles[S_ROLE_PDATE]->style, s,
- p->text_tool);
- }
-
- }
-#endif
-
- return s;
-}
-
-
-int add_frame_to_slide(struct slide *s, struct frame *fr)
-{
- struct frame **try;
-
- try = realloc(s->frames, (1+s->num_frames)*sizeof(struct frame *));
- if ( try == NULL ) return 1;
- s->frames = try;
-
- s->frames[s->num_frames++] = fr;
-
- s->parent->completely_empty = 0;
-
- return 0;
-}
-
-
-void remove_frame_from_slide(struct slide *s, struct frame *fr)
-{
- int i;
- int found = 0;
-
- for ( i=0; i<s->num_frames; i++ ) {
-
- if ( s->frames[i] == fr ) {
- assert(!found);
- found = 1;
- }
-
- if ( found ) {
- if ( i == s->num_frames-1 ) {
- s->frames[i] = NULL;
- } else {
- s->frames[i] = s->frames[i+1];
- }
- }
-
- }
-
- s->num_frames--;
-}
-
-
-struct frame *find_frame_at_position(struct slide *s, double x, double y)
-{
- int i;
- struct frame *fr = NULL;
-
- for ( i=0; i<s->num_frames; i++ ) {
-
- if ( /* FIXME: implement */ 1 )
- {
- fr = s->frames[i];
- }
-
- }
-
- /* FIXME: Recurse */
-
- return fr;
-}
-
-
-static char *safe_basename(const char *in)
-{
- int i;
- char *cpy;
- char *res;
-
- cpy = strdup(in);
-
- /* Get rid of any trailing slashes */
- for ( i=strlen(cpy)-1; i>0; i-- ) {
- if ( cpy[i] == '/' ) {
- cpy[i] = '\0';
- } else {
- break;
- }
- }
-
- /* Find the base name */
- for ( i=strlen(cpy)-1; i>0; i-- ) {
- if ( cpy[i] == '/' ) {
- i++;
- break;
- }
- }
-
- res = strdup(cpy+i);
- /* If we didn't find a previous slash, i==0 so res==cpy */
-
- free(cpy);
-
- return res;
-}
-
-
-void get_titlebar_string(struct presentation *p)
-{
- free(p->titlebar);
-
- if ( p->filename == NULL ) {
- p->titlebar = strdup("(untitled)");
- } else {
- p->titlebar = safe_basename(p->filename);
- }
-}
-
-
-int slide_number(struct presentation *p, struct slide *s)
-{
- int i;
-
- for ( i=0; i<p->num_slides; i++ ) {
- if ( p->slides[i] == s ) return i;
- }
-
- return p->num_slides;
-}
-
-
-struct presentation *new_presentation()
-{
- struct presentation *new;
-
- new = calloc(1, sizeof(struct presentation));
-
- num_presentations++;
- new->num_presentations = &num_presentations;
-
- new->filename = NULL;
- new->titlebar = NULL;
- get_titlebar_string(new);
-
- /* FIXME: Should be just one of these */
- new->prefs = calloc(1, sizeof(struct prefs));
- new->prefs->b_splits = 1;
- new->prefs->open_notes = 0;
-
- new->window = NULL;
- new->ui = NULL;
- new->action_group = NULL;
- new->slideshow = NULL;
- new->notes = NULL;
-
- new->slide_width = 1024.0;
- new->slide_height = 768.0;
-
- /* Add one blank slide and view it */
- new->num_slides = 0;
- new->slides = NULL;
- new->cur_edit_slide = NULL;
- new->cur_proj_slide = NULL;
-
- new->cur_frame = NULL;
- new->completely_empty = 1;
- new->drag_status = DRAG_STATUS_NONE;
-
- new->ss = new_stylesheet();
- default_stylesheet(new->ss);
- new->image_store = image_store_new();
-
- return new;
-}