/* * stylesheet.h * * Copyright © 2019 Thomas White * * 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 . * */ #ifndef STYLESHEET_H #define STYLESHEET_H #ifdef HAVE_CONFIG_H #include #endif typedef struct _stylesheet Stylesheet; enum alignment { ALIGN_INHERIT, /* use whatever the stylesheet says */ ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER }; enum length_unit { LENGTH_FRAC, LENGTH_UNIT }; struct length { double len; enum length_unit unit; }; struct frame_geom { struct length x; struct length y; struct length w; struct length h; }; enum gradient { GRAD_NONE, GRAD_HORIZ, GRAD_VERT }; enum style_element { STYEL_NARRATIVE, STYEL_NARRATIVE_PRESTITLE, STYEL_NARRATIVE_BP, STYEL_SLIDE, STYEL_SLIDE_TEXT, STYEL_SLIDE_IMAGE, STYEL_SLIDE_PRESTITLE, STYEL_SLIDE_SLIDETITLE, STYEL_SLIDE_FOOTER, }; extern Stylesheet *stylesheet_new(void); extern void stylesheet_free(Stylesheet *s); extern int stylesheet_set_slide_default_size(Stylesheet *s, double w, double h); extern int stylesheet_get_slide_default_size(Stylesheet *s, double *w, double *h); extern int stylesheet_set_geometry(Stylesheet *s, enum style_element el, struct frame_geom geom); extern int stylesheet_set_font(Stylesheet *s, enum style_element el, char *font); extern int stylesheet_set_alignment(Stylesheet *s, enum style_element el, enum alignment align); extern int stylesheet_set_padding(Stylesheet *s, enum style_element el, struct length padding[4]); extern int stylesheet_set_paraspace(Stylesheet *s, enum style_element el, struct length paraspace[4]); extern int stylesheet_set_fgcol(Stylesheet *s, enum style_element el, double rgba[4]); extern int stylesheet_set_background(Stylesheet *s, enum style_element el, enum gradient grad, double bgcol[4], double bgcol2[4]); extern int stylesheet_get_geometry(Stylesheet *s, enum style_element el, struct frame_geom *geom); extern const char *stylesheet_get_font(Stylesheet *s, enum style_element el, double *fgcol, enum alignment *alignment); extern int stylesheet_get_background(Stylesheet *s, enum style_element el, enum gradient *grad, double *bgcol, double *bgcol2); extern int stylesheet_get_padding(Stylesheet *s, enum style_element el, struct length padding[4]); extern int stylesheet_get_paraspace(Stylesheet *s, enum style_element el, struct length paraspace[4]); #endif /* STYLESHEET_H */