From 1b4e0d11d36bcb78fa1ad275ad24c444d99fab3d Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Tue, 28 May 2013 12:55:34 +0100 Subject: move beos to new options API --- beos/Makefile.target | 2 +- beos/gui.cpp | 123 ++++++++++++++-- beos/system_colour.cpp | 387 ------------------------------------------------- 3 files changed, 115 insertions(+), 397 deletions(-) delete mode 100644 beos/system_colour.cpp diff --git a/beos/Makefile.target b/beos/Makefile.target index 7b473dd2f..8df9ec38b 100644 --- a/beos/Makefile.target +++ b/beos/Makefile.target @@ -90,7 +90,7 @@ endif S_BEOS := about.cpp bitmap.cpp download.cpp fetch_rsrc.cpp filetype.cpp \ font.cpp gui.cpp login.cpp gui_options.cpp plotters.cpp \ scaffolding.cpp search.cpp schedule.cpp thumbnail.cpp treeview.cpp \ - throbber.cpp window.cpp system_colour.cpp + throbber.cpp window.cpp S_BEOS := $(addprefix beos/,$(S_BEOS)) RDEF_BEOS := res.rdef diff --git a/beos/gui.cpp b/beos/gui.cpp index 4d4549cc0..5e0f3fd83 100644 --- a/beos/gui.cpp +++ b/beos/gui.cpp @@ -398,6 +398,106 @@ static void gui_init2(int argc, char** argv) } } + +#if !defined(__HAIKU__) && !defined(B_BEOS_VERSION_DANO) +/* more ui_colors, R5 only had a few defined... */ +#define B_PANEL_TEXT_COLOR ((color_which)10) +#define B_DOCUMENT_BACKGROUND_COLOR ((color_which)11) +#define B_DOCUMENT_TEXT_COLOR ((color_which)12) +#define B_CONTROL_BACKGROUND_COLOR ((color_which)13) +#define B_CONTROL_TEXT_COLOR ((color_which)14) +#define B_CONTROL_BORDER_COLOR ((color_which)15) +#define B_CONTROL_HIGHLIGHT_COLOR ((color_which)16) +#define B_NAVIGATION_BASE_COLOR ((color_which)4) +#define B_NAVIGATION_PULSE_COLOR ((color_which)17) +#define B_SHINE_COLOR ((color_which)18) +#define B_SHADOW_COLOR ((color_which)19) +#define B_MENU_SELECTED_BORDER_COLOR ((color_which)9) +#define B_TOOL_TIP_BACKGROUND_COLOR ((color_which)20) +#define B_TOOL_TIP_TEXT_COLOR ((color_which)21) +#define B_SUCCESS_COLOR ((color_which)100) +#define B_FAILURE_COLOR ((color_which)101) +#define B_MENU_SELECTED_BACKGROUND_COLOR B_MENU_SELECTION_BACKGROUND_COLOR +#define B_RANDOM_COLOR ((color_which)0x80000000) +#define B_MICHELANGELO_FAVORITE_COLOR ((color_which)0x80000001) +#define B_DSANDLER_FAVORITE_SKY_COLOR ((color_which)0x80000002) +#define B_DSANDLER_FAVORITE_INK_COLOR ((color_which)0x80000003) +#define B_DSANDLER_FAVORITE_SHOES_COLOR ((color_which)0x80000004) +#define B_DAVE_BROWN_FAVORITE_COLOR ((color_which)0x80000005) +#endif +#if defined(B_BEOS_VERSION_DANO) +#define B_TOOL_TIP_BACKGROUND_COLOR B_TOOLTIP_BACKGROUND_COLOR +#define B_TOOL_TIP_TEXT_COLOR B_TOOLTIP_TEXT_COLOR +#define +#endif +#define NOCOL ((color_which)0) + +/** + * set option from pen + */ +static nserror +set_colour_from_ui(struct nsoption_s *opts, + color_which ui, + enum nsoption_e option, + colour def_colour) +{ + if (ui != NOCOL) { + rgb_color c; + if (ui == B_DESKTOP_COLOR) { + BScreen s; + c = s.DesktopColor(); + } else { + c = ui_color(ui); + } + + def_colour = ((((uint32_t)c.blue << 16) & 0xff0000) | + ((c.green << 8) & 0x00ff00) | + ((c.red) & 0x0000ff)); + } + return def_colour; +} + +/** + * Set option defaults for framebuffer frontend + * + * @param defaults The option table to update. + * @return error status. + */ +static nserror set_defaults(struct nsoption_s *defaults) +{ + /* set system colours for beos ui */ + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_ActiveBorder, 0x00000000); + set_colour_from_ui(defaults, B_WINDOW_TAB_COLOR, NSOPTION_sys_colour_ActiveCaption, 0x00dddddd); + set_colour_from_ui(defaults, B_PANEL_BACKGROUND_COLOR, NSOPTION_sys_colour_AppWorkspace, 0x00eeeeee); + set_colour_from_ui(defaults, B_DESKTOP_COLOR, NSOPTION_sys_colour_Background, 0x00aa0000); + set_colour_from_ui(defaults, B_CONTROL_BACKGROUND_COLOR, NSOPTION_sys_colour_ButtonFace, 0x00aaaaaa); + set_colour_from_ui(defaults, B_CONTROL_HIGHLIGHT_COLOR, NSOPTION_sys_colour_ButtonHighlight, 0x00cccccc); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_ButtonShadow, 0x00bbbbbb); + set_colour_from_ui(defaults, B_CONTROL_TEXT_COLOR, NSOPTION_sys_colour_ButtonText, 0x00000000); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_CaptionText, 0x00000000); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_GrayText, 0x00777777); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_Highlight, 0x00ee0000); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_HighlightText, 0x00000000); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_InactiveBorder, 0x00000000); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_InactiveCaption, 0x00ffffff); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_InactiveCaptionText, 0x00cccccc); + set_colour_from_ui(defaults, B_TOOL_TIP_BACKGROUND_COLOR, NSOPTION_sys_colour_InfoBackground, 0x00aaaaaa); + set_colour_from_ui(defaults, B_TOOL_TIP_TEXT_COLOR, NSOPTION_sys_colour_InfoText, 0x00000000); + set_colour_from_ui(defaults, B_MENU_BACKGROUND_COLOR, NSOPTION_sys_colour_Menu, 0x00aaaaaa); + set_colour_from_ui(defaults, B_MENU_ITEM_TEXT_COLOR, NSOPTION_sys_colour_MenuText, 0x00000000); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_Scrollbar, 0x00aaaaaa); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_ThreeDDarkShadow, 0x00555555); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_ThreeDFace, 0x00dddddd); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_ThreeDHighlight, 0x00aaaaaa); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_ThreeDLightShadow, 0x00999999); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_ThreeDShadow, 0x00777777); + set_colour_from_ui(defaults, B_DOCUMENT_BACKGROUND_COLOR, NSOPTION_sys_colour_Window, 0x00aaaaaa); + set_colour_from_ui(defaults, NOCOL, NSOPTION_sys_colour_WindowFrame, 0x00000000); + set_colour_from_ui(defaults, B_DOCUMENT_TEXT_COLOR, NSOPTION_sys_colour_WindowText, 0x00000000); + + return NSERROR_OK; +} + /** * Ensures output logging stream is correctly configured */ @@ -412,6 +512,7 @@ static bool nslog_stream_configure(FILE *fptr) /** Normal entry point from OS */ int main(int argc, char** argv) { + nserror ret; BPath options; if (find_directory(B_USER_SETTINGS_DIRECTORY, &options, true) == B_OK) { options.Append("x-vnd.NetSurf"); @@ -430,8 +531,19 @@ int main(int argc, char** argv) */ nslog_init(nslog_stream_configure, &argc, argv); - /* initialise netsurf */ - netsurf_init(&argc, &argv, options.Path(), messages); + /* user options setup */ + ret = nsoption_init(set_defaults, &nsoptions, &nsoptions_default); + if (ret != NSERROR_OK) { + die("Options failed to initialise"); + } + nsoption_read(options.Path(), NULL); + nsoption_commandline(&argc, argv, NULL); + + /* common initialisation */ + ret = netsurf_init(messages); + if (ret != NSERROR_OK) { + die("NetSurf failed to initialise"); + } gui_init(argc, argv); gui_init2(argc, argv); @@ -467,13 +579,6 @@ int gui_init_replicant(int argc, char** argv) return 0; } -/* Documented in utils/nsoption.h */ -void gui_options_init_defaults(void) -{ - /* Set defaults for absent option strings */ -} - - void gui_init(int argc, char** argv) { char buf[PATH_MAX]; diff --git a/beos/system_colour.cpp b/beos/system_colour.cpp deleted file mode 100644 index 7a94d4cfc..000000000 --- a/beos/system_colour.cpp +++ /dev/null @@ -1,387 +0,0 @@ -/* - * Copyright 2011 Vincent Sanders - * - * 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 . - */ - -/** \file - * System colour handling - * - */ - -#define __STDBOOL_H__ 1 -#include -#include -#include - -#include -#include - -extern "C" { - -#include "utils/utils.h" -#include "utils/log.h" -#include "desktop/gui.h" -#include "utils/nsoption.h" -#include "desktop/plot_style.h" - -} - -#include "beos/gui.h" - - -#if !defined(__HAIKU__) && !defined(B_BEOS_VERSION_DANO) -/* more ui_colors, R5 only had a few defined... */ -#define B_PANEL_TEXT_COLOR ((color_which)10) -#define B_DOCUMENT_BACKGROUND_COLOR ((color_which)11) -#define B_DOCUMENT_TEXT_COLOR ((color_which)12) -#define B_CONTROL_BACKGROUND_COLOR ((color_which)13) -#define B_CONTROL_TEXT_COLOR ((color_which)14) -#define B_CONTROL_BORDER_COLOR ((color_which)15) -#define B_CONTROL_HIGHLIGHT_COLOR ((color_which)16) -#define B_NAVIGATION_BASE_COLOR ((color_which)4) -#define B_NAVIGATION_PULSE_COLOR ((color_which)17) -#define B_SHINE_COLOR ((color_which)18) -#define B_SHADOW_COLOR ((color_which)19) -#define B_MENU_SELECTED_BORDER_COLOR ((color_which)9) -#define B_TOOL_TIP_BACKGROUND_COLOR ((color_which)20) -#define B_TOOL_TIP_TEXT_COLOR ((color_which)21) -#define B_SUCCESS_COLOR ((color_which)100) -#define B_FAILURE_COLOR ((color_which)101) -#define B_MENU_SELECTED_BACKGROUND_COLOR B_MENU_SELECTION_BACKGROUND_COLOR -#define B_RANDOM_COLOR ((color_which)0x80000000) -#define B_MICHELANGELO_FAVORITE_COLOR ((color_which)0x80000001) -#define B_DSANDLER_FAVORITE_SKY_COLOR ((color_which)0x80000002) -#define B_DSANDLER_FAVORITE_INK_COLOR ((color_which)0x80000003) -#define B_DSANDLER_FAVORITE_SHOES_COLOR ((color_which)0x80000004) -#define B_DAVE_BROWN_FAVORITE_COLOR ((color_which)0x80000005) -#endif -#if defined(B_BEOS_VERSION_DANO) -#define B_TOOL_TIP_BACKGROUND_COLOR B_TOOLTIP_BACKGROUND_COLOR -#define B_TOOL_TIP_TEXT_COLOR B_TOOLTIP_TEXT_COLOR -#define -#endif -#define NOCOL ((color_which)0) - - -struct gui_system_colour_ctx { - const char *name; - int length; - css_color css_colour; - colour *option_colour; - lwc_string *lwcstr; - color_which ui; -}; - -static struct gui_system_colour_ctx colour_list[] = { - { - "ActiveBorder", - SLEN("ActiveBorder"), - 0xff000000, - &nsoption_colour(sys_colour_ActiveBorder), - NULL, - NOCOL - }, { - "ActiveCaption", - SLEN("ActiveCaption"), - 0xffdddddd, - &nsoption_colour(sys_colour_ActiveCaption), - NULL, - B_WINDOW_TAB_COLOR - }, { - "AppWorkspace", - SLEN("AppWorkspace"), - 0xffeeeeee, - &nsoption_colour(sys_colour_AppWorkspace), - NULL, - B_PANEL_BACKGROUND_COLOR - }, { - "Background", - SLEN("Background"), - 0xff0000aa, - &nsoption_colour(sys_colour_Background), - NULL, - B_DESKTOP_COLOR - }, { - "ButtonFace", - SLEN("ButtonFace"), - 0xffaaaaaa, - &nsoption_colour(sys_colour_ButtonFace), - NULL, - B_CONTROL_BACKGROUND_COLOR - }, { - "ButtonHighlight", - SLEN("ButtonHighlight"), - 0xffdddddd, - &nsoption_colour(sys_colour_ButtonHighlight), - NULL, - B_CONTROL_HIGHLIGHT_COLOR - }, { - "ButtonShadow", - SLEN("ButtonShadow"), - 0xffbbbbbb, - &nsoption_colour(sys_colour_ButtonShadow), - NULL, - NOCOL - }, { - "ButtonText", - SLEN("ButtonText"), - 0xff000000, - &nsoption_colour(sys_colour_ButtonText), - NULL, - B_CONTROL_TEXT_COLOR - }, { - "CaptionText", - SLEN("CaptionText"), - 0xff000000, - &nsoption_colour(sys_colour_CaptionText), - NULL, - NOCOL - }, { - "GrayText", - SLEN("GrayText"), - 0xffcccccc, - &nsoption_colour(sys_colour_GrayText), - NULL, - NOCOL - }, { - "Highlight", - SLEN("Highlight"), - 0xff0000ee, - &nsoption_colour(sys_colour_Highlight), - NULL, - NOCOL - }, { - "HighlightText", - SLEN("HighlightText"), - 0xff000000, - &nsoption_colour(sys_colour_HighlightText), - NULL, - NOCOL - }, { - "InactiveBorder", - SLEN("InactiveBorder"), - 0xffffffff, - &nsoption_colour(sys_colour_InactiveBorder), - NULL, - NOCOL - }, { - "InactiveCaption", - SLEN("InactiveCaption"), - 0xffffffff, - &nsoption_colour(sys_colour_InactiveCaption), - NULL, - NOCOL - }, { - "InactiveCaptionText", - SLEN("InactiveCaptionText"), - 0xffcccccc, - &nsoption_colour(sys_colour_InactiveCaptionText), - NULL, - NOCOL - }, { - "InfoBackground", - SLEN("InfoBackground"), - 0xffaaaaaa, - &nsoption_colour(sys_colour_InfoBackground), - NULL, - B_TOOL_TIP_BACKGROUND_COLOR - }, { - "InfoText", - SLEN("InfoText"), - 0xff000000, - &nsoption_colour(sys_colour_InfoText), - NULL, - B_TOOL_TIP_TEXT_COLOR - }, { - "Menu", - SLEN("Menu"), - 0xffaaaaaa, - &nsoption_colour(sys_colour_Menu), - NULL, - B_MENU_BACKGROUND_COLOR - }, { - "MenuText", - SLEN("MenuText"), - 0xff000000, - &nsoption_colour(sys_colour_MenuText), - NULL, - B_MENU_ITEM_TEXT_COLOR - }, { - "Scrollbar", - SLEN("Scrollbar"), - 0xffaaaaaa, - &nsoption_colour(sys_colour_Scrollbar), - NULL, - NOCOL - }, { - "ThreeDDarkShadow", - SLEN("ThreeDDarkShadow"), - 0xff555555, - &nsoption_colour(sys_colour_ThreeDDarkShadow), - NULL, - NOCOL - }, { - "ThreeDFace", - SLEN("ThreeDFace"), - 0xffdddddd, - &nsoption_colour(sys_colour_ThreeDFace), - NULL, - NOCOL - }, { - "ThreeDHighlight", - SLEN("ThreeDHighlight"), - 0xffaaaaaa, - &nsoption_colour(sys_colour_ThreeDHighlight), - NULL, - NOCOL - }, { - "ThreeDLightShadow", - SLEN("ThreeDLightShadow"), - 0xff999999, - &nsoption_colour(sys_colour_ThreeDLightShadow), - NULL, - NOCOL - }, { - "ThreeDShadow", - SLEN("ThreeDShadow"), - 0xff777777, - &nsoption_colour(sys_colour_ThreeDShadow), - NULL, - NOCOL - }, { - "Window", - SLEN("Window"), - 0xffaaaaaa, - &nsoption_colour(sys_colour_Window), - NULL, - B_DOCUMENT_BACKGROUND_COLOR - }, { - "WindowFrame", - SLEN("WindowFrame"), - 0xff000000, - &nsoption_colour(sys_colour_WindowFrame), - NULL, - NOCOL - }, { - - "WindowText", - SLEN("WindowText"), - 0xff000000, - &nsoption_colour(sys_colour_WindowText), - NULL, - B_DOCUMENT_TEXT_COLOR - }, - -}; - -#define colour_list_len (sizeof(colour_list) / sizeof(struct gui_system_colour_ctx)) - -static struct gui_system_colour_ctx *gui_system_colour_pw = NULL; - - -bool gui_system_colour_init(void) -{ - unsigned int ccount; - - if (gui_system_colour_pw != NULL) - return false; - - /* Intern colour strings */ - for (ccount = 0; ccount < colour_list_len; ccount++) { - if (lwc_intern_string(colour_list[ccount].name, - colour_list[ccount].length, - &(colour_list[ccount].lwcstr)) != lwc_error_ok) { - return false; - } - } - - /* pull in options if set (ie not transparent) */ - for (ccount = 0; ccount < colour_list_len; ccount++) { - if (*(colour_list[ccount].option_colour) != 0) { - colour_list[ccount].css_colour = *(colour_list[ccount].option_colour); - } - } - - nsbeos_update_system_ui_colors(); - - gui_system_colour_pw = colour_list; - - return true; -} - -void gui_system_colour_finalize(void) -{ - unsigned int ccount; - - for (ccount = 0; ccount < colour_list_len; ccount++) { - lwc_string_unref(colour_list[ccount].lwcstr); - } -} - -colour gui_system_colour_char(const char *name) -{ - colour ret = 0xff00000; - unsigned int ccount; - - for (ccount = 0; ccount < colour_list_len; ccount++) { - if (strcmp(name, colour_list[ccount].name) == 0) { - ret = colour_list[ccount].css_colour; - break; - } - } - return ret; -} - -css_error gui_system_colour(void *pw, lwc_string *name, css_color *css_colour) -{ - unsigned int ccount; - bool match; - - for (ccount = 0; ccount < colour_list_len; ccount++) { - if (lwc_string_caseless_isequal(name, - colour_list[ccount].lwcstr, - &match) == lwc_error_ok && match) { - *css_colour = colour_list[ccount].css_colour; - return CSS_OK; - } - } - - return CSS_INVALID; -} - -void nsbeos_update_system_ui_colors(void) -{ - unsigned int ccount; - - for (ccount = 0; ccount < colour_list_len; ccount++) { - if (colour_list[ccount].ui == NOCOL) - continue; - rgb_color c = ui_color(colour_list[ccount].ui); - if (colour_list[ccount].ui == B_DESKTOP_COLOR) { - BScreen s; - c = s.DesktopColor(); - } - - //printf("uic[%d] = ui_color(%d) %02x %02x %02x %02x\n", ccount, - // colour_list[ccount].ui, c.red, c.green, c.blue, c.alpha); - - colour_list[ccount].css_colour = 0xff000000 - | ((((uint32_t)c.red << 16) & 0xff0000) - | ((c.green << 8) & 0x00ff00) - | ((c.blue) & 0x0000ff)); - } -} - -- cgit v1.2.3