X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2Fsvgtiny.c;h=3b886fe770502d384e17cf7ffb8e5b4e075a693b;hb=b95ec8cedeffd1f1050c92bb934751811fa3c6df;hp=ee0c59c1eff64a7fa434d22b25d5d1f9dcf7c11f;hpb=f66051cab457438eefd23e1e2c6e2197894b2d52;p=libsvgtiny.git diff --git a/src/svgtiny.c b/src/svgtiny.c index ee0c59c..3b886fe 100644 --- a/src/svgtiny.c +++ b/src/svgtiny.c @@ -17,6 +17,8 @@ #include #include +#include + #include "svgtiny.h" #include "svgtiny_internal.h" @@ -610,6 +612,7 @@ svgtiny_code svgtiny_parse(struct svgtiny_diagram *diagram, const char *buffer, size_t size, const char *url, int viewport_width, int viewport_height) { + css_error css_code; dom_document *document; dom_exception exc; dom_xml_parser *parser; @@ -695,6 +698,17 @@ svgtiny_code svgtiny_parse(struct svgtiny_diagram *diagram, state.viewport_width = viewport_width; state.viewport_height = viewport_height; + + /* Initialize CSS context */ + if (state.select_ctx == NULL) { + css_code = css_select_ctx_create(&state.select_ctx); + if (css_code != CSS_OK) { + dom_node_unref(svg); + dom_node_unref(document); + return svgtiny_LIBCSS_ERROR; + } + } + #define SVGTINY_STRING_ACTION2(s,n) \ if (dom_string_create_interned((const uint8_t *) #n, \ strlen(#n), &state.interned_##s) \ @@ -718,8 +732,6 @@ svgtiny_code svgtiny_parse(struct svgtiny_diagram *diagram, state.ctm.d = 1; /*(float) viewport_height / (float) height;*/ state.ctm.e = 0; /*x;*/ state.ctm.f = 0; /*y;*/ - /*state.style = css_base_style; - state.style.font_size.value.length.value = option_font_size * 0.1;*/ state.fill = 0x000000; state.stroke = svgtiny_TRANSPARENT; state.stroke_width = 1; @@ -729,6 +741,10 @@ svgtiny_code svgtiny_parse(struct svgtiny_diagram *diagram, dom_node_unref(svg); dom_node_unref(document); + css_code = css_select_ctx_destroy(state.select_ctx); + if (css_code != CSS_OK) { + code = svgtiny_LIBCSS_ERROR; + } cleanup: svgtiny_cleanup_state_local(&state); @@ -1687,9 +1703,6 @@ svgtiny_code svgtiny_parse_text(dom_element *text, /* state.ctm.e = px - state.origin_x; */ /* state.ctm.f = py - state.origin_y; */ - /*struct css_style style = state.style; - style.font_size.value.length.value *= state.ctm.a;*/ - exc = dom_node_get_first_child(text, &child); if (exc != DOM_NO_ERR) { return svgtiny_LIBDOM_ERROR; @@ -1819,7 +1832,7 @@ static float _svgtiny_parse_length(const char *s, int viewport_size, int num_length = strspn(s, "0123456789+-."); const char *unit = s + num_length; float n = atof((const char *) s); - float font_size = 20; /*css_len2px(&state.style.font_size.value.length, 0);*/ + float font_size = 20; UNUSED(state); @@ -2013,13 +2026,7 @@ void svgtiny_parse_font_attributes(dom_element *node, for (attr = node->properties; attr; attr = attr->next) { if (strcmp((const char *) attr->name, "font-size") == 0) { - /*if (css_parse_length( - (const char *) attr->children->content, - &state->style.font_size.value.length, - true, true)) { - state->style.font_size.size = - CSS_FONT_SIZE_LENGTH; - }*/ + /* TODO */ } } #endif