diff options
Diffstat (limited to 'image/svg.c')
-rw-r--r-- | image/svg.c | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/image/svg.c b/image/svg.c index d347a0d35..a233739b7 100644 --- a/image/svg.c +++ b/image/svg.c @@ -48,6 +48,8 @@ bool svg_create(struct content *c, const struct http_parameter *params) if (!c->data.svg.diagram) goto no_memory; + c->data.svg.done_parse = false; + return true; no_memory: @@ -61,21 +63,8 @@ no_memory: * Convert a CONTENT_SVG for display. */ -bool svg_convert(struct content *c, int w, int h) +bool svg_convert(struct content *c) { - const char *source_data; - unsigned long source_size; - - assert(c->data.svg.diagram); - - source_data = content__get_source_data(c, &source_size); - - svgtiny_parse(c->data.svg.diagram, source_data, source_size, - content__get_url(c), w, h); - - c->width = c->data.svg.diagram->width; - c->height = c->data.svg.diagram->height; - /*c->title = malloc(100); if (c->title) snprintf(c->title, 100, messages_get("svgTitle"), @@ -88,6 +77,28 @@ bool svg_convert(struct content *c, int w, int h) return true; } +/** + * Reformat a CONTENT_SVG. + */ + +void svg_reformat(struct content *c, int width, int height) +{ + const char *source_data; + unsigned long source_size; + + assert(c->data.svg.diagram); + + if (c->data.svg.done_parse == false) { + source_data = content__get_source_data(c, &source_size); + + svgtiny_parse(c->data.svg.diagram, source_data, source_size, + content__get_url(c), w, h); + } + + c->width = c->data.svg.diagram->width; + c->height = c->data.svg.diagram->height; +} + /** * Redraw a CONTENT_SVG. |