X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FmanualContour%2FmanualViewContour.cpp;h=32ef7e736c9ba79a7d34e59b06b86d37e5162066;hb=542063db4a06b1a74587bcab7d5c450ebdd53272;hp=6119fcd00be7850ceee4692522f8a952f19229e6;hpb=c7ed224abb3d3ea251339303f03e8c170d562115;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewContour.cpp b/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewContour.cpp index 6119fcd..32ef7e7 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewContour.cpp +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewContour.cpp @@ -32,9 +32,7 @@ manualViewContour::manualViewContour() { _id_viewPoint_for_text = 0; - _mesureScale = 1; - _initialConoturModel = new manualContourModel(); - + _initialConoturModel = new manualContourModel(); _minX = 99999; _minY = 99999; _maxX = -99999; @@ -62,8 +60,6 @@ void manualViewContour::CopyAttributesTo( manualViewContour * cloneObject) { // Call to Fathers object manualViewBaseContour::CopyAttributesTo(cloneObject); - - cloneObject->SetMesureScale(_mesureScale); } // --------------------------------------------------------------------------- @@ -81,38 +77,45 @@ void manualViewContour::Save(FILE *pFile) } // ---------------------------------------------------------------------------- - void manualViewContour::Open(FILE *pFile) { } // ---------------------------------------------------------------------------- -void manualViewContour::RefreshContour() // virtual +bool manualViewContour::ShowLineVersion() // virtual { - int i,np,nps; + bool result = false; + int np = GetNumberOfPoints( ); + if (np==2) + { + result=true; + } + return result; +} +// ---------------------------------------------------------------------------- +void manualViewContour::RefreshContour() // virtual +{ + 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]; @@ -132,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++ ) @@ -149,9 +153,9 @@ void manualViewContour::RefreshContour() // virtual //-------------------------------------------------------------- // EED 27 sep 2006 // _pts->SetPoint(i, x,y,z ); - xx=x*_spc[0]; - yy=y*_spc[1]; - zz=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 @@ -160,7 +164,6 @@ void manualViewContour::RefreshContour() // virtual if (yy < _minY) { _minY = yy; } if (xx > _maxX) { _maxX = xx; } if (yy > _maxY) { _maxY = yy; } - }// for }else{ _pts->SetPoint(0, 0 , 0 , 0); @@ -168,16 +171,22 @@ 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) + { + _pts->Modified(); + } } // ---------------------------------------------------------------------------- void manualViewContour::RefreshText() // virtual { + if ((_textActor!=NULL) && ( _textActor->GetProperty()->GetOpacity()!=0 )){ int size = GetNumberOfPoints(); char text[50]; @@ -185,16 +194,20 @@ void manualViewContour::RefreshText() // virtual strcpy(resultText, "000"); char resultText2[250]; strcpy(resultText2, "000"); + double spcP[3]; + spcP[0]=1; + spcP[1]=1; + spcP[2]=1; //CMRU 19-08-09 ---------------------------------- std::string label; label = _manContModel->GetLabel(); // ------------------------------------ - + if (size==2) { strcpy(resultText,"L= "); - gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text ); + gcvt ( this->_manContModel->GetPathSize( spcP ), 5, text ); strcat(resultText,text); strcat(resultText,"p"); @@ -203,7 +216,7 @@ void manualViewContour::RefreshText() // virtual strcat(resultText,label.c_str()); strcpy(resultText2,"L= "); - gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text ); + gcvt ( this->_manContModel->GetPathSize( _spc ), 5, text ); strcat(resultText2,text); strcat(resultText2,"u"); @@ -214,34 +227,34 @@ void manualViewContour::RefreshText() // virtual if (_manContModel->IfCloseContour()==true) { strcpy(resultText,"P= "); - gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text ); + gcvt ( this->_manContModel->GetPathSize( spcP ), 5, text ); strcat(resultText,text); strcat(resultText,"p"); - gcvt ( _mesureScale * _mesureScale * this->_manContModel->GetPathArea(), 5, text ); + gcvt ( this->_manContModel->GetPathArea( spcP ), 5, text ); strcat(resultText," A= "); strcat(resultText,text); strcat(resultText,"p^2 "); strcpy(resultText2,"P= "); - gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text ); + gcvt ( this->_manContModel->GetPathSize( _spc ), 5, text ); strcat(resultText2,text); strcat(resultText2,"u"); - gcvt ( _mesureScale * _mesureScale * this->_manContModel->GetPathArea(), 5, text ); + gcvt ( this->_manContModel->GetPathArea( _spc ), 5, text ); strcat(resultText2," A= "); strcat(resultText2,text); strcat(resultText2,"u^2 "); } else { strcpy(resultText,"L= "); - gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text ); + gcvt ( this->_manContModel->GetPathSize( spcP ), 5, text ); strcat(resultText,text); strcat(resultText,"p"); strcpy(resultText2,"L= "); - gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text ); + gcvt ( this->_manContModel->GetPathSize( _spc ), 5, text ); strcat(resultText2,text); strcat(resultText2,"u"); @@ -286,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]; @@ -342,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++ ) { @@ -360,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; } @@ -385,11 +390,6 @@ void manualViewContour::ClearPoint(int id) manualViewBaseContour::DeletePoint( id ); } -//------------------------------------------------------------------- -void manualViewContour::SetMesureScale(double mesureScale) -{ - _mesureScale = mesureScale; -} //------------------------------------------------------------------- void manualViewContour::InitMove(int x, int y, int z) { @@ -408,14 +408,15 @@ void manualViewContour::InitMove(int x, int y, int z) this->_initialConoturModel->AddPoint( mp->GetX() - XX, mp->GetY() - YY, mp->GetZ() ); } } + //------------------------------------------------------------------- void manualViewContour::MoveContour(int x, int y, int z) { manualPoint *mpOrigin = NULL; manualPoint *mpMoving = NULL; - double XX=x; - double YY=y; - double ZZ=z; + double XX = x; + double YY = y; + double ZZ = z; TransfromCoordViewWorld(XX,YY,ZZ); @@ -428,6 +429,8 @@ void manualViewContour::MoveContour(int x, int y, int z) } UpdateViewPoints(); } + +//------------------------------------------------------------------- void manualViewContour::MoveContour(int horizontalUnits, int verticalUnits ) { manualPoint *mpOrigin = NULL;