diff options
Diffstat (limited to 'frontends/riscos/theme.h')
-rw-r--r-- | frontends/riscos/theme.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/frontends/riscos/theme.h b/frontends/riscos/theme.h new file mode 100644 index 000000000..4a4ba1cb2 --- /dev/null +++ b/frontends/riscos/theme.h @@ -0,0 +1,109 @@ +/* + * Copyright 2005 Richard Wilson <info@tinct.net> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf 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; version 2 of the License. + * + * NetSurf 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/>. + */ + +/** \file + * Window themes(interface). + */ + +#include <stdbool.h> +#include "oslib/osspriteop.h" + +#ifndef _NETSURF_RISCOS_THEME_H_ +#define _NETSURF_RISCOS_THEME_H_ + +/** Theme styles, collecting groups of attributes for different locations. */ + +typedef enum { + THEME_STYLE_NONE = 0, + THEME_STYLE_BROWSER_TOOLBAR, + THEME_STYLE_HOTLIST_TOOLBAR, + THEME_STYLE_COOKIES_TOOLBAR, + THEME_STYLE_GLOBAL_HISTORY_TOOLBAR, + THEME_STYLE_STATUS_BAR +} theme_style; + +/** Theme elements, which belong to styles. */ + +typedef enum { + THEME_ELEMENT_FOREGROUND, + THEME_ELEMENT_BACKGROUND +} theme_element; + +struct theme_file_header { + unsigned int magic_value; + unsigned int parser_version; + char name[32]; + char author[64]; + char browser_bg; + char hotlist_bg; + char status_bg; + char status_fg; + char theme_flags; + char future_expansion_1; + char future_expansion_2; + char future_expansion_3; + unsigned int compressed_sprite_size; + unsigned int decompressed_sprite_size; +}; + +struct theme { + osspriteop_area *sprite_area; /**< sprite area for theme */ + int throbber_width; /**< width of the throbber */ + int throbber_height; /**< height of the throbber */ + int throbber_frames; /**< frames of animation for the throbber */ + int users; /**< number of users for the theme */ +}; + +struct theme_descriptor { + char *leafname; /**< theme leafname */ + char *filename; /**< theme filename */ + char name[32]; /**< theme name */ + char author[64]; /**< theme author */ + int browser_background; /**< background colour of browser toolbar */ + int hotlist_background; /**< background colour of hotlist toolbar */ + int status_background; /**< background colour of status window */ + int status_foreground; /**< colour of status window text */ + bool throbber_right; /**< throbber is on the right (left otherwise) */ + bool throbber_redraw; /**< throbber requires forcible updating */ + unsigned int decompressed_size; /**< decompressed sprite size */ + unsigned int compressed_size; /**< compressed sprite size */ + struct theme *theme; /**< corresponding theme (must be opened) */ + struct theme_descriptor *previous; /**< previous descriptor in the list */ + struct theme_descriptor *next; /**< next descriptor in the list */ +}; + +void ro_gui_theme_initialise(void); +void ro_gui_theme_finalise(void); +struct theme_descriptor *ro_gui_theme_find(const char *leafname); +struct theme_descriptor *ro_gui_theme_get_available(void); +struct theme_descriptor *ro_gui_theme_get_current(void); +osspriteop_area *ro_gui_theme_get_sprites(struct theme_descriptor *descriptor); +int ro_gui_theme_get_style_element(struct theme_descriptor *descriptor, + theme_style style, theme_element element); +bool ro_gui_theme_get_throbber_data(struct theme_descriptor *descriptor, + int *frames, int *width, int *height, + bool *right, bool *redraw); + +bool ro_gui_theme_read_file_header(struct theme_descriptor *descriptor, + struct theme_file_header *file_header); + +bool ro_gui_theme_open(struct theme_descriptor *descriptor, bool list); +bool ro_gui_theme_apply(struct theme_descriptor *descriptor); +void ro_gui_theme_close(struct theme_descriptor *descriptor, bool list); +#endif + |