Allink  v0.1
ElementiGraficiComm.cpp
1 /***********************************************************************
2 ElementiGrafici: Class that interface the VarData, VarElementiGrafici
3 and Matematica classes function for comunicating with main window of
4 Visualizza. The main function is the plotting function DisegnaPunti()
5 that provides the visualisation of two set of data. The bars at the
6 bottom permits to change the visualisation and the limit for the analisys
7  Copyright (C) 2008 by Giovanni Marelli <sabeiro@virgilio.it>
8 
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
13 
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 ***********************************************************************/#include "ElementiGrafici.h"
23 
24 void ElementiGrafici::Ridisegna(){
25 // InfoStato(stringa);
26 // ImpInter(PuntiMax);
27 // ImpInter(0,PuntiMax);
28 // ImpNVisMin(0); ImpNVisMax(PuntiMax);
29 // ImpNElMin(0); ImpNElMax(PuntiMax);
30  repaint();
31  // if(!VoltaMomenti) emit InterVisCambiato(NVisMin,NVisMax);
32 }
33 void ElementiGrafici::DisegnaLinee(){
34  for(int s=0;s<NVar;s++){
35  if(DIS_IF_TYPE(LineaCome[s],LINEA_TRATTO))
36  LineaCome[s] = LINEA_PUNTO;
37  else if(DIS_IF_TYPE(LineaCome[s],LINEA_PUNTO))
38  LineaCome[s] = LINEA_TRATTO;
39  }
40  repaint();
41 }
42 void ElementiGrafici::DisegnaPunti(){
43  for(int s=0;s<NVar;s++){
44  if(DIS_IF_TYPE(LineaCome[s],LINEA_TRATTO))
45  LineaCome[s] = LINEA_PUNTOETRATTO;
46  else if(DIS_IF_TYPE(LineaCome[s],LINEA_PUNTOETRATTO))
47  LineaCome[s] = LINEA_TRATTO;
48  }
49  repaint();
50 }
51 void ElementiGrafici::DisegnaGriglia(){
52  Griglia = !Griglia;
53  repaint();
54 }
55 void ElementiGrafici::DisegnaLogx(){
56  if(DIS_IF_TYPE(LogLog,DIS_LOGX))
57  DIS_REM_TYPE(LogLog,DIS_LOGX);
58  else
59  DIS_ADD_TYPE(LogLog,DIS_LOGX);
60  repaint();
61 }
62 void ElementiGrafici::DisegnaLogy(){
63  if(DIS_IF_TYPE(LogLog,DIS_LOGY))
64  DIS_REM_TYPE(LogLog,DIS_LOGY);
65  else
66  DIS_ADD_TYPE(LogLog,DIS_LOGY);
67  repaint();
68 }
69 void ElementiGrafici::SulSegnale(bool Segnale){
70  if(PrimaVolta)
71  return;
72  DIS_ADD_TYPE(IfDisegna,DIS_TUTTI);
73  DIS_REM_TYPE(IfDisegna,DIS_SEGNALE);
74  if(Segnale)
75  v1->Punta(CoordY);
76 }
77 void ElementiGrafici::SeRiscala(){
78  if( DIS_IF_TYPE(IfRiscala,RIS_UNO) ){
79  DIS_REM_TYPE(IfRiscala,RIS_UNO);
80  DIS_ADD_TYPE(IfRiscala,RIS_TUTTI);
81  }
82  else{
83  DIS_ADD_TYPE(IfRiscala,RIS_UNO);
84  DIS_REM_TYPE(IfRiscala,RIS_TUTTI);
85  }
86  repaint();
87 }
88 void ElementiGrafici::SeRiscalaTutto(){
89  if( DIS_IF_TYPE(IfRiscala,RIS_TUTTI) ){
90  DIS_REM_TYPE(IfRiscala,RIS_TUTTI);
91  DIS_ADD_TYPE(IfRiscala,RIS_UNO);
92  }
93  else {
94  DIS_ADD_TYPE(IfRiscala,RIS_TUTTI);
95  DIS_REM_TYPE(IfRiscala,RIS_UNO);
96  }
97  repaint();
98 }
99 void ElementiGrafici::NSet(){
100  if(IfDisegna == DIS_SEGNALE){
101  DIS_ADD_TYPE(IfDisegna,DIS_TUTTI);
102  DIS_REM_TYPE(IfDisegna,DIS_SEGNALE);
103  }
104  else{
105  DIS_REM_TYPE(IfDisegna,DIS_TUTTI);
106  DIS_ADD_TYPE(IfDisegna,DIS_SEGNALE);
107  }
108  repaint();
109 }
110 void ElementiGrafici::SulGrafico(bool Grafico){
111  if(PrimaVolta)
112  return;
113  IfSegnale = 0;
114  if(Grafico)
115  v1->CambiaPunti();
116 }
117 void ElementiGrafici::SuX(bool niente){
118  if(niente)
119  Coord = 0;
120 }
121 void ElementiGrafici::SuY(bool niente){
122  if(niente)
123  Coord = 1;
124 }
125 void ElementiGrafici::SuDX(bool niente){
126  if(niente)
127  Coord = 2;
128 }
129 void ElementiGrafici::SuDY(bool niente){
130  if(niente)
131  DIS_ADD_TYPE(IfDisegna,DIS_ERR);
132  else
133  DIS_REM_TYPE(IfDisegna,DIS_ERR);
134 }
135 void ElementiGrafici::InfoStato(const char *testo){
136  // printf("Barra: %s\n",testo);
137  QString Info = QString(testo);
138  emit Stato(QString(testo));
139 }
140 void ElementiGrafici::InfoSequenza(const char *testo){
141  QString Info = QString(testo);
142  emit StatoSequenza(QString(testo));
143 }
144 QSizePolicy ElementiGrafici::Dimensionamento() const{
145  return QSizePolicy( QSizePolicy::Expanding,QSizePolicy::Expanding);
146 }
148  if(n>0){
149  NBin = n;
150  v1->CambiaNBin(n);
151  emit NBinCambiati(n);
152  }
153 }
155  if(n>0){
156  NMobile = n;
157  emit NMobileCambiato(n);
158  }
159 }
161  if(n>0){
162  NCorrela = n;
163  emit NCorrelaCambiato(n);
164  }
165 }
167  if(n<0)
168  return;
169  else if(n < NVisMax){
170  NVisMin = n;
171  if(!VoltaMomenti) ImpNElMin(NVisMin);
172  emit NVisMinCambiato(n);
173  }
174  else if(n>NVisMax){
175  if(n < PuntiMax + 10){
176  ImpNVisMax(n+10);
177  NVisMin = n;
178  if(!VoltaMomenti) ImpNElMin(NVisMin);
179  emit NVisMinCambiato(n);
180  }
181  else
182  return ;
183  }
184  if(!VoltaMomenti) ImpNElMin(NVisMin);
185  if(PuntiMax < 1000 && !PrimaVolta)
186  repaint();
187 }
189  if( n > NVisMin +5 && n<=PuntiMax){
190  NVisMax = n;
191  if(!VoltaMomenti) ImpNElMax(NVisMax);
192  emit NVisMaxCambiato(n);
193  }
194  else if(n < NVisMin + 5 && n <= PuntiMax){
195  if(NVisMin > 5){
196  NVisMax = n;
197  ImpNVisMin( n - 5);
198  if(!VoltaMomenti) ImpNElMax(NVisMax);
199  emit NVisMaxCambiato(n);
200  }
201  else
202  return ;
203  }
204  if(PuntiMax < 1000 && !PrimaVolta)
205  repaint();
206 }
208  if(n<0 )
209  return;
210  else if(n < NElMax){
211  NElMin = n;
212  emit NElMinCambiato(n);
213  sprintf(cPos,"%.3g : 0.",NElMin*ScalaTopoX/(double)PuntiMax+xMin);
214  emit StatoSequenza(QString(cPos));
215  }
216  else if(n>NElMax){
217  if(n < PuntiMax + 5){
218  ImpNElMax(n+5);
219  NElMin = n;
220  emit NElMinCambiato(n);
221  sprintf(cPos,"%.3g : 0.",NElMin*ScalaTopoX/(double)PuntiMax+xMin);
222  emit StatoSequenza(QString(cPos));
223  }
224  else
225  return ;
226  }
227  if(NMax < 10000 && !PrimaVolta) repaint();
228 }
230  if( n > NElMin +5 && n<=PuntiMax){
231  NElMax = n;
232  emit NElMaxCambiato(n);
233  sprintf(cPos,"%.3g : 0.",NElMax*ScalaTopoX/(double)PuntiMax+xMin);
234  emit StatoSequenza(QString(cPos));
235  }
236  else if(n < NElMin + 5 && n <= PuntiMax){
237  if(NElMin > 10){
238  NElMax = n;
239  ImpNElMin( n - 10);
240  emit NElMaxCambiato(n);
241  sprintf(cPos,"%.3g : 0.",NElMax*ScalaTopoX/(double)PuntiMax+xMin);
242  emit StatoSequenza(QString(cPos));
243  }
244  else {
245  return ;
246  }
247  }
248  if(NMax < 10000 && !PrimaVolta) repaint();
249 }
250 void ElementiGrafici::ImpNElMinY(int n){
251  if(n<0 || n > RisY)
252  return;
253  NElMinY = n;
254  emit NElMinYCambiato(n);
255  sprintf(cPos,"%.3g : %.3g",0.,(height()-NElMinY)*ScalaTopoY/(double)height()+yMin);
256  emit StatoSequenza(QString(cPos));
257  if(!PrimaVolta) repaint();
258 }
259 void ElementiGrafici::ImpNElMaxY(int n){
260  if(n<0 || n > RisY)
261  return;
262  NElMaxY = n;
263  emit NElMaxYCambiato(n);
264  sprintf(cPos,"%.3g : %.3g",0.,(height()-NElMaxY)*ScalaTopoY/(double)height()+yMin);
265  emit StatoSequenza(QString(cPos));
266  if(!PrimaVolta) repaint();
267 }
268 void ElementiGrafici::NomeFile(const QString &S){
269  sprintf(nomeFile,"%s",S.ascii());
270  sprintf(stringa,"Carico il file %s",nomeFile);
271  InfoStato(stringa);
272 }
273 void ElementiGrafici::NomeEntrata(const QString &S){
274  sprintf(nomeFile,"%s",S.ascii());
275  emit TestoCambiato(S);
276 }
277 void ElementiGrafici::NomeConf(const QString &S){
278  sprintf(nomeConf,"%s",S.ascii());
279  emit ConfCambiato(S);
280 }
281 void ElementiGrafici::NomeSalva(const QString &S){
282  sprintf(nomeSalva,"%s",S.ascii());
283  sprintf(stringa,"Salva il file %s",nomeSalva);
284  InfoStato(stringa);
285 }
286 void ElementiGrafici::NomeTit(const QString &S){
287  nomeTit.replace(0,S.length(),S);
288 }
289 void ElementiGrafici::NomeEtX(const QString &S){
290  nomeEtX.replace(0,S.length(),S);
291 }
292 void ElementiGrafici::NomeEtY(const QString &S){
293  nomeEtY.replace(0,S.length(),S);
294 }
295 void ElementiGrafici::NomeUscita(const QString &S){
296  emit SalvaCambiato(S);
297 }
298 void ElementiGrafici::NomeTitolo(const QString &S){
299  emit TitoloCambiato(S);
300 }
301 void ElementiGrafici::NomeEtichettaX(const QString &S){
302  emit EtichettaXCambiato(S);
303 }
304 void ElementiGrafici::NomeEtichettaY(const QString &S){
305  emit EtichettaYCambiato(S);
306 }
307 void ElementiGrafici::Salva(){
308  NomeSalva(QString(nomeSalva));
309  sprintf(stringa,"Salvo su %s",nomeSalva);
310  InfoStato(stringa);
311  if(!IfSegnale) v1->ScriviFile(nomeSalva,CoordY,LogLog,NVisMin,NVisMax);
312  if( DIS_IF_TYPE(IfDisegna,DIS_PUNTI) )
314  if( DIS_IF_TYPE(IfDisegna,DIS_MOMENTI) )
316  else v1->ScriviTutto(nomeSalva,LogLog,1.,1.);
317 }
318 void ElementiGrafici::ImpInter(int n){
319  emit InterVisCambiato(n);
320 }
321 void ElementiGrafici::ImpInterEl(int n){
322  emit InterElCambiato(n);
323 }
324 void ElementiGrafici::ImpInter(int Min,int Max){
325  emit InterVisCambiato(Min,Max);
326 }
327 void ElementiGrafici::ImpInterEl(int Min,int Max){
328  emit InterElCambiato(Min,Max);
329 }
330 void ElementiGrafici::ImpInterY(int Min,int Max){
331  emit InterYCambiato(Min,Max);
332 }
333 void ElementiGrafici::ImpCoordX(int n){
334  if(n < REF_SEQ || n > NVar) return;
335  if(CoordX == n) return;
336  CoordX = n;
337  if(DIS_IF_TYPE(IfRiscala,RIS_UNO))
338  v1->ImpCoordX(CoordY,CoordX);
339  else if (DIS_IF_TYPE(IfRiscala,RIS_TUTTI)){
340  v1->ImpCoordX(CoordX);
341  }
342  if(!PrimaVolta) repaint();
343  emit CoordXCambiata(MIN(n,CoordX));
344 }
345 void ElementiGrafici::ImpCoordY(int n){
346  if(n < 0 || n >= NVar) return;
347  CoordY = n;
348  v1->ImpCoordY(CoordY);
349  if(!PrimaVolta) repaint();
350  emit CoordYCambiata(CoordY);
351 }
353  if(n >= 0 && n < NVar){
354  CoordDY = n;
355  }
356  if(!PrimaVolta) repaint();
357  emit CoordYCambiata(CoordY);
358 }
359 void ElementiGrafici::ImpNVarY(int n, int m){
360  emit InterCoordYCambiato(n,m-1);
361 }
362 void ElementiGrafici::ImpNVarX(int n, int m){
363  emit InterCoordXCambiato(n,m-1);
364 }
void ScriviPunti(char *file)
Writes the content of the elaborated array.
Definition: VarDatFile.cpp:745
char * nomeFile
Name of the current file opened.
void ImpNCorrela(int n)
Set the bins for the point correlation.
char * nomeConf
Name of the config file.
int NMax
Number of points per array.
void ImpNBin(int n)
Set NBin.
char * nomeSalva
Name of the output file.
void Punta(int n)
Points to a different column.
Definition: VarDatFile.cpp:638
QString nomeTit
Title name.
void ImpNElMin(int n)
Set the minimum elaboration point.
void ImpNVisMax(int n)
Set the maximum visualisation point.
QString nomeEtY
Y axis label.
QString nomeEtX
X axis label.
void ImpCoordY(int Ext)
Set the column for the y array.
Definition: VarDatFile.cpp:938
void ImpNVisMin(int n)
Set the minimum visualisation point.
void ImpCoordX(int vAbs)
Set the columns for the x array.
Definition: VarDatFile.cpp:929
void ScriviFile(char *file, int CoordY, int LogLog, int NVisMin, int NVisMax)
Writes the content of the pointed vector.
Definition: VarDatFile.cpp:753
void ImpNElMax(int n)
Set the maximum elaboration point.
void CambiaNBin(int)
Reallocate the pointer dInter dInter1.
Definition: VarDatFile.cpp:631
void CambiaPunti()
Copies Punti in Punti1 to store the information of the already elaborated array, to be fixed...
Definition: VarDatFile.cpp:710
void ImpCoordDY(int n)
Set the y error bar.
void ImpNVarX(int n, int m)
Type for coordinate change.
void ImpNMobile(int n)
Set the bins for the running average.
VarDatFile * v1
Class for the file handle.
void ScriviTutto(char *file, int LogLog, int NVisMin, int NVisMax)
Writes all the content in memory.
Definition: VarDatFile.cpp:766