X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2Fsvgtiny.c;h=db0d59b02cd72209a51f409d7f62aef338bb64e3;hb=476045efcd3d938d5ac506eafef3b1551fa8edac;hp=3b886fe770502d384e17cf7ffb8e5b4e075a693b;hpb=b95ec8cedeffd1f1050c92bb934751811fa3c6df;p=libsvgtiny.git diff --git a/src/svgtiny.c b/src/svgtiny.c index 3b886fe..db0d59b 100644 --- a/src/svgtiny.c +++ b/src/svgtiny.c @@ -40,6 +40,12 @@ #define degToRad(angleInDegrees) ((angleInDegrees) * M_PI / 180.0) #define radToDeg(angleInRadians) ((angleInRadians) * 180.0 / M_PI) +static svgtiny_code svgtiny_parse_style_element(dom_element *style, + struct svgtiny_parse_state state); +static css_stylesheet *svgtiny_parse_style_inline(const uint8_t *data, + size_t len); +static svgtiny_code svgtiny_preparse_styles(dom_element *svg, + struct svgtiny_parse_state state); static svgtiny_code svgtiny_parse_svg(dom_element *svg, struct svgtiny_parse_state state); static svgtiny_code svgtiny_parse_path(dom_element *path, @@ -737,7 +743,10 @@ svgtiny_code svgtiny_parse(struct svgtiny_diagram *diagram, state.stroke_width = 1; /* parse tree */ - code = svgtiny_parse_svg(svg, state); + code = svgtiny_preparse_styles(svg, state); + if (code == svgtiny_OK) { + code = svgtiny_parse_svg(svg, state); + } dom_node_unref(svg); dom_node_unref(document); @@ -757,6 +766,172 @@ cleanup: } +/** + * Parse a single