diff options
| author | Thomas Holder <thomas@thomas-holder.de> | 2018-09-12 14:43:47 +0000 |
|---|---|---|
| committer | Thomas Holder <thomas@thomas-holder.de> | 2018-09-12 14:43:47 +0000 |
| commit | 1fa0c72b664afa4803dffd463ed11ce01632ab76 (patch) | |
| tree | c1f746d4e8f7a5d65541cf6c05d3cdc79b3f9c10 /src/extension/internal/cairo-renderer.cpp | |
| parent | Fix preferences crash (diff) | |
| download | inkscape-1fa0c72b664afa4803dffd463ed11ce01632ab76.tar.gz inkscape-1fa0c72b664afa4803dffd463ed11ce01632ab76.zip | |
New option to invert y-axis
Replaces all hard coded or implicit desktop coordinate usage with
doc2dt multiplication.
New global preference: Interface > Origin at upper left
https://bugs.launchpad.net/inkscape/+bug/170049
Diffstat (limited to 'src/extension/internal/cairo-renderer.cpp')
| -rw-r--r-- | src/extension/internal/cairo-renderer.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp index e390c5314..32f42c3ce 100644 --- a/src/extension/internal/cairo-renderer.cpp +++ b/src/extension/internal/cairo-renderer.cpp @@ -663,7 +663,7 @@ CairoRenderer::setupDocument(CairoRenderContext *ctx, SPDocument *doc, bool page if (pageBoundingBox) { d = Geom::Rect::from_xywh(Geom::Point(0,0), doc->getDimensions()); } else { - Geom::OptRect bbox = base->desktopVisualBounds(); + Geom::OptRect bbox = base->documentVisualBounds(); if (!bbox) { g_message("CairoRenderer: empty bounding box."); return false; @@ -672,13 +672,14 @@ CairoRenderer::setupDocument(CairoRenderContext *ctx, SPDocument *doc, bool page } d.expandBy(bleedmargin_px); + double px_to_ctx_units = 1.0; if (ctx->_vector_based_target) { // convert from px to pt - d *= Geom::Scale(Inkscape::Util::Quantity::convert(1, "px", "pt")); + px_to_ctx_units = Inkscape::Util::Quantity::convert(1, "px", "pt"); } - ctx->_width = d.width(); - ctx->_height = d.height(); + ctx->_width = d.width() * px_to_ctx_units; + ctx->_height = d.height() * px_to_ctx_units; TRACE(("setupDocument: %f x %f\n", ctx->_width, ctx->_height)); @@ -690,13 +691,8 @@ CairoRenderer::setupDocument(CairoRenderContext *ctx, SPDocument *doc, bool page Geom::Affine tp( Geom::Translate( bleedmargin_px, bleedmargin_px ) ); ctx->transform(tp); } else { - double high = doc->getHeight().value("px"); - if (ctx->_vector_based_target) - high = Inkscape::Util::Quantity::convert(high, "px", "pt"); - // this transform translates the export drawing to a virtual page (0,0)-(width,height) - Geom::Affine tp(Geom::Translate(-d.left() * (ctx->_vector_based_target ? Inkscape::Util::Quantity::convert(1, "pt", "px") : 1.0), - (d.bottom() - high) * (ctx->_vector_based_target ? Inkscape::Util::Quantity::convert(1, "pt", "px") : 1.0))); + Geom::Affine tp(Geom::Translate(-d.min())); ctx->transform(tp); } } |
