summaryrefslogtreecommitdiff
path: root/frontends/riscos/theme.h
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/riscos/theme.h')
-rw-r--r--frontends/riscos/theme.h109
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
+