diff options
Diffstat (limited to 'riscos/font.c')
-rw-r--r-- | riscos/font.c | 45 |
1 files changed, 45 insertions, 0 deletions
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 <assert.h> #include <string.h> +#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(); } @@ -168,6 +175,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. * * \param style css_style for this text, with style->font_size.size == |