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
63 //JSTG 25-02-08 --------------------
64 //double t,delta, x,y,z;
66 //----------------------------------
68 _manContModel->UpdateSpline();
69 np = GetNumberOfPoints( );
70 //nps = GetNumberOfPointsSpline();
71 nps = _manContModel->GetNumberOfPointsSpline();
72 //delta=( double ) ( np ) / ( double ) ( nps-1 ); //JSTG 25-02-08
79 for( i = 0; i < nps; i++ )
81 //JSTG 25-02-08 ------------------------------------------------
82 //t = delta * (double)i;
83 //_manContModel->GetSplinePoint(t,x,y,z);
84 _manContModel->GetSpline_i_Point(i,&x,&y,&z);
85 //--------------------------------------------------------------
87 // _pts->SetPoint(i, x,y,z );
88 _pts->SetPoint(i, x*_spc[0], y*_spc[1], z*_spc[2] );
94 _pts->SetPoint(0, 0 , 0 , 0);
95 _pts->SetPoint(1, 0 , 0 , 0);
100 // ----------------------------------------------------------------------------
101 void manualViewContour::RefreshText() // virtual
103 if ((_textActor!=NULL) && ( _textActor->GetProperty()->GetOpacity()!=0 )){
104 int size = GetNumberOfPoints();
107 strcpy(resultText, "000");
109 //CMRU 19-08-09 ----------------------------------
111 label = _manContModel->GetLabel();
112 // ------------------------------------
116 strcpy(resultText,"L= ");
117 gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text );
118 strcat(resultText,text);
120 //CMRU 19-08-09 ----------------------------------
121 strcat(resultText," ");
122 strcat(resultText,label.c_str());
123 //------------------------------------------------
127 if (_manContModel->IfCloseContour()==true)
129 strcpy(resultText,"P= ");
130 gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text );
131 strcat(resultText,text);
132 gcvt ( _mesureScale * _mesureScale * this->_manContModel->GetPathArea(), 5, text );
133 strcat(resultText," A= ");
134 strcat(resultText,text);
135 strcat(resultText," ");
137 strcpy(resultText,"L= ");
138 gcvt ( _mesureScale * this->_manContModel->GetPathSize(), 5, text );
139 strcat(resultText,text);
141 //CMRU 19-08-09 ----------------------------------
142 strcat(resultText,label.c_str());
143 //------------------------------------------------
146 _textActor->SetInput(resultText);
151 for (i=0; i<size; i++)
153 if (_lstViewPoints[i]->GetPosibleSelected()==true)
155 _id_viewPoint_for_text = i;
159 if (_id_viewPoint_for_text>=size)
161 _id_viewPoint_for_text=0;
164 double px = _manContModel->GetManualPoint(_id_viewPoint_for_text)->GetX();
165 double py = _manContModel->GetManualPoint(_id_viewPoint_for_text)->GetY();
171 _textActor->SetPosition(px+GetRange()+1,py);
176 // ----------------------------------------------------------------------------
177 bool manualViewContour::ifTouchContour(int x,int y,int z){
185 TransfromCoordViewWorld(xx,yy,zz);
192 unsigned int i, nps,nps_t;
193 nps = _sizePointsContour;
195 if (this->_manContModel->IfCloseContour()==true)
202 for( i = 0; i < nps_t; i++ )
204 _pts->GetPoint(i%nps, ppA);
205 _pts->GetPoint((i+1)%nps, ppB);
206 d1= sqrt( (ppA[0]-xx)*(ppA[0]-xx) + (ppA[1]-yy)*(ppA[1]-yy) + (ppA[2]-zz)*(ppA[2]-zz));
207 d2= sqrt( (ppB[0]-xx)*(ppB[0]-xx) + (ppB[1]-yy)*(ppB[1]-yy) + (ppB[2]-zz)*(ppB[2]-zz));
208 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]));
211 if ( ((d1+d2)>=d3) && ((d1+d2)<=d3*1.3) )
220 // ----------------------------------------------------------------------------
221 void manualViewContour::DeletePoint(int id) // virtual
223 if (_lstViewPoints.size()>2)
225 manualViewBaseContour::DeletePoint( id );
228 // ----------------------------------------------------------------------------
230 void manualViewContour::ClearPoint(int id)
232 manualViewBaseContour::DeletePoint( id );
235 //-------------------------------------------------------------------
236 void manualViewContour::SetMesureScale(double mesureScale)
238 _mesureScale = mesureScale;
240 //-------------------------------------------------------------------
241 void manualViewContour::InitMove(int x, int y, int z)
243 _initialConoturModel->DeleteAllPoints();
245 manualPoint *mp = NULL;
249 TransfromCoordViewWorld(XX,YY,ZZ);
251 int i, manualPointsSZ = _manContModel->GetSizeLstPoints();
252 for ( i=0; i<manualPointsSZ; i++ )
254 mp = _manContModel->GetManualPoint( i );
255 this->_initialConoturModel->AddPoint( mp->GetX() - XX, mp->GetY() - YY, mp->GetZ() );
258 //-------------------------------------------------------------------
259 void manualViewContour::MoveContour(int x, int y, int z)
261 manualPoint *mpOrigin = NULL;
262 manualPoint *mpMoving = NULL;
267 TransfromCoordViewWorld(XX,YY,ZZ);
269 int i, manualPointsSZ = _manContModel->GetSizeLstPoints();
270 for ( i=0; i<manualPointsSZ; i++ )
272 mpOrigin = _manContModel->GetManualPoint( i );
273 mpMoving = _initialConoturModel->GetManualPoint(i);
274 mpOrigin->SetPoint( mpMoving->GetX()+XX, mpMoving->GetY() + YY, mpMoving->GetZ() );
278 void manualViewContour::MoveContour(int horizontalUnits, int verticalUnits )
280 manualPoint *mpOrigin = NULL;
282 int i, manualPointsSZ = _manContModel->GetSizeLstPoints();
283 for ( i=0; i<manualPointsSZ; i++ )
285 mpOrigin = _manContModel->GetManualPoint( i );
286 mpOrigin->SetPoint( mpOrigin->GetX()+horizontalUnits, mpOrigin->GetY()+verticalUnits, mpOrigin->GetZ() );