92 c_plenvi( xmin, xmax, ymin, ymax, just, axis, 1 );
106 c_plenvi( xmin, xmax, ymin, ymax, just, axis, 0 );
114 PLFLT lb, rb, tb, bb, dx, dy;
115 PLFLT xsize, ysize, size, xscale, yscale, scale;
116 PLFLT spxmin, spxmax, spymin, spymax;
117 PLFLT vpxmin, vpxmax, vpymin, vpymax;
119 if ( plsc->level < 1 )
121 plabort(
"plenv: Please call plinit first" );
126 plabort(
"plenv: Invalid xmin and xmax arguments" );
131 plabort(
"plenv: Invalid ymin and ymax arguments" );
134 if ( just < -1 || just > 2 )
136 plabort(
"plenv: Invalid just option" );
140 if ( plsc->nsubx * plsc->nsuby == 1 )
150 else if ( just == 1 )
152 lb = 8.0 * plsc->chrht;
153 rb = 5.0 * plsc->chrht;
154 tb = 5.0 * plsc->chrht;
155 bb = 5.0 * plsc->chrht;
156 dx =
ABS( xmax - xmin );
157 dy =
ABS( ymax - ymin );
158 plgspa( &spxmin, &spxmax, &spymin, &spymax );
159 xsize = spxmax - spxmin;
160 ysize = spymax - spymin;
161 xscale = dx / ( xsize - lb - rb );
162 yscale = dy / ( ysize - tb - bb );
163 scale =
MAX( xscale, yscale );
164 vpxmin =
MAX( lb, 0.5 * ( xsize - dx / scale ) );
165 vpxmax = vpxmin + ( dx / scale );
166 vpymin =
MAX( bb, 0.5 * ( ysize - dy / scale ) );
167 vpymax = vpymin + ( dy / scale );
168 plsvpa( vpxmin, vpxmax, vpymin, vpymax );
170 else if ( just == 2 )
172 lb = 8.0 * plsc->chrht;
173 rb = 5.0 * plsc->chrht;
174 tb = 5.0 * plsc->chrht;
175 bb = 5.0 * plsc->chrht;
176 plgspa( &spxmin, &spxmax, &spymin, &spymax );
177 xsize = spxmax - spxmin;
178 ysize = spymax - spymin;
179 size =
MIN( xsize - lb - rb, ysize - tb - bb );
180 dx = ( xsize - size - lb - rb ) / 2;
182 vpxmax = vpxmin + size;
183 dy = ( ysize - size - bb - tb ) / 2;
185 vpymax = vpymin + size;
186 plsvpa( vpxmin, vpxmax, vpymin, vpymax );
189 plwind( xmin, xmax, ymin, ymax );
295 plwarn(
"plenv: Invalid axis argument" );
309 PLFLT xmin, xmax, ymin, ymax;
310 PLFLT lb, rb, tb, bb;
312 if ( plsc->level < 1 )
314 plabort(
"plvsta: Please call plinit first" );
322 lb = 8.0 * plsc->chrht;
323 rb = 5.0 * plsc->chrht;
324 tb = 5.0 * plsc->chrht;
325 bb = 5.0 * plsc->chrht;
332 plvpor( xmin, xmax, ymin, ymax );
344 if ( plsc->level < 1 )
346 plabort(
"plvpor: Please call plinit first" );
349 if ( ( xmin >= xmax ) || ( ymin >= ymax ) )
351 plabort(
"plvpor: Invalid limits" );
354 if ( ( plsc->cursub <= 0 ) || ( plsc->cursub > ( plsc->nsubx * plsc->nsuby ) ) )
356 plabort(
"plvpor: Please call pladv or plenv to go to a subpage" );
360 plsc->vpdxmi = plsc->spdxmi + ( plsc->spdxma - plsc->spdxmi ) * xmin;
361 plsc->vpdxma = plsc->spdxmi + ( plsc->spdxma - plsc->spdxmi ) * xmax;
362 plsc->vpdymi = plsc->spdymi + ( plsc->spdyma - plsc->spdymi ) * ymin;
363 plsc->vpdyma = plsc->spdymi + ( plsc->spdyma - plsc->spdymi ) * ymax;
365 plsc->vppxmi =
plP_dcpcx( plsc->vpdxmi );
366 plsc->vppxma =
plP_dcpcx( plsc->vpdxma );
367 plsc->vppymi =
plP_dcpcy( plsc->vpdymi );
368 plsc->vppyma =
plP_dcpcy( plsc->vpdyma );
370 plsc->clpxmi =
MAX( plsc->vppxmi, plsc->phyxmi );
371 plsc->clpxma =
MIN( plsc->vppxma, plsc->phyxma );
372 plsc->clpymi =
MAX( plsc->vppymi, plsc->phyymi );
373 plsc->clpyma =
MIN( plsc->vppyma, plsc->phyyma );
388 PLFLT spxmin, spxmax, spymin, spymax;
389 PLFLT vpxmin, vpxmax, vpymin, vpymax;
390 PLFLT xsize, ysize, nxsize, nysize;
391 PLFLT xoffset, yoffset;
393 if ( plsc->level < 1 )
395 plabort(
"plvpas: Please call plinit first" );
398 if ( ( xmin >= xmax ) || ( ymin >= ymax ) )
400 plabort(
"plvpas: Invalid limits" );
410 plgspa( &spxmin, &spxmax, &spymin, &spymax );
412 xsize = spxmax - spxmin;
413 ysize = spymax - spymin;
415 xoffset = xsize * xmin;
416 yoffset = ysize * ymin;
418 spxmax = spxmin + xsize * xmax;
419 spxmin = spxmin + xsize * xmin;
420 spymax = spymin + ysize * ymax;
421 spymin = spymin + ysize * ymin;
424 xsize = spxmax - spxmin;
425 ysize = spymax - spymin;
427 if ( aspect * xsize > ysize )
429 nxsize = ysize / aspect;
435 nysize = xsize * aspect;
440 vpxmin = 0.5 * ( xsize - nxsize ) + xoffset;
441 vpxmax = vpxmin + nxsize;
442 vpymin = 0.5 * ( ysize - nysize ) + yoffset;
443 vpymax = vpymin + nysize;
445 plsvpa( vpxmin, vpxmax, vpymin, vpymax );
458 PLFLT spxmin, spxmax, spymin, spymax;
459 PLFLT vpxmin, vpxmax, vpymin, vpymax;
460 PLFLT xsize, ysize, nxsize, nysize;
461 PLFLT lb, rb, tb, bb;
463 if ( plsc->level < 1 )
465 plabort(
"plvasp: Please call plinit first" );
469 lb = 8.0 * plsc->chrht;
470 rb = 5.0 * plsc->chrht;
471 tb = 5.0 * plsc->chrht;
472 bb = 5.0 * plsc->chrht;
474 plgspa( &spxmin, &spxmax, &spymin, &spymax );
475 xsize = spxmax - spxmin;
476 ysize = spymax - spymin;
479 if ( aspect * xsize > ysize )
481 nxsize = ysize / aspect;
487 nysize = xsize * aspect;
492 vpxmin = .5 * ( xsize - nxsize ) + lb;
493 vpxmax = vpxmin + nxsize;
494 vpymin = .5 * ( ysize - nysize ) + bb;
495 vpymax = vpymin + nysize;
497 plsvpa( vpxmin, vpxmax, vpymin, vpymax );
512 if ( plsc->level < 1 )
514 plabort(
"plsvpa: Please call plinit first" );
517 if ( ( xmin >= xmax ) || ( ymin >= ymax ) )
519 plabort(
"plsvpa: Invalid limits" );
522 if ( ( plsc->cursub <= 0 ) || ( plsc->cursub > ( plsc->nsubx * plsc->nsuby ) ) )
524 plabort(
"plsvpa: Please call pladv or plenv to go to a subpage" );
536 plsc->vppxmi =
plP_dcpcx( plsc->vpdxmi );
537 plsc->vppxma =
plP_dcpcx( plsc->vpdxma );
538 plsc->vppymi =
plP_dcpcy( plsc->vpdymi );
539 plsc->vppyma =
plP_dcpcy( plsc->vpdyma );
541 plsc->clpxmi =
plP_dcpcx( plsc->vpdxmi );
542 plsc->clpxma =
plP_dcpcx( plsc->vpdxma );
543 plsc->clpymi =
plP_dcpcy( plsc->vpdymi );
544 plsc->clpyma =
plP_dcpcy( plsc->vpdyma );
void c_plsvpa(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax)
void plabort(PLCHAR_VECTOR errormsg)
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 plwarn(PLCHAR_VECTOR errormsg)
static void c_plenvi(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLINT just, PLINT axis, PLINT old)
void c_plenv(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLINT just, PLINT axis)