94 c_plenvi( xmin, xmax, ymin, ymax, just, axis, 1 );
108 c_plenvi( xmin, xmax, ymin, ymax, just, axis, 0 );
118 PLFLT spxmin, spxmax, spymin, spymax;
119 PLFLT vpxmin, vpxmax, vpymin, vpymax;
121 if ( plsc->level < 1 )
123 plabort(
"plenv: Please call plinit first" );
128 plabort(
"plenv: Invalid xmin and xmax arguments" );
133 plabort(
"plenv: Invalid ymin and ymax arguments" );
136 if ( just < -1 || just > 2 )
138 plabort(
"plenv: Invalid just option" );
142 if ( plsc->nsubx * plsc->nsuby == 1 )
152 else if ( just == 1 )
154 lb = 8.0 * plsc->chrht;
155 rb = 5.0 * plsc->chrht;
156 tb = 5.0 * plsc->chrht;
157 bb = 5.0 * plsc->chrht;
158 dx =
ABS( xmax - xmin );
159 dy =
ABS( ymax - ymin );
160 plgspa( &spxmin, &spxmax, &spymin, &spymax );
161 xsize = spxmax - spxmin;
162 ysize = spymax - spymin;
163 xscale = dx / ( xsize - lb - rb );
164 yscale = dy / ( ysize - tb - bb );
165 scale =
MAX( xscale, yscale );
166 vpxmin =
MAX( lb, 0.5 * ( xsize - dx / scale ) );
167 vpxmax = vpxmin + ( dx / scale );
168 vpymin =
MAX( bb, 0.5 * ( ysize - dy / scale ) );
169 vpymax = vpymin + ( dy / scale );
170 plsvpa( vpxmin, vpxmax, vpymin, vpymax );
172 else if ( just == 2 )
174 lb = 8.0 * plsc->chrht;
175 rb = 5.0 * plsc->chrht;
176 tb = 5.0 * plsc->chrht;
177 bb = 5.0 * plsc->chrht;
178 plgspa( &spxmin, &spxmax, &spymin, &spymax );
179 xsize = spxmax - spxmin;
180 ysize = spymax - spymin;
181 size =
MIN( xsize - lb - rb, ysize - tb - bb );
182 dx = ( xsize - size - lb - rb ) / 2;
184 vpxmax = vpxmin + size;
185 dy = ( ysize - size - bb - tb ) / 2;
187 vpymax = vpymin + size;
188 plsvpa( vpxmin, vpxmax, vpymin, vpymax );
191 plwind( xmin, xmax, ymin, ymax );
297 plwarn(
"plenv: Invalid axis argument" );
312 PLFLT lb, rb, tb, bb;
314 if ( plsc->level < 1 )
316 plabort(
"plvsta: Please call plinit first" );
324 lb = 8.0 * plsc->chrht;
325 rb = 5.0 * plsc->chrht;
326 tb = 5.0 * plsc->chrht;
327 bb = 5.0 * plsc->chrht;
334 plvpor( xmin, xmax, ymin, ymax );
346 if ( plsc->level < 1 )
348 plabort(
"plvpor: Please call plinit first" );
351 if ( ( xmin >= xmax ) || ( ymin >= ymax ) )
353 plabort(
"plvpor: Invalid limits" );
356 if ( ( plsc->cursub <= 0 ) || ( plsc->cursub > ( plsc->nsubx * plsc->nsuby ) ) )
358 plabort(
"plvpor: Please call pladv or plenv to go to a subpage" );
362 plsc->vpdxmi = plsc->spdxmi + ( plsc->spdxma - plsc->spdxmi ) * xmin;
363 plsc->vpdxma = plsc->spdxmi + ( plsc->spdxma - plsc->spdxmi ) * xmax;
364 plsc->vpdymi = plsc->spdymi + ( plsc->spdyma - plsc->spdymi ) * ymin;
365 plsc->vpdyma = plsc->spdymi + ( plsc->spdyma - plsc->spdymi ) * ymax;
367 plsc->vppxmi =
plP_dcpcx( plsc->vpdxmi );
368 plsc->vppxma =
plP_dcpcx( plsc->vpdxma );
369 plsc->vppymi =
plP_dcpcy( plsc->vpdymi );
370 plsc->vppyma =
plP_dcpcy( plsc->vpdyma );
372 plsc->clpxmi =
MAX( plsc->vppxmi, plsc->phyxmi );
373 plsc->clpxma =
MIN( plsc->vppxma, plsc->phyxma );
374 plsc->clpymi =
MAX( plsc->vppymi, plsc->phyymi );
375 plsc->clpyma =
MIN( plsc->vppyma, plsc->phyyma );
390 PLFLT spxmin, spxmax, spymin, spymax;
391 PLFLT vpxmin, vpxmax, vpymin, vpymax;
392 PLFLT xsize, ysize, nxsize, nysize;
393 PLFLT xoffset, yoffset;
395 if ( plsc->level < 1 )
397 plabort(
"plvpas: Please call plinit first" );
400 if ( ( xmin >= xmax ) || ( ymin >= ymax ) )
402 plabort(
"plvpas: Invalid limits" );
412 plgspa( &spxmin, &spxmax, &spymin, &spymax );
414 xsize = spxmax - spxmin;
415 ysize = spymax - spymin;
417 xoffset = xsize *
xmin;
418 yoffset = ysize *
ymin;
420 spxmax = spxmin + xsize *
xmax;
421 spxmin = spxmin + xsize *
xmin;
422 spymax = spymin + ysize *
ymax;
423 spymin = spymin + ysize *
ymin;
426 xsize = spxmax - spxmin;
427 ysize = spymax - spymin;
429 if ( aspect * xsize > ysize )
431 nxsize = ysize / aspect;
437 nysize = xsize * aspect;
442 vpxmin = 0.5 * ( xsize - nxsize ) + xoffset;
443 vpxmax = vpxmin + nxsize;
444 vpymin = 0.5 * ( ysize - nysize ) + yoffset;
445 vpymax = vpymin + nysize;
447 plsvpa( vpxmin, vpxmax, vpymin, vpymax );
460 PLFLT spxmin, spxmax, spymin, spymax;
461 PLFLT vpxmin, vpxmax, vpymin, vpymax;
462 PLFLT xsize, ysize, nxsize, nysize;
463 PLFLT lb, rb, tb, bb;
465 if ( plsc->level < 1 )
467 plabort(
"plvasp: Please call plinit first" );
471 lb = 8.0 * plsc->chrht;
472 rb = 5.0 * plsc->chrht;
473 tb = 5.0 * plsc->chrht;
474 bb = 5.0 * plsc->chrht;
476 plgspa( &spxmin, &spxmax, &spymin, &spymax );
477 xsize = spxmax - spxmin;
478 ysize = spymax - spymin;
481 if ( aspect * xsize > ysize )
483 nxsize = ysize / aspect;
489 nysize = xsize * aspect;
494 vpxmin = .5 * ( xsize - nxsize ) + lb;
495 vpxmax = vpxmin + nxsize;
496 vpymin = .5 * ( ysize - nysize ) + bb;
497 vpymax = vpymin + nysize;
499 plsvpa( vpxmin, vpxmax, vpymin, vpymax );
514 if ( plsc->level < 1 )
516 plabort(
"plsvpa: Please call plinit first" );
519 if ( ( xmin >= xmax ) || ( ymin >= ymax ) )
521 plabort(
"plsvpa: Invalid limits" );
524 if ( ( plsc->cursub <= 0 ) || ( plsc->cursub > ( plsc->nsubx * plsc->nsuby ) ) )
526 plabort(
"plsvpa: Please call pladv or plenv to go to a subpage" );
538 plsc->vppxmi =
plP_dcpcx( plsc->vpdxmi );
539 plsc->vppxma =
plP_dcpcx( plsc->vpdxma );
540 plsc->vppymi =
plP_dcpcy( plsc->vpdymi );
541 plsc->vppyma =
plP_dcpcy( plsc->vpdyma );
543 plsc->clpxmi =
plP_dcpcx( plsc->vpdxmi );
544 plsc->clpxma =
plP_dcpcx( plsc->vpdxma );
545 plsc->clpymi =
plP_dcpcy( plsc->vpdymi );
546 plsc->clpyma =
plP_dcpcy( plsc->vpdyma );
subroutine plbox(xopt, xtick, nxsub, yopt, ytick, nysub)
void c_plsvpa(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax)
void c_plvasp(PLFLT aspect)
void c_plenv0(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLINT just, PLINT axis)
void c_plvpas(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT aspect)
void c_plvpor(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax)
void plabort(const char *errormsg)
void plwarn(const char *errormsg)
static void c_plenvi(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLINT just, PLINT axis, PLINT old)
dx
if { $zoomopts($this,1) == 0 } then {
void c_plenv(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLINT just, PLINT axis)