#include "scicos_block.h"#include <math.h>#include "machine.h"Include dependency graph for cscope.c:

Go to the source code of this file.
Functions | |
| void | cscope (scicos_block *block, int flag) |
| void C2F() | oldgraphics (int *flag) |
Variables | |
| static int | c__1 = 1 |
| static int | c__0 = 0 |
| static int | c_n1 = -1 |
| static int | c__4 = 4 |
| static int | c__21 = 21 |
| static int | c__3 = 3 |
| static double | c_b84 = 0. |
| void cscope | ( | scicos_block * | block, | |
| int | flag | |||
| ) |
Definition at line 21 of file cscope.c.
References buf, C2F, c__0, c__1, c__21, c__3, c__4, c_b84, c_n1, cur, dr(), dr1(), dset(), get_block_number(), get_scicos_time(), getlabel(), i, i__, scicos_block::inptr, scicos_block::insz, int, scicos_block::ipar, kfun, n, n1, n2, na, scicos_block::nipar, nu, NULL, scicos_block::rpar, scicos_free(), scicos_malloc(), scicosclip(), sciwin(), set_block_error(), setscale2d(), t, v, and scicos_block::work.
00022 { 00023 double t; 00024 double *z__; 00025 double *rpar; 00026 int *ipar, nipar,nu,kfun; 00027 00028 //** Patch to OLD graphics 00029 int default_graphics ; 00030 00031 /* Initialized data */ 00032 00033 static double frect[4] = { 0.,0.,1.,1. }; 00034 static int cur = 0; 00035 static int verb = 0; 00036 00037 int i__1,i; 00038 00039 static double rect[4]; 00040 extern int C2F(getlabel)(), C2F(dset)(); 00041 static double ymin, ymax; 00042 static int i__, k, n, v; 00043 static double tsave; 00044 static int n1, n2; 00045 extern int C2F(plot2d)(), C2F(setscale2d)(); 00046 static int na; 00047 extern int C2F(dr)(); 00048 static double dt, dv; 00049 static int nxname; 00050 extern int C2F(sciwin)(), C2F(dr1)(), C2F(scicosclip)(); 00051 static char buf[40]; 00052 static int wid, iwd; 00053 static double per; 00054 static int nax[4], iwp; 00055 00056 /* Copyright INRIA */ 00057 /* Scicos block simulator */ 00058 /* ipar(1) = win_num */ 00059 /* ipar(2) = 0/1 color flag */ 00060 /* ipar(3) = buffer size */ 00061 /* ipar(4:11) = line type for ith curve */ 00062 00063 /* ipar(12:13) : window position */ 00064 /* ipar(14:15) : window dimension */ 00065 00066 /* rpar(1)=dt */ 00067 /* rpar(2)=ymin */ 00068 /* rpar(3)=ymax */ 00069 /* rpar(4)=periode */ 00070 00071 nu=block->insz[0]; 00072 if (nu>8) {nu=8;} 00073 rpar=block->rpar; 00074 ipar=block->ipar; 00075 nipar=block->nipar; 00076 t=get_scicos_time(); 00077 00078 /* character*(4) logf */ 00079 /* Parameter adjustments */ 00080 --ipar; 00081 --rpar; 00082 00083 iwp = nipar - 3; 00084 iwd = nipar - 1; 00085 00086 wid = ipar[1]; 00087 if(wid==-1){ 00088 wid=20000+get_block_number(); 00089 } 00090 00091 if (flag == 2) { 00092 z__=*block->work; 00093 --z__; 00094 dt = rpar[1]; 00095 ymin = rpar[2]; 00096 ymax = rpar[3]; 00097 per = rpar[4]; 00098 n = ipar[3]; 00099 k = (int) z__[1]; 00100 if (k > 0) { 00101 n1 = (int) (z__[k + 1] / per); 00102 if (z__[k + 1] < 0.) { 00103 --n1; 00104 } 00105 } else { 00106 n1 = 0; 00107 } 00108 00109 tsave = t; 00110 if (dt > 0.) { 00111 t = z__[k + 1] + dt; 00112 } 00113 00114 n2 = (int) (t / per); 00115 if (t < 0.) { 00116 --n2; 00117 } 00118 00119 /* add new point to the buffer */ 00120 ++k; 00121 z__[k + 1] = t; 00122 for (i = 0; i < nu; ++i) { 00123 z__[n + 1 + i * n + k] = block->inptr[0][i]; 00124 /* L1: */ 00125 } 00126 z__[1] = (double) k; 00127 if (n1 == n2 && k < n) { 00128 t = tsave; 00129 return ; 00130 } 00131 00132 /* plot 1:K points of the buffer */ 00133 C2F(dr1)("xget\000", "window\000", &verb, &cur, &na, &v, &v, &v, &dv, &dv, 00134 &dv, &dv); 00135 if (cur != wid) { 00136 C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv, 00137 &dv, &dv); 00138 } 00139 C2F(dr1)("xsetdr\000", "Rec\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, & 00140 dv); 00141 if (k > 0) { 00142 C2F(scicosclip)(&c__1); 00143 for (i__ = 0; i__ < nu; ++i__) { 00144 C2F(dr1)("xpolys\000", "v\000", &v, &v, &ipar[i__ + 4], &c__1, &k, 00145 &v, &z__[2], &z__[n + 2 + i__ * n], &dv, &dv); 00146 } 00147 C2F(scicosclip)(&c__0); 00148 } 00149 /* shift buffer left */ 00150 z__[2] = z__[k + 1]; 00151 for (i__ = 0; i__ < nu; ++i__) { 00152 z__[n + 1 + i__ * n + 1] = z__[n + 1 + i__ * n + k]; 00153 } 00154 z__[1] = 1.; 00155 if (n1 != n2) { 00156 /* clear window */ 00157 nax[0] = 2; 00158 nax[1] = 10; 00159 nax[2] = 5; 00160 nax[3] = 4; 00161 C2F(dr1)("xclear\000", "v\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, 00162 &dv); 00163 C2F(dr1)("xset\000", "use color\000", &ipar[2], &c__0, &c__0, &c__0, & 00164 c__0, &v, &dv, &dv, &dv, &dv); 00165 C2F(dr)("xstart\000", "v\000", &wid, &v, &v, &v, &v, &v, &dv, &dv, & 00166 dv, &dv); 00167 rect[0] = per * (n1 + 1); 00168 rect[1] = ymin; 00169 rect[2] = per * (n1 + 2); 00170 rect[3] = ymax; 00171 C2F(dr1)("xset\000", "dashes\000", &c__0, &c__0, &c__0, &c__0, &c__0, 00172 &v, &dv, &dv, &dv, &dv); 00173 C2F(plot2d)(rect, &rect[1], &c__1, &c__1, &c_n1, "011", buf, rect, nax, 00174 &c__4, &c__21); 00175 } 00176 t = tsave; 00177 00178 //** init : initialization 00179 } else if (flag == 4) {/* the workspace is used to store buffer 00180 */ 00181 if ((*block->work= 00182 scicos_malloc(sizeof(double)*(1+ipar[3]*(1+nu))))== NULL ) { 00183 set_block_error(-16); 00184 return; 00185 } 00186 z__=*block->work; 00187 --z__; 00188 z__[1]=-1.0; 00189 00190 00191 n = ipar[3]; 00192 ymin = rpar[2]; 00193 ymax = rpar[3]; 00194 per = rpar[4]; 00195 nax[0] = 2; 00196 nax[1] = 10; 00197 nax[2] = 5; 00198 nax[3] = 4; 00199 n1 = (int) (t / per); 00200 if (t <= 0.) { 00201 --n1; 00202 } 00203 00204 //** --------------------- 00205 // default_graphics = getVersionFlag() ; 00206 // setVersionFlag(1) ; //** force the old graphics 00207 00208 C2F(sciwin)(); 00209 C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv, & 00210 dv, &dv); 00211 C2F(dr1)("xsetdr\000", "Rec\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, & 00212 dv); 00213 if (ipar[iwp] >= 0) { 00214 C2F(dr1)("xset\000", "wpos\000", &ipar[iwp], &ipar[iwp + 1], &v, &v, & 00215 v, &v, &dv, &dv, &dv, &dv); 00216 } 00217 if (ipar[iwd] >= 0) { 00218 C2F(dr1)("xset\000", "wdim\000", &ipar[iwd], &ipar[iwd + 1], &v, &v, & 00219 v, &v, &dv, &dv, &dv, &dv); 00220 /* to force dimensions update */ 00221 C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv, 00222 &dv, &dv); 00223 } 00224 rect[0] = per * (n1 + 1); 00225 rect[1] = ymin; 00226 rect[2] = per * (n1 + 2); 00227 rect[3] = ymax; 00228 C2F(setscale2d)(frect, rect, "nn\000"); 00229 C2F(dr1)("xset\000", "use color\000", &ipar[2], &c__0, &c__0, &c__0, & 00230 c__0, &v, &dv, &dv, &dv, &dv); 00231 C2F(dr1)("xset\000", "alufunction\000", &c__3, &c__0, &c__0, &c__0, &c__0, 00232 &v, &dv, &dv, &dv, &dv); 00233 C2F(dr1)("xclear\000", "v\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, & 00234 dv); 00235 C2F(dr)("xstart\000", "v\000", &wid, &v, &v, &v, &v, &v, &dv, &dv, &dv, & 00236 dv); 00237 C2F(dr1)("xset\000", "dashes\000", &c__0, &c__0, &c__0, &c__0, &c__0, &v, 00238 &dv, &dv, &dv, &dv); 00239 C2F(plot2d)(rect, &rect[1], &c__1, &c__1, &c_n1, "011", buf, rect, nax, & 00240 c__4, &c__21); 00241 C2F(scicosclip)(&c__1); 00242 nxname = 40; 00243 kfun=get_block_number(); 00244 C2F(getlabel)(&kfun, buf, &nxname); 00245 if (nxname > 39) { 00246 nxname = 39; 00247 } 00248 i__1 = nxname; 00249 *(buf+i__1)=*"\000"; 00250 if ((nxname == 1 && *(unsigned char *)buf == ' ') || (nxname == 0)) { 00251 } else { 00252 C2F(dr)("xname\000", buf, &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &dv); 00253 } 00254 z__[1] = 0.; 00255 z__[2] = t; 00256 i__1 = nu * n; 00257 C2F(dset)(&i__1, &c_b84, &z__[3], &c__1); 00258 00259 //** --- restore the graphics mode 00260 // setVersionFlag(default_graphics) ; 00261 00262 } else if (flag == 5) { 00263 z__=*block->work; 00264 --z__; 00265 n = ipar[3]; 00266 k = (int) z__[1]; 00267 if (k <= 1) { 00268 scicos_free(*block->work); 00269 return ; 00270 } 00271 C2F(dr1)("xget\000", "window\000", &verb, &cur, &na, &v, &v, &v, &dv, &dv, 00272 &dv, &dv); 00273 if (cur != wid) { 00274 C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv, 00275 &dv, &dv); 00276 } 00277 C2F(scicosclip)(&c__1); 00278 for (i__ = 0; i__ < nu; ++i__) { 00279 C2F(dr1)("xpolys\000", "v\000", &v, &v, &ipar[i__ + 4], &c__1, &k, &v, 00280 &z__[2], &z__[n + 2 + i__ * n], &dv, &dv); 00281 } 00282 C2F(scicosclip)(&c__0); 00283 scicos_free(*block->work); 00284 } 00285 }
Here is the call graph for this function:

| void C2F() oldgraphics | ( | int * | flag | ) |
Definition at line 289 of file cscope.c.
00290 { 00291 00292 //** flag = 1 ; old graphics back compatibility 00293 //** flag = 0 ; default graphics mode 00294 00295 // setVersionFlag(*flag) ; //** force the old graphics 00296 00297 // debug only :) 00298 // printf("\n versionflag = %d \n ", versionflag); 00299 00300 }
1.5.1