From dace6363292a09129fd44dfb8117f930b162a01d Mon Sep 17 00:00:00 2001 From: James Bursa Date: Thu, 24 Feb 2005 22:00:41 +0000 Subject: [project @ 2005-02-24 22:00:40 by bursa] Reimplement font family support, part 2 (font menus in choices). svn path=/import/netsurf/; revision=1525 --- riscos/font.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'riscos/font.c') diff --git a/riscos/font.c b/riscos/font.c index ee9229b7d..c3986b2db 100644 --- a/riscos/font.c +++ b/riscos/font.c @@ -13,6 +13,7 @@ #include #include +#include "oslib/wimp.h" #include "rufl.h" #include "netsurf/css/css.h" #include "netsurf/render/font.h" @@ -23,11 +24,15 @@ #include "netsurf/utils/utils.h" +wimp_menu *font_menu; + + static void nsfont_check_option(char **option, const char *family, const char *fallback); static bool nsfont_exists(const char *font_family); static int nsfont_list_cmp(const void *keyval, const void *datum); static void nsfont_check_fonts(void); +static void nsfont_init_menu(void); static void nsfont_read_style(const struct css_style *style, const char **font_family, unsigned int *font_size, rufl_style *font_style); @@ -77,6 +82,8 @@ void nsfont_init(void) option_font_default != CSS_FONT_FAMILY_CURSIVE && option_font_default != CSS_FONT_FAMILY_FANTASY) option_font_default = CSS_FONT_FAMILY_SANS_SERIF; + + nsfont_init_menu(); } @@ -167,6 +174,44 @@ void nsfont_check_fonts(void) } +/** + * Prepare the menu of font families. + */ + +void nsfont_init_menu(void) +{ + unsigned int i; + + font_menu = malloc(wimp_SIZEOF_MENU(rufl_family_list_entries)); + if (!font_menu) + die("NoMemory"); + font_menu->title_data.indirected_text.text = messages_get("Fonts"); + font_menu->title_fg = wimp_COLOUR_BLACK; + font_menu->title_bg = wimp_COLOUR_LIGHT_GREY; + font_menu->work_fg = wimp_COLOUR_BLACK; + font_menu->work_bg = wimp_COLOUR_WHITE; + font_menu->width = 200; + font_menu->height = wimp_MENU_ITEM_HEIGHT; + font_menu->gap = wimp_MENU_ITEM_GAP; + for (i = 0; i != rufl_family_list_entries; i++) { + font_menu->entries[i].menu_flags = 0; + font_menu->entries[i].sub_menu = wimp_NO_SUB_MENU; + font_menu->entries[i].icon_flags = wimp_ICON_TEXT | + wimp_ICON_INDIRECTED | + (wimp_COLOUR_BLACK << wimp_ICON_FG_COLOUR_SHIFT) | + (wimp_COLOUR_WHITE << wimp_ICON_BG_COLOUR_SHIFT); + font_menu->entries[i].data.indirected_text.text = + rufl_family_list[i]; + font_menu->entries[i].data.indirected_text.validation = + (char *) -1; + font_menu->entries[i].data.indirected_text.size = + strlen(rufl_family_list[i]); + } + font_menu->entries[0].menu_flags = wimp_MENU_TITLE_INDIRECTED; + font_menu->entries[i - 1].menu_flags |= wimp_MENU_LAST; +} + + /** * Measure the width of a string. * -- cgit v1.2.3