summaryrefslogtreecommitdiffstats
path: root/src/extension/internal/cairo-renderer.cpp
diff options
context:
space:
mode:
authorThomas Holder <thomas@thomas-holder.de>2018-09-12 14:43:47 +0000
committerThomas Holder <thomas@thomas-holder.de>2018-09-12 14:43:47 +0000
commit1fa0c72b664afa4803dffd463ed11ce01632ab76 (patch)
treec1f746d4e8f7a5d65541cf6c05d3cdc79b3f9c10 /src/extension/internal/cairo-renderer.cpp
parentFix preferences crash (diff)
downloadinkscape-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.cpp16
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);
}
}