- char *str = decimal_to_string (&pos);
- draw_tick (cr, geom, orient, false,
- s * tick_interval * geom->axis[orient].scale,
- "%s", str);
- free (str);
-
- decimal_add (&pos, &dinterval);
+ char *test_text;
+ double lower_txt_width, upper_txt_width, unused, width;
+ test_text = xasprintf(tick_format_string, upper*tickscale);
+ xrchart_text_extents (cr, geom, test_text, &upper_txt_width, &unused);
+ free(test_text);
+ test_text = xasprintf(tick_format_string, lower*tickscale);
+ xrchart_text_extents (cr, geom, test_text, &lower_txt_width, &unused);
+ free(test_text);
+ width = MAX(lower_txt_width, upper_txt_width);
+ tickoversize = width > 0.9 *
+ ((double)(geom->axis[SCALE_ABSCISSA].data_max - geom->axis[SCALE_ABSCISSA].data_min))/(ticks+1);