mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-15 19:16:40 +01:00
Merged with trunk R1141
git-svn-id: svn://localhost/ardour2/branches/midi@1142 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
af105afe6c
commit
ef6b25432d
209 changed files with 21004 additions and 6768 deletions
|
|
@ -138,6 +138,34 @@ Editor::ruler_button_press (GdkEventButton* ev)
|
|||
ruler_grabbed_widget = grab_widget;
|
||||
}
|
||||
|
||||
gint x,y;
|
||||
Gdk::ModifierType state;
|
||||
|
||||
/* need to use the correct x,y, the event lies */
|
||||
time_canvas_event_box.get_window()->get_pointer (x, y, state);
|
||||
|
||||
nframes_t where = leftmost_frame + pixel_to_frame (x);
|
||||
|
||||
switch (ev->button) {
|
||||
case 1:
|
||||
/* transport playhead */
|
||||
snap_to (where);
|
||||
session->request_locate (where);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
/* edit cursor */
|
||||
if (snap_type != Editing::SnapToEditCursor) {
|
||||
snap_to (where);
|
||||
}
|
||||
edit_cursor->set_position (where);
|
||||
edit_cursor_clock.set (where);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -150,7 +178,6 @@ Editor::ruler_button_release (GdkEventButton* ev)
|
|||
/* need to use the correct x,y, the event lies */
|
||||
time_canvas_event_box.get_window()->get_pointer (x, y, state);
|
||||
|
||||
|
||||
ruler_pressed_button = 0;
|
||||
|
||||
if (session == 0) {
|
||||
|
|
@ -345,7 +372,7 @@ Editor::popup_ruler_menu (nframes_t where, ItemType t)
|
|||
mitem->set_active(true);
|
||||
}
|
||||
|
||||
ruler_items.push_back (CheckMenuElem (X_("SMPTE"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_smpte)));
|
||||
ruler_items.push_back (CheckMenuElem (X_("Timecode"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_smpte)));
|
||||
mitem = (CheckMenuItem *) &ruler_items.back();
|
||||
if (ruler_shown[ruler_metric_smpte]) {
|
||||
mitem->set_active(true);
|
||||
|
|
@ -1043,13 +1070,12 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble upper
|
|||
uint32_t magic_accent_number = 1;
|
||||
gint nmarks;
|
||||
char buf[64];
|
||||
gint n;
|
||||
gint n = 0;
|
||||
nframes_t pos;
|
||||
bool bar_helper_on = true;
|
||||
|
||||
BBT_Time next_beat;
|
||||
nframes_t next_beat_pos;
|
||||
nframes_t ilower = (nframes_t) floor (lower);
|
||||
|
||||
if ((desirable_marks = maxchars / 7) == 0) {
|
||||
return 0;
|
||||
|
|
@ -1091,7 +1117,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble upper
|
|||
beats = current_bbt_points->size() - bars;
|
||||
|
||||
/*Only show the bar helper if there aren't many bars on the screen */
|
||||
if (bars > 2) {
|
||||
if (bars > 1) {
|
||||
bar_helper_on = false;
|
||||
}
|
||||
|
||||
|
|
@ -1108,11 +1134,12 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble upper
|
|||
double position_of_helper;
|
||||
bool i_am_accented = false;
|
||||
bool we_need_ticks = false;
|
||||
bool helper_active = false;
|
||||
|
||||
position_of_helper = ilower + (30 * Editor::get_current_zoom ());
|
||||
position_of_helper = lower + (30 * Editor::get_current_zoom ());
|
||||
|
||||
if (desirable_marks >= (beats)) {
|
||||
nmarks = ((beats + 1) * bbt_beat_subdivision) + 1;
|
||||
nmarks = (beats * bbt_beat_subdivision) + 1;
|
||||
we_need_ticks = true;
|
||||
} else {
|
||||
nmarks = beats + 1;
|
||||
|
|
@ -1121,19 +1148,23 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble upper
|
|||
*marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * nmarks);
|
||||
|
||||
(*marks)[0].label = g_strdup(" ");
|
||||
(*marks)[0].position = ilower;
|
||||
(*marks)[0].position = lower;
|
||||
(*marks)[0].style = GtkCustomRulerMarkMicro;
|
||||
|
||||
for (n = 1, i = current_bbt_points->begin(); n < nmarks && i != current_bbt_points->end(); i++) {
|
||||
for (n = 1, i = current_bbt_points->begin(); n < nmarks && i != current_bbt_points->end(); ++i) {
|
||||
|
||||
if ((*i).frame < ilower && (bar_helper_on)) {
|
||||
if ((*i).frame < lower && (bar_helper_on)) {
|
||||
snprintf (buf, sizeof(buf), "<%" PRIu32 "|%" PRIu32, (*i).bar, (*i).beat);
|
||||
(*marks)[0].label = g_strdup (buf);
|
||||
helper_active = true;
|
||||
} else {
|
||||
|
||||
if ((*i).type == TempoMap::Bar) {
|
||||
(((*i).frame < position_of_helper) && bar_helper_on) ?
|
||||
snprintf (buf, sizeof(buf), " ") : snprintf (buf, sizeof(buf), "%" PRIu32, (*i).bar);
|
||||
if (((*i).frame < position_of_helper) && helper_active) {
|
||||
snprintf (buf, sizeof(buf), " ");
|
||||
} else {
|
||||
snprintf (buf, sizeof(buf), "%" PRIu32, (*i).bar);
|
||||
}
|
||||
(*marks)[n].label = g_strdup (buf);
|
||||
(*marks)[n].position = (*i).frame;
|
||||
(*marks)[n].style = GtkCustomRulerMarkMajor;
|
||||
|
|
@ -1157,7 +1188,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble upper
|
|||
|
||||
/* Add the tick marks */
|
||||
|
||||
if (we_need_ticks && (*i).type != TempoMap::Bar) {
|
||||
if (we_need_ticks && (*i).type == TempoMap::Beat) {
|
||||
|
||||
/* Find the next beat */
|
||||
|
||||
|
|
@ -1225,14 +1256,14 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble upper
|
|||
|
||||
/* we're in bar land */
|
||||
|
||||
if (desirable_marks < (uint32_t) (bars / 256)) {
|
||||
if (desirable_marks < (bars / 256)) {
|
||||
nmarks = 1;
|
||||
*marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * nmarks);
|
||||
snprintf (buf, sizeof(buf), "too many bars... (currently %" PRIu32 ")", bars );
|
||||
(*marks)[0].style = GtkCustomRulerMarkMajor;
|
||||
(*marks)[0].label = g_strdup (buf);
|
||||
(*marks)[0].position = ilower;
|
||||
} else if (desirable_marks < (uint32_t) (nmarks = (gint) (bars / 64))) {
|
||||
(*marks)[0].position = lower;
|
||||
} else if (desirable_marks < (uint32_t)(nmarks = (gint) (bars / 64) + 1)) {
|
||||
*marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * nmarks);
|
||||
for (n = 0, i = current_bbt_points->begin(); i != current_bbt_points->end() && n < nmarks; i++) {
|
||||
if ((*i).type == TempoMap::Bar) {
|
||||
|
|
@ -1254,7 +1285,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble upper
|
|||
}
|
||||
}
|
||||
}
|
||||
} else if (desirable_marks < (uint32_t) (nmarks = (gint)(bars / 16))) {
|
||||
} else if (desirable_marks < (uint32_t)(nmarks = (bars / 16) + 1)) {
|
||||
*marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * nmarks);
|
||||
for (n = 0, i = current_bbt_points->begin(); i != current_bbt_points->end() && n < nmarks; i++) {
|
||||
if ((*i).type == TempoMap::Bar) {
|
||||
|
|
@ -1276,7 +1307,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble upper
|
|||
}
|
||||
}
|
||||
}
|
||||
} else if (desirable_marks < (uint32_t) (nmarks = (gint)(bars / 4))){
|
||||
} else if (desirable_marks < (uint32_t)(nmarks = (bars / 4) + 1)){
|
||||
*marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * nmarks);
|
||||
for (n = 0, i = current_bbt_points->begin(); i != current_bbt_points->end() && n < nmarks; ++i) {
|
||||
if ((*i).type == TempoMap::Bar) {
|
||||
|
|
@ -1299,8 +1330,8 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble upper
|
|||
}
|
||||
}
|
||||
} else {
|
||||
nmarks = bars;
|
||||
*marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * nmarks);
|
||||
nmarks = bars + 1;
|
||||
*marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * nmarks );
|
||||
for (n = 0, i = current_bbt_points->begin(); i != current_bbt_points->end() && n < nmarks; i++) {
|
||||
if ((*i).type == TempoMap::Bar) {
|
||||
if ((*i).bar % 4 == 1) {
|
||||
|
|
@ -1320,7 +1351,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble upper
|
|||
}
|
||||
}
|
||||
}
|
||||
return nmarks;
|
||||
return n;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue