- const double first_major_division =
- floor(_view.offset() / tick_period);
- const double first_minor_division =
- ceil(_view.offset() / minor_tick_period);
- const double t0 = first_major_division * tick_period;
-
- int division = (int)round(first_minor_division -
- first_major_division * MinorTickSubdivision);
- while(1)
- {
- const double t = t0 + division * minor_tick_period;
- const double x = (t - _view.offset()) / _view.scale();
-
- if(x >= width())
- break;
-
- if(division % MinorTickSubdivision == 0)
+ const pv::util::Timestamp first_major_division =
+ floor(view_.offset() / tick_period);
+ const pv::util::Timestamp first_minor_division =
+ ceil(view_.offset() / minor_tick_period);
+ const pv::util::Timestamp t0 = first_major_division * tick_period;
+
+ int division = (round(first_minor_division -
+ first_major_division * MinorTickSubdivision)).convert_to<int>() - 1;
+
+ const int text_height = calculate_text_height();
+ const int ruler_height = RulerHeight * text_height;
+ const int major_tick_y1 = text_height + ValueMargin * 2;
+ const int minor_tick_y1 = (major_tick_y1 + ruler_height) / 2;
+
+ double x;
+
+ do {
+ const pv::util::Timestamp t = t0 + division * minor_tick_period;
+ x = ((t - view_.offset()) / view_.scale()).convert_to<double>();
+
+ if (division % MinorTickSubdivision == 0)