max = floor(max*200)/100;
}
break;
+ case AUTOGROUPTYPE_SPEED:
+ if (range < 0.001) {
+ min = floor(min*5)/100;
+ max = floor(max*300)/100;
+ }
+ break;
case AUTOGROUPTYPE_X:
case AUTOGROUPTYPE_Y:
if (range < 5) {
val += 1;
break;
case AUTOGROUPTYPE_ZOOM:
+ case AUTOGROUPTYPE_SPEED:
if (val == 0)
val = 0.001;
else
val -= 1;
break;
case AUTOGROUPTYPE_ZOOM:
+ case AUTOGROUPTYPE_SPEED:
if (val > 0) val = val/2;
break;
case AUTOGROUPTYPE_X:
double position = edl->local_session->get_selectionend(1);
Units::fix_double(&position);
double new_position = INFINITY;
+
+ double max_rate = edl->get_frame_rate();
+ int sample_rate = edl->get_sample_rate();
+ if( sample_rate > max_rate ) max_rate = sample_rate;
+ double min_movement = max_rate > 0 ? 1. / max_rate : 1e-6;
+
// Test for edit handles after cursor position
for (Track *track = edl->tracks->first; track; track = track->next)
{
{
double edit_end = track->from_units(edit->startproject + edit->length);
Units::fix_double(&edit_end);
+ if( fabs(edit_end-position) < min_movement ) continue;
if (edit_end > position && edit_end < new_position)
new_position = edit_end;
}
double position = edl->local_session->get_selectionstart(1);
double new_position = -1;
Units::fix_double(&position);
+
+ double max_rate = edl->get_frame_rate();
+ int sample_rate = edl->get_sample_rate();
+ if( sample_rate > max_rate ) max_rate = sample_rate;
+ double min_movement = max_rate > 0 ? 1. / max_rate : 1e-6;
+
// Test for edit handles before cursor position
for (Track *track = edl->tracks->first; track; track = track->next)
{
{
double edit_end = track->from_units(edit->startproject);
Units::fix_double(&edit_end);
+ if( fabs(edit_end-position) < min_movement ) continue;
if (edit_end < position && edit_end > new_position)
new_position = edit_end;
}
gui->mainmenu->update_toggles(0);
gui->update_pane_dividers();
gui->update_cursor();
+ gui->draw_samplemovement();
// required to get new widgets to appear
gui->show_window();
gui->mainmenu->update_toggles(0);
gui->update_pane_dividers();
gui->update_cursor();
+ gui->draw_trackmovement();
// required to get new widgets to appear
gui->show_window();
gui->resource_thread->start_draw();