summaryrefslogtreecommitdiffstats
path: root/src/extension
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
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')
-rw-r--r--src/extension/internal/cairo-renderer.cpp16
-rw-r--r--src/extension/internal/grid.cpp4
-rw-r--r--src/extension/internal/latex-text-renderer.cpp5
3 files changed, 11 insertions, 14 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);
}
}
diff --git a/src/extension/internal/grid.cpp b/src/extension/internal/grid.cpp
index 9e05ecd29..82531e009 100644
--- a/src/extension/internal/grid.cpp
+++ b/src/extension/internal/grid.cpp
@@ -100,9 +100,7 @@ Grid::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View *doc
bounding_area = *bounds;
}
- gdouble doc_height = (document->doc())->getHeight().value("px");
- Geom::Rect temprec = Geom::Rect(Geom::Point(bounding_area.min()[Geom::X], doc_height - bounding_area.min()[Geom::Y]),
- Geom::Point(bounding_area.max()[Geom::X], doc_height - bounding_area.max()[Geom::Y]));
+ Geom::Rect temprec = bounding_area * static_cast<SPDesktop *>(document)->doc2dt();
bounding_area = temprec;
}
diff --git a/src/extension/internal/latex-text-renderer.cpp b/src/extension/internal/latex-text-renderer.cpp
index f346a304a..c78471080 100644
--- a/src/extension/internal/latex-text-renderer.cpp
+++ b/src/extension/internal/latex-text-renderer.cpp
@@ -45,6 +45,7 @@
#include "extension/output.h"
#include "extension/system.h"
+#include "inkscape.h"
#include "inkscape-version.h"
#include "io/sys.h"
#include "document.h"
@@ -680,7 +681,9 @@ LaTeXTextRenderer::setupDocument(SPDocument *doc, bool pageBoundingBox, float bl
}
// flip y-axis
- push_transform( Geom::Scale(1,-1) * Geom::Translate(0, doc->getHeight().value("px")) ); /// @fixme hardcoded desktop transform!
+ if (SP_ACTIVE_DESKTOP) {
+ push_transform( SP_ACTIVE_DESKTOP->doc2dt() );
+ }
// write the info to LaTeX
Inkscape::SVGOStringStream os;