summaryrefslogtreecommitdiff
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
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.
-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