From f6bd903f2b41f36bb6112d099f36e31696536ba7 Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Thu, 27 May 2010 21:41:41 +0200 Subject: Extensions. Localized float values in SVG due to internal extensions, %f in printf (bug #586063) Fixed bugs: - https://launchpad.net/bugs/586063 (bzr r9456) --- src/extension/internal/filter/drop-shadow.h | 42 ++++++++++++++++++----------- src/extension/internal/filter/snow.h | 7 ++--- src/extension/internal/grid.cpp | 4 ++- 3 files changed, 33 insertions(+), 20 deletions(-) (limited to 'src/extension') diff --git a/src/extension/internal/filter/drop-shadow.h b/src/extension/internal/filter/drop-shadow.h index 34939222c..a48175fde 100644 --- a/src/extension/internal/filter/drop-shadow.h +++ b/src/extension/internal/filter/drop-shadow.h @@ -57,21 +57,26 @@ DropShadow::get_filter_text (Inkscape::Extension::Extension * ext) { if (_filter != NULL) g_free((void *)_filter); - float blur = ext->get_param_float("blur"); - float opacity = ext->get_param_float("opacity") / 100; - float x = ext->get_param_float("xoffset"); - float y = ext->get_param_float("yoffset"); + std::ostringstream blur; + std::ostringstream opacity; + std::ostringstream x; + std::ostringstream y; + + blur << ext->get_param_float("blur"); + opacity << ext->get_param_float("opacity") / 100; + x << ext->get_param_float("xoffset"); + y << ext->get_param_float("yoffset"); _filter = g_strdup_printf( "\n" - "\n" - "\n" - "\n" + "\n" + "\n" + "\n" "\n" "\n" "\n" "\n" - "\n", blur, opacity, x, y); + "\n", blur.str().c_str(), opacity.str().c_str(), x.str().c_str(), y.str().c_str()); return _filter; }; @@ -112,21 +117,26 @@ DropGlow::get_filter_text (Inkscape::Extension::Extension * ext) { if (_filter != NULL) g_free((void *)_filter); - float blur = ext->get_param_float("blur"); - float opacity = ext->get_param_float("opacity") / 100; - float x = ext->get_param_float("xoffset"); - float y = ext->get_param_float("yoffset"); + std::ostringstream blur; + std::ostringstream opacity; + std::ostringstream x; + std::ostringstream y; + + blur << ext->get_param_float("blur"); + opacity << ext->get_param_float("opacity") / 100; + x << ext->get_param_float("xoffset"); + y << ext->get_param_float("yoffset"); _filter = g_strdup_printf( "\n" - "\n" - "\n" - "\n" + "\n" + "\n" + "\n" "\n" "\n" "\n" "\n" - "\n", blur, opacity, x, y); + "\n", blur.str().c_str(), opacity.str().c_str(), x.str().c_str(), y.str().c_str()); return _filter; }; diff --git a/src/extension/internal/filter/snow.h b/src/extension/internal/filter/snow.h index cb5c55f57..2bb798cf1 100644 --- a/src/extension/internal/filter/snow.h +++ b/src/extension/internal/filter/snow.h @@ -51,12 +51,13 @@ Snow::get_filter_text (Inkscape::Extension::Extension * ext) { if (_filter != NULL) g_free((void *)_filter); - float drift = ext->get_param_float("drift"); + std::ostringstream drift; + drift << ext->get_param_float("drift"); _filter = g_strdup_printf( "\n" "\n" - "\n" + "\n" "\n" "\n" "\n" @@ -67,7 +68,7 @@ Snow::get_filter_text (Inkscape::Extension::Extension * ext) "\n" "\n" "\n" - "\n", drift); + "\n", drift.str().c_str()); return _filter; }; diff --git a/src/extension/internal/grid.cpp b/src/extension/internal/grid.cpp index 39bca52d8..1593ffe79 100644 --- a/src/extension/internal/grid.cpp +++ b/src/extension/internal/grid.cpp @@ -120,7 +120,9 @@ Grid::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View *doc Glib::ustring style("fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"); style += ";stroke-width:"; gchar floatstring[64]; - sprintf(floatstring, "%f", line_width); + std::ostringstream stringstream; + stringstream << line_width; + sprintf(floatstring, "%s", stringstream.str().c_str()); style += floatstring; style += "pt"; path->setAttribute("style", style.c_str()); -- cgit v1.2.3 From 69b45fa6c1a5e2ee768ceb18ce2a5f254e4e853d Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Mon, 21 Jun 2010 23:35:03 +0200 Subject: add more help to the tex preamble Fixed bugs: - https://launchpad.net/bugs/596939 (bzr r9519) --- src/extension/internal/latex-text-renderer.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/extension') diff --git a/src/extension/internal/latex-text-renderer.cpp b/src/extension/internal/latex-text-renderer.cpp index c6c597b7a..bebc21f2f 100644 --- a/src/extension/internal/latex-text-renderer.cpp +++ b/src/extension/internal/latex-text-renderer.cpp @@ -184,6 +184,18 @@ static char const preamble[] = "%% \\input{.tex}\n" "%% instead of\n" "%% \\includegraphics[width=]{.pdf}\n" +"%%\n" +"%% Images with a different path to the parent latex file can\n" +"%% be accessed with the `import' package (which may need to be\n" +"%% installed) using\n" +"%% \\usepackage{import}\n" +"%% in the preamble, and then including the image with\n" +"%% \\import{}{.tex}\n" +"%% Alternatively, one can specify\n" +"%% \\graphicspath{{/}}\n" +"%% \n" +"%% For more information, please see info/svg-inkscape on CTAN:\n" +"%% http://tug.ctan.org/tex-archive/info/svg-inkscape\n" "\n" "\\begingroup\n" " \\makeatletter\n" -- cgit v1.2.3 From 7e8ffe9fb3b42470802ed080dc827fdda32165b3 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Sun, 27 Jun 2010 20:16:09 -0700 Subject: Partial C++-ification of SPGradient (bzr r9542) --- src/extension/internal/cairo-render-context.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/extension') diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp index cf3c72432..28d1db9a4 100644 --- a/src/extension/internal/cairo-render-context.cpp +++ b/src/extension/internal/cairo-render-context.cpp @@ -1120,11 +1120,11 @@ CairoRenderContext::_createPatternForPaintServer(SPPaintServer const *const pain SPLinearGradient *lg=SP_LINEARGRADIENT(paintserver); - sp_gradient_ensure_vector(SP_GRADIENT(lg)); // when exporting from commandline, vector is not built + SP_GRADIENT(lg)->ensureVector(); // when exporting from commandline, vector is not built Geom::Point p1 (lg->x1.computed, lg->y1.computed); Geom::Point p2 (lg->x2.computed, lg->y2.computed); - if (pbox && SP_GRADIENT(lg)->units == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) { + if (pbox && SP_GRADIENT(lg)->getUnits() == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) { // convert to userspace Geom::Matrix bbox2user(pbox->x1 - pbox->x0, 0, 0, pbox->y1 - pbox->y0, pbox->x0, pbox->y0); p1 *= bbox2user; @@ -1144,12 +1144,12 @@ CairoRenderContext::_createPatternForPaintServer(SPPaintServer const *const pain SPRadialGradient *rg=SP_RADIALGRADIENT(paintserver); - sp_gradient_ensure_vector(SP_GRADIENT(rg)); // when exporting from commandline, vector is not built + SP_GRADIENT(rg)->ensureVector(); // when exporting from commandline, vector is not built Geom::Point c (rg->cx.computed, rg->cy.computed); Geom::Point f (rg->fx.computed, rg->fy.computed); double r = rg->r.computed; - if (pbox && SP_GRADIENT(rg)->units == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) + if (pbox && SP_GRADIENT(rg)->getUnits() == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) apply_bbox2user = true; // create radial gradient pattern @@ -1172,7 +1172,7 @@ CairoRenderContext::_createPatternForPaintServer(SPPaintServer const *const pain SPGradient *g = SP_GRADIENT(paintserver); // set extend type - SPGradientSpread spread = sp_gradient_get_spread(g); + SPGradientSpread spread = g->fetchSpread(); switch (spread) { case SP_GRADIENT_SPREAD_REPEAT: { cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT); -- cgit v1.2.3 From 62dc9985efff58d201f5272baebfcbeed8de8c82 Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Tue, 29 Jun 2010 23:50:45 +0200 Subject: pdf/ps/eps+latex: output tex code to ".pdf_tex" instead of to ".tex" Fixed bugs: - https://launchpad.net/bugs/595312 (bzr r9547) --- src/extension/internal/cairo-ps-out.cpp | 14 ++------------ src/extension/internal/cairo-renderer-pdf-out.cpp | 7 +------ src/extension/internal/latex-text-renderer.cpp | 10 +++++----- 3 files changed, 8 insertions(+), 23 deletions(-) (limited to 'src/extension') diff --git a/src/extension/internal/cairo-ps-out.cpp b/src/extension/internal/cairo-ps-out.cpp index 61760e9d9..16adebac3 100644 --- a/src/extension/internal/cairo-ps-out.cpp +++ b/src/extension/internal/cairo-ps-out.cpp @@ -195,12 +195,7 @@ CairoPsOutput::save(Inkscape::Extension::Output *mod, SPDocument *doc, gchar con // Create LaTeX file (if requested) if (new_textToLaTeX) { - gchar * tex_filename; - //strip filename of ".ps", do not add ".tex" here. - gsize n = g_str_has_suffix(filename, ".ps") ? strlen(filename)-3 : strlen(filename); - tex_filename = g_strndup(filename, n); - ret = latex_render_document_text_to_file(doc, tex_filename, new_exportId, new_areaDrawing, new_areaPage, false); - g_free(tex_filename); + ret = latex_render_document_text_to_file(doc, filename, new_exportId, new_areaDrawing, new_areaPage, false); if (!ret) throw Inkscape::Extension::Output::save_failed(); @@ -283,12 +278,7 @@ CairoEpsOutput::save(Inkscape::Extension::Output *mod, SPDocument *doc, gchar co // Create LaTeX file (if requested) if (new_textToLaTeX) { - gchar * tex_filename; - //strip filename of ".eps", do not add ".tex" here. - gsize n = g_str_has_suffix(filename, ".eps") ? strlen(filename)-4 : strlen(filename); - tex_filename = g_strndup(filename, n); - ret = latex_render_document_text_to_file(doc, tex_filename, new_exportId, new_areaDrawing, new_areaPage, false); - g_free(tex_filename); + ret = latex_render_document_text_to_file(doc, filename, new_exportId, new_areaDrawing, new_areaPage, false); if (!ret) throw Inkscape::Extension::Output::save_failed(); diff --git a/src/extension/internal/cairo-renderer-pdf-out.cpp b/src/extension/internal/cairo-renderer-pdf-out.cpp index 808590e04..e8eff20b7 100644 --- a/src/extension/internal/cairo-renderer-pdf-out.cpp +++ b/src/extension/internal/cairo-renderer-pdf-out.cpp @@ -213,12 +213,7 @@ CairoRendererPdfOutput::save(Inkscape::Extension::Output *mod, SPDocument *doc, // Create LaTeX file (if requested) if (new_textToLaTeX) { - gchar * tex_filename; - //strip filename of ".pdf", do not add ".tex" here. - gsize n = g_str_has_suffix(filename, ".pdf") ? strlen(filename)-4 : strlen(filename); - tex_filename = g_strndup(filename, n); - ret = latex_render_document_text_to_file(doc, tex_filename, new_exportId, new_exportDrawing, new_exportCanvas, true); - g_free(tex_filename); + ret = latex_render_document_text_to_file(doc, filename, new_exportId, new_exportDrawing, new_exportCanvas, true); if (!ret) throw Inkscape::Extension::Output::save_failed(); diff --git a/src/extension/internal/latex-text-renderer.cpp b/src/extension/internal/latex-text-renderer.cpp index bebc21f2f..0d98f6b9c 100644 --- a/src/extension/internal/latex-text-renderer.cpp +++ b/src/extension/internal/latex-text-renderer.cpp @@ -51,7 +51,7 @@ namespace Internal { /** * This method is called by the PDF, EPS and PS output extensions. - * @param filename This should be the filename without extension to which the tex code should be written. Output goes to .tex. + * @param filename This should be the filename without '_tex' extension to which the tex code should be written. Output goes to _tex, note the underscore instead of period. */ bool latex_render_document_text_to_file( SPDocument *doc, gchar const *filename, @@ -132,7 +132,7 @@ LaTeXTextRenderer::setTargetFile(gchar const *filename) { _filename = g_path_get_basename(filename); - gchar *filename_ext = g_strdup_printf("%s.tex", filename); + gchar *filename_ext = g_strdup_printf("%s_tex", filename); Inkscape::IO::dump_fopen_call(filename_ext, "K"); FILE *osf = Inkscape::IO::fopen_utf8name(filename_ext, "w+"); if (!osf) { @@ -176,12 +176,12 @@ LaTeXTextRenderer::setTargetFile(gchar const *filename) { static char const preamble[] = "%% To include the image in your LaTeX document, write\n" -"%% \\input{.tex}\n" +"%% \\input{.pdf_tex}\n" "%% instead of\n" "%% \\includegraphics{.pdf}\n" "%% To scale the image, write\n" "%% \\def{\\svgwidth}{}\n" -"%% \\input{.tex}\n" +"%% \\input{.pdf_tex}\n" "%% instead of\n" "%% \\includegraphics[width=]{.pdf}\n" "%%\n" @@ -190,7 +190,7 @@ static char const preamble[] = "%% installed) using\n" "%% \\usepackage{import}\n" "%% in the preamble, and then including the image with\n" -"%% \\import{}{.tex}\n" +"%% \\import{}{.pdf_tex}\n" "%% Alternatively, one can specify\n" "%% \\graphicspath{{/}}\n" "%% \n" -- cgit v1.2.3 From d283452c3d5e9706b9bd1863e3da259884c935b1 Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Fri, 2 Jul 2010 19:59:40 +0200 Subject: fix help in latex output (bzr r9555) --- src/extension/internal/latex-text-renderer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/extension') diff --git a/src/extension/internal/latex-text-renderer.cpp b/src/extension/internal/latex-text-renderer.cpp index 0d98f6b9c..00448b89e 100644 --- a/src/extension/internal/latex-text-renderer.cpp +++ b/src/extension/internal/latex-text-renderer.cpp @@ -180,7 +180,7 @@ static char const preamble[] = "%% instead of\n" "%% \\includegraphics{.pdf}\n" "%% To scale the image, write\n" -"%% \\def{\\svgwidth}{}\n" +"%% \\def\\svgwidth{}\n" "%% \\input{.pdf_tex}\n" "%% instead of\n" "%% \\includegraphics[width=]{.pdf}\n" -- cgit v1.2.3