]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewContour.cpp
#3138 creaMaracasVisu Feature New Normal - branch vtk7itk4wx3
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualContour / manualViewContour.cpp
index 0c082a20c818ea232c9fca2db8a25d3d966f970d..32ef7e736c9ba79a7d34e59b06b86d37e5162066 100644 (file)
@@ -32,8 +32,7 @@
 manualViewContour::manualViewContour()
 {
        _id_viewPoint_for_text  = 0;
-       _initialConoturModel    = new manualContourModel();
-       
+       _initialConoturModel    = new manualContourModel();     
        _minX                                   = 99999;
        _minY                                   = 99999;
        _maxX                                   = -99999;
@@ -78,37 +77,45 @@ void manualViewContour::Save(FILE *pFile)
 }
 
 // ----------------------------------------------------------------------------
-
 void manualViewContour::Open(FILE *pFile)
 {
 }
 
+// ----------------------------------------------------------------------------
+bool manualViewContour::ShowLineVersion()   // virtual
+{
+       bool result = false;
+    int np     = GetNumberOfPoints( );
+       if (np==2) 
+       {
+               result=true;
+       }
+       return result;
+}
+
 // ----------------------------------------------------------------------------
 void manualViewContour::RefreshContour() // virtual
 {
-       int i,np,nps;
+       int i,nps;
 //JSTG 25-02-08 --------------------
        //double t,delta, x,y,z;
        double x,y,z;
        double xx,yy,zz;
 //----------------------------------
-
-    np = GetNumberOfPoints( );
-
-       if (np==2) 
+       if ( ShowLineVersion()==true ) 
        {
                SetCellArray(false);
                manualPoint *mpA = _manContModel->GetManualPoint(0);
                manualPoint *mpB = _manContModel->GetManualPoint(1);            
                if ( _pts!=NULL )
                {
-                       xx=mpA->GetX() * _spc[0];
-                       yy=mpA->GetY() * _spc[1];
-                       zz=mpA->GetZ() * _spc[2];
-                       _minX=xx;
-                       _minY=yy;
-                       _maxX=xx;
-                       _maxY=yy;
+                       xx              = mpA->GetX() * _spc[0];
+                       yy              = mpA->GetY() * _spc[1];
+                       zz              = mpA->GetZ() * _spc[2];
+                       _minX   = xx;
+                       _minY   = yy;
+                       _maxX   = xx;
+                       _maxY   = yy;
                        _pts->SetPoint(0 , xx , yy , zz  );
                        xx=mpB->GetX() * _spc[0];
                        yy=mpB->GetY() * _spc[1];
@@ -128,12 +135,13 @@ void manualViewContour::RefreshContour() // virtual
 
                //EED 27 Juin 2012
                //Boundaring box        
-               _minX=99999;
-               _minY=99999;
-               _maxX=-99999;
-               _maxY=-99999;
+               _minX = 99999;
+               _minY = 99999;
+               _maxX = -99999;
+               _maxY = -99999;
                if ( _pts!=NULL )
                {
+                   int np      = GetNumberOfPoints( );
                        if (np>=2  )
                        {
                                for( i = 0; i < nps; i++ )
@@ -163,11 +171,10 @@ void manualViewContour::RefreshContour() // virtual
                        } // if
                } // _pts!=NULL
        } //np==2
-
-       _minX=_minX-1.0;
-       _minY=_minY-1.0;
-       _maxX=_maxX+1.0;
-       _maxY=_maxY+1.0;
+       _minX = _minX-1.0;
+       _minY = _minY-1.0;
+       _maxX = _maxX+1.0;
+       _maxY = _maxY+1.0;
 
 //EED 2017-03-02
        if (_pts!=NULL) 
@@ -292,50 +299,43 @@ void manualViewContour::RefreshText()  // virtual
 // ----------------------------------------------------------------------------
 bool manualViewContour::ifTouchContour(int x,int y,int z)
 {
-       bool result=false;
-
-       double xx=x;
-       double yy=y;
-       double zz=z;
+       bool result     = false;
+       double xx       = x;
+       double yy       = y;
+       double zz       = z;
        double ppA[3];
        double ppB[3];
        double d1,d2,d3;
        TransfromCoordViewWorld(xx,yy,zz);
-
 //EED 27 sep 2006
        xx = xx * _spc[0];
        yy = yy * _spc[1];
        zz = zz * _spc[2];
-
-       if ( (xx>=_minX) &&  (yy>=_minY) && (xx<=_maxX) && (yy<=_maxY)) {  // inside the boundaring box
-       
-
-               if (_manContModel->GetSizeLstPoints()==2)
+       if ( (xx>=_minX) &&  (yy>=_minY) && (xx<=_maxX) && (yy<=_maxY)) 
+       {  // inside the boundaring box
+               if ( ShowLineVersion()==true )
                {
                        manualPoint *mpA = _manContModel->GetManualPoint(0);
                        manualPoint *mpB = _manContModel->GetManualPoint(1);
                        _pts->GetPoint(0, ppA);
                        double dirVec[3];
-
                        // direction of the segment
             dirVec[0] = mpB->GetX() - mpA->GetX();                     
             dirVec[1] = mpB->GetY() - mpA->GetY();                     
             dirVec[2] = mpB->GetZ() - mpA->GetZ();                     
-
-
                        // proj = mpA + k*dirVec
                        double num;
                        double den = 0.0 ;
-                       num     =       dirVec[0]*( xx-mpA->GetX() );
-                       num     =       num + dirVec[1]*( yy-mpA->GetY() );
-                       num     =       num + dirVec[2]*( zz-mpA->GetZ() );
+                       num     = dirVec[0]*( xx-mpA->GetX() );
+                       num     = num + dirVec[1]*( yy-mpA->GetY() );
+                       num     = num + dirVec[2]*( zz-mpA->GetZ() );
                        den=dirVec[0]*dirVec[0] + dirVec[1]*dirVec[1] + dirVec[2]*dirVec[2];
                        double k;
                        if (den!=0) 
                        {
-                               k=num/den;
+                               k = num/den;
                        } else {
-                               k=99999999;
+                               k = 99999999;
                        }
                        // projection of th point xx,yy,zz  in segment mpA,mpB
                        double projX = mpA->GetX() + k*dirVec[0];
@@ -348,14 +348,14 @@ bool manualViewContour::ifTouchContour(int x,int y,int z)
                        { 
                                result=true;
                        } // if d1
-               } else{
+               } else {
                        unsigned int i, nps,nps_t;
                        nps       = _sizePointsContour;
                        if (this->_manContModel->IfCloseContour()==true)
                        {
                                nps_t = nps;
                        } else {
-                       nps_t = nps-1;
+                               nps_t = nps-1;
                        } // if close
                        for( i = 0; i < nps_t; i++ ) 
                        {
@@ -366,13 +366,12 @@ bool manualViewContour::ifTouchContour(int x,int y,int z)
                                d3 = sqrt( (ppB[0]-ppA[0])*(ppB[0]-ppA[0]) + (ppB[1]-ppA[1])*(ppB[1]-ppA[1]) + (ppB[2]-ppA[2])*(ppB[2]-ppA[2]));
                                if (  ((d1+d2)>=d3) &&  ((d1+d2)<=d3*1.3) ) 
                                {
-                                       result=true;
-                                       i=nps;
+                                       result  = true;
+                                       i               = nps;
                                } // if
                        } // for i
                } // if GetSizeLstPoints()==2
        } // if min max
-
        return result;
 }