/* * objects.h * * Colloquium - A tiny presentation program * * Copyright (c) 2011 Thomas White * * 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 . * */ #ifndef OBJECTS_H #define OBJECTS_H #ifdef HAVE_CONFIG_H #include #endif #include "loadsave.h" enum objtype { OBJ_UNKNOWN, OBJ_TEXT, OBJ_IMAGE, }; struct object { enum objtype type; struct slide *parent; struct style *style; /* Position of corner of object */ double x; double y; /* Side of rectangular bounding box of object */ double bb_width; double bb_height; int empty; void (*render_object)(cairo_t *cr, struct object *o); void (*update_object)(struct object *o); void (*delete_object)(struct object *o); void (*serialize)(struct object *o, struct serializer *ser); }; struct image_store; struct image { char *filename; GdkPixbuf *pb; int width; int height; int refcount; struct image_store *parent; }; enum corner { CORNER_NONE, CORNER_TL, CORNER_TR, CORNER_BL, CORNER_BR }; extern struct image *get_image(struct image_store *is, char *filename); extern struct image_store *image_store_new(void); extern void unref_image(struct image *i); extern void notify_style_update(struct presentation *p, struct style *sty); extern void delete_object(struct object *o); extern void realise_everything(struct presentation *p); extern enum corner which_corner(double xp, double yp, struct object *o); #endif /* OBJECTS_H */