summaryrefslogtreecommitdiffstats
path: root/src/helper
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/helper
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/helper')
-rw-r--r--src/helper/pixbuf-ops.cpp9
-rw-r--r--src/helper/png-write.cpp9
2 files changed, 10 insertions, 8 deletions
diff --git a/src/helper/pixbuf-ops.cpp b/src/helper/pixbuf-ops.cpp
index a79efdbdd..93ea8bc98 100644
--- a/src/helper/pixbuf-ops.cpp
+++ b/src/helper/pixbuf-ops.cpp
@@ -27,6 +27,7 @@
#include "object/sp-defs.h"
#include "object/sp-use.h"
#include "util/units.h"
+#include "inkscape.h"
#include "helper/pixbuf-ops.h"
@@ -111,13 +112,7 @@ Inkscape::Pixbuf *sp_generate_internal_bitmap(SPDocument *doc, gchar const */*fi
Geom::Rect screen=Geom::Rect(Geom::Point(x0,y0), Geom::Point(x1, y1));
- double padding = 1.0;
-
- Geom::Point origin(screen.min()[Geom::X],
- doc->getHeight().value("px") - screen[Geom::Y].extent() - screen.min()[Geom::Y]);
-
- origin[Geom::X] = origin[Geom::X] + (screen[Geom::X].extent() * ((1 - padding) / 2));
- origin[Geom::Y] = origin[Geom::Y] + (screen[Geom::Y].extent() * ((1 - padding) / 2));
+ Geom::Point origin = screen.min() * SP_ACTIVE_DESKTOP->doc2dt();
Geom::Scale scale(Inkscape::Util::Quantity::convert(xdpi, "px", "in"), Inkscape::Util::Quantity::convert(ydpi, "px", "in"));
Geom::Affine affine = scale * Geom::Translate(-origin * scale);
diff --git a/src/helper/png-write.cpp b/src/helper/png-write.cpp
index 92fdc3648..fe5412c4e 100644
--- a/src/helper/png-write.cpp
+++ b/src/helper/png-write.cpp
@@ -31,6 +31,8 @@
#include "rdf.h"
#include "util/units.h"
+#include "inkscape.h"
+
#include "object/sp-item.h"
#include "object/sp-root.h"
#include "object/sp-defs.h"
@@ -425,8 +427,13 @@ ExportResult sp_export_png_file(SPDocument *doc, gchar const *filename,
doc->ensureUpToDate();
+ Geom::Affine dt2doc;
+ if (SP_ACTIVE_DESKTOP) {
+ dt2doc = SP_ACTIVE_DESKTOP->dt2doc();
+ }
+
/* Calculate translation by transforming to document coordinates (flipping Y)*/
- Geom::Point translation = Geom::Point(-area[Geom::X][0], area[Geom::Y][1] - doc->getHeight().value("px"));
+ Geom::Point translation = -(area * dt2doc).min();
/* This calculation is only valid when assumed that (x0,y0)= area.corner(0) and (x1,y1) = area.corner(2)
* 1) a[0] * x0 + a[2] * y1 + a[4] = 0.0