+ axis_near = FALSE;
+ if (xaxispos + xtl_ofs > ya_min && o_yaxis != NOAXIS) {
+ double xw, x, y, d;
+
+ xw = xgw_min + i * xw_tickinc;
+ rSGP.setWindow (xgw_min, ygw_min, xgw_max, ygw_max);
+ rSGP.setViewport (xgn_min, ygn_min, xgn_max, ygn_max);
+ rSGP.transformMCtoNDC (xw, y, &x, &y);
+ rSGP.setWindow (xp_min, yp_min, xp_max, yp_max);
+ rSGP.setViewport (xp_min, yp_min, xp_max, yp_max);
+ d = x - yaxispos;
+ if (o_yticks == RIGHT && d >= 0 && d < 0.9 * xn_tickinc)
+ axis_near = TRUE;
+ if (o_yticks == LEFT && d <= 0 && d > -0.9 * xn_tickinc)
+ axis_near = TRUE;
+ }
+
+ if (o_xtlabel == TRUE && axis_near == FALSE) {
+ snprintf (str, sizeof(str), x_numfmt, xgw_min + xw_tickinc * i);
+ numstr = str_skip_head (str, " ");
+ rSGP.moveAbs (x-strlen(numstr)*charwidth/2,xaxispos + xtl_ofs);
+ rSGP.setTextColor (clr_number, -1);
+ rSGP.drawText (numstr);
+ }
+ }
+ } /* x - axis */
+
+
+ /*--------*/
+ /* y-axis */
+ /*--------*/
+
+ if (o_yaxis == LINEAR) {
+ rSGP.setWindow (xp_min, yp_min, xp_max, yp_max);
+ rSGP.setViewport (xp_min, yp_min, xp_max, yp_max);
+
+ rSGP.setColor (clr_axis);
+ if (o_tag && !o_grid && !o_box && s_ycross) {
+ rSGP.moveAbs (yaxispos - charwidth, ya_min);
+ rSGP.lineAbs (yaxispos + charwidth, ya_min);
+ }
+ rSGP.moveAbs (yaxispos, ya_min);
+ rSGP.lineAbs (yaxispos, ya_max);
+ if (o_tag && !o_grid && !o_box) {
+ rSGP.moveAbs (yaxispos - charwidth, ya_max);
+ rSGP.lineAbs (yaxispos + charwidth, ya_max);
+ }
+
+ if (o_grid == TRUE) {
+ rSGP.setColor (clr_grid);
+ for (i = 0; i <= y_nint; i++) {
+ y = yt_min + yn_tickinc * i;
+ rSGP.moveAbs (xa_max, y);
+ rSGP.lineAbs (xa_min, y);
+ }
+ }
+ rSGP.moveAbs (ylbl_col,ya_min + (ya_max-ya_min)/2 - c_ylabel.length()*charheight);
+ rSGP.setTextAngle (HALFPI);
+ rSGP.setTextSize (2 * charheight);
+ rSGP.setTextColor (clr_label, -1);
+ rSGP.drawText (c_ylabel);
+ rSGP.setTextAngle (0.0);
+ rSGP.setTextSize (charheight);
+ minorinc = yn_tickinc / (o_yminortick + 1);
+
+ for (i = 0; i <= y_nint; i++) {
+ y = yt_min + yn_tickinc * i;
+ rSGP.setColor (clr_axis);
+ rSGP.moveAbs (yaxispos, y);
+ rSGP.lineAbs (yaxispos + yticklen, y);
+ if (i != y_nint)
+ for (j = 1; j <= o_yminortick; j++) {
+ y2 = y + minorinc * j;
+ rSGP.moveAbs (yaxispos, y2);
+ rSGP.lineAbs (yaxispos + TICKRATIO * yticklen, y2);