diff options
| author | Ted Gould <ted@gould.cx> | 2008-10-27 18:03:09 +0000 |
|---|---|---|
| committer | Ted Gould <ted@canonical.com> | 2008-10-27 18:03:09 +0000 |
| commit | 7dbe11bc23efa5f51a9b84e7d0f6dd16e63e0902 (patch) | |
| tree | 7d3a2b95b84a03a19cb132cdf88bea0ab6dc4773 /src/extension/internal | |
| parent | Merging from trunk (diff) | |
| download | inkscape-7dbe11bc23efa5f51a9b84e7d0f6dd16e63e0902.tar.gz inkscape-7dbe11bc23efa5f51a9b84e7d0f6dd16e63e0902.zip | |
From trunk
(bzr r6885)
Diffstat (limited to 'src/extension/internal')
| -rw-r--r-- | src/extension/internal/bluredge.cpp | 11 | ||||
| -rw-r--r-- | src/extension/internal/cairo-ps-out.cpp | 207 | ||||
| -rw-r--r-- | src/extension/internal/cairo-renderer-pdf-out.cpp | 28 | ||||
| -rw-r--r-- | src/extension/internal/cairo-renderer.cpp | 71 | ||||
| -rw-r--r-- | src/extension/internal/gdkpixbuf-input.cpp | 1 | ||||
| -rw-r--r-- | src/extension/internal/pdfinput/svg-builder.cpp | 4 |
6 files changed, 139 insertions, 183 deletions
diff --git a/src/extension/internal/bluredge.cpp b/src/extension/internal/bluredge.cpp index 80454f9ed..e32012070 100644 --- a/src/extension/internal/bluredge.cpp +++ b/src/extension/internal/bluredge.cpp @@ -16,7 +16,7 @@ #include "desktop.h" #include "selection.h" #include "helper/action.h" -#include "prefs-utils.h" +#include "preferences.h" #include "path-chemistry.h" #include "sp-item.h" @@ -58,7 +58,8 @@ BlurEdge::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View float width = module->get_param_float("blur-width"); int steps = module->get_param_int("num-steps"); - double old_offset = prefs_get_double_attribute("options.defaultoffsetwidth", "value", 1.0); + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + double old_offset = prefs->getDouble("/options/defaultoffsetwidth/value", 1.0); using Inkscape::Util::GSListConstIterator; // TODO need to properly refcount the items, at least @@ -96,10 +97,10 @@ BlurEdge::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View if (offset < 0.0) { /* Doing an inset here folks */ offset *= -1.0; - prefs_set_double_attribute("options.defaultoffsetwidth", "value", offset); + prefs->setDouble("/options/defaultoffsetwidth/value", offset); sp_action_perform(Inkscape::Verb::get(SP_VERB_SELECTION_INSET)->get_action(desktop), NULL); } else if (offset > 0.0) { - prefs_set_double_attribute("options.defaultoffsetwidth", "value", offset); + prefs->setDouble("/options/defaultoffsetwidth/value", offset); sp_action_perform(Inkscape::Verb::get(SP_VERB_SELECTION_OFFSET)->get_action(desktop), NULL); } @@ -109,7 +110,7 @@ BlurEdge::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View Inkscape::GC::release(new_group); } - prefs_set_double_attribute("options.defaultoffsetwidth", "value", old_offset); + prefs->setDouble("/options/defaultoffsetwidth/value", old_offset); selection->clear(); selection->add(items.begin(), items.end()); diff --git a/src/extension/internal/cairo-ps-out.cpp b/src/extension/internal/cairo-ps-out.cpp index fba0ab571..01afec0fc 100644 --- a/src/extension/internal/cairo-ps-out.cpp +++ b/src/extension/internal/cairo-ps-out.cpp @@ -61,23 +61,35 @@ CairoEpsOutput::check (Inkscape::Extension::Extension * module) } static bool -ps_print_document_to_file(SPDocument *doc, gchar const *filename, unsigned int level, bool texttopath, bool filtertobitmap, int resolution, bool eps = false) +ps_print_document_to_file(SPDocument *doc, gchar const *filename, unsigned int level, bool texttopath, bool filtertobitmap, int resolution, const gchar * const exportId, bool exportDrawing, bool exportCanvas, bool eps = false) { - CairoRenderer *renderer; - CairoRenderContext *ctx; - sp_document_ensure_up_to_date(doc); -/* Start */ + SPItem *base = NULL; + + bool pageBoundingBox = TRUE; + if (exportId && strcmp(exportId, "")) { + // we want to export the given item only + base = SP_ITEM(doc->getObjectById(exportId)); + pageBoundingBox = exportCanvas; + } + else { + // we want to export the entire document from root + base = SP_ITEM(sp_document_root(doc)); + pageBoundingBox = !exportDrawing; + } + + if (!base) + return false; + /* Create new arena */ - SPItem *base = SP_ITEM(sp_document_root(doc)); NRArena *arena = NRArena::create(); unsigned dkey = sp_item_display_key_new(1); - NRArenaItem *root = sp_item_invoke_show(base, arena, dkey, SP_ITEM_SHOW_DISPLAY); + sp_item_invoke_show(base, arena, dkey, SP_ITEM_SHOW_DISPLAY); /* Create renderer and context */ - renderer = new CairoRenderer(); - ctx = renderer->createContext(); + CairoRenderer *renderer = new CairoRenderer(); + CairoRenderContext *ctx = renderer->createContext(); ctx->setPSLevel(level); ctx->setEPS(eps); ctx->setTextToPath(texttopath); @@ -87,22 +99,21 @@ ps_print_document_to_file(SPDocument *doc, gchar const *filename, unsigned int l bool ret = ctx->setPsTarget(filename); if(ret) { /* Render document */ - ret = renderer->setupDocument(ctx, doc, TRUE, NULL); + ret = renderer->setupDocument(ctx, doc, pageBoundingBox, base); if (ret) { renderer->renderItem(ctx, base); ret = ctx->finish(); } } - renderer->destroyContext(ctx); /* Release arena */ sp_item_invoke_hide(base, dkey); nr_object_unref((NRObject *) arena); -/* end */ + + renderer->destroyContext(ctx); delete renderer; return ret; - } @@ -122,89 +133,51 @@ CairoPsOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const gc if (ext == NULL) return; - const gchar *old_level = NULL; const gchar *new_level = NULL; - int level = 1; + int level = CAIRO_PS_LEVEL_2; try { - old_level = ext->get_param_enum("PSlevel"); new_level = mod->get_param_enum("PSlevel"); - if((new_level != NULL) && (g_ascii_strcasecmp("PS2", new_level) == 0)) - level = 0; -// ext->set_param_enum("PSlevel", new_level); - } - catch(...) { - g_warning("Parameter <PSlevel> might not exists"); - } + if((new_level != NULL) && !(g_ascii_strcasecmp("PS3", new_level) == 0)) + level = CAIRO_PS_LEVEL_3; + } catch(...) {} - bool old_textToPath = FALSE; bool new_textToPath = FALSE; try { - old_textToPath = ext->get_param_bool("textToPath"); new_textToPath = mod->get_param_bool("textToPath"); - ext->set_param_bool("textToPath", new_textToPath); - } - catch(...) { - g_warning("Parameter <textToPath> might not exists"); - } + } catch(...) {} - bool old_blurToBitmap = FALSE; bool new_blurToBitmap = FALSE; try { - old_blurToBitmap = ext->get_param_bool("blurToBitmap"); new_blurToBitmap = mod->get_param_bool("blurToBitmap"); - ext->set_param_bool("blurToBitmap", new_blurToBitmap); - } - catch(...) { - g_warning("Parameter <blurToBitmap> might not exists"); - } + } catch(...) {} - int old_bitmapResolution = 72; int new_bitmapResolution = 72; try { - old_bitmapResolution = ext->get_param_int("resolution"); new_bitmapResolution = mod->get_param_int("resolution"); - ext->set_param_int("resolution", new_bitmapResolution); - } - catch(...) { - g_warning("Parameter <resolution> might not exists"); - } - - gchar * final_name; - final_name = g_strdup_printf("> %s", uri); - ret = ps_print_document_to_file(doc, final_name, level, new_textToPath, new_blurToBitmap, new_bitmapResolution); - g_free(final_name); + } catch(...) {} + bool new_areaCanvas = true; try { - ext->set_param_int("resolution", old_bitmapResolution); - } - catch(...) { - g_warning("Parameter <resolution> might not exists"); - } - try { - ext->set_param_bool("blurToBitmap", old_blurToBitmap); - } - catch(...) { - g_warning("Parameter <blurToBitmap> might not exists"); - } + new_areaCanvas = mod->get_param_bool("areaCanvas"); + } catch(...) {} + + bool new_areaDrawing = true; try { - ext->set_param_bool("textToPath", old_textToPath); - } - catch(...) { - g_warning("Parameter <textToPath> might not exists"); - } + new_areaDrawing = mod->get_param_bool("areaDrawing"); + } catch(...) {} + + const gchar *new_exportId = NULL; try { -// ext->set_param_enum("PSlevel", old_level); - } - catch(...) { - g_warning("Parameter <PSlevel> might not exists"); - } + new_exportId = mod->get_param_string("exportId"); + } catch(...) {} + gchar * final_name; + final_name = g_strdup_printf("> %s", uri); + ret = ps_print_document_to_file(doc, final_name, level, new_textToPath, new_blurToBitmap, new_bitmapResolution, new_exportId, new_areaDrawing, new_areaCanvas); + g_free(final_name); if (!ret) throw Inkscape::Extension::Output::save_failed(); - - return; - } @@ -224,89 +197,51 @@ CairoEpsOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const g if (ext == NULL) return; - const gchar *old_level = NULL; const gchar *new_level = NULL; - int level = 1; + int level = CAIRO_PS_LEVEL_2; try { - old_level = ext->get_param_enum("PSlevel"); new_level = mod->get_param_enum("PSlevel"); - if((new_level != NULL) && (g_ascii_strcasecmp("PS2", new_level) == 0)) - level = 0; -// ext->set_param_enum("PSlevel", new_level); - } - catch(...) { - g_warning("Parameter <PSlevel> might not exists"); - } + if((new_level != NULL) && !(g_ascii_strcasecmp("PS3", new_level) == 0)) + level = CAIRO_PS_LEVEL_3; + } catch(...) {} - bool old_textToPath = FALSE; bool new_textToPath = FALSE; try { - old_textToPath = ext->get_param_bool("textToPath"); new_textToPath = mod->get_param_bool("textToPath"); - ext->set_param_bool("textToPath", new_textToPath); - } - catch(...) { - g_warning("Parameter <textToPath> might not exists"); - } + } catch(...) {} - bool old_blurToBitmap = FALSE; bool new_blurToBitmap = FALSE; try { - old_blurToBitmap = ext->get_param_bool("blurToBitmap"); new_blurToBitmap = mod->get_param_bool("blurToBitmap"); - ext->set_param_bool("blurToBitmap", new_blurToBitmap); - } - catch(...) { - g_warning("Parameter <blurToBitmap> might not exists"); - } + } catch(...) {} - int old_bitmapResolution = 72; int new_bitmapResolution = 72; try { - old_bitmapResolution = ext->get_param_int("resolution"); new_bitmapResolution = mod->get_param_int("resolution"); - ext->set_param_int("resolution", new_bitmapResolution); - } - catch(...) { - g_warning("Parameter <resolution> might not exists"); - } - - gchar * final_name; - final_name = g_strdup_printf("> %s", uri); - ret = ps_print_document_to_file(doc, final_name, level, new_textToPath, new_blurToBitmap, new_bitmapResolution, true); - g_free(final_name); + } catch(...) {} + bool new_areaCanvas = true; try { - ext->set_param_int("resolution", old_bitmapResolution); - } - catch(...) { - g_warning("Parameter <resolution> might not exists"); - } - try { - ext->set_param_bool("blurToBitmap", old_blurToBitmap); - } - catch(...) { - g_warning("Parameter <blurToBitmap> might not exists"); - } + new_areaCanvas = mod->get_param_bool("areaCanvas"); + } catch(...) {} + + bool new_areaDrawing = true; try { - ext->set_param_bool("textToPath", old_textToPath); - } - catch(...) { - g_warning("Parameter <textToPath> might not exists"); - } + new_areaDrawing = mod->get_param_bool("areaDrawing"); + } catch(...) {} + + const gchar *new_exportId = NULL; try { -// ext->set_param_enum("PSlevel", old_level); - } - catch(...) { - g_warning("Parameter <PSlevel> might not exists"); - } + new_exportId = mod->get_param_string("exportId"); + } catch(...) {} + gchar * final_name; + final_name = g_strdup_printf("> %s", uri); + ret = ps_print_document_to_file(doc, final_name, level, new_textToPath, new_blurToBitmap, new_bitmapResolution, new_exportId, new_areaDrawing, new_areaCanvas, true); + g_free(final_name); if (!ret) throw Inkscape::Extension::Output::save_failed(); - - return; - } @@ -344,9 +279,12 @@ CairoPsOutput::init (void) "<_item value='PS2'>" N_("PostScript level 2") "</_item>\n" #endif "</param>\n" + "<param name=\"areaCanvas\" gui-text=\"" N_("Export area is whole canvas") "\" type=\"boolean\">true</param>\n" + "<param name=\"areaDrawing\" gui-text=\"" N_("Export area is the drawing") "\" type=\"boolean\">true</param>\n" "<param name=\"textToPath\" gui-text=\"" N_("Convert texts to paths") "\" type=\"boolean\">false</param>\n" "<param name=\"blurToBitmap\" gui-text=\"" N_("Convert blur effects to bitmaps") "\" type=\"boolean\">false</param>\n" "<param name=\"resolution\" gui-text=\"" N_("Preferred resolution (DPI) of bitmaps") "\" type=\"int\" min=\"72\" max=\"2400\">90</param>\n" + "<param name=\"exportId\" gui-text=\"" N_("Limit export to the object with ID") "\" type=\"string\"></param>\n" "<output>\n" "<extension>.ps</extension>\n" "<mimetype>image/x-postscript</mimetype>\n" @@ -378,9 +316,12 @@ CairoEpsOutput::init (void) "<_item value='PS2'>" N_("PostScript level 2") "</_item>\n" #endif "</param>\n" + "<param name=\"areaCanvas\" gui-text=\"" N_("Export area is whole canvas") "\" type=\"boolean\">true</param>\n" + "<param name=\"areaDrawing\" gui-text=\"" N_("Export area is the drawing") "\" type=\"boolean\">true</param>\n" "<param name=\"textToPath\" gui-text=\"" N_("Convert texts to paths") "\" type=\"boolean\">false</param>\n" "<param name=\"blurToBitmap\" gui-text=\"" N_("Convert blur effects to bitmaps") "\" type=\"boolean\">false</param>\n" "<param name=\"resolution\" gui-text=\"" N_("Preferred resolution (DPI) of bitmaps") "\" type=\"int\" min=\"72\" max=\"2400\">90</param>\n" + "<param name=\"exportId\" gui-text=\"" N_("Limit export to the object with ID") "\" type=\"string\"></param>\n" "<output>\n" "<extension>.eps</extension>\n" "<mimetype>image/x-e-postscript</mimetype>\n" diff --git a/src/extension/internal/cairo-renderer-pdf-out.cpp b/src/extension/internal/cairo-renderer-pdf-out.cpp index 4e6c74dff..c82cc7611 100644 --- a/src/extension/internal/cairo-renderer-pdf-out.cpp +++ b/src/extension/internal/cairo-renderer-pdf-out.cpp @@ -75,7 +75,7 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int /* Create new arena */ NRArena *arena = NRArena::create(); unsigned dkey = sp_item_display_key_new(1); - NRArenaItem *root = sp_item_invoke_show(base, arena, dkey, SP_ITEM_SHOW_DISPLAY); + sp_item_invoke_show(base, arena, dkey, SP_ITEM_SHOW_DISPLAY); /* Create renderer and context */ CairoRenderer *renderer = new CairoRenderer(); @@ -98,7 +98,7 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int /* Release arena */ sp_item_invoke_hide(base, dkey); nr_object_unref((NRObject *) arena); -/* end */ + renderer->destroyContext(ctx); delete renderer; @@ -134,7 +134,7 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, // level = 1; } catch(...) { -// g_warning("Parameter <PDFversion> might not exists"); +// g_warning("Parameter <PDFversion> might not exist"); } bool new_textToPath = FALSE; @@ -142,7 +142,7 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, new_textToPath = mod->get_param_bool("textToPath"); } catch(...) { - g_warning("Parameter <textToPath> might not exists"); + g_warning("Parameter <textToPath> might not exist"); } bool new_blurToBitmap = FALSE; @@ -150,7 +150,7 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, new_blurToBitmap = mod->get_param_bool("blurToBitmap"); } catch(...) { - g_warning("Parameter <blurToBitmap> might not exists"); + g_warning("Parameter <blurToBitmap> might not exist"); } int new_bitmapResolution = 72; @@ -158,7 +158,7 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, new_bitmapResolution = mod->get_param_int("resolution"); } catch(...) { - g_warning("Parameter <resolution> might not exists"); + g_warning("Parameter <resolution> might not exist"); } const gchar *new_exportId = NULL; @@ -166,23 +166,23 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, new_exportId = mod->get_param_string("exportId"); } catch(...) { - g_warning("Parameter <exportId> might not exists"); + g_warning("Parameter <exportId> might not exist"); } bool new_exportDrawing = FALSE; try { - new_exportDrawing = mod->get_param_bool("exportDrawing"); + new_exportDrawing = mod->get_param_bool("areaDrawing"); } catch(...) { - g_warning("Parameter <exportDrawing> might not exists"); + g_warning("Parameter <areaDrawing> might not exist"); } bool new_exportCanvas = FALSE; try { - new_exportCanvas = mod->get_param_bool("exportCanvas"); + new_exportCanvas = mod->get_param_bool("areaCanvas"); } catch(...) { - g_warning("Parameter <exportCanvas> might not exists"); + g_warning("Parameter <exportCanvas> might not exist"); } gchar * final_name; @@ -194,8 +194,6 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, if (!ret) throw Inkscape::Extension::Output::save_failed(); - - return; } #include "clear-n_.h" @@ -220,8 +218,8 @@ CairoRendererPdfOutput::init (void) "<param name=\"textToPath\" gui-text=\"" N_("Convert texts to paths") "\" type=\"boolean\">false</param>\n" "<param name=\"blurToBitmap\" gui-text=\"" N_("Convert filter effects to bitmaps") "\" type=\"boolean\">false</param>\n" "<param name=\"resolution\" gui-text=\"" N_("Preferred resolution (DPI) of bitmaps") "\" type=\"int\" min=\"72\" max=\"2400\">90</param>\n" - "<param name=\"exportDrawing\" gui-text=\"" N_("Export drawing, not page") "\" type=\"boolean\">false</param>\n" - "<param name=\"exportCanvas\" gui-text=\"" N_("Export canvas") "\" type=\"boolean\">false</param>\n" + "<param name=\"areaDrawing\" gui-text=\"" N_("Export drawing, not page") "\" type=\"boolean\">false</param>\n" + "<param name=\"areaCanvas\" gui-text=\"" N_("Export canvas") "\" type=\"boolean\">false</param>\n" "<param name=\"exportId\" gui-text=\"" N_("Limit export to the object with ID") "\" type=\"string\"></param>\n" "<output>\n" "<extension>.pdf</extension>\n" diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp index 07d799b0f..86e04fb54 100644 --- a/src/extension/internal/cairo-renderer.cpp +++ b/src/extension/internal/cairo-renderer.cpp @@ -180,7 +180,12 @@ static void sp_shape_render (SPItem *item, CairoRenderContext *ctx) SPMarker* marker = SP_MARKER (shape->marker[SP_MARKER_LOC_START]); SPItem* marker_item = sp_item_first_item_child (SP_OBJECT (shape->marker[SP_MARKER_LOC_START])); - Geom::Matrix tr(sp_shape_marker_get_transform_at_start(path_it->front())); + Geom::Matrix tr; + if (marker->orient_auto) { + tr = sp_shape_marker_get_transform_at_start(path_it->front()); + } else { + tr = Geom::Rotate::from_degrees(marker->orient) * Geom::Translate(path_it->front().pointAt(0)); + } if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH) { tr = Geom::Scale(style->stroke_width.computed) * tr; @@ -206,7 +211,12 @@ static void sp_shape_render (SPItem *item, CairoRenderContext *ctx) SPMarker* marker = SP_MARKER (shape->marker[SP_MARKER_LOC_MID]); SPItem* marker_item = sp_item_first_item_child (SP_OBJECT (shape->marker[SP_MARKER_LOC_MID])); - Geom::Matrix tr(sp_shape_marker_get_transform(*curve_it1, *curve_it2)); + Geom::Matrix tr; + if (marker->orient_auto) { + tr = sp_shape_marker_get_transform(*curve_it1, *curve_it2); + } else { + tr = Geom::Rotate::from_degrees(marker->orient) * Geom::Translate(curve_it1->pointAt(1)); + } if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH) { tr = Geom::Scale(style->stroke_width.computed) * tr; @@ -236,7 +246,12 @@ static void sp_shape_render (SPItem *item, CairoRenderContext *ctx) } Geom::Curve const &lastcurve = (*path_it)[index]; - Geom::Matrix tr = sp_shape_marker_get_transform_at_end(lastcurve); + Geom::Matrix tr; + if (marker->orient_auto) { + tr = sp_shape_marker_get_transform_at_end(lastcurve); + } else { + tr = Geom::Rotate::from_degrees(marker->orient) * Geom::Translate(lastcurve.pointAt(1)); + } if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH) { tr = Geom::Scale(style->stroke_width.computed) * tr; @@ -557,42 +572,42 @@ CairoRenderer::setupDocument(CairoRenderContext *ctx, SPDocument *doc, bool page { g_assert( ctx != NULL ); - if (ctx->_vector_based_target) { - // width and height in pt - ctx->_width = sp_document_width(doc) * PT_PER_PX; - ctx->_height = sp_document_height(doc) * PT_PER_PX; - } else { - ctx->_width = sp_document_width(doc); - ctx->_height = sp_document_height(doc); - } + if (!base) + base = SP_ITEM(sp_document_root(doc)); NRRect d; - if (pageBoundingBox || !base) { + if (pageBoundingBox) { d.x0 = d.y0 = 0; - d.x1 = ceil(ctx->_width); - d.y1 = ceil(ctx->_height); + d.x1 = ceil(sp_document_width(doc)); + d.y1 = ceil(sp_document_height(doc)); } else { - sp_item_invoke_bbox(base, &d, sp_item_i2r_affine(base), TRUE); - if (ctx->_vector_based_target) { - // convert from px to pt - d.x0 *= PT_PER_PX; - d.x1 *= PT_PER_PX; - d.y0 *= PT_PER_PX; - d.y1 *= PT_PER_PX; - } + sp_item_invoke_bbox(base, &d, sp_item_i2r_affine(base), TRUE, SPItem::RENDERING_BBOX); } + + if (ctx->_vector_based_target) { + // convert from px to pt + d.x0 *= PT_PER_PX; + d.x1 *= PT_PER_PX; + d.y0 *= PT_PER_PX; + d.y1 *= PT_PER_PX; + } + + ctx->_width = d.x1-d.x0; + ctx->_height = d.y1-d.y0; + TRACE(("setupDocument: %f x %f\n", ctx->_width, ctx->_height)); - bool ret = ctx->setupSurface(d.x1-d.x0, d.y1-d.y0); + bool ret = ctx->setupSurface(ctx->_width, ctx->_height); - if (ret && !pageBoundingBox && base) + if (ret && !pageBoundingBox) { + double high = sp_document_height(doc); + if (ctx->_vector_based_target) + high *= PT_PER_PX; + Geom::Matrix tp(Geom::Translate(-d.x0 * (ctx->_vector_based_target ? PX_PER_PT : 1.0), - (d.y1 - ctx->_height) * (ctx->_vector_based_target ? PX_PER_PT : 1.0))); + (d.y1 - high) * (ctx->_vector_based_target ? PX_PER_PT : 1.0))); ctx->transform(&tp); - - ctx->_width = d.x1 - d.x0; - ctx->_height = d.y1 - d.y0; } return ret; diff --git a/src/extension/internal/gdkpixbuf-input.cpp b/src/extension/internal/gdkpixbuf-input.cpp index 14effbeb7..e8af0ec9d 100644 --- a/src/extension/internal/gdkpixbuf-input.cpp +++ b/src/extension/internal/gdkpixbuf-input.cpp @@ -3,7 +3,6 @@ #endif #include "document-private.h" #include <dir-util.h> -#include "prefs-utils.h" #include "extension/system.h" #include "gdkpixbuf-input.h" #include "selection-chemistry.h" diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp index e28264eff..f58e37173 100644 --- a/src/extension/internal/pdfinput/svg-builder.cpp +++ b/src/extension/internal/pdfinput/svg-builder.cpp @@ -1210,7 +1210,9 @@ void SvgBuilder::_flushText() { last_delta_pos = delta_pos; // Append the character to the text buffer - text_buffer.append((char *)&glyph.code, 1); + if (0 != glyph.code[0]) { + text_buffer.append((char *)&glyph.code, 1); + } glyphs_in_a_row++; i++; |
