]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualContourModelBullEye.cpp
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualContour / manualContourModelBullEye.cpp
1 #include "manualContourModelBullEye.h"
2
3
4 // ----------------------------------------------------------------------------
5 // ----------------------------------------------------------------------------
6 // ----------------------------------------------------------------------------
7
8 manualContourModelBullEye::manualContourModelBullEye()
9 : manualContourModel()
10 {
11         _numberPointsSlineBySector=101;   // impaire
12 }
13
14 manualContourModelBullEye::~manualContourModelBullEye()
15 {
16 }
17
18
19 // ----------------------------------------------------------------------------
20 manualContourModelBullEye * manualContourModelBullEye :: Clone()  // virtual
21 {
22         manualContourModelBullEye * clone = new manualContourModelBullEye();
23         CopyAttributesTo(clone);
24         return clone;
25 }
26
27 // ---------------------------------------------------------------------------
28
29 void manualContourModelBullEye::CopyAttributesTo( manualContourModelBullEye * cloneObject)
30 {
31         // Fathers object
32         manualContourModel::CopyAttributesTo(cloneObject);
33 }
34
35 //----------------------------------------------------------------
36 int manualContourModelBullEye::GetTypeModel() //virtual
37 {
38         return 4;
39 }
40
41 //----------------------------------------------------------------
42 int     manualContourModelBullEye::GetNumberOfPointsSplineSectorBulleEje()
43 {
44         return _numberPointsSlineBySector;
45 }
46
47 //----------------------------------------------------------------
48 void manualContourModelBullEye::SetNumberOfPointsSplineSectorBulleEje(int numpoints)
49 {
50         this->_numberPointsSlineBySector = numpoints;
51 }
52
53 //----------------------------------------------------------------
54 void manualContourModelBullEye::AddSector(      double radioA,
55                                                 double radioB,
56                                                 double ang,
57                                                 double angDelta)
58 {
59         manualContourModelBullEyeSector *modelSector = new manualContourModelBullEyeSector();
60         modelSector->SetSector(radioA,radioB,ang,angDelta);
61         modelSector->SetNumberOfPointsSpline( this->GetNumberOfPointsSplineSectorBulleEje() );
62         _lstModelBullEyeSector.push_back(modelSector);
63 }
64
65 //----------------------------------------------------------------
66 manualContourModelBullEyeSector * manualContourModelBullEye::GetModelSector(int id)
67 {
68         return _lstModelBullEyeSector[id];
69 }
70
71 //----------------------------------------------------------------
72 void manualContourModelBullEye::GetSector(int id,
73                                                 double *radioA,
74                                                 double *radioB,
75                                                 double *ang,
76                                                 double *angDelta)
77 {
78         _lstModelBullEyeSector[id]->GetSector(radioA,radioB,ang,angDelta);
79 }
80
81 void manualContourModelBullEye::UpdateSpline() // virtual
82 {
83         manualContourModel::UpdateSpline();
84
85         if (this->GetSizeLstPoints()>2){
86                 double cx,cy;
87                 double ww,hh;
88                 manualPoint *mpA = GetManualPoint(0);
89                 manualPoint *mpB = GetManualPoint(2);
90                 cx = (mpA->GetX() + mpB->GetX()) / 2.0;
91                 cy = (mpA->GetY() + mpB->GetY()) / 2.0;
92                 ww = fabs( mpA->GetX() - mpB->GetX() )/2.0;
93                 hh = fabs( mpA->GetY() - mpB->GetY() )/2.0;
94                 int i,size = _lstModelBullEyeSector.size();
95                 for (i=0;i<size;i++)
96                 {
97                         _lstModelBullEyeSector[i]->SetCenter(cx,cy);
98                         _lstModelBullEyeSector[i]->SetSize(ww,hh);
99                 } // for
100         }
101 }
102
103
104 //----------------------------------------------------------------
105 void manualContourModelBullEye::ResetSectors()
106 {
107         int i,size=_lstModelBullEyeSector.size();
108         for (i=0;i<size;i++)
109         {
110                 delete _lstModelBullEyeSector[i];
111         }
112         _lstModelBullEyeSector.clear();
113 }
114
115 //----------------------------------------------------------------
116 int manualContourModelBullEye::GetSizeOfSectorLst()
117 {
118         return _lstModelBullEyeSector.size();
119 }
120
121 //----------------------------------------------------------------
122 void manualContourModelBullEye::Save(FILE *ff) // virtual
123 {
124         manualContourModel::Save(ff);
125         int i,size = GetSizeOfSectorLst();
126         fprintf(ff,"numberOfSections %d \n",size);
127         for ( i=0 ; i<size ; i++ )
128         {
129                 _lstModelBullEyeSector[i]->Save(ff);
130         }
131 }
132
133 //----------------------------------------------------------------
134 void manualContourModelBullEye::Open(FILE *ff) // virtual
135 {
136         manualContourModel::Open(ff);
137
138         ResetSectors();
139
140         char tmp[255];
141         int i;
142         int numberOfSections;
143 //      double radioA,radioB,ang,deltaAng;
144
145         fscanf(ff,"%s",tmp); // NumberOfSections
146         fscanf(ff,"%s",tmp); // ##
147         numberOfSections = atoi(tmp);
148         for (i=0;i<numberOfSections;i++)
149         {
150                 AddSector(0,1,90,0);
151                 _lstModelBullEyeSector[i]->Open(ff);
152         }
153
154 }
155
156 // ----------------------------------------------------------------------------
157 std::vector<manualContourModel*> manualContourModelBullEye::ExploseModel(  )
158 {
159 //EED004
160         std::vector<manualContourModel*> lstTmp;
161         int i,iSize=_lstModelBullEyeSector.size();
162         for (i=0;i<iSize;i++)
163         {
164                 lstTmp.push_back( _lstModelBullEyeSector[i] );
165         }
166         return lstTmp;
167 }
168