- if (!ch)
- return ;
-
- {
- double upper;
- double lower;
- double height;
-
- const size_t bins = gsl_histogram_bins (hist->gsl_hist);
- const double x_pos = (ch->data_right - ch->data_left) * bar / (double) bins ;
- const double width = (ch->data_right - ch->data_left) / (double) bins ;
-
- assert ( 0 == gsl_histogram_get_range (hist->gsl_hist, bar, &lower, &upper));
-
- assert ( upper >= lower);
-
- height = gsl_histogram_get (hist->gsl_hist, bar) *
- (ch->data_top - ch->data_bottom) / gsl_histogram_max_val (hist->gsl_hist);
-
- pl_savestate_r (ch->lp);
- pl_move_r (ch->lp,ch->data_left, ch->data_bottom);
- pl_fillcolorname_r (ch->lp, ch->fill_colour);
- pl_filltype_r (ch->lp,1);
-
-
- pl_fboxrel_r (ch->lp,
- x_pos, 0,
- x_pos + width, height);
-
- pl_restorestate_r (ch->lp);
-
- {
- char buf[5];
- snprintf (buf,5,"%g", (upper + lower) / 2.0);
- draw_tick (ch, TICK_ABSCISSA,
- x_pos + width / 2.0, buf);
- }
- }
+ double upper;
+ double lower;
+ double height;
+
+ const size_t bins = gsl_histogram_bins (h);
+ const double x_pos = (geom->data_right - geom->data_left) * bar / (double) bins ;
+ const double width = (geom->data_right - geom->data_left) / (double) bins ;
+
+ assert ( 0 == gsl_histogram_get_range (h, bar, &lower, &upper));
+
+ assert ( upper >= lower);
+
+ height = gsl_histogram_get (h, bar) *
+ (geom->data_top - geom->data_bottom) / gsl_histogram_max_val (h);
+
+ cairo_rectangle (cr, geom->data_left + x_pos, geom->data_bottom,
+ width, height);
+ cairo_save (cr);
+ cairo_set_source_rgb (cr,
+ geom->fill_colour.red / 255.0,
+ geom->fill_colour.green / 255.0,
+ geom->fill_colour.blue / 255.0);
+ cairo_fill_preserve (cr);
+ cairo_restore (cr);
+ cairo_stroke (cr);
+
+ draw_tick (cr, geom, TICK_ABSCISSA,
+ x_pos + width / 2.0, "%g", (upper + lower) / 2.0);