summaryrefslogtreecommitdiff
path: root/riscos/htmlredraw.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2003-10-17 23:47:13 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2003-10-17 23:47:13 +0000
commitc97107af5cad3c96f75c566880ff139ce378ee62 (patch)
treef1d0c2dd4cca5cc8b008a31468fe4d41be30cf95 /riscos/htmlredraw.c
parent13d6923b5e6edf727e00484ae05c22dbfa8e1c7c (diff)
downloadnetsurf-c97107af5cad3c96f75c566880ff139ce378ee62.tar.gz
netsurf-c97107af5cad3c96f75c566880ff139ce378ee62.tar.bz2
[project @ 2003-10-17 23:47:13 by jmb]
Add text-decoration support. Overline needs work. a:link defaults to being underlined. svn path=/import/netsurf/; revision=368
Diffstat (limited to 'riscos/htmlredraw.c')
-rw-r--r--riscos/htmlredraw.c47
1 files changed, 44 insertions, 3 deletions
diff --git a/riscos/htmlredraw.c b/riscos/htmlredraw.c
index f4a6c50de..0a8561421 100644
--- a/riscos/htmlredraw.c
+++ b/riscos/htmlredraw.c
@@ -16,6 +16,7 @@
#include "netsurf/render/html.h"
#include "netsurf/riscos/gui.h"
#include "netsurf/utils/log.h"
+#include "netsurf/utils/utils.h"
static void html_redraw_box(struct content *content, struct box * box,
@@ -282,12 +283,52 @@ void html_redraw_box(struct content *content, struct box * box,
colourtrans_set_font_colours(box->font->handle, current_background_color << 8,
box->style->color << 8, 14, 0, 0, 0);
-
- font_paint(box->font->handle, box->text,
+ if (box->style->text_decoration == CSS_TEXT_DECORATION_NONE) {
+ font_paint(box->font->handle, box->text,
font_OS_UNITS | font_GIVEN_FONT | font_KERN | font_GIVEN_LENGTH,
x, y - (int) (box->height * 1.5),
NULL, NULL, (int) box->length);
-
+ }
+ else if (box->style->text_decoration == CSS_TEXT_DECORATION_UNDERLINE) {
+ char ulctrl[3];
+ char *temp = xcalloc(strlen(box->text)+4,
+ sizeof(char));
+ sprintf(ulctrl, "%c%c%c", (char)25, (char)230,
+ (char)10);
+ sprintf(temp, "%s%s", ulctrl, box->text);
+ font_paint(box->font->handle, temp,
+ font_OS_UNITS | font_GIVEN_FONT | font_KERN | font_GIVEN_LENGTH,
+ x, y - (int) (box->height * 1.5),
+ NULL, NULL, (int) box->length + 4);
+ xfree(temp);
+ }
+ else if (box->style->text_decoration == CSS_TEXT_DECORATION_LINE_THROUGH){
+ char ulctrl[3];
+ char *temp = xcalloc(strlen(box->text)+4,
+ sizeof(char));
+ sprintf(ulctrl, "%c%c%c", (char)25, (char)95,
+ (char)10);
+ sprintf(temp, "%s%s", ulctrl, box->text);
+ font_paint(box->font->handle, temp,
+ font_OS_UNITS | font_GIVEN_FONT | font_KERN | font_GIVEN_LENGTH,
+ x, y - (int) (box->height * 1.5),
+ NULL, NULL, (int) box->length + 4);
+ xfree(temp);
+ LOG(("line-through"));
+ }
+ else {
+ char ulctrl[3];
+ char *temp = xcalloc(strlen(box->text)+4,
+ sizeof(char));
+ sprintf(ulctrl, "%c%c%c", (char)25, (char)127,
+ (char)10);
+ sprintf(temp, "%s%s", ulctrl, box->text);
+ font_paint(box->font->handle, temp,
+ font_OS_UNITS | font_GIVEN_FONT | font_KERN | font_GIVEN_LENGTH,
+ x, y - (int) (box->height * 1.5),
+ NULL, NULL, (int) box->length + 4);
+ xfree(temp);
+ }
} else {
for (c = box->children; c != 0; c = c->next)
if (c->type != BOX_FLOAT_LEFT && c->type != BOX_FLOAT_RIGHT)