X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcartesian.c;h=9dceb304ebb75c33477d5989b9bac0b512ba5baf;hb=16aa47dbdde420fe82032f7d2e166fdf4e974df5;hp=34e1a3dd0d50c03ada8c6352772c25bcd75b364b;hpb=b321086267ad1014dc5d09886396cde30f094437;p=pspp-builds.git diff --git a/src/cartesian.c b/src/cartesian.c index 34e1a3dd..9dceb304 100644 --- a/src/cartesian.c +++ b/src/cartesian.c @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ #include @@ -53,6 +53,8 @@ write_legend(struct chart *chart, const char *heading, int n); void chart_write_xlabel(struct chart *ch, const char *label) { + if ( ! ch ) + return ; pl_savestate_r(ch->lp); @@ -63,50 +65,15 @@ chart_write_xlabel(struct chart *ch, const char *label) } -/* Set the scale for the abscissa */ -void -chart_write_xscale(struct chart *ch, double min, double max, double tick) -{ - double x; - - ch->x_max = ceil( max / tick ) * tick ; - ch->x_min = floor ( min / tick ) * tick ; - - ch->abscissa_scale = fabs(ch->data_right - ch->data_left) / - fabs(ch->x_max - ch->x_min); - - for(x = ch->x_min ; x <= ch->x_max; x += tick ) - draw_tick (ch, TICK_ABSCISSA, (x - ch->x_min) * ch->abscissa_scale, "%g", x); - -} - - -/* Set the scale for the ordinate */ -void -chart_write_yscale(struct chart *ch, double min, double max, double tick) -{ - double y; - - ch->y_max = ceil( max / tick ) * tick ; - ch->y_min = floor ( min / tick ) * tick ; - - ch->ordinate_scale = - fabs(ch->data_top - ch->data_bottom) / fabs(ch->y_max - ch->y_min) ; - - for(y = ch->y_min ; y <= ch->y_max; y += tick ) - { - draw_tick (ch, TICK_ORDINATE, - (y - ch->y_min) * ch->ordinate_scale, "%g", y); - } - -} - /* Write the ordinate label */ void chart_write_ylabel(struct chart *ch, const char *label) { + if ( ! ch ) + return ; + pl_savestate_r(ch->lp); pl_move_r(ch->lp, ch->data_bottom, ch->ordinate_right); @@ -124,6 +91,10 @@ write_legend(struct chart *chart, const char *heading, { int ds; + if ( ! chart ) + return ; + + pl_savestate_r(chart->lp); pl_filltype_r(chart->lp,1); @@ -160,21 +131,24 @@ write_legend(struct chart *chart, const char *heading, /* Plot a data point */ void -chart_datum(struct chart *ch, int dataset, double x, double y) +chart_datum(struct chart *ch, int dataset UNUSED, double x, double y) { - const double x_pos = - (x - ch->x_min) * ch->abscissa_scale + ch->data_left ; + if ( ! ch ) + return ; - const double y_pos = - (y - ch->y_min) * ch->ordinate_scale + ch->data_bottom ; + { + const double x_pos = + (x - ch->x_min) * ch->abscissa_scale + ch->data_left ; + const double y_pos = + (y - ch->y_min) * ch->ordinate_scale + ch->data_bottom ; - pl_savestate_r(ch->lp); + pl_savestate_r(ch->lp); - pl_fmarker_r(ch->lp, x_pos, y_pos, 6, 15); - - pl_restorestate_r(ch->lp); + pl_fmarker_r(ch->lp, x_pos, y_pos, 6, 15); + pl_restorestate_r(ch->lp); + } } /* Draw a line with slope SLOPE and intercept INTERCEPT. @@ -189,6 +163,10 @@ chart_line(struct chart *ch, double slope, double intercept, double x1, y1; double x2, y2 ; + if ( ! ch ) + return ; + + if ( lim_dim == CHART_DIM_Y ) { x1 = ( limit1 - intercept ) / slope ;