Save the stylesheet
[colloquium.git] / src / presentation.h
index 97a8ee3..57542ca 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * presentation.h
  *
- * Colloquium - A tiny presentation program
+ * Copyright © 2013-2018 Thomas White <taw@bitwiz.org.uk>
  *
- * Copyright (c) 2011 Thomas White <taw@bitwiz.org.uk>
+ * This file is part of Colloquium.
  *
- * This program is free software: you can redistribute it and/or modify
+ * 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.
 #include <config.h>
 #endif
 
+struct presentation;
 
-#include <gtk/gtk.h>
-
+#include "imagestore.h"
+#include "sc_parse.h"
+#include "slideshow.h"
+#include "narrative_window.h"
+#include "slide_window.h"
 #include "stylesheet.h"
 
+struct menu_pl;
 
-struct slide
+struct presentation
 {
-       struct presentation *parent;
+       char             *uri;
+       GFile            *stylesheet_from;
+       int               completely_empty;
+       int               saved;
+       PangoLanguage    *lang;
 
-       cairo_surface_t *render_cache;
-       int              render_cache_seq;
+       ImageStore       *is;
 
-       int              num_objects;
-       struct object  **objects;
-       int              object_seq;
+       NarrativeWindow  *narrative_window;
+       SlideWindow      *slidewindow;
 
-       double           slide_width;
-       double           slide_height;
-};
+       struct pr_clock  *clock;
 
+       /* This is the "native" size of the slide.  It only exists to give
+        * font size some meaning in the context of a somewhat arbitrary DPI */
+       double            slide_width;
+       double            slide_height;
 
-enum tool
-{
-       TOOL_SELECT,
-       TOOL_TEXT,
+       SCBlock          *scblocks;
+       Stylesheet       *stylesheet;
 };
 
 
-struct presentation
-{
-       char             *titlebar;
-       char             *filename;
-       int               completely_empty;
+extern struct presentation *new_presentation(const char *imagestore);
+extern void free_presentation(struct presentation *p);
 
-       GtkWidget        *window;
-       GtkWidget        *drawingarea;
-       GtkUIManager     *ui;
-       GtkActionGroup   *action_group;
-       GtkIMContext     *im_context;
-       GtkWidget        *toolbar;
-       GtkWidget        *tbox;
-       int               drag_preview_pending;
-       int               have_drag_data;
-
-       /* Stylesheet */
-       StyleSheet            *ss;
-       struct text_style     *cur_style;
-       struct layout_element *cur_layout;
-
-       /* Dialogue boxes */
-       StylesheetWindow *stylesheetwindow;
-
-       /* Slideshow stuff */
-       GtkWidget        *slideshow;
-       GtkWidget        *ss_drawingarea;
-       GdkCursor        *blank_cursor;
-       int               ss_blank;
-       char              ss_geom[256];
+extern char *get_titlebar_string(struct presentation *p);
 
-       double            slide_width;
-       double            slide_height;
-       double            border_offs_x;
-       double            border_offs_y;
+extern int slide_number(struct presentation *p, SCBlock *sl);
+extern int num_slides(struct presentation *p);
+extern SCBlock *first_slide(struct presentation *p);
+extern SCBlock *last_slide(struct presentation *p);
+extern SCBlock *next_slide(struct presentation *p, SCBlock *sl);
+extern SCBlock *prev_slide(struct presentation *p, SCBlock *sl);
 
-       /* The slide currently being displayed */
-       unsigned int      view_slide_number;
-       struct slide     *view_slide;
-       struct object    *editing_object;
-
-       /* Tool status */
-       enum tool         tool;
-       double            drag_offs_x;
-       double            drag_offs_y;
-
-       unsigned int      num_slides;
-       struct slide    **slides;
-};
+extern int load_presentation(struct presentation *p, GFile *file);
+extern int save_presentation(struct presentation *p, GFile *file, GFile *ssfile);
 
+#define UNUSED __attribute__((unused))
 
-extern struct presentation *new_presentation(void);
-extern struct slide *add_slide(struct presentation *p, int pos);
-extern int add_object_to_slide(struct slide *s, struct object *o);
-extern void remove_object_from_slide(struct slide *s, struct object *o);
-extern struct object *find_object_at_position(struct slide *s,
-                                              double x, double y);
 
 #endif /* PRESENTATION_H */