diff Framework/Radiography/RadiographyLayer.cpp @ 1279:7ec8fea061b9 broker

integration mainline->broker
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 04 Feb 2020 15:20:08 +0100
parents 0ca50d275b9a 398ea4259e65
children 379c00958553
line wrap: on
line diff
--- a/Framework/Radiography/RadiographyLayer.cpp	Fri Jan 31 17:34:57 2020 +0100
+++ b/Framework/Radiography/RadiographyLayer.cpp	Tue Feb 04 15:20:08 2020 +0100
@@ -59,15 +59,15 @@
 
   void RadiographyLayer::UpdateTransform()
   {
+    // important to update transform_ before getting the center to use the right scaling !!!
     transform_ = AffineTransform2D::CreateScaling(geometry_.GetScalingX(), geometry_.GetScalingY());
 
     double centerX, centerY;
     GetCenter(centerX, centerY);
 
     transform_ = AffineTransform2D::Combine(
-          AffineTransform2D::CreateOffset(geometry_.GetPanX() + centerX, geometry_.GetPanY() + centerY),
-          AffineTransform2D::CreateRotation(geometry_.GetAngle()),
-          AffineTransform2D::CreateOffset(-centerX, -centerY),
+          AffineTransform2D::CreateOffset(geometry_.GetPanX(), geometry_.GetPanY()),
+          AffineTransform2D::CreateRotation(geometry_.GetAngle(), centerX, centerY),
           transform_);
 
     transformInverse_ = AffineTransform2D::Invert(transform_);
@@ -222,14 +222,19 @@
   }
 
   void RadiographyLayer::SetSize(unsigned int width,
-                                 unsigned int height)
+                                 unsigned int height,
+                                 bool emitLayerEditedEvent)
   {
     hasSize_ = true;
     width_ = width;
     height_ = height;
 
     UpdateTransform();
-    BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+
+    if (emitLayerEditedEvent)
+    {
+      BroadcastMessage(RadiographyLayer::LayerEditedMessage(*this));
+    }
   }