]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewContour.cpp
Bug #1679
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualContour / manualViewContour.cpp
index 309a4ceb41d60ced00fce985f919e69f21fcd6b6..636641c78ffe096da1eabe20925661bb61d06bbe 100644 (file)
@@ -6,9 +6,15 @@
 
 manualViewContour::manualViewContour()
 {
-       _id_viewPoint_for_text  =       0;
-       _mesureScale                    =       1;
-       _initialConoturModel = new manualContourModel();
+       _id_viewPoint_for_text  = 0;
+       _mesureScale                    = 1;
+       _initialConoturModel    = new manualContourModel();
+       
+       _minX                                   = 99999;
+       _minY                                   = 99999;
+       _maxX                                   = -99999;
+       _maxY                                   = -99999;
+       
 }
 // ----------------------------------------------------------------------------
 manualViewContour::~manualViewContour()
@@ -55,17 +61,15 @@ void manualViewContour::Open(FILE *pFile)
 {
 }
 
-
-
 // ----------------------------------------------------------------------------
 void manualViewContour::RefreshContour() // virtual
 {
-
        int i,np,nps;
 
 //JSTG 25-02-08 --------------------
        //double t,delta, x,y,z;
        double x,y,z;
+       double xx,yy,zz;
 //----------------------------------
 
        _manContModel->UpdateSpline();
@@ -74,7 +78,13 @@ void manualViewContour::RefreshContour() // virtual
     nps = _manContModel->GetNumberOfPointsSpline();
        //delta=( double ) ( np  ) / ( double ) ( nps-1  );             //JSTG 25-02-08
 
-
+       //EED 27 Juin 2012
+    //Boundaring box   
+       _minX=99999;
+       _minY=99999;
+       _maxX=-99999;
+       _maxY=-99999;
+       
        if ( _pts!=NULL )
        {
                if (np>=2  )
@@ -88,9 +98,18 @@ void manualViewContour::RefreshContour() // virtual
 //--------------------------------------------------------------
        // EED 27 sep 2006
        //                      _pts->SetPoint(i, x,y,z );
-                               _pts->SetPoint(i , x*_spc[0] , y*_spc[1] , z*_spc[2] );
-
-
+                               xx=x*_spc[0];
+                               yy=y*_spc[1];
+                               zz=z*_spc[2];
+                               _pts->SetPoint(i,xx,yy,zz );
+
+                //EED 27 Juin 2012
+                               //Boundaring box
+                               if (xx < _minX) { _minX = xx; }
+                               if (yy < _minY) { _minY = yy; }
+                               if (xx > _maxX) { _maxX = xx; }
+                               if (yy > _maxY) { _maxY = yy; }
+                               
                        }// for
                }
                else
@@ -108,7 +127,7 @@ void manualViewContour::RefreshText()  // virtual
                int size = GetNumberOfPoints();
                char text[50];
                char resultText[50];
-               strcpy(resultText,");
+               strcpy(resultText, "000");
 
 //CMRU 19-08-09 ----------------------------------
                std::string label;
@@ -118,7 +137,7 @@ void manualViewContour::RefreshText()  // virtual
                if (size==2)
                {
                        strcpy(resultText,"L= ");
-                       gcvt ( _mesureScale * this->_manContModel->GetPathSize() , 5, text );
+                       gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text );
                        strcat(resultText,text);
 
 //CMRU 19-08-09 ----------------------------------
@@ -131,14 +150,15 @@ void manualViewContour::RefreshText()  // virtual
                        if (_manContModel->IfCloseContour()==true)
                        {
                                strcpy(resultText,"P= ");
-                               gcvt ( _mesureScale * this->_manContModel->GetPathSize() , 5, text );
+                               gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text );
                                strcat(resultText,text);
-                               gcvt ( _mesureScale * _mesureScale * this->_manContModel->GetPathArea() , 5, text );
+                               gcvt ( _mesureScale * _mesureScale * this->_manContModel->GetPathArea(), 5, text );
                                strcat(resultText,"   A= ");
                                strcat(resultText,text);
+                               strcat(resultText," ");
                        } else {
                                strcpy(resultText,"L= ");
-                               gcvt (  _mesureScale * this->_manContModel->GetPathSize() , 5, text );
+                               gcvt (  _mesureScale * this->_manContModel->GetPathSize(), 5, text );
                                strcat(resultText,text);
                        }
 //CMRU 19-08-09 ----------------------------------
@@ -173,12 +193,12 @@ void manualViewContour::RefreshText()  // virtual
 
                        _textActor->SetPosition(px+GetRange()+1,py);
                }
-
        }
 }
 
 // ----------------------------------------------------------------------------
-bool manualViewContour::ifTouchContour(int x,int y,int z){
+bool manualViewContour::ifTouchContour(int x,int y,int z)
+{
        bool result=false;
        double xx=x;
        double yy=y;
@@ -193,33 +213,35 @@ bool manualViewContour::ifTouchContour(int x,int y,int z){
        yy = yy * _spc[1];
        zz = zz * _spc[2];
 
-    unsigned int i, nps,nps_t;
-    nps          = _sizePointsContour;
+       if ( (xx>=_minX) &&  (yy>=_minY) && (xx<=_maxX) && (yy<=_maxY)) {  // inside the boundaring box
        
-       if (this->_manContModel->IfCloseContour()==true)
-       {
-               nps_t = nps;
-       } else {
-               nps_t = nps-1;
-       }
-
+               unsigned int i, nps,nps_t;
+               nps       = _sizePointsContour;
        
-       for( i = 0; i < nps_t; i++ ) 
-       {
-               _pts->GetPoint(i%nps, ppA);
-               _pts->GetPoint((i+1)%nps, ppB);
-               d1= sqrt( (ppA[0]-xx)*(ppA[0]-xx) + (ppA[1]-yy)*(ppA[1]-yy) + (ppA[2]-zz)*(ppA[2]-zz));
-               d2= sqrt( (ppB[0]-xx)*(ppB[0]-xx) + (ppB[1]-yy)*(ppB[1]-yy) + (ppB[2]-zz)*(ppB[2]-zz));
-               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 (this->_manContModel->IfCloseContour()==true)
+               {
+                       nps_t = nps;
+               } else {
+               nps_t = nps-1;
+               } // if close
 
+printf("EED  Warning manualViewContour::ifTouchContour \n");
 
-               if (  ((d1+d2)>=d3) &&  ((d1+d2)<=d3*1.3) ) 
+               for( i = 0; i < nps_t; i++ ) 
                {
-                       result=true;
-                       i=nps;
-               }
-       }
-       
+                       _pts->GetPoint(i%nps, ppA);
+                       _pts->GetPoint((i+1)%nps, ppB);
+                       d1 = sqrt( (ppA[0]-xx)*(ppA[0]-xx) + (ppA[1]-yy)*(ppA[1]-yy) + (ppA[2]-zz)*(ppA[2]-zz));
+                       d2 = sqrt( (ppB[0]-xx)*(ppB[0]-xx) + (ppB[1]-yy)*(ppB[1]-yy) + (ppB[2]-zz)*(ppB[2]-zz));
+                       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;
+                       } // if
+               } // for i
+       } // if min max
        return result;
 }