56 #ifndef __vtkContourRepresentation_h
57 #define __vtkContourRepresentation_h
60 #include <vtkstd/vector>
83 vtkstd::vector<vtkContourRepresentationPoint*>
Points;
89 vtkstd::vector<vtkContourRepresentationNode*>
Nodes;
92 for(
unsigned int i=0;i<this->
Nodes.size();i++)
94 for (
unsigned int j=0;j<this->
Nodes[i]->Points.size();j++)
96 delete this->
Nodes[i]->Points[j];
98 this->
Nodes[i]->Points.clear();
99 delete this->
Nodes[i];
121 virtual int AddNodeAtWorldPosition(
double x,
double y,
double z);
122 virtual int AddNodeAtWorldPosition(
double worldPos[3] );
123 virtual int AddNodeAtWorldPosition(
double worldPos[3],
124 double worldOrient[9] );
131 virtual int AddNodeAtDisplayPosition(
double displayPos[2] );
132 virtual int AddNodeAtDisplayPosition(
int displayPos[2] );
133 virtual int AddNodeAtDisplayPosition(
int X,
int Y );
140 virtual int ActivateNode(
double displayPos[2] );
141 virtual int ActivateNode(
int displayPos[2] );
142 virtual int ActivateNode(
int X,
int Y );
150 virtual int SetActiveNodeToWorldPosition(
double pos[3] );
151 virtual int SetActiveNodeToWorldPosition(
double pos[3],
159 virtual int SetActiveNodeToDisplayPosition(
double pos[2] );
160 virtual int SetActiveNodeToDisplayPosition(
int pos[2] );
161 virtual int SetActiveNodeToDisplayPosition(
int X,
int Y );
166 virtual int ToggleActiveNodeSelected();
167 virtual int GetActiveNodeSelected();
168 virtual int GetNthNodeSelected(
int);
169 virtual int SetNthNodeSelected(
int);
174 virtual int GetActiveNodeWorldPosition(
double pos[3] );
178 virtual int GetActiveNodeWorldOrientation(
double orient[9] );
182 virtual int GetActiveNodeDisplayPosition(
double pos[2] );
185 virtual int GetNumberOfNodes();
189 virtual int GetNthNodeDisplayPosition(
int n,
double pos[2] );
193 virtual int GetNthNodeWorldPosition(
int n,
double pos[3] );
197 virtual int GetNthNodeWorldOrientation(
int n,
double orient[9] );
205 virtual int SetNthNodeDisplayPosition(
int n,
int X,
int Y );
206 virtual int SetNthNodeDisplayPosition(
int n,
int pos[2] );
207 virtual int SetNthNodeDisplayPosition(
int n,
double pos[2] );
214 virtual int SetNthNodeWorldPosition(
int n,
double pos[3] );
215 virtual int SetNthNodeWorldPosition(
int n,
double pos[3],
221 virtual int GetNthNodeSlope(
int idx,
double slope[3] );
230 virtual int GetNumberOfIntermediatePoints(
int n );
236 virtual int GetIntermediatePointWorldPosition(
int n,
237 int idx,
double point[3] );
244 virtual int AddIntermediatePointWorldPosition(
int n,
250 virtual int DeleteLastNode();
254 virtual int DeleteActiveNode();
257 virtual int DeleteNthNode(
int n );
260 virtual void ClearAllNodes();
264 virtual int AddNodeOnContour(
int X,
int Y );
269 vtkSetClampMacro(PixelTolerance,
int,1,100);
270 vtkGetMacro(PixelTolerance,
int);
277 vtkGetMacro(WorldTolerance,
double);
297 vtkGetMacro( CurrentOperation,
int );
298 vtkSetClampMacro( CurrentOperation,
int,
301 void SetCurrentOperationToInactive()
303 void SetCurrentOperationToTranslate()
305 void SetCurrentOperationToShift()
307 void SetCurrentOperationToScale()
346 void SetClosedLoop(
int val );
347 vtkGetMacro( ClosedLoop,
int );
348 vtkBooleanMacro( ClosedLoop,
int );
354 virtual void SetShowSelectedNodes(
int);
355 vtkGetMacro( ShowSelectedNodes,
int );
356 vtkBooleanMacro( ShowSelectedNodes,
int );
362 virtual vtkPolyData* GetContourRepresentationAsPolyData() = 0;
370 vtkSetMacro(RebuildLocator,
bool);
393 void AddNodeAtPositionInternal(
double worldPos[3],
394 double worldOrient[9],
int displayPos[2] );
395 void AddNodeAtPositionInternal(
double worldPos[3],
396 double worldOrient[9],
double displayPos[2] );
397 void SetNthNodeWorldPositionInternal(
int n,
double worldPos[3],
398 double worldOrient[9] );
403 void GetRendererComputedDisplayPositionFromWorldPosition(
double worldPos[3],
404 double worldOrient[9],
int displayPos[2] );
405 void GetRendererComputedDisplayPositionFromWorldPosition(
double worldPos[3],
406 double worldOrient[9],
double displayPos[2] );
409 virtual void UpdateLines(
int index );
410 void UpdateLine(
int idx1,
int idx2 );
412 virtual int FindClosestPointOnContour(
int X,
int Y,
416 virtual void BuildLines()=0;
423 virtual int UpdateContour();
426 void ComputeMidpoint(
double p1[3],
double p2[3],
double mid[3] )
428 mid[0] = (p1[0] + p2[0])/2;
429 mid[1] = (p1[1] + p2[1])/2;
430 mid[2] = (p1[2] + p2[2])/2;