From: <ai...@us...> - 2011-05-12 20:17:46
|
Revision: 11747 http://plplot.svn.sourceforge.net/plplot/?rev=11747&view=rev Author: airwin Date: 2011-05-12 20:17:40 +0000 (Thu, 12 May 2011) Log Message: ----------- If both "b" and "u" options specified for xopt or yopt argument for plaxes (or plbox), "u" option has the priority. If both "c" and "w" options specified for xopt or yopt argument for plaxes (or plbox), "w" option has the priority. Implement "x" option for xopt or yopt argument for plaxes (or plbox). This option has all the side effects of "t" such as numerical tick labelling (if specified), but the actual ticks are not drawn. Modified Paths: -------------- trunk/src/plbox.c Modified: trunk/src/plbox.c =================================================================== --- trunk/src/plbox.c 2011-05-06 20:24:10 UTC (rev 11746) +++ trunk/src/plbox.c 2011-05-12 20:17:40 UTC (rev 11747) @@ -106,9 +106,13 @@ // o: Label text is generated by a user-defined function // t: Draw major tick marks // s: Draw minor tick marks -// u: like b except exclude drawing the edge. -// w: like c except exclude drawing the edge. +// u: like b (including all side effects such as tick marks and numerical +// labels for those) except exclude drawing the edge. +// w: like c (including all side effects such as tick marks and numerical +// labels for those) except exclude drawing the edge. // v: (for Y only) Label vertically +// x: like t (including the side effect of the numerical labels for the major +// ticks) except exclude drawing the major and minor tick marks. // // xtick, ytick are the major tick intervals required, zero for // automatic selection @@ -122,8 +126,8 @@ const char *xopt, PLFLT xtick, PLINT nxsub, const char *yopt, PLFLT ytick, PLINT nysub ) { - PLBOOL lax, lbx, lcx, ldx, lgx, lix, llx, lsx, ltx, lux, lwx; - PLBOOL lay, lBy, lby, lCy, lcy, ldy, lgy, liy, lly, lsy, lty, luy, lwy; + PLBOOL lax, lbx, lcx, ldx, lgx, lix, llx, lsx, ltx, lux, lwx, lxx; + PLBOOL lay, lBy, lby, lCy, lcy, ldy, lgy, liy, lly, lsy, lty, luy, lwy, lxy; PLINT xmajor, xminor, ymajor, yminor; PLINT i, i1x, i2x, i3x, i4x, i1y, i2y, i3y, i4y; PLINT nxsub1, nysub1; @@ -170,6 +174,7 @@ ltx = plP_stsearch( xopt, 't' ); lux = plP_stsearch( xopt, 'u' ); lwx = plP_stsearch( xopt, 'w' ); + lxx = plP_stsearch( xopt, 'x' ); lay = plP_stsearch( yopt, 'a' ); lby = plP_stsearch( yopt, 'b' ); @@ -180,8 +185,9 @@ lly = plP_stsearch( yopt, 'l' ); lsy = plP_stsearch( yopt, 's' ); lty = plP_stsearch( yopt, 't' ); - luy = plP_stsearch( xopt, 'u' ); - lwy = plP_stsearch( xopt, 'w' ); + luy = plP_stsearch( yopt, 'u' ); + lwy = plP_stsearch( yopt, 'w' ); + lxy = plP_stsearch( yopt, 'x' ); // Tick and subtick sizes in device coords @@ -208,10 +214,10 @@ // Calculate tick spacing - if ( ltx || lgx ) + if ( ltx || lgx || lxx ) pldtik( vpwxmi, vpwxma, &xtick1, &nxsub1, ldx ); - if ( lty || lgy ) + if ( lty || lgy || lxy ) pldtik( vpwymi, vpwyma, &ytick1, &nysub1, ldy ); // n.b. large change; xtick1, nxsub1, ytick1, nysub1 always positive. @@ -251,12 +257,12 @@ if ( lbx || lux ) { - if ( lbx ) + if ( !lux ) { plP_movphy( vppxmi, vppymi ); plP_draphy( vppxma, vppymi ); } - if ( ltx ) + if ( ltx && !lxx ) { if ( ldx ) { @@ -301,12 +307,12 @@ if ( lcy || lwy ) { - if ( lcy ) + if ( !lwy ) { plP_movphy( vppxma, vppymi ); plP_draphy( vppxma, vppyma ); } - if ( lty ) + if ( lty && !lxy ) { if ( ldy ) { @@ -351,12 +357,12 @@ if ( lcx || lwx ) { - if ( lcx ) + if ( !lwx ) { plP_movphy( vppxma, vppyma ); plP_draphy( vppxmi, vppyma ); } - if ( ltx ) + if ( ltx && !lxx ) { if ( ldx ) { @@ -401,12 +407,12 @@ if ( lby || luy ) { - if ( lby ) + if ( !luy ) { plP_movphy( vppxmi, vppyma ); plP_draphy( vppxmi, vppymi ); } - if ( lty ) + if ( lty && !lxy ) { if ( ldy ) { @@ -453,7 +459,7 @@ { plP_movphy( vppxmi, (PLINT) yp0 ); plP_draphy( vppxma, (PLINT) yp0 ); - if ( ltx ) + if ( ltx && !lxx ) { tp = xtick1 * floor( vpwxmi / xtick1 ); for (;; ) @@ -494,7 +500,7 @@ { plP_movphy( (PLINT) xp0, vppymi ); plP_draphy( (PLINT) xp0, vppyma ); - if ( lty ) + if ( lty && !lxy ) { tp = ytick1 * floor( vpwymi / ytick1 ); for (;; ) @@ -1330,8 +1336,8 @@ label_box( const char *xopt, PLFLT xtick1, const char *yopt, PLFLT ytick1 ) { static char string[STRING_LEN]; - PLBOOL ldx, lfx, lix, llx, lmx, lnx, ltx, lox; - PLBOOL ldy, lfy, liy, lly, lmy, lny, lty, lvy, loy; + PLBOOL ldx, lfx, lix, llx, lmx, lnx, ltx, lox, lxx; + PLBOOL ldy, lfy, liy, lly, lmy, lny, lty, lvy, loy, lxy; PLFLT vpwxmi, vpwxma, vpwymi, vpwyma; PLFLT vpwxmin, vpwxmax, vpwymin, vpwymax; PLFLT pos, tn, tp, offset, height, just; @@ -1348,6 +1354,7 @@ lnx = plP_stsearch( xopt, 'n' ); ltx = plP_stsearch( xopt, 't' ); lox = plP_stsearch( xopt, 'o' ); + lxx = plP_stsearch( xopt, 'x' ); ldy = plP_stsearch( yopt, 'd' ); lfy = plP_stsearch( yopt, 'f' ); @@ -1358,6 +1365,7 @@ lty = plP_stsearch( yopt, 't' ); lvy = plP_stsearch( yopt, 'v' ); loy = plP_stsearch( yopt, 'o' ); + lxy = plP_stsearch( yopt, 'x' ); plP_xgvpw( &vpwxmin, &vpwxmax, &vpwymin, &vpwymax ); // n.b. large change; vpwxmi always numerically less than vpwxma, and @@ -1369,7 +1377,7 @@ // Write horizontal label(s) - if ( ( lmx || lnx ) && ltx ) + if ( ( lmx || lnx ) && ( ltx || lxx ) ) { PLINT xmode, xprec, xdigmax, xdigits, xscale; @@ -1434,7 +1442,7 @@ // Write vertical label(s) - if ( ( lmy || lny ) && lty ) + if ( ( lmy || lny ) && ( lty || lxy ) ) { PLINT ymode, yprec, ydigmax, ydigits, yscale; @@ -1536,8 +1544,8 @@ label_box_custom( const char *xopt, PLINT n_xticks, const PLFLT *xticks, const char *yopt, PLINT n_yticks, const PLFLT *yticks ) { static char string[STRING_LEN]; - PLBOOL ldx, lfx, lix, llx, lmx, lnx, ltx, lox; - PLBOOL ldy, lfy, liy, lly, lmy, lny, lty, lvy, loy; + PLBOOL ldx, lfx, lix, llx, lmx, lnx, ltx, lox, lxx; + PLBOOL ldy, lfy, liy, lly, lmy, lny, lty, lvy, loy, lxy; PLFLT vpwxmi, vpwxma, vpwymi, vpwyma; PLFLT vpwxmin, vpwxmax, vpwymin, vpwymax; PLFLT pos, tn, offset, height, just; @@ -1573,6 +1581,7 @@ lnx = plP_stsearch( xopt, 'n' ); ltx = plP_stsearch( xopt, 't' ); lox = plP_stsearch( xopt, 'o' ); + lxx = plP_stsearch( xopt, 'x' ); ldy = plP_stsearch( yopt, 'd' ); lfy = plP_stsearch( yopt, 'f' ); @@ -1583,6 +1592,7 @@ lty = plP_stsearch( yopt, 't' ); lvy = plP_stsearch( yopt, 'v' ); loy = plP_stsearch( yopt, 'o' ); + lxy = plP_stsearch( yopt, 'x' ); plP_xgvpw( &vpwxmin, &vpwxmax, &vpwymin, &vpwymax ); // n.b. large change; vpwxmi always numerically less than vpwxma, and @@ -1594,7 +1604,7 @@ // Write horizontal label(s) - if ( ( lmx || lnx ) && ltx ) + if ( ( lmx || lnx ) && ( ltx || lxx ) ) { PLINT xmode, xprec, xscale; PLFLT x_spacing, x_spacing_tmp; @@ -1638,8 +1648,11 @@ plmtex( "b", height, pos, 0.5, string ); if ( lmx ) plmtex( "t", height, pos, 0.5, string ); - plwxtik( tn, vpwymin, FALSE, !lix ); - plwxtik( tn, vpwymax, FALSE, lix ); + if ( !lxx ) + { + plwxtik( tn, vpwymin, FALSE, !lix ); + plwxtik( tn, vpwymax, FALSE, lix ); + } } } xdigits = 2; @@ -1673,7 +1686,7 @@ // Write vertical label(s) - if ( ( lmy || lny ) && lty ) + if ( ( lmy || lny ) && ( lty || lxy ) ) { PLINT ymode, yprec, yscale; PLFLT y_spacing, y_spacing_tmp; @@ -1739,8 +1752,11 @@ } } ydigits = MAX( ydigits, (PLINT) strlen( string ) ); - plwytik( vpwxmin, tn, FALSE, !liy ); - plwytik( vpwxmax, tn, FALSE, liy ); + if ( !lxy ) + { + plwytik( vpwxmin, tn, FALSE, !liy ); + plwytik( vpwxmax, tn, FALSE, liy ); + } } } if ( !lvy ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |