PLplot  5.10.0
plvpor.c
Go to the documentation of this file.
00001 //      Functions dealing with viewports.
00002 //
00003 // Copyright (C) 2004  Joao Cardoso
00004 //
00005 // This file is part of PLplot.
00006 //
00007 // PLplot is free software; you can redistribute it and/or modify
00008 // it under the terms of the GNU Library General Public License as published
00009 // by the Free Software Foundation; either version 2 of the License, or
00010 // (at your option) any later version.
00011 //
00012 // PLplot is distributed in the hope that it will be useful,
00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 // GNU Library General Public License for more details.
00016 //
00017 // You should have received a copy of the GNU Library General Public License
00018 // along with PLplot; if not, write to the Free Software
00019 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
00020 //
00021 
00022 #include "plplotP.h"
00023 
00024 static void
00025 c_plenvi( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax,
00026           PLINT just, PLINT axis, PLINT old );
00027 
00028 //--------------------------------------------------------------------------
00029 // void plenv()
00030 //
00031 // Simple interface for defining viewport and window.
00032 //
00033 // The "just" parameter control how the axes will be scaled:
00034 //
00035 //       just=-1 : The scales will not be set, the user must set up the scale
00036 //                   before calling plenv() using plsvpa(), plvasp() or other;
00037 //       just= 0 : The scales will be set up to optimize plot area;
00038 //       just= 1 : The scales will be the same;
00039 //       just= 2 : The axes will be equal, the plot box will be square.
00040 //
00041 // The "axis" parameter is interpreted as follows:
00042 //
00043 //      axis=-2 : draw no box, no tick marks, no numeric tick labels, no axes.
00044 //      axis=-1 : draw box only.
00045 //      axis= 0 : Draw box, ticks, and numeric tick labels.
00046 //      axis= 1 : Also draw coordinate axes at X=0, and Y=0.
00047 //      axis= 2 : Also draw a grid at major tick positions in both coordinates.
00048 //      axis= 3 : Same as 2, but the grid will be also at the minor ticks.
00049 //      axis=10 : Same as 0 except Logarithmic X tick marks. (The X data have
00050 //      to be converted to logarithms separately.)
00051 //      axis=11 : Same as 1 except Logarithmic X tick marks. (The X data have
00052 //      to be converted to logarithms separately.)
00053 //      axis=12 : Same as 2 except Logarithmic X tick marks. (The X data have
00054 //      to be converted to logarithms separately.)
00055 //      axis=13 : Same as 12, but the grid will be also at the minor ticks.
00056 //      axis=20 : Same as 0 except Logarithmic Y tick marks. (The Y data have
00057 //      to be converted to logarithms separately.)
00058 //      axis=21 : Same as 1 except Logarithmic Y tick marks. (The Y data have
00059 //      to be converted to logarithms separately.)
00060 //      axis=22 : Same as 2 except Logarithmic Y tick marks. (The Y data have
00061 //      to be converted to logarithms separately.)
00062 //      axis=23 : Same as 22, but the grid will be also at the minor ticks.
00063 //      axis=30 : Same as 0 except Logarithmic X,Y tick marks. (The X,Y data have
00064 //      to be converted to logarithms separately.)
00065 //      axis=31 : Same as 1 except Logarithmic X,Y tick marks. (The X,Y data have
00066 //      to be converted to logarithms separately.)
00067 //      axis=32 : Same as 2 except Logarithmic X,Y tick marks. (The X,Y data have
00068 //      to be converted to logarithms separately.)
00069 //      axis=33 : Same as 32, but the grid will be also at the minor ticks.
00070 //      axis=40 : Same as 0 except date / time X tick marks.
00071 //      axis=41 : Same as 1 except date / time X tick marks.
00072 //      axis=42 : Same as 2 except date / time X tick marks.
00073 //      axis=43 : Same as 42, but the grid will be also at the minor ticks.
00074 //      axis=50 : Same as 0 except date / time Y tick marks.
00075 //      axis=51 : Same as 1 except date / time Y tick marks.
00076 //      axis=52 : Same as 2 except date / time Y tick marks.
00077 //      axis=53 : Same as 52, but the grid will be also at the minor ticks.
00078 //      axis=60 : Same as 0 except date / time X,Y tick marks.
00079 //      axis=61 : Same as 1 except date / time X,Y tick marks.
00080 //      axis=62 : Same as 2 except date / time X,Y tick marks.
00081 //      axis=63 : Same as 62, but the grid will be also at the minor ticks.
00082 //      axis=70 : Same as 0 except custom X,Y labels.
00083 //      axis=71 : Same as 1 except custom X,Y labels.
00084 //      axis=72 : Same as 2 except custom X,Y labels.
00085 //      axis=73 : Same as 72, but the grid will be also at the minor ticks.
00086 //--------------------------------------------------------------------------
00087 
00088 void
00089 c_plenv( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax,
00090          PLINT just, PLINT axis )
00091 {
00092     c_plenvi( xmin, xmax, ymin, ymax, just, axis, 1 );
00093 }
00094 
00095 //--------------------------------------------------------------------------
00096 // void plenv0()
00097 //
00098 // same as plenv() above, but if in multiplot mode does not advance the subpage,
00099 // instead clears it.
00100 //--------------------------------------------------------------------------
00101 
00102 void
00103 c_plenv0( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax,
00104           PLINT just, PLINT axis )
00105 {
00106     c_plenvi( xmin, xmax, ymin, ymax, just, axis, 0 );
00107 }
00108 
00109 
00110 static void
00111 c_plenvi( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax,
00112           PLINT just, PLINT axis, PLINT old )
00113 {
00114     PLFLT lb, rb, tb, bb, dx, dy;
00115     PLFLT xsize, ysize, size, xscale, yscale, scale;
00116     PLFLT spxmin, spxmax, spymin, spymax;
00117     PLFLT vpxmin, vpxmax, vpymin, vpymax;
00118 
00119     if ( plsc->level < 1 )
00120     {
00121         plabort( "plenv: Please call plinit first" );
00122         return;
00123     }
00124     if ( xmin == xmax )
00125     {
00126         plabort( "plenv: Invalid xmin and xmax arguments" );
00127         return;
00128     }
00129     if ( ymin == ymax )
00130     {
00131         plabort( "plenv: Invalid ymin and ymax arguments" );
00132         return;
00133     }
00134     if ( just < -1 || just > 2 )
00135     {
00136         plabort( "plenv: Invalid just option" );
00137         return;
00138     }
00139 
00140     if ( plsc->nsubx * plsc->nsuby == 1 ) // not multiplot mode
00141         old = 1;
00142 
00143     if ( old == 1 )
00144         pladv( 0 );
00145     else
00146         plclear();
00147 
00148     if ( just == 0 )
00149         plvsta();
00150     else if ( just == 1 )
00151     {
00152         lb = 8.0 * plsc->chrht;
00153         rb = 5.0 * plsc->chrht;
00154         tb = 5.0 * plsc->chrht;
00155         bb = 5.0 * plsc->chrht;
00156         dx = ABS( xmax - xmin );
00157         dy = ABS( ymax - ymin );
00158         plgspa( &spxmin, &spxmax, &spymin, &spymax );
00159         xsize  = spxmax - spxmin;
00160         ysize  = spymax - spymin;
00161         xscale = dx / ( xsize - lb - rb );
00162         yscale = dy / ( ysize - tb - bb );
00163         scale  = MAX( xscale, yscale );
00164         vpxmin = MAX( lb, 0.5 * ( xsize - dx / scale ) );
00165         vpxmax = vpxmin + ( dx / scale );
00166         vpymin = MAX( bb, 0.5 * ( ysize - dy / scale ) );
00167         vpymax = vpymin + ( dy / scale );
00168         plsvpa( vpxmin, vpxmax, vpymin, vpymax );
00169     }
00170     else if ( just == 2 )
00171     {
00172         lb = 8.0 * plsc->chrht;
00173         rb = 5.0 * plsc->chrht;
00174         tb = 5.0 * plsc->chrht;
00175         bb = 5.0 * plsc->chrht;
00176         plgspa( &spxmin, &spxmax, &spymin, &spymax );
00177         xsize  = spxmax - spxmin;
00178         ysize  = spymax - spymin;
00179         size   = MIN( xsize - lb - rb, ysize - tb - bb );
00180         dx     = ( xsize - size - lb - rb ) / 2;
00181         vpxmin = lb + dx;
00182         vpxmax = vpxmin + size;
00183         dy     = ( ysize - size - bb - tb ) / 2;
00184         vpymin = bb + dy;
00185         vpymax = vpymin + size;
00186         plsvpa( vpxmin, vpxmax, vpymin, vpymax );
00187     }
00188 
00189     plwind( xmin, xmax, ymin, ymax );
00190 
00191     switch ( axis )
00192     {
00193     case -2:
00194         break;
00195     case -1:
00196         plbox( "bc", (PLFLT) 0.0, 0, "bc", (PLFLT) 0.0, 0 );
00197         break;
00198     case 0:
00199         plbox( "bcnst", (PLFLT) 0.0, 0, "bcnstv", (PLFLT) 0.0, 0 );
00200         break;
00201     case 1:
00202         plbox( "abcnst", (PLFLT) 0.0, 0, "abcnstv", (PLFLT) 0.0, 0 );
00203         break;
00204     case 2:
00205         plbox( "abcgnst", (PLFLT) 0.0, 0, "abcgnstv", (PLFLT) 0.0, 0 );
00206         break;
00207     case 3:
00208         plbox( "abcgnsth", (PLFLT) 0.0, 0, "abcgnstvh", (PLFLT) 0.0, 0 );
00209         break;
00210     case 10:
00211         plbox( "bclnst", (PLFLT) 0.0, 0, "bcnstv", (PLFLT) 0.0, 0 );
00212         break;
00213     case 11:
00214         plbox( "abclnst", (PLFLT) 0.0, 0, "abcnstv", (PLFLT) 0.0, 0 );
00215         break;
00216     case 12:
00217         plbox( "abcglnst", (PLFLT) 0.0, 0, "abcgnstv", (PLFLT) 0.0, 0 );
00218         break;
00219     case 13:
00220         plbox( "abcglnsth", (PLFLT) 0.0, 0, "abcgnstvh", (PLFLT) 0.0, 0 );
00221         break;
00222     case 20:
00223         plbox( "bcnst", (PLFLT) 0.0, 0, "bclnstv", (PLFLT) 0.0, 0 );
00224         break;
00225     case 21:
00226         plbox( "abcnst", (PLFLT) 0.0, 0, "abclnstv", (PLFLT) 0.0, 0 );
00227         break;
00228     case 22:
00229         plbox( "abcgnst", (PLFLT) 0.0, 0, "abcglnstv", (PLFLT) 0.0, 0 );
00230         break;
00231     case 23:
00232         plbox( "abcgnsth", (PLFLT) 0.0, 0, "abcglnstvh", (PLFLT) 0.0, 0 );
00233         break;
00234     case 30:
00235         plbox( "bclnst", (PLFLT) 0.0, 0, "bclnstv", (PLFLT) 0.0, 0 );
00236         break;
00237     case 31:
00238         plbox( "abclnst", (PLFLT) 0.0, 0, "abclnstv", (PLFLT) 0.0, 0 );
00239         break;
00240     case 32:
00241         plbox( "abcglnst", (PLFLT) 0.0, 0, "abcglnstv", (PLFLT) 0.0, 0 );
00242         break;
00243     case 33:
00244         plbox( "abcglnsth", (PLFLT) 0.0, 0, "abcglnstvh", (PLFLT) 0.0, 0 );
00245         break;
00246     case 40:
00247         plbox( "bcdnst", (PLFLT) 0.0, 0, "bcnstv", (PLFLT) 0.0, 0 );
00248         break;
00249     case 41:
00250         plbox( "abcdnst", (PLFLT) 0.0, 0, "abcnstv", (PLFLT) 0.0, 0 );
00251         break;
00252     case 42:
00253         plbox( "abcgdnst", (PLFLT) 0.0, 0, "abcgnstv", (PLFLT) 0.0, 0 );
00254         break;
00255     case 43:
00256         plbox( "abcgdnsth", (PLFLT) 0.0, 0, "abcgnstvh", (PLFLT) 0.0, 0 );
00257         break;
00258     case 50:
00259         plbox( "bcnst", (PLFLT) 0.0, 0, "bcdnstv", (PLFLT) 0.0, 0 );
00260         break;
00261     case 51:
00262         plbox( "abcnst", (PLFLT) 0.0, 0, "abcdnstv", (PLFLT) 0.0, 0 );
00263         break;
00264     case 52:
00265         plbox( "abcgnst", (PLFLT) 0.0, 0, "abcgdnstv", (PLFLT) 0.0, 0 );
00266         break;
00267     case 53:
00268         plbox( "abcgnsth", (PLFLT) 0.0, 0, "abcgdnstvh", (PLFLT) 0.0, 0 );
00269         break;
00270     case 60:
00271         plbox( "bcdnst", (PLFLT) 0.0, 0, "bcdnstv", (PLFLT) 0.0, 0 );
00272         break;
00273     case 61:
00274         plbox( "abcdnst", (PLFLT) 0.0, 0, "abcdnstv", (PLFLT) 0.0, 0 );
00275         break;
00276     case 62:
00277         plbox( "abcgdnst", (PLFLT) 0.0, 0, "abcgdnstv", (PLFLT) 0.0, 0 );
00278         break;
00279     case 63:
00280         plbox( "abcgdnsth", (PLFLT) 0.0, 0, "abcgdnstvh", (PLFLT) 0.0, 0 );
00281         break;
00282     case 70:
00283         plbox( "bcnost", (PLFLT) 0.0, 0, "bcnostv", (PLFLT) 0.0, 0 );
00284         break;
00285     case 71:
00286         plbox( "abcnost", (PLFLT) 0.0, 0, "abcnostv", (PLFLT) 0.0, 0 );
00287         break;
00288     case 72:
00289         plbox( "abcgnost", (PLFLT) 0.0, 0, "abcgnostv", (PLFLT) 0.0, 0 );
00290         break;
00291     case 73:
00292         plbox( "abcgnosth", (PLFLT) 0.0, 0, "abcgnostvh", (PLFLT) 0.0, 0 );
00293         break;
00294     default:
00295         plwarn( "plenv: Invalid axis argument" );
00296     }
00297 }
00298 
00299 //--------------------------------------------------------------------------
00300 // void plvsta()
00301 //
00302 // Defines a "standard" viewport with seven character heights for
00303 // the left margin and four character heights everywhere else.
00304 //--------------------------------------------------------------------------
00305 
00306 void
00307 c_plvsta( void )
00308 {
00309     PLFLT xmin, xmax, ymin, ymax;
00310     PLFLT lb, rb, tb, bb;
00311 
00312     if ( plsc->level < 1 )
00313     {
00314         plabort( "plvsta: Please call plinit first" );
00315         return;
00316     }
00317 
00318 //  Find out position of subpage boundaries in millimetres, reduce by
00319 //  the desired border, and convert back into normalized subpage
00320 //  coordinates
00321 
00322     lb = 8.0 * plsc->chrht;
00323     rb = 5.0 * plsc->chrht;
00324     tb = 5.0 * plsc->chrht;
00325     bb = 5.0 * plsc->chrht;
00326 
00327     xmin = plP_dcscx( plP_mmdcx( (PLFLT) ( plP_dcmmx( plsc->spdxmi ) + lb ) ) );
00328     xmax = plP_dcscx( plP_mmdcx( (PLFLT) ( plP_dcmmx( plsc->spdxma ) - rb ) ) );
00329     ymin = plP_dcscy( plP_mmdcy( (PLFLT) ( plP_dcmmy( plsc->spdymi ) + tb ) ) );
00330     ymax = plP_dcscy( plP_mmdcy( (PLFLT) ( plP_dcmmy( plsc->spdyma ) - bb ) ) );
00331 
00332     plvpor( xmin, xmax, ymin, ymax );
00333 }
00334 
00335 //--------------------------------------------------------------------------
00336 // void plvpor()
00337 //
00338 // Creates a viewport with the specified normalized subpage coordinates.
00339 //--------------------------------------------------------------------------
00340 
00341 void
00342 c_plvpor( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax )
00343 {
00344     if ( plsc->level < 1 )
00345     {
00346         plabort( "plvpor: Please call plinit first" );
00347         return;
00348     }
00349     if ( ( xmin >= xmax ) || ( ymin >= ymax ) )
00350     {
00351         plabort( "plvpor: Invalid limits" );
00352         return;
00353     }
00354     if ( ( plsc->cursub <= 0 ) || ( plsc->cursub > ( plsc->nsubx * plsc->nsuby ) ) )
00355     {
00356         plabort( "plvpor: Please call pladv or plenv to go to a subpage" );
00357         return;
00358     }
00359 
00360     plsc->vpdxmi = plsc->spdxmi + ( plsc->spdxma - plsc->spdxmi ) * xmin;
00361     plsc->vpdxma = plsc->spdxmi + ( plsc->spdxma - plsc->spdxmi ) * xmax;
00362     plsc->vpdymi = plsc->spdymi + ( plsc->spdyma - plsc->spdymi ) * ymin;
00363     plsc->vpdyma = plsc->spdymi + ( plsc->spdyma - plsc->spdymi ) * ymax;
00364 
00365     plsc->vppxmi = plP_dcpcx( plsc->vpdxmi );
00366     plsc->vppxma = plP_dcpcx( plsc->vpdxma );
00367     plsc->vppymi = plP_dcpcy( plsc->vpdymi );
00368     plsc->vppyma = plP_dcpcy( plsc->vpdyma );
00369 
00370     plsc->clpxmi = MAX( plsc->vppxmi, plsc->phyxmi );
00371     plsc->clpxma = MIN( plsc->vppxma, plsc->phyxma );
00372     plsc->clpymi = MAX( plsc->vppymi, plsc->phyymi );
00373     plsc->clpyma = MIN( plsc->vppyma, plsc->phyyma );
00374 
00375     plsc->level = 2;
00376 }
00377 
00378 //--------------------------------------------------------------------------
00379 // void plvpas()
00380 //
00381 // Creates the largest viewport of the specified aspect ratio that fits
00382 // within the specified normalized subpage coordinates.
00383 //--------------------------------------------------------------------------
00384 
00385 void
00386 c_plvpas( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT aspect )
00387 {
00388     PLFLT spxmin, spxmax, spymin, spymax;
00389     PLFLT vpxmin, vpxmax, vpymin, vpymax;
00390     PLFLT xsize, ysize, nxsize, nysize;
00391     PLFLT xoffset, yoffset;
00392 
00393     if ( plsc->level < 1 )
00394     {
00395         plabort( "plvpas: Please call plinit first" );
00396         return;
00397     }
00398     if ( ( xmin >= xmax ) || ( ymin >= ymax ) )
00399     {
00400         plabort( "plvpas: Invalid limits" );
00401         return;
00402     }
00403 
00404     if ( aspect <= 0.0 )
00405     {
00406         c_plvpor( xmin, xmax, ymin, ymax );
00407         return;
00408     }
00409 
00410     plgspa( &spxmin, &spxmax, &spymin, &spymax );
00411 
00412     xsize = spxmax - spxmin;
00413     ysize = spymax - spymin;
00414 
00415     xoffset = xsize * xmin;
00416     yoffset = ysize * ymin;
00417 
00418     spxmax = spxmin + xsize * xmax;
00419     spxmin = spxmin + xsize * xmin;
00420     spymax = spymin + ysize * ymax;
00421     spymin = spymin + ysize * ymin;
00422 
00423     // Adjust size for the requested edging
00424     xsize = spxmax - spxmin;
00425     ysize = spymax - spymin;
00426 
00427     if ( aspect * xsize > ysize )
00428     {
00429         nxsize = ysize / aspect;
00430         nysize = ysize;
00431     }
00432     else
00433     {
00434         nxsize = xsize;
00435         nysize = xsize * aspect;
00436     }
00437 
00438 // center plot within page
00439 
00440     vpxmin = 0.5 * ( xsize - nxsize ) + xoffset;
00441     vpxmax = vpxmin + nxsize;
00442     vpymin = 0.5 * ( ysize - nysize ) + yoffset;
00443     vpymax = vpymin + nysize;
00444 
00445     plsvpa( vpxmin, vpxmax, vpymin, vpymax );
00446 }
00447 
00448 //--------------------------------------------------------------------------
00449 // void plvasp()
00450 //
00451 // Sets the edges of the viewport with the given aspect ratio, leaving
00452 // room for labels.
00453 //--------------------------------------------------------------------------
00454 
00455 void
00456 c_plvasp( PLFLT aspect )
00457 {
00458     PLFLT spxmin, spxmax, spymin, spymax;
00459     PLFLT vpxmin, vpxmax, vpymin, vpymax;
00460     PLFLT xsize, ysize, nxsize, nysize;
00461     PLFLT lb, rb, tb, bb;
00462 
00463     if ( plsc->level < 1 )
00464     {
00465         plabort( "plvasp: Please call plinit first" );
00466         return;
00467     }
00468 
00469     lb = 8.0 * plsc->chrht;
00470     rb = 5.0 * plsc->chrht;
00471     tb = 5.0 * plsc->chrht;
00472     bb = 5.0 * plsc->chrht;
00473 
00474     plgspa( &spxmin, &spxmax, &spymin, &spymax );
00475     xsize  = spxmax - spxmin;
00476     ysize  = spymax - spymin;
00477     xsize -= lb + rb;           // adjust for labels
00478     ysize -= bb + tb;
00479     if ( aspect * xsize > ysize )
00480     {
00481         nxsize = ysize / aspect;
00482         nysize = ysize;
00483     }
00484     else
00485     {
00486         nxsize = xsize;
00487         nysize = xsize * aspect;
00488     }
00489 
00490 // center plot within page
00491 
00492     vpxmin = .5 * ( xsize - nxsize ) + lb;
00493     vpxmax = vpxmin + nxsize;
00494     vpymin = .5 * ( ysize - nysize ) + bb;
00495     vpymax = vpymin + nysize;
00496 
00497     plsvpa( vpxmin, vpxmax, vpymin, vpymax );
00498 }
00499 
00500 //--------------------------------------------------------------------------
00501 // void plsvpa()
00502 //
00503 // Sets the edges of the viewport to the specified absolute coordinates
00504 // (mm), measured with respect to the current subpage boundaries.
00505 //--------------------------------------------------------------------------
00506 
00507 void
00508 c_plsvpa( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax )
00509 {
00510     PLFLT sxmin, symin;
00511 
00512     if ( plsc->level < 1 )
00513     {
00514         plabort( "plsvpa: Please call plinit first" );
00515         return;
00516     }
00517     if ( ( xmin >= xmax ) || ( ymin >= ymax ) )
00518     {
00519         plabort( "plsvpa: Invalid limits" );
00520         return;
00521     }
00522     if ( ( plsc->cursub <= 0 ) || ( plsc->cursub > ( plsc->nsubx * plsc->nsuby ) ) )
00523     {
00524         plabort( "plsvpa: Please call pladv or plenv to go to a subpage" );
00525         return;
00526     }
00527 
00528     sxmin = plP_dcmmx( plsc->spdxmi );
00529     symin = plP_dcmmy( plsc->spdymi );
00530 
00531     plsc->vpdxmi = plP_mmdcx( (PLFLT) ( sxmin + xmin ) );
00532     plsc->vpdxma = plP_mmdcx( (PLFLT) ( sxmin + xmax ) );
00533     plsc->vpdymi = plP_mmdcy( (PLFLT) ( symin + ymin ) );
00534     plsc->vpdyma = plP_mmdcy( (PLFLT) ( symin + ymax ) );
00535 
00536     plsc->vppxmi = plP_dcpcx( plsc->vpdxmi );
00537     plsc->vppxma = plP_dcpcx( plsc->vpdxma );
00538     plsc->vppymi = plP_dcpcy( plsc->vpdymi );
00539     plsc->vppyma = plP_dcpcy( plsc->vpdyma );
00540 
00541     plsc->clpxmi = plP_dcpcx( plsc->vpdxmi );
00542     plsc->clpxma = plP_dcpcx( plsc->vpdxma );
00543     plsc->clpymi = plP_dcpcy( plsc->vpdymi );
00544     plsc->clpyma = plP_dcpcy( plsc->vpdyma );
00545 
00546     plsc->level = 2;
00547 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines