]> Creatis software - bbtkGEditor.git/commitdiff
v1.1.0 BUG 1403
authordavila <>
Sun, 3 Jun 2012 18:52:28 +0000 (18:52 +0000)
committerdavila <>
Sun, 3 Jun 2012 18:52:28 +0000 (18:52 +0000)
 - Moving control points of splines connection when both boxes are selected

lib/EditorGraphicBBS/bbsKernelEditorGraphic/GConnectorModel.cxx

index 7be647f13f8797d20cb12d80de3a43e72434d3f6..d76d7fe4870a3fa5bf3879ae01c9aba5f067f563 100644 (file)
@@ -119,6 +119,13 @@ namespace bbtk
 
        void GConnectorModel::updateStartEndPoints()
        {
+               
+               //back point
+               double bsx,bsy; // back start for x and y
+               double nsx,nsy;
+               double bex,bey; // new start for x and y
+               double nex,ney;
+               
                //Start Point
                double xCenter,yCenter,zCenter;         
                _startPort->getCenter(xCenter,yCenter,zCenter);
@@ -127,16 +134,44 @@ namespace bbtk
 
                // Refresh the position of the contourModel first point with the data of the connector model
                manualPoint* point = _model->GetManualPoint(0);
+               bsx=point->GetX(); 
+               bsy=point->GetY(); 
                point->SetPoint(xCenter,yport,zCenter);
-
+               nsx=xCenter;
+               nsy=yport;
+               
                //End Point     
                _endPort->getCenter(xCenter,yCenter,zCenter);
                _endPort->getInicPoint(xport,yport,zport);
 
                // Refresh the position of the contourModel last point with the data of the connector model
                point = _model->GetManualPoint(_model->GetSizeLstPoints()-1);
+               bex=point->GetX(); 
+               bey=point->GetY(); 
                point->SetPoint(xCenter,yport,zCenter);
+               nex=xCenter;
+               ney=yport;
+
                
+               // moving point of the spline connection
+               if ( ((bsx!=nsx)&&(bex!=nex)) ||  ((bsy!=nsy)&&(bey!=ney)) )
+               {
+                       double difx=bsx-nsx; 
+                       double dify=bey-ney;
+                       double tmpX, tmpY, tmpZ;
+                       int i,size=_model->GetSizeLstPoints();
+                       if (size>2)
+                       {
+                               for (i=1;i<size-1;i++)
+                               {
+                                       point = _model->GetManualPoint(i);
+                                       tmpX = point->GetX();
+                                       tmpY = point->GetY();
+                                       tmpZ = point->GetZ();
+                                       point->SetPoint(tmpX-difx,tmpY-dify,tmpZ);
+                               } // for i
+                       }// if size
+               } // if bsx nsx  bex nex   bsy nsy bey ney 
        }
 
        //=========================================================================