summaryrefslogtreecommitdiff
path: root/riscos/font.c
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2005-02-24 22:00:41 +0000
committerJames Bursa <james@netsurf-browser.org>2005-02-24 22:00:41 +0000
commitdace6363292a09129fd44dfb8117f930b162a01d (patch)
treee8a0f4231a08476b2eb69ab046260b2d90f4054e /riscos/font.c
parent504e05c4b34c789261b28edeeaa9bb39711ba51d (diff)
downloadnetsurf-dace6363292a09129fd44dfb8117f930b162a01d.tar.gz
netsurf-dace6363292a09129fd44dfb8117f930b162a01d.tar.bz2
[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
Diffstat (limited to 'riscos/font.c')
-rw-r--r--riscos/font.c45
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 ==