From 0fae2b17b79557661e86238840d0af6da5ddc597 Mon Sep 17 00:00:00 2001
From: Stephane Albert <stephane.albert@c-s.fr>
Date: Thu, 26 Mar 2015 12:17:33 +0100
Subject: [PATCH] ENH: Fixed mirror effect (spacing sign) when zooming to layer
 extent.

---
 Code/Common/Gui/mvdImageViewWidget.cxx | 25 +++++--------------------
 1 file changed, 5 insertions(+), 20 deletions(-)

diff --git a/Code/Common/Gui/mvdImageViewWidget.cxx b/Code/Common/Gui/mvdImageViewWidget.cxx
index e5617c1609..cee04b850f 100644
--- a/Code/Common/Gui/mvdImageViewWidget.cxx
+++ b/Code/Common/Gui/mvdImageViewWidget.cxx
@@ -813,26 +813,6 @@ ImageViewWidget
 
     center.SetToMidPoint( origin, extent );
 
-    //
-    // Get spacing of layer.
-    const AbstractLayerModel * layer = GetLayerStack()->GetCurrent();
-    assert( layer!=NULL );
-
-    if( layer->inherits( AbstractImageModel::staticMetaObject.className() ) )
-      {
-      const AbstractImageModel * imageModel =
-        qobject_cast< const AbstractImageModel * >( layer );
-
-      assert( imageModel!=NULL );
-
-      spacing = imageModel->GetSpacing();
-
-      assert( spacing[ 0 ]!=0.0 );
-      assert( spacing[ 1 ]!=0.0 );
-      }
-    else
-      assert( false && "Unhandled AbstractLayerModel derived type." );
-
     //
     // Get Viewport size.
     SizeType size( m_Manipulator->GetViewportSize() );
@@ -845,6 +825,11 @@ ImageViewWidget
         fabs( extent[ 1 ] - origin[ 1 ] ) / static_cast< double >( size[ 1 ] )
       );
 
+    //
+    // Get spacing of layer in viewport system.
+    spacing[ 0 ] = ( extent[ 0 ] - origin[ 0 ] ) / size[ 0 ];
+    spacing[ 1 ] = ( extent[ 1 ] - origin[ 1 ] ) / size[ 1 ];
+
     //
     // Calculate spacing.
     //
-- 
GitLab