source: Sophya/trunk/Poubelle/archediab.old/archediab.sources/c/trace_tout.c@ 651

Last change on this file since 651 was 649, checked in by ansari, 26 years ago

archediab 28 vol

File size: 4.4 KB
Line 
1#include "diabolo.h"
2#include "bolo.h"
3#include "acqui.h"
4#include "carte_acqui.h"
5#include "trace_tout.h"
6#include "synchro.h"
7
8
9//---------------------------------- fenetre : lit_fifo -----------------------------------
10
11void montracen_tout(int fen,int n,double x,util_trace_tout *SS);
12
13
14
15void exec_trace_tout(int fen,int item,double valeur,...)
16{
17int i,j;
18double x,c1,c2;
19static int scan_tt;
20util_trace_tout *SS;
21SS=infos(fen)->util;
22switch(item)
23 {
24 case fermeture : for(j=0;j<8;j++) if(gg->trace_tout[j]==fen) {gg->trace_tout[j]=0;}
25 free(SS);
26 break;
27 case ouverture :
28 for(j=0;j<8;j++) if(gg->trace_tout[j]==0) {gg->trace_tout[j]=fen;break;}
29 SS=malloc(sizeof(util_trace_tout));
30 infos(fen)->util=SS;
31
32 graph->ymin=-120;
33 graph->ymax=120;
34 graph->ypas=20;
35 graph->xmax=500;
36 graph->xpas=50;
37 graph->taille_graduations=8;
38 for(j=0;j<nb_max_trace;j++) SS->f1[j]=0;
39 for(j=0;j<nb_max_trace;j++) SS->f2[j]=0;
40 for(j=0;j<nb_max_trace;j++) SS->y[j]=0;
41
42
43 case t_moyenne :
44 case t_moyenne+1000 :
45 case t_fmini :
46 case t_fmini+1000 :
47 case t_fmaxi :
48 case t_fmaxi+1000 : SS->moyenne=litD(fen,t_moyenne,0L);if(SS->moyenne<1) SS->moyenne=1;
49 SS->ipas=0;
50 SS->fmini=litD(fen,t_fmini,0L);
51 SS->fmaxi=litD(fen,t_fmaxi,0L);
52 for(j=0;j<nb_max_trace;j++) SS->f1[j]=0;
53
54 c1=2*3.14*SS->fmini*gg->periode_echantillonage; c1=c1/(1+c1);
55 c2=2*3.14*SS->fmaxi*gg->periode_echantillonage; c2=c2/(1+c2);
56
57 printf("c1=%g c2=%g \n",c1,c2);
58
59
60
61
62 case t_bolo_couleur :
63 case t_bolo_couleur+1 :
64 case t_bolo_couleur+2 :
65 case t_bolo_couleur+3 :
66 case t_bolo_couleur+4 :
67 case t_bolo_couleur+5 :
68 case t_bolo_couleur+6 :
69 case t_bolo_couleur+7 :
70 case t_bolo_couleur+8 :
71 case t_bolo_couleur+9 :
72
73 for(i=0;i<max_couleur;i++)
74 {
75 SS->bolo_couleur[i]=litD(fen,t_bolo_couleur+i,0L)-1;
76 if( (SS->bolo_couleur[i]<1) ou (SS->bolo_couleur[i]>nb_max_trace) ) SS->bolo_couleur[i]=0;
77 printf(" i=%d bolo=%d ",i,SS->bolo_couleur[i]);
78 }
79 printf("\n");
80 break;
81
82
83 break;
84
85
86 case t_raz : gg->temps_origine=gg->periode_echantillonage*(double)gg->temps_cntl; //break;
87 case t_efface : efface(fen);
88 break;
89
90
91 case tache_de_fond : selectgra(fen);
92 c1=2*3.14*SS->fmini*gg->periode_echantillonage; if(c1>0) c1=c1/(1+c1);
93 c2=2*3.14*SS->fmaxi*gg->periode_echantillonage; if(c2>0) c2=c2/(1+c2);
94
95 for(j=0;j<nb_max_trace;j++)
96 {
97 SS->f1[j]= (1-c1) * SS->f1[j] + c1 * xbol(j);
98 SS->f2[j]= (1-c2) * SS->f2[j] + c2 * xbol(j);
99 SS->y[j]+=SS->f2[j]-SS->f1[j];
100 }
101 SS->ipas--;
102 if(SS->ipas<=0)
103 {
104 SS->ipas=SS->moyenne;
105 if(SS->moyenne) for(j=0;j<nb_max_trace;j++) SS->y[j]=SS->y[j]/(double)SS->moyenne;
106// printf("trace_tout un point \n");
107
108 x=gg->periode_echantillonage*(double)gg->temps_cntl-gg->temps_origine;
109
110if(scan_tt != ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) )
111 {
112 if(scan_tt) rectangle(fen,x,graph->ymin,x,graph->ymax,rouge); // trace le segment x1,y1 - x2,y2
113 else rectangle(fen,x,graph->ymin,x,graph->ymax,bleu); // trace le segment x1,y1 - x2,y2
114
115 scan_tt = ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) ;
116 }
117
118 montracen_tout(fen,nb_max_trace,x,SS);
119
120
121 if(!(graph->scroll_courbe) && litD(fen,t_retour,0L) &&
122 ( (x<graph->xmin) ou (x>graph->xmax) ))
123 {
124 graph->xmax-=graph->xmin;graph->xmin=0;
125 gg->temps_origine=gg->periode_echantillonage*(double)gg->temps_cntl;
126 x=0;
127 }
128
129 for(j=0;j<nb_max_trace;j++) SS->y[j]=0;
130 }
131
132 default : break;
133 }
134
135}
136
137
138void montracen_tout(int fen,int n,double x,util_trace_tout *SS)
139{
140int i;
141double yy[max_couleur];
142for(i=0;i<max_couleur;i++)
143 {
144 if( (SS->bolo_couleur[i]>=1) && (SS->bolo_couleur[i]<nb_max_trace+1) ) yy[i]=SS->y[SS->bolo_couleur[i]-1];
145 else yy[i]=0;
146 }
147tracen(fen,max_couleur,x,yy);
148// printf("0=%g 1=%g 2=%g \n",yy[0],yy[1],yy[2]);
149}
Note: See TracBrowser for help on using the repository browser.