ALBA
albaInteractor2DMeasure_AngleLine.h
Go to the documentation of this file.
1/*=========================================================================
2Program: ALBA (Agile Library for Biomedical Applications)
3Module: albaInteractor2DMeasure_AngleLine.h
4Language: C++
5Date: $Date: 2021-01-01 12:00:00 $
6Version: $Revision: 1.0.0.0 $
7Authors: Nicola Vanella
8==========================================================================
9Copyright (c) BIC-IOR 2021 (https://github.com/IOR-BIC)
10
11This software is distributed WITHOUT ANY WARRANTY; without even
12the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13PURPOSE. See the above copyright notice for more information.
14=========================================================================*/
15
16#ifndef __albaInteractor2DMeasure_AngleLine_h
17#define __albaInteractor2DMeasure_AngleLine_h
18
19//----------------------------------------------------------------------------
20// Include :
21//----------------------------------------------------------------------------
23
24//----------------------------------------------------------------------------
25// Forward references :
26//----------------------------------------------------------------------------
27class vtkLineSource;
28class vtkPolyDataMapper2D;
29class vtkActor2D;
30
31// Class Name: albaInteractor2DMeasure_AngleLine
33{
34public:
35
37
38 // MEASURE
40 virtual void AddMeasure(double *point1, double *point2, double *point3, double * point4);
41
43 virtual void EditMeasure(int index, double *point1, double *point2, double *point3, double *point4);
44
46 virtual void EditMeasure(int index, double *point);
48 virtual void RemoveMeasure(int index);
50 virtual void SelectMeasure(int index);
51
52 virtual void SetPointSize(double size);
53 virtual void SetLineWidth(double width);
54
55 virtual void Show(bool show);
56
57 void SetLineExtensionLength(double length) { m_LineExtensionLength = length; };
58 void SetLineStipplePattern(int lp) { m_LineStipplePattern = lp; };
59
61 void GetMeasureLinePoints(int index, double *point1, double *point2, double * point3, double * point4);
62 void GetCenter(int index, double *center);
63
64 bool Load(albaVME *input, wxString tag);
65 bool Save(albaVME *input, wxString tag);
66
67 double GetMeasureAngle(int idx);
68 double CalculateAngle(double * point1, double * point2, double * point3, double * point4);
69protected:
70
73
74 // Draw Measure
75 void MoveMeasure(int index, double * point);
76 void DrawNewMeasure(double * wp);
77
78 void UpdateMeasure(int index, double measure);
79
80 // RENDERING
81 virtual void UpdateLineActors(double * point1, double * point2, double * point3, double * point4);
82 virtual void UpdatePointsActor(double * point1, double * point2, double * point3, double * point4);
83 void UpdateCircleActor(double * point, double angle, double radius);
84 void UpdateTextActor(double * point1, double * point2);
85
87 virtual albaString GetMeasureText(int index);
88
89 // UTILS
90 virtual void FindAndHighlight(double * point);
91
92 // Persistent Points
93 std::vector<albaActor2dStackHelper *> m_PointsStackVectorA;
94 std::vector<albaActor2dStackHelper *> m_PointsStackVectorB;
95 std::vector<albaActor2dStackHelper *> m_PointsStackVectorC;
96 std::vector<albaActor2dStackHelper *> m_PointsStackVectorD;
97
98 // Persistent line
99 std::vector<albaActor2dStackHelper *> m_LineStackVectorAB; // First Line
100 std::vector<albaActor2dStackHelper *> m_LineStackVectorCD; // Second Line
101
102 // Persistent Circle
103 std::vector<albaActor2dStackHelper *> m_CircleStackVector;
104
105 std::vector<bool> m_SecondLineP1Added;
106 std::vector<bool> m_SecondLineP2Added;
107 std::vector<double> m_Angles;
108
111
114 double m_OldLineP3[3];
115 double m_OldLineP4[3];
116
118
120
121private:
123 void operator=(const albaInteractor2DMeasure_AngleLine&); // Not implemented.
124 friend class albaInteractor2DMeasure_AngleLineTest;
125};
126#endif
virtual void RemoveMeasure(int index)
Delete the Measure.
void GetCenter(int index, double *center)
virtual void SetPointSize(double size)
virtual void UpdateLineActors(double *point1, double *point2, double *point3, double *point4)
virtual void SelectMeasure(int index)
Select a Measure.
albaTypeMacro(albaInteractor2DMeasure_AngleLine, albaInteractor2DMeasure)
void GetMeasureLinePoints(int index, double *point1, double *point2, double *point3, double *point4)
Get measure line extremity points.
virtual void FindAndHighlight(double *point)
Find Measure Point and Set Action.
void DrawNewMeasure(double *wp)
Draw New Measure.
virtual void UpdatePointsActor(double *point1, double *point2, double *point3, double *point4)
bool Save(albaVME *input, wxString tag)
double CalculateAngle(double *point1, double *point2, double *point3, double *point4)
virtual void SetLineWidth(double width)
virtual void EditMeasure(int index, double *point1, double *point2, double *point3, double *point4)
Edit Measure.
void UpdateTextActor(double *point1, double *point2)
std::vector< albaActor2dStackHelper * > m_PointsStackVectorB
std::vector< albaActor2dStackHelper * > m_CircleStackVector
bool Load(albaVME *input, wxString tag)
LOAD/SAVE.
std::vector< albaActor2dStackHelper * > m_PointsStackVectorC
std::vector< albaActor2dStackHelper * > m_PointsStackVectorA
virtual void Show(bool show)
void UpdateCircleActor(double *point, double angle, double radius)
virtual void AddMeasure(double *point1, double *point2, double *point3, double *point4)
Add Measure.
virtual albaString GetMeasureText(int index)
Get Measure Text Value.
std::vector< albaActor2dStackHelper * > m_LineStackVectorAB
virtual void EditMeasure(int index, double *point)
Edit Measure.
void UpdateMeasure(int index, double measure)
void MoveMeasure(int index, double *point)
Move Measure.
std::vector< albaActor2dStackHelper * > m_PointsStackVectorD
std::vector< albaActor2dStackHelper * > m_LineStackVectorCD
albaString - performs common string operations on c-strings.
Definition: albaString.h:43
albaVME -
Definition: albaVME.h:150