11 {1, 1, 1, 1.0, 4, 0, 1.0};
27 {0.15, 0.85, 0.15, 0.85};
29 void set_program_defaults(void)
33 g
= (graph
*) calloc(maxgraph
, sizeof(graph
));
34 for (i
= 0; i
< maxgraph
; i
++) {
35 g
[i
].p
= (plotarr
*) calloc(maxplot
, sizeof(plotarr
));
38 "Couldn't allocate memory for sets in graph %d, maxplot = %d, fatal error", i
, maxplot
);
44 for (i
= 0; i
< MAXREGION
; i
++) {
45 set_region_defaults(i
);
47 set_default_annotation();
48 set_default_string(×tamp
);
49 alloc_blockdata(maxplot
);
52 if (init_scratch_arrays(maxarr
)) {
53 errmsg("Couldn't allocate memory for scratch arrays, don't use them");
57 void set_region_defaults(int rno
)
62 rg
[rno
].color
= grdefaults
.color
;
63 rg
[rno
].lines
= grdefaults
.lines
;
64 rg
[rno
].linew
= grdefaults
.linew
;
65 rg
[rno
].linkto
= (int *) malloc(maxgraph
* sizeof(int));
66 for (j
= 0; j
< maxgraph
; j
++) {
67 rg
[rno
].linkto
[j
] = -1;
70 rg
[rno
].x
= rg
[rno
].y
= (double *) NULL
;
71 rg
[rno
].x1
= rg
[rno
].y1
= rg
[rno
].x2
= rg
[rno
].y2
= 0.0;
74 void set_default_framep(framep
* f
)
76 f
->active
= ON
; /* frame on or off */
77 f
->type
= 0; /* frame type */
78 f
->lines
= grdefaults
.lines
;
79 f
->linew
= grdefaults
.linew
;
80 f
->color
= grdefaults
.color
;
81 f
->fillbg
= OFF
; /* fill background */
82 f
->bgcolor
= 0; /* background color inside frame */
85 void set_default_world(world
* w
)
87 memcpy(w
, &d_w
, sizeof(world
));
90 void set_default_view(view
* v
)
92 memcpy(v
, &d_v
, sizeof(view
));
95 void set_default_string(plotstr
* s
)
101 s
->lines
= grdefaults
.lines
;
102 s
->linew
= grdefaults
.linew
;
103 s
->color
= grdefaults
.color
;
105 s
->font
= grdefaults
.font
;
107 s
->charsize
= grdefaults
.charsize
;
108 s
->s
= (char *) malloc(sizeof(char));
112 void set_default_line(linetype
* l
)
117 l
->x1
= l
->y1
= l
->x2
= l
->y2
= 0.0;
118 l
->lines
= grdefaults
.lines
;
119 l
->linew
= grdefaults
.linew
;
120 l
->color
= grdefaults
.color
;
126 void set_default_box(boxtype
* b
)
131 b
->x1
= b
->y1
= b
->x2
= b
->y2
= 0.0;
132 b
->lines
= grdefaults
.lines
;
133 b
->linew
= grdefaults
.linew
;
134 b
->color
= grdefaults
.color
;
140 void set_default_ellipse(ellipsetype
* e
)
145 e
->x1
= e
->y1
= e
->x2
= e
->y2
= 0.0;
146 e
->lines
= grdefaults
.lines
;
147 e
->linew
= grdefaults
.linew
;
148 e
->color
= grdefaults
.color
;
154 void set_default_legend(int gno
, legend
* l
)
164 l
->font
= grdefaults
.font
;
166 l
->color
= grdefaults
.color
;
167 l
->linew
= grdefaults
.linew
;
168 l
->lines
= grdefaults
.lines
;
171 l
->boxfillusing
= COLOR
;
174 l
->boxlcolor
= grdefaults
.color
; /* color for symbol */
175 l
->boxlinew
= grdefaults
.linew
; /* set plot sym line width */
176 l
->boxlines
= grdefaults
.lines
; /* set plot sym line style */
179 void set_default_plotarr(plotarr
* p
)
182 p
->active
= OFF
; /* active flag */
183 p
->type
= XY
; /* dataset type */
184 p
->deact
= 0; /* deactivated set */
185 p
->hotlink
= 0; /* hot linked set */
186 p
->hotfile
[0] = 0; /* hot linked file name */
187 p
->len
= 0; /* set length */
188 p
->missing
= DATASET_MISSING
; /* value for missing data */
189 p
->s
= (char **) NULL
; /* pointer to strings */
190 p
->xmin
= p
->xmax
= p
->ymin
= p
->ymax
= 0.0;
192 p
->sym
= 0; /* set plot symbol */
193 p
->symchar
= 0; /* character for symbol */
194 p
->symskip
= 0; /* How many symbols to skip */
195 p
->symfill
= 0; /* Symbol fill type */
196 p
->symdot
= 0; /* Symbol dot in center */
197 p
->symlines
= grdefaults
.lines
; /* set plot sym line style */
198 p
->symlinew
= grdefaults
.linew
; /* set plot sym line width */
199 p
->symcolor
= -1; /* color for symbol; -1 means same color as line */
200 p
->symsize
= 1.0; /* size of symbols */
202 p
->font
= grdefaults
.font
; /* font for strings */
203 p
->format
= DECIMAL
; /* format for drawing values */
204 p
->prec
= 1; /* precision for drawing values */
205 p
->just
= LEFT
; /* justification for drawing values */
206 p
->where
= RIGHT
; /* where to draw values */
207 p
->valsize
= 1.0; /* char size for drawing values */
209 p
->lines
= grdefaults
.lines
;
210 p
->linew
= grdefaults
.linew
;
211 p
->color
= grdefaults
.color
;
212 p
->lineskip
= 0; /* How many points to skip when drawing lines */
214 p
->fill
= 0; /* fill type */
215 p
->fillusing
= COLOR
; /* fill using color or pattern */
216 p
->fillcolor
= 1; /* fill color */
217 p
->fillpattern
= 0; /* fill pattern */
219 p
->errbar
= -1; /* if type is _DX, _DY, _DXDY and errbar =
221 p
->errbarxy
= BOTH
; /* type of error bar */
222 p
->errbar_lines
= grdefaults
.lines
; /* error bar line width */
223 p
->errbar_linew
= grdefaults
.linew
; /* error bar line style */
224 p
->errbar_riser
= ON
; /* connecting line between error limits */
225 p
->errbar_riser_linew
= 1; /* connecting line between error limits line
227 p
->errbar_riser_lines
= 1; /* connecting line between error limits line
230 p
->errbarper
= 1.0; /* length of error bar */
231 p
->hilowper
= 1.0; /* length of hi-low */
233 p
->density_plot
= 0; /* if type is XYZ then density_plot = 1 */
234 p
->zmin
= p
->zmax
= 0.0; /* min max for density plots */
236 p
->comments
[0] = 0; /* how did this set originate */
237 p
->lstr
[0] = 0; /* legend */
239 for (i
= 0; i
< MAX_SET_COLS
; i
++) {
241 p
->emin
[i
] = 0.0; /* min for each column */
242 p
->emax
[i
] = 0.0; /* max for each column */
243 p
->imin
[i
] = 0; /* min loc for each column */
244 p
->imax
[i
] = 0; /* max loc for each column */
246 p
->ep
= NULL
; /* EditPoints pointer */
249 void set_default_velocityp(velocityp
* vp
)
256 vp
->lines
= grdefaults
.lines
;
257 vp
->linew
= grdefaults
.linew
;
258 vp
->color
= grdefaults
.color
;
259 set_default_string(&(vp
->vstr
));
263 vp
->userlength
= 1.0;
266 void set_default_graph(int gno
)
271 g
[gno
].hidden
= FALSE
;
274 g
[gno
].auto_type
= AUTO
;
275 g
[gno
].autoscale
= 0;
276 g
[gno
].noautoscale
= 0;
280 g
[gno
].ws
[0].w
.xg1
=g
[gno
].ws
[0].w
.xg2
=g
[gno
].ws
[0].w
.yg1
=g
[gno
].ws
[0].w
.yg2
=0;
282 g
[gno
].maxplot
= maxplot
;
283 g
[gno
].dsx
= g
[gno
].dsy
= 0.0; /* locator props */
284 g
[gno
].pointset
= FALSE
;
290 g
[gno
].barwid
= 0.85;
291 g
[gno
].sbarwid
= 0.75;
292 set_default_ticks(&g
[gno
].t
[0], X_AXIS
);
293 set_default_ticks(&g
[gno
].t
[1], Y_AXIS
);
294 set_default_ticks(&g
[gno
].t
[2], ZX_AXIS
);
295 set_default_ticks(&g
[gno
].t
[3], ZY_AXIS
);
296 set_default_framep(&g
[gno
].f
);
297 set_default_world(&g
[gno
].w
);
298 set_default_view(&g
[gno
].v
);
300 g
[gno
].rt
.yg1
= 2.0 * M_PI
;
301 set_default_legend(gno
, &g
[gno
].l
);
302 set_default_string(&g
[gno
].labs
.title
);
303 g
[gno
].labs
.title
.charsize
= 1.5;
304 set_default_string(&g
[gno
].labs
.stitle
);
305 g
[gno
].labs
.stitle
.charsize
= 1.0;
306 for (i
= 0; i
< maxplot
; i
++) {
307 set_default_plotarr(&g
[gno
].p
[i
]);
309 set_default_velocityp(&g
[gno
].vp
);
312 void realloc_plots(int maxplot
)
315 for (i
= 0; i
< maxgraph
; i
++) {
316 g
[i
].p
= (plotarr
*) realloc(g
[i
].p
, maxplot
* sizeof(plotarr
));
317 for (j
= g
[i
].maxplot
; j
< maxplot
; j
++) {
319 set_default_plotarr(&g
[i
].p
[j
]);
321 g
[i
].maxplot
= maxplot
;
325 void realloc_graph_plots(int gno
, int maxplot
)
328 g
[gno
].p
= (plotarr
*) realloc(g
[gno
].p
, maxplot
* sizeof(plotarr
));
329 for (j
= g
[gno
].maxplot
; j
< maxplot
; j
++) {
331 set_default_plotarr(&g
[gno
].p
[j
]);
333 g
[gno
].maxplot
= maxplot
;
336 void realloc_graphs(void)
340 g
= (graph
*) realloc(g
, maxgraph
* sizeof(graph
));
341 for (j
= MAXGRAPH
; j
< maxgraph
; j
++) {
342 g
[j
].p
= (plotarr
*) calloc(maxplot
, sizeof(plotarr
));
343 set_default_graph(j
);
347 void set_default_annotation(void)
351 lines
= (linetype
*) malloc(maxlines
* sizeof(linetype
));
352 boxes
= (boxtype
*) malloc(maxboxes
* sizeof(boxtype
));
353 pstr
= (plotstr
*) malloc(maxstr
* sizeof(plotstr
));
354 ellip
= (ellipsetype
*) malloc(maxellipses
* sizeof(ellipsetype
));
356 for (i
= 0; i
< maxboxes
; i
++) {
357 set_default_box(&boxes
[i
]);
359 for (i
= 0; i
< maxlines
; i
++) {
360 set_default_line(&lines
[i
]);
362 for (i
= 0; i
< maxellipses
; i
++) {
363 set_default_ellipse(&ellip
[i
]);
365 for (i
= 0; i
< maxstr
; i
++) {
366 set_default_string(&pstr
[i
]);
370 void set_default_ticks(tickmarks
* t
, int a
)
391 set_default_string(&t
->label
);
398 t
->label_layout
= PARA
;
399 t
->label_place
= AUTO
;
401 t
->tl_layout
= HORIZONTAL
;
405 t
->tl_format
= DECIMAL
;
407 t
->tl_just
= (a
% 2) ? RIGHT
: CENTER
;
410 t
->tl_starttype
= AUTO
;
411 t
->tl_stoptype
= AUTO
;
414 t
->tl_op
= (a
% 2) ? LEFT
: BOTTOM
;
417 t
->tl_font
= grdefaults
.font
;
418 t
->tl_charsize
= 1.0;
419 t
->tl_linew
= grdefaults
.linew
;
420 t
->tl_color
= grdefaults
.color
;
433 t
->t_drawbarcolor
= grdefaults
.color
;
434 t
->t_drawbarlines
= grdefaults
.lines
;
435 t
->t_drawbarlinew
= grdefaults
.linew
;
437 t
->t_mgridflag
= OFF
;
438 t
->t_color
= grdefaults
.color
;
439 t
->t_lines
= grdefaults
.lines
;
440 t
->t_linew
= grdefaults
.linew
;
441 t
->t_mcolor
= grdefaults
.color
;
442 t
->t_mlines
= grdefaults
.lines
;
443 t
->t_mlinew
= grdefaults
.linew
;
445 for (i
= 0; i
< MAX_TICK_LABELS
; i
++) {
446 t
->t_specloc
[i
] = 0.0;
447 t
->t_speclab
[i
].s
= NULL
;
451 static int default_color
[MAXPLOT
] =
453 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
455 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
459 void setdefaultcolors(int gno
)
462 for (i
= 0; i
< g
[gno
].maxplot
; i
++) {
463 g
[gno
].p
[i
].color
= default_color
[i
% MAXPLOT
];
467 void kill_blockdata(void)
470 if (blockdata
!= NULL
) {
471 for (j
= 0; j
< maxblock
; j
++) {
472 cxfree(blockdata
[j
]);
478 void alloc_blockdata(int ncols
)
481 if (blockdata
!= NULL
) {
484 if (ncols
< MAXPLOT
) {
487 blockdata
= (double **) malloc(ncols
* sizeof(double *));
488 if (blockdata
!= NULL
) {
490 for (j
= 0; j
< maxblock
; j
++) {
494 errmsg("alloc_blockdata(): Error, unable to allocate memory for block data");
498 int init_array(double **a
, int n
)
501 *a
= (double *) realloc(*a
, n
* sizeof(double));
503 *a
= (double *) calloc(n
, sizeof(double));
505 return *a
== NULL
? 1 : 0;
508 int init_scratch_arrays(int n
)
510 if (!init_array(&ax
, n
)) {
511 if (!init_array(&bx
, n
)) {
512 if (!init_array(&cx
, n
)) {
513 if (!init_array(&dx
, n
)) {