]> Creatis software - creaMaracasVisu.git/blob - bbtk/src/bbmaracasvisuPlotterView.cxx
BUG 1495 Refresh PlotterView
[creaMaracasVisu.git] / bbtk / src / bbmaracasvisuPlotterView.cxx
1 #include "bbmaracasvisuPlotterView.h"
2 #include "bbcreaMaracasVisuPackage.h"
3
4 #include "pPlotterScaleX.h"
5 #include "pPlotterScaleY.h"
6
7
8 namespace bbcreaMaracasVisu
9 {
10
11 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,PlotterView)
12 BBTK_BLACK_BOX_IMPLEMENTATION(PlotterView,bbtk::WxBlackBox);
13
14 //---------------------------------------------------
15 void PlotterView::Process()
16 {
17 //      if (firsttime==true)
18 //      {
19 //              firsttime=false;
20                 
21         
22         printf("EED PlotterView::Process %d %d \n ", bbGetInputInY().size(),bbGetInputInY2().size());
23         
24         pGraphicalFunction *pGF = mwxwidget->getFunction(0);
25         pGraphicalFunction *pGF2 = mwxwidget->getFunction(1);
26
27            if ( (bbGetInputInY().size()!=0)  &&  (bbGetInputInY2().size()==0) )
28            {
29                    bbSetInputInY2( bbGetInputInY() );
30            } 
31         
32                 if ( (bbGetInputInY().size()!=0) && (pGF==NULL) )               
33                 {
34                         // avoid 'taking address of temporary '
35                         //pGraphicalFunction *pGF = mwxwidget->getFunctionForVectors( &(bbGetInputInX()), &(bbGetInputInY()) ); // taking address of temporary ! JPRx
36                 
37                         std::vector<double> inX;
38                         if (bbGetInputInX().size()==0)
39                         {
40                                 int i,size=bbGetInputInY().size();
41                                 for(i=0;i<size;i++)
42                                 {
43                                         inX.push_back((double)i);
44                                 } // for
45                         } else {
46                                 inX = bbGetInputInX();
47                         } // if bbGetInputInX
48                         std::vector<double> inY = bbGetInputInY();
49                  
50         /*
51                         std::vector<double> inX;
52                         std::vector<double> inY;
53                         inX.push_back(0);                       inX.push_back(200);
54                         inY.push_back(0);                       inY.push_back(1);
55          */
56                         pGF = mwxwidget->getFunctionForVectors( &inX, &inY ); 
57                         mwxwidget->addFunction(pGF);            
58                 } // if bbGetInputInY
59
60                 if ((bbGetInputInY2().size()!=0)&& (pGF2==NULL)         )
61                 {
62                         // avoid 'taking address of temporary '
63                         //pGraphicalFunction *pGF = mwxwidget->getFunctionForVectors( &(bbGetInputInX()), &(bbGetInputInY()) ); // taking address of temporary ! JPRx
64                 
65                         std::vector<double> inX2;
66                         if (bbGetInputInX().size()==0)
67                         {
68                                 int i,size=bbGetInputInY2().size();
69                                 for(i=0;i<size;i++)
70                                 {
71                                         inX2.push_back((double)i);
72                                 } // for
73                         } else {
74                                 inX2 = bbGetInputInX();
75                         } // if bbGetInputInX
76                         std::vector<double> inY2 = bbGetInputInY();
77                 /*
78                         std::vector<double> inX2;
79                         std::vector<double> inY2;
80                         inX2.push_back(0);                      inX2.push_back(200);
81                         inY2.push_back(0);                      inY2.push_back(1);
82                  */
83                         pGF2 = mwxwidget->getFunctionForVectors( &inX2, &inY2 ); 
84                         mwxwidget->addFunction(pGF2);           
85                 } // if bbGetInputInY
86                 
87 //      } // if firsttime
88         
89         if (pGF!=NULL)  
90         {
91                 // -Erasing  points-
92                 int i,sizePoints                = pGF->getSizePoints();
93                 for (i=1; i<sizePoints;i++)
94                 {
95                         pGF->deletePointAt(1);  //  EED here NOT 0 is 1
96                 } // for i
97                 // -Add Points-
98                 double px;
99                 sizePoints=bbGetInputInY().size();
100                 for (i=0; i<sizePoints;i++)
101                 {
102                         if (i<bbGetInputInX().size())
103                         {
104                                 px = bbGetInputInX()[i]; 
105                         } else {
106                                 px = i;
107                         }       
108                         pGF->AddNewPoint( px, bbGetInputInY()[i] );
109                 }               
110         }// if pGF
111
112
113         if (pGF2!=NULL) 
114         {
115                 // -Erasing  points-
116                 int i,sizePoints                = pGF2->getSizePoints();
117                 for (i=0; i<sizePoints;i++)
118                 {
119                         pGF2->deletePointAt(1);   //  EED here NOT 0 is 1
120                 } // for i
121                 // -Add Points-
122                 double px;
123                 sizePoints=bbGetInputInY2().size();
124                 for (i=0; i<sizePoints;i++)
125                 {
126                         if (i<bbGetInputInX().size())
127                         {
128                                 px = bbGetInputInX()[i]; 
129                         } else {
130                                 px = i;
131                         }       
132                         pGF2->AddNewPoint( px, bbGetInputInY2()[i] );
133                 }               
134         }// if pGF
135                 
136         mwxwidget->UpdateAll();
137         
138         
139 }
140
141         
142 //---------------------------------------------------
143 void PlotterView::CreateWidget(wxWindow* parent)
144 {
145    bbtkDebugMessageInc("Core",9,"PlotterView::CreateWxWindow()"<<std::endl);
146     
147    mwxwidget = new pPlotterWindow( parent , -1,wxDefaultPosition,  wxDefaultSize,  0 );
148    mwxwidget->AddLayer(new pPlotterScaleX());
149    mwxwidget->AddLayer(new pPlotterScaleY());
150
151         mwxwidget->setMinScrY(0);
152         mwxwidget->setMaxScrY(5000);
153
154         
155            bbtkDebugDecTab("Core",9);
156    bbSetOutputWidget( mwxwidget );
157 }
158
159 //---------------------------------------------------
160 void PlotterView::bbUserSetDefaultValues()
161 {
162         mwxwidget = NULL;
163         firsttime=true;
164 }
165         
166         //-----------------------------------------------------------------     
167         void PlotterView::bbUserInitializeProcessing()
168         {
169         }
170         
171         //-----------------------------------------------------------------     
172         void PlotterView::bbUserFinalizeProcessing()
173         {
174         }
175         
176         //-----------------------------------------------------------------     
177
178 }
179 // EO namespace bbcreaMaracasVisu
180
181