Move comment to correct function
[pspp] / src / output / cairo-chart.c
index 81c770354cea82380ba4fc1128431bd662d77618..56b35290a6572a2098620cf12a4fd8270843f709 100644 (file)
@@ -46,13 +46,14 @@ void
 xrchart_geometry_init (cairo_t *cr, struct xrchart_geometry *geom,
                        double width, double length)
 {
-  /* Set default chartetry. */
+  /* Set default chart geometry. */
   geom->axis[SCALE_ORDINATE].data_max = 0.900 * length;
-  geom->axis[SCALE_ABSCISSA].data_max = 0.800 * width;
   geom->axis[SCALE_ORDINATE].data_min = 0.120 * length;
+
   geom->axis[SCALE_ABSCISSA].data_min = 0.150 * width;
-  geom->abscissa_top = 0.070 * length;
-  geom->ordinate_right = 0.120 * width;
+  geom->axis[SCALE_ABSCISSA].data_max = 0.800 * width;
+  geom->abscissa_bottom = 0.070 * length;
+  geom->ordinate_left = 0.050 * width;
   geom->title_bottom = 0.920 * length;
   geom->legend_left = 0.810 * width;
   geom->legend_right = width;
@@ -307,7 +308,7 @@ xrchart_write_title (cairo_t *cr, const struct xrchart_geometry *geom,
 }
 
 
-/* Set the scale for the ordinate */
+
 static void
 xrchart_write_scale (cairo_t *cr, struct xrchart_geometry *geom,
                     double smin, double smax, int ticks, enum tick_orientation orient)
@@ -317,20 +318,24 @@ xrchart_write_scale (cairo_t *cr, struct xrchart_geometry *geom,
   const double tick_interval =
     chart_rounded_tick ((smax - smin) / (double) ticks);
 
-  geom->axis[orient].max = ceil (smax / tick_interval) * tick_interval;
-  geom->axis[orient].min = floor (smin / tick_interval) * tick_interval;
+  int upper = ceil (smax / tick_interval);
+  int lower = floor (smin / tick_interval);
+
+  geom->axis[orient].max = tick_interval * upper;
+  geom->axis[orient].min = tick_interval * lower;
 
   geom->axis[orient].scale = (fabs (geom->axis[orient].data_max - geom->axis[orient].data_min)
      / fabs (geom->axis[orient].max - geom->axis[orient].min));
 
-  for (s = 0 ; s < (geom->axis[orient].max - geom->axis[orient].min) / tick_interval; ++s)
+  for (s = 0 ; s < upper - lower; ++s)
     {
-      double pos = s * tick_interval + geom->axis[orient].min; 
+      double pos = (s + lower) * tick_interval;
       draw_tick (cr, geom, orient,
                 s * tick_interval * geom->axis[orient].scale, "%g", pos);
     }
 }
 
+/* Set the scale for the ordinate */
 void
 xrchart_write_yscale (cairo_t *cr, struct xrchart_geometry *geom,
                     double smin, double smax, int ticks)
@@ -352,7 +357,7 @@ void
 xrchart_write_xlabel (cairo_t *cr, const struct xrchart_geometry *geom,
                     const char *label)
 {
-  cairo_move_to (cr, geom->axis[SCALE_ABSCISSA].data_min, geom->abscissa_top);
+  cairo_move_to (cr, geom->axis[SCALE_ABSCISSA].data_min, geom->abscissa_bottom);
   xrchart_label (cr, 'l', 't', geom->font_size, label);
 }
 
@@ -362,9 +367,9 @@ xrchart_write_ylabel (cairo_t *cr, const struct xrchart_geometry *geom,
                     const char *label)
 {
   cairo_save (cr);
-  cairo_translate (cr, -geom->axis[SCALE_ORDINATE].data_min, -geom->ordinate_right);
-  cairo_move_to (cr, 0, 0);
+  cairo_translate (cr, geom->ordinate_left,   geom->axis[SCALE_ORDINATE].data_min);
   cairo_rotate (cr, M_PI / 2.0);
+
   xrchart_label (cr, 'l', 'x', geom->font_size, label);
   cairo_restore (cr);
 }