summaryrefslogtreecommitdiff
path: root/css
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2012-03-25 15:02:08 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2012-03-25 15:02:08 +0000
commit7491f60696e5ccf565e683393f9484d533265805 (patch)
treec045c7780a0aae7d02d534d919ceb42898cc2920 /css
parent729b34fa3b6b08e3386b60f9f2e2d681533c9b99 (diff)
downloadnetsurf-7491f60696e5ccf565e683393f9484d533265805.tar.gz
netsurf-7491f60696e5ccf565e683393f9484d533265805.tar.bz2
Fix up node_presentational_hint_text_align
svn path=/trunk/netsurf/; revision=13691
Diffstat (limited to 'css')
-rw-r--r--css/select.c111
1 files changed, 69 insertions, 42 deletions
diff --git a/css/select.c b/css/select.c
index 0c548049d..cb24958e9 100644
--- a/css/select.c
+++ b/css/select.c
@@ -1964,104 +1964,131 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx,
dom_node *node,
css_hint *hint)
{
- xmlChar *align = NULL;
+ dom_string *name;
+ dom_string *align = NULL;
+ dom_exception err;
- if (strcmp((const char *) n->name, "p") == 0 ||
- strcmp((const char *) n->name, "h1") == 0 ||
- strcmp((const char *) n->name, "h2") == 0 ||
- strcmp((const char *) n->name, "h3") == 0 ||
- strcmp((const char *) n->name, "h4") == 0 ||
- strcmp((const char *) n->name, "h5") == 0 ||
- strcmp((const char *) n->name, "h6") == 0) {
- align = xmlGetProp(n, (const xmlChar *) "align");
+ err = dom_node_get_node_name(node, &name);
+ if (err != DOM_NO_ERR)
+ return CSS_PROPERTY_NOT_SET;
- if (align == NULL)
+ if (strcmp(dom_string_data(name), "p") == 0 ||
+ strcmp(dom_string_data(name), "h1") == 0 ||
+ strcmp(dom_string_data(name), "h2") == 0 ||
+ strcmp(dom_string_data(name), "h3") == 0 ||
+ strcmp(dom_string_data(name), "h4") == 0 ||
+ strcmp(dom_string_data(name), "h5") == 0 ||
+ strcmp(dom_string_data(name), "h6") == 0) {
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_align, &align);
+ if (err != DOM_NO_ERR || align == NULL) {
+ dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
+ }
- if (strcasecmp((const char *) align, "left") == 0) {
+ if (strcasecmp(dom_string_data(align), "left") == 0) {
hint->status = CSS_TEXT_ALIGN_LEFT;
- } else if (strcasecmp((const char *) align,
+ } else if (strcasecmp(dom_string_data(align),
"center") == 0) {
hint->status = CSS_TEXT_ALIGN_CENTER;
- } else if (strcasecmp((const char *) align,
+ } else if (strcasecmp(dom_string_data(align),
"right") == 0) {
hint->status = CSS_TEXT_ALIGN_RIGHT;
- } else if (strcasecmp((const char *) align,
+ } else if (strcasecmp(dom_string_data(align),
"justify") == 0) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
- xmlFree(align);
+ dom_string_unref(align);
+ dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
}
- xmlFree(align);
+ dom_string_unref(align);
+ dom_string_unref(name);
return CSS_OK;
- } else if (strcmp((const char *) n->name, "center") == 0) {
+ } else if (strcmp(dom_string_data(name), "center") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
+ dom_string_unref(name);
+
return CSS_OK;
- } else if (strcmp((const char *) n->name, "caption") == 0) {
- align = xmlGetProp(n, (const xmlChar *) "align");
+ } else if (strcmp(dom_string_data(name), "caption") == 0) {
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_align, &align);
+ if (err != DOM_NO_ERR) {
+ dom_string_unref(name);
+ return CSS_PROPERTY_NOT_SET;
+ }
- if (align == NULL || strcasecmp((const char *) align,
+ if (align == NULL || strcasecmp(dom_string_data(align),
"center") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
- } else if (strcasecmp((const char *) align,
+ } else if (strcasecmp(dom_string_data(align),
"left") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_LEFT;
- } else if (strcasecmp((const char *) align,
+ } else if (strcasecmp(dom_string_data(align),
"right") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_RIGHT;
- } else if (strcasecmp((const char *) align,
+ } else if (strcasecmp(dom_string_data(align),
"justify") == 0) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
- xmlFree(align);
+ dom_string_unref(align);
+ dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
}
if (align != NULL)
- xmlFree(align);
+ dom_string_unref(align);
+ dom_string_unref(name);
return CSS_OK;
- } else if (strcmp((const char *) n->name, "div") == 0 ||
- strcmp((const char *) n->name, "thead") == 0 ||
- strcmp((const char *) n->name, "tbody") == 0 ||
- strcmp((const char *) n->name, "tfoot") == 0 ||
- strcmp((const char *) n->name, "tr") == 0 ||
- strcmp((const char *) n->name, "td") == 0 ||
- strcmp((const char *) n->name, "th") == 0) {
- align = xmlGetProp(n, (const xmlChar *) "align");
-
- if (align == NULL)
+ } else if (strcmp(dom_string_data(name), "div") == 0 ||
+ strcmp(dom_string_data(name), "thead") == 0 ||
+ strcmp(dom_string_data(name), "tbody") == 0 ||
+ strcmp(dom_string_data(name), "tfoot") == 0 ||
+ strcmp(dom_string_data(name), "tr") == 0 ||
+ strcmp(dom_string_data(name), "td") == 0 ||
+ strcmp(dom_string_data(name), "th") == 0) {
+ err = dom_element_get_attribute(node,
+ nscss_dom_string_align, &align);
+ if (err != DOM_NO_ERR || align == NULL) {
+ dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
+ }
- if (strcasecmp((const char *) align, "center") == 0) {
+ if (strcasecmp(dom_string_data(align), "center") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
- } else if (strcasecmp((const char *) align,
+ } else if (strcasecmp(dom_string_data(align),
"left") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_LEFT;
- } else if (strcasecmp((const char *) align,
+ } else if (strcasecmp(dom_string_data(align),
"right") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_RIGHT;
- } else if (strcasecmp((const char *) align,
+ } else if (strcasecmp(dom_string_data(align),
"justify") == 0) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
- xmlFree(align);
+ dom_string_unref(align);
+ dom_string_unref(name);
return CSS_PROPERTY_NOT_SET;
}
- xmlFree(align);
+ dom_string_unref(align);
+ dom_string_unref(name);
return CSS_OK;
- } else if (strcmp((const char *) n->name, "table") == 0) {
+ } else if (strcmp(dom_string_data(name), "table") == 0) {
/* Tables usually reset alignment */
hint->status = CSS_TEXT_ALIGN_INHERIT_IF_NON_MAGIC;
+ dom_string_unref(name);
+
return CSS_OK;
} else {
+ dom_string_unref(name);
+
return CSS_PROPERTY_NOT_SET;
}