summaryrefslogtreecommitdiff
path: root/gtk2_ardour/audio_clock.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-09-28 20:15:03 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2015-09-28 20:28:40 -0400
commit7f86418340f80fa20edee0557fe008b4053a7728 (patch)
tree5fda506241efcfb3945a409e7c296bed196ae31f /gtk2_ardour/audio_clock.cc
parentb8ccf8acccdab918beef6bd6d37ffaf754cf31ed (diff)
Revert "change the way the audio clock cursor is drawn (somewhat of an experiment but it has some benefits"
This reverts commit 601770837e2530a73056a6aa67759d56e16e735a. This work continued in the "clockwork" branch where it was done correctly.
Diffstat (limited to 'gtk2_ardour/audio_clock.cc')
-rw-r--r--gtk2_ardour/audio_clock.cc66
1 files changed, 24 insertions, 42 deletions
diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc
index 8de39d58f1..54f17725eb 100644
--- a/gtk2_ardour/audio_clock.cc
+++ b/gtk2_ardour/audio_clock.cc
@@ -197,7 +197,6 @@ AudioClock::set_font (Pango::FontDescription font)
tmp->set_text ("8");
tmp->get_pixel_size (em_width, ignore_height);
-
/* force redraw of markup with new font-size */
set (last_when, true);
@@ -313,17 +312,13 @@ AudioClock::render (cairo_t* cr, cairo_rectangle_t*)
double lw = layout_width * xscale;
double lh = layout_height * yscale;
- if (lw >= get_width()) {
- cairo_move_to (cr, 0.0, (upper_height - lh) / 2.0);
- } else {
- cairo_move_to (cr, (get_width() - lw) / 2.0, (upper_height - lh) / 2.0);
- }
+ cairo_move_to (cr, (get_width() - lw) / 2.0, (upper_height - lh) / 2.0);
if (xscale != 1.0 || yscale != 1.0) {
cairo_save (cr);
cairo_scale (cr, xscale, yscale);
}
-
+
pango_cairo_show_layout (cr, _layout->gobj());
if (xscale != 1.0 || yscale != 1.0) {
@@ -406,44 +401,42 @@ AudioClock::render (cairo_t* cr, cairo_rectangle_t*)
}
if (editing) {
- Pango::Rectangle cursor;
-
if (!insert_map.empty()) {
+ int xcenter = (get_width() - layout_width) /2;
+
if (input_string.length() < insert_map.size()) {
+ Pango::Rectangle cursor;
- cursor = _layout->get_cursor_strong_pos (edit_string.length() - 1);
+ if (input_string.empty()) {
+ /* nothing entered yet, put cursor at the end
+ of string
+ */
+ cursor = _layout->get_cursor_strong_pos (edit_string.length() - 1);
+ } else {
+ cursor = _layout->get_cursor_strong_pos (insert_map[input_string.length()]);
+ }
cairo_set_source_rgba (cr, cursor_r, cursor_g, cursor_b, cursor_a);
-
cairo_rectangle (cr,
- cursor.get_x()/PANGO_SCALE,
- (upper_height - layout_height)/2.0,
- em_width,
- cursor.get_height()/PANGO_SCALE);
- cairo_stroke (cr);
-
+ min (get_width() - 2.0,
+ (double) xcenter + cursor.get_x()/PANGO_SCALE + em_width),
+ (upper_height - layout_height)/2.0,
+ 2.0, cursor.get_height()/PANGO_SCALE);
+ cairo_fill (cr);
} else {
/* we've entered all possible digits, no cursor */
}
} else {
- cairo_set_source_rgba (cr, cursor_r, cursor_g, cursor_b, cursor_a);
-
- if (edit_string.empty()) {
- cairo_rectangle (cr,
- get_width() - em_width,
- (upper_height - layout_height)/2.0,
- em_width, upper_height);
- } else {
- cursor = _layout->get_cursor_strong_pos (edit_string.length() - 1);
+ if (input_string.empty()) {
+ cairo_set_source_rgba (cr, cursor_r, cursor_g, cursor_b, cursor_a);
cairo_rectangle (cr,
- cursor.get_x()/PANGO_SCALE,
- (upper_height - layout_height)/2.0,
- em_width, upper_height);
+ (get_width()/2.0),
+ (upper_height - layout_height)/2.0,
+ 2.0, upper_height);
+ cairo_fill (cr);
}
-
- cairo_stroke (cr);
}
}
}
@@ -484,19 +477,8 @@ AudioClock::set_clock_dimensions (Gtk::Requisition& req)
tmp->set_text (" 88:88:88,88 ");
tmp->get_pixel_size (req.width, req.height);
-
layout_height = req.height;
layout_width = req.width;
-
- /* get the figure width for the font. This doesn't have to super
- * accurate since we only use it to measure the (roughly 1 character)
- * offset from the position Pango tells us for the "cursor"
- */
-
- int ignore_height;
-
- tmp->set_text ("8");
- tmp->get_pixel_size (em_width, ignore_height);
}
void