1 #include "manualViewContour.h"
3 // ----------------------------------------------------------------------------
4 // ----------------------------------------------------------------------------
5 // ----------------------------------------------------------------------------
7 manualViewContour::manualViewContour()
9 _id_viewPoint_for_text = 0;
11 _initialConoturModel = new manualContourModel();
13 // ----------------------------------------------------------------------------
14 manualViewContour::~manualViewContour()
16 delete _initialConoturModel;
18 // ----------------------------------------------------------------------------
20 // ----------------------------------------------------------------------------
21 manualViewContour * manualViewContour :: Clone()
23 manualViewContour * clone = new manualViewContour();
24 CopyAttributesTo(clone);
28 // ---------------------------------------------------------------------------
30 void manualViewContour::CopyAttributesTo( manualViewContour * cloneObject)
32 // Call to Fathers object
33 manualViewBaseContour::CopyAttributesTo(cloneObject);
35 cloneObject->SetMesureScale(_mesureScale);
38 // ---------------------------------------------------------------------------
40 int manualViewContour::GetType() // virtual
45 // ----------------------------------------------------------------------------
47 void manualViewContour::Save(FILE *pFile)
49 manualViewBaseContour::Save(pFile);
52 // ----------------------------------------------------------------------------
54 void manualViewContour::Open(FILE *pFile)
58 // ----------------------------------------------------------------------------
59 void manualViewContour::RefreshContour() // virtual
61 printf("EED %p manualViewContour::RefreshContour \n", this );
64 //JSTG 25-02-08 --------------------
65 //double t,delta, x,y,z;
67 //----------------------------------
69 _manContModel->UpdateSpline();
70 np = GetNumberOfPoints( );
71 //nps = GetNumberOfPointsSpline();
72 nps = _manContModel->GetNumberOfPointsSpline();
73 //delta=( double ) ( np ) / ( double ) ( nps-1 ); //JSTG 25-02-08
80 for( i = 0; i < nps; i++ )
82 //JSTG 25-02-08 ------------------------------------------------
83 //t = delta * (double)i;
84 //_manContModel->GetSplinePoint(t,x,y,z);
85 _manContModel->GetSpline_i_Point(i,&x,&y,&z);
86 //--------------------------------------------------------------
88 // _pts->SetPoint(i, x,y,z );
89 _pts->SetPoint(i, x*_spc[0], y*_spc[1], z*_spc[2] );
95 _pts->SetPoint(0, 0 , 0 , 0);
96 _pts->SetPoint(1, 0 , 0 , 0);
101 // ----------------------------------------------------------------------------
102 void manualViewContour::RefreshText() // virtual
104 if ((_textActor!=NULL) && ( _textActor->GetProperty()->GetOpacity()!=0 )){
105 int size = GetNumberOfPoints();
108 strcpy(resultText, "000");
110 //CMRU 19-08-09 ----------------------------------
112 label = _manContModel->GetLabel();
113 // ------------------------------------
117 strcpy(resultText,"L= ");
118 gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text );
119 strcat(resultText,text);
121 //CMRU 19-08-09 ----------------------------------
122 strcat(resultText," ");
123 strcat(resultText,label.c_str());
124 //------------------------------------------------
128 if (_manContModel->IfCloseContour()==true)
130 strcpy(resultText,"P= ");
131 gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text );
132 strcat(resultText,text);
133 gcvt ( _mesureScale * _mesureScale * this->_manContModel->GetPathArea(), 5, text );
134 strcat(resultText," A= ");
135 strcat(resultText,text);
136 strcat(resultText," ");
138 strcpy(resultText,"L= ");
139 gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text );
140 strcat(resultText,text);
142 //CMRU 19-08-09 ----------------------------------
143 strcat(resultText,label.c_str());
144 //------------------------------------------------
147 _textActor->SetInput(resultText);
152 for (i=0; i<size; i++)
154 if (_lstViewPoints[i]->GetPosibleSelected()==true)
156 _id_viewPoint_for_text = i;
160 if (_id_viewPoint_for_text>=size)
162 _id_viewPoint_for_text=0;
165 double px = _manContModel->GetManualPoint(_id_viewPoint_for_text)->GetX();
166 double py = _manContModel->GetManualPoint(_id_viewPoint_for_text)->GetY();
172 _textActor->SetPosition(px+GetRange()+1,py);
177 // ----------------------------------------------------------------------------
178 bool manualViewContour::ifTouchContour(int x,int y,int z){
186 TransfromCoordViewWorld(xx,yy,zz);
193 unsigned int i, nps,nps_t;
194 nps = _sizePointsContour;
196 if (this->_manContModel->IfCloseContour()==true)
203 for( i = 0; i < nps_t; i++ )
205 _pts->GetPoint(i%nps, ppA);
206 _pts->GetPoint((i+1)%nps, ppB);
207 d1= sqrt( (ppA[0]-xx)*(ppA[0]-xx) + (ppA[1]-yy)*(ppA[1]-yy) + (ppA[2]-zz)*(ppA[2]-zz));
208 d2= sqrt( (ppB[0]-xx)*(ppB[0]-xx) + (ppB[1]-yy)*(ppB[1]-yy) + (ppB[2]-zz)*(ppB[2]-zz));
209 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]));
212 if ( ((d1+d2)>=d3) && ((d1+d2)<=d3*1.3) )
221 // ----------------------------------------------------------------------------
222 void manualViewContour::DeletePoint(int id) // virtual
224 if (_lstViewPoints.size()>2)
226 manualViewBaseContour::DeletePoint( id );
229 // ----------------------------------------------------------------------------
231 void manualViewContour::ClearPoint(int id)
233 manualViewBaseContour::DeletePoint( id );
236 //-------------------------------------------------------------------
237 void manualViewContour::SetMesureScale(double mesureScale)
239 _mesureScale = mesureScale;
241 //-------------------------------------------------------------------
242 void manualViewContour::InitMove(int x, int y, int z)
244 _initialConoturModel->DeleteAllPoints();
246 manualPoint *mp = NULL;
250 TransfromCoordViewWorld(XX,YY,ZZ);
252 int i, manualPointsSZ = _manContModel->GetSizeLstPoints();
253 for ( i=0; i<manualPointsSZ; i++ )
255 mp = _manContModel->GetManualPoint( i );
256 this->_initialConoturModel->AddPoint( mp->GetX() - XX, mp->GetY() - YY, mp->GetZ() );
259 //-------------------------------------------------------------------
260 void manualViewContour::MoveContour(int x, int y, int z)
262 manualPoint *mpOrigin = NULL;
263 manualPoint *mpMoving = NULL;
268 TransfromCoordViewWorld(XX,YY,ZZ);
270 int i, manualPointsSZ = _manContModel->GetSizeLstPoints();
271 for ( i=0; i<manualPointsSZ; i++ )
273 mpOrigin = _manContModel->GetManualPoint( i );
274 mpMoving = _initialConoturModel->GetManualPoint(i);
275 mpOrigin->SetPoint( mpMoving->GetX()+XX, mpMoving->GetY() + YY, mpMoving->GetZ() );
279 void manualViewContour::MoveContour(int horizontalUnits, int verticalUnits )
281 manualPoint *mpOrigin = NULL;
283 int i, manualPointsSZ = _manContModel->GetSizeLstPoints();
284 for ( i=0; i<manualPointsSZ; i++ )
286 mpOrigin = _manContModel->GetManualPoint( i );
287 mpOrigin->SetPoint( mpOrigin->GetX()+horizontalUnits, mpOrigin->GetY()+verticalUnits, mpOrigin->GetZ() );