From c26620643cd86cf84e9f1672b61109fcd9d98b4f Mon Sep 17 00:00:00 2001 From: Thomas Holder Date: Fri, 14 Sep 2018 10:54:56 +0200 Subject: fix 3D boxes with inverted y-axis (follow-up) The initial fix was only correct for parallel/infinite Y direction --- src/object/persp3d.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/object/persp3d.cpp') diff --git a/src/object/persp3d.cpp b/src/object/persp3d.cpp index 05ba5898b..5c6835e28 100644 --- a/src/object/persp3d.cpp +++ b/src/object/persp3d.cpp @@ -96,8 +96,11 @@ static Proj::Pt2 legacy_transform_forward(Proj::Pt2 pt, SPDocument const *doc) { } // stores inverted y-axis coordinates - if (pt[2] && SP_ACTIVE_DESKTOP && SP_ACTIVE_DESKTOP->is_yaxisdown()) { - pt[1] = doc->getHeight().value("px") - pt[1]; + if (SP_ACTIVE_DESKTOP && SP_ACTIVE_DESKTOP->is_yaxisdown()) { + pt[1] *= -1; + if (pt[2]) { + pt[1] += doc->getHeight().value("px"); + } } return pt; @@ -108,8 +111,11 @@ static Proj::Pt2 legacy_transform_forward(Proj::Pt2 pt, SPDocument const *doc) { */ static Proj::Pt2 legacy_transform_backward(Proj::Pt2 pt, SPDocument const *doc) { // stores inverted y-axis coordinates - if (pt[2] && SP_ACTIVE_DESKTOP && SP_ACTIVE_DESKTOP->is_yaxisdown()) { - pt[1] = doc->getHeight().value("px") - pt[1]; + if (SP_ACTIVE_DESKTOP && SP_ACTIVE_DESKTOP->is_yaxisdown()) { + pt[1] *= -1; + if (pt[2]) { + pt[1] += doc->getHeight().value("px"); + } } // Written values are in 'user units'. -- cgit v1.2.3