Otherwise there's no minor tick at the half-way point and that's
just not nice.
#define ACRE_PAD (ACRE_FONT_SIZE)
#define ACRE_TICK_MAJOR_SIZE 6
#define ACRE_TICK_MINOR_SIZE 3
#define ACRE_PAD (ACRE_FONT_SIZE)
#define ACRE_TICK_MAJOR_SIZE 6
#define ACRE_TICK_MINOR_SIZE 3
-#define ACRE_TICK_MINOR_DIVISIONS 5
#define ACRE_X_TICK_VALUE_PAD 2
#define ACRE_Y_TICK_VALUE_PAD 4
#define ACRE_X_TICK_VALUE_PAD 2
#define ACRE_Y_TICK_VALUE_PAD 4
/* For a given axis range, compute a step size (in data space) to
* generate a suitable number of ticks (5 or so). */
static double
/* For a given axis range, compute a step size (in data space) to
* generate a suitable number of ticks (5 or so). */
static double
-_step_for_range (double range)
+_step_for_range (double range, int *minor_divisions)
{
double step, scale_factor;
{
double step, scale_factor;
* 10). The threshold values between these are computed
* logarithmically. */
if (step < 3.535533905932738) {
* 10). The threshold values between these are computed
* logarithmically. */
if (step < 3.535533905932738) {
- if (step < 1.58113883008419)
+ if (step < 1.58113883008419) {
+ *minor_divisions = 4;
+ } else {
+ *minor_divisions = 5;
+ }
- if (step < 7.071067811865475)
+ if (step < 7.071067811865475) {
+ *minor_divisions = 5;
+ } else {
+ *minor_divisions = 4;
+ }
}
/* Un-normalize and we now have the data value that we want to
}
/* Un-normalize and we now have the data value that we want to
_expand_range_for_width (double *axis_min, double *axis_max, int pixel_size)
{
double range, new_range, step, pixel_step;
_expand_range_for_width (double *axis_min, double *axis_max, int pixel_size)
{
double range, new_range, step, pixel_step;
range = *axis_max - *axis_min;
range = *axis_max - *axis_min;
- step = _step_for_range (range);
- pixel_step = step * pixel_size / range / ACRE_TICK_MINOR_DIVISIONS;
+ step = _step_for_range (range, &minor_divisions);
+ pixel_step = step * pixel_size / range / minor_divisions;
/* We expand the range by the ratio of the pixel step to the floor
* of the pixel_step.
/* We expand the range by the ratio of the pixel step to the floor
* of the pixel_step.
{
cairo_t *cr = acre->cr;
double t, step, sub_step;
{
cairo_t *cr = acre->cr;
double t, step, sub_step;
cairo_save (cr);
_set_transform_to_data_space (acre);
cairo_save (cr);
_set_transform_to_data_space (acre);
- step = _step_for_range (axis_max - axis_min);
- sub_step = step / ACRE_TICK_MINOR_DIVISIONS;
+ step = _step_for_range (axis_max - axis_min, &minor_divisions);
+ sub_step = step / minor_divisions;
for (t = (floor (axis_min / sub_step) + 1) * sub_step;
t <= axis_max;
for (t = (floor (axis_min / sub_step) + 1) * sub_step;
t <= axis_max;