remove whitespace at eol
[goodguy/history.git] / cinelerra-5.1 / cinelerra / trackcanvas.C
index 6d0fee37cbd5d08f7668cf48904d560dc8e2fed8..9f596c26ae7c2cf91457bf561118b902fe72ebfd 100644 (file)
@@ -38,6 +38,7 @@
 #include "edlsession.h"
 #include "floatauto.h"
 #include "floatautos.h"
+#include "gwindowgui.h"
 #include "indexstate.h"
 #include "intauto.h"
 #include "intautos.h"
@@ -185,7 +186,7 @@ int TrackCanvas::drag_motion(Track **over_track,
        int cursor_y = get_relative_cursor_y();
 
        if( get_cursor_over_window() &&
-               cursor_x >= 0 && cursor_y >= 0 && 
+               cursor_x >= 0 && cursor_y >= 0 &&
                cursor_x < get_w() && cursor_y < get_h() )
        {
 //printf("TrackCanvas::drag_motion %d %d\n", __LINE__, pane->number);
@@ -203,15 +204,24 @@ int TrackCanvas::drag_motion(Track **over_track,
                                {
                                        int64_t edit_x, edit_y, edit_w, edit_h;
                                        edit_dimensions(edit, edit_x, edit_y, edit_w, edit_h);
-
-                                       if(cursor_x >= edit_x &&
-                                               cursor_y >= edit_y &&
-                                               cursor_x < edit_x + edit_w &&
-                                               cursor_y < edit_y + edit_h)
-                                       {
+                                       if( cursor_y < edit_y || cursor_y >= edit_y + edit_h ) continue;
+                                       if( cursor_x >= edit_x && cursor_x < edit_x + edit_w ) {
                                                *over_edit = edit;
                                                break;
                                        }
+                                       if( edit != track->edits->last ) continue;
+                                       if( mwindow->session->current_operation != DRAG_ATRANSITION &&
+                                           mwindow->session->current_operation != DRAG_VTRANSITION ) continue;
+                                       if( !edit->silence() ) {
+                                               // add silence to allow drag transition past last edit
+                                               //  will be deleted by Edits::optimize if not used
+                                               double length = mwindow->edl->session->default_transition_length;
+                                               int64_t start = edit->startproject+edit->length;
+                                               int64_t units = track->to_units(length, 1);
+                                               track->edits->create_silence(start, start+units);
+                                               continue;
+                                       }
+                                       if( cursor_x >= edit_x ) { *over_edit = edit; break; }
                                }
 
                                for(int i = 0; i < track->plugin_set.total; i++)
@@ -244,7 +254,7 @@ int TrackCanvas::drag_motion(Track **over_track,
        }
 
         if( !*over_track )
-               *over_track = pane->is_over_patchbay();
+               *over_track = pane->over_patchbay();
 
        return 0;
 }
@@ -272,7 +282,7 @@ int TrackCanvas::drag_stop(int *redraw)
                    (cursor_y = get_relative_cursor_y()) >= 0 && cursor_y < get_h() )
                        over_window = 1;
                else {
-                       Track *track = pane->is_over_patchbay();
+                       Track *track = pane->over_patchbay();
                        if( track && mwindow->session->track_highlighted == track )
                                over_window = 1;
                }
@@ -383,7 +393,7 @@ int TrackCanvas::drag_stop(int *redraw)
                                double asset_duration = 0;
                                int64_t asset_length_units = 0;
                                int64_t position = 0;
-                                       
+
                                if(mwindow->session->current_operation == DRAG_ASSET &&
                                        mwindow->session->drag_assets->total) {
                                        Indexable *indexable = mwindow->session->drag_assets->values[0];
@@ -395,8 +405,8 @@ int TrackCanvas::drag_stop(int *redraw)
                                                if (video_length < 0) {
                                                        if(mwindow->edl->session->si_useduration)
                                                                video_length = mwindow->edl->session->si_duration;
-                                                       else    
-                                                               video_length = 1.0 / mwindow->edl->session->frame_rate ; 
+                                                       else
+                                                               video_length = 1.0 / mwindow->edl->session->frame_rate ;
                                                }
                                                asset_duration = video_length / indexable->get_frame_rate();
                                        }
@@ -418,14 +428,14 @@ int TrackCanvas::drag_stop(int *redraw)
                                else {
                                        printf("DRAG_ASSET error: Asset dropped, but both drag_clips and drag_assets total is zero\n");
                                }
-                       
+
                                asset_length_units = mwindow->session->track_highlighted->to_units(asset_duration, 1);
                                position = drop_edit_position (&insertion, NULL, asset_length_units);
                                if( position == -1 ) {
                                        result = 1;
                                        break;          // Do not do anything
                                }
-                               
+
                                double position_f = mwindow->session->track_highlighted->from_units(position);
                                Track *track = mwindow->session->track_highlighted;
 
@@ -433,7 +443,7 @@ int TrackCanvas::drag_stop(int *redraw)
 //                                     // FIXME, we should create an mwindow/EDL method that overwrites, without clearing the keyframes and autos
 //                                     // Unfortunately, this is _a lot_ of work to do right
 //                                     printf("Problematic insertion\n");
-//                                     mwindow->edl->tracks->clear(position_f, 
+//                                     mwindow->edl->tracks->clear(position_f,
 //                                             position_f + asset_duration, 0);
 //                             }
                                mwindow->paste_assets(position_f, track, !insertion);
@@ -454,7 +464,7 @@ int TrackCanvas::drag_stop(int *redraw)
                                                result = 1;
                                                break;          // Do not do anything
                                        }
-                                       
+
                                        double position_f = mwindow->session->track_highlighted->from_units(position);
                                        Track *track = mwindow->session->track_highlighted;
                                        mwindow->move_edits(mwindow->session->drag_edits,
@@ -1088,9 +1098,9 @@ void TrackCanvas::draw_paste_destination()
                                }
 
 // Get the x coordinate
-                               x = Units::to_int64(position * 
+                               x = Units::to_int64(position *
                                        mwindow->edl->session->sample_rate /
-                                       mwindow->edl->local_session->zoom_sample) - 
+                                       mwindow->edl->local_session->zoom_sample) -
                                        mwindow->edl->local_session->view_start[pane->number];
 
                                double paste_position = -1.;
@@ -1842,41 +1852,34 @@ void TrackCanvas::draw_loop_points()
 //printf("TrackCanvas::draw_loop_points 7\n");
 }
 
-void TrackCanvas::draw_brender_start()
+void TrackCanvas::draw_brender_range()
 {
        if(mwindow->preferences->use_brender)
        {
-               int64_t x = Units::round(mwindow->edl->session->brender_start *
+               int64_t x1 = Units::round(mwindow->edl->session->brender_start *
+                       mwindow->edl->session->sample_rate /
+                       mwindow->edl->local_session->zoom_sample -
+                       mwindow->edl->local_session->view_start[pane->number]);
+               if(MWindowGUI::visible(x1, x1 + 1, 0, get_w()))
+               {
+                       set_color(RED);
+                       draw_line(x1, 0, x1, get_h());
+               }
+               int64_t x2 = Units::round(mwindow->edl->session->brender_end *
                        mwindow->edl->session->sample_rate /
                        mwindow->edl->local_session->zoom_sample -
                        mwindow->edl->local_session->view_start[pane->number]);
 
-               if(MWindowGUI::visible(x, x + 1, 0, get_w()))
+               if(MWindowGUI::visible(x2, x2 + 1, 0, get_w()))
                {
                        set_color(RED);
-                       draw_line(x, 0, x, get_h());
+                       draw_line(x2, 0, x2, get_h());
                }
        }
 }
 
-static int auto_colors[AUTOMATION_TOTAL] =
-{
-       BLUE,
-       RED,
-       GREEN,
-       BLUE,
-       RED,
-       GREEN,
-       BLUE,
-       WHITE,
-       0,
-       0,
-       0,
-       WHITE
-};
-
 // The operations which correspond to each automation type
-static int auto_operations[AUTOMATION_TOTAL] =
+int TrackCanvas::auto_operations[AUTOMATION_TOTAL] =
 {
        DRAG_MUTE,
        DRAG_CAMERA_X,
@@ -1976,25 +1979,25 @@ int TrackCanvas::do_keyframes(int cursor_x,
                                                int grouptype = automation.autogrouptype(i, track);
                                                if(draw) // Do dropshadow
                                                        result = do_float_autos(track, autos,
-                                                               cursor_x, cursor_y, draw, 
+                                                               cursor_x, cursor_y, draw,
                                                                buttonpress, 1, 1, MDGREY,
                                                                auto_keyframe, grouptype);
 
                                                result = do_float_autos(track, autos,
-                                                       cursor_x, cursor_y, draw, 
-                                                       buttonpress, 0, 0, auto_colors[i],
+                                                       cursor_x, cursor_y, draw, buttonpress,
+                                                       0, 0, GWindowGUI::auto_colors[i],
                                                        auto_keyframe, grouptype);
                                                break; }
 
                                        case Autos::AUTOMATION_TYPE_INT: {
                                                if(draw) // Do dropshadow
                                                        result = do_int_autos(track, autos,
-                                                               cursor_x, cursor_y, draw, 
+                                                               cursor_x, cursor_y, draw,
                                                                buttonpress, 1, 1, MDGREY,
                                                                auto_keyframe);
                                                result = do_int_autos(track, autos,
-                                                       cursor_x, cursor_y, draw, 
-                                                       buttonpress, 0, 0, auto_colors[i],
+                                                       cursor_x, cursor_y, draw, buttonpress,
+                                                       0, 0, GWindowGUI::auto_colors[i],
                                                        auto_keyframe);
                                                break; }
                                        }
@@ -2091,6 +2094,45 @@ int TrackCanvas::do_keyframes(int cursor_x,
        return result;
 }
 
+void TrackCanvas::draw_keyframe_reticle()
+{
+       int keyframe_hairline = mwindow->preferences->keyframe_reticle;
+       if( keyframe_hairline == HAIRLINE_NEVER ) return;
+
+       int current_op = mwindow->session->current_operation, dragging = 0;
+       for( int i=0; !dragging && i<AUTOMATION_TOTAL; ++i )
+               if( current_op == auto_operations[i] ) dragging = 1;
+
+       if( keyframe_hairline == HAIRLINE_DRAGGING && dragging ) {
+               if( mwindow->session->drag_auto && get_buttonpress() == 1 ) {
+                       draw_hairline(mwindow->session->drag_auto, RED);
+                       return;
+               }
+       }
+
+       if( keyframe_hairline == HAIRLINE_ALWAYS || ( get_buttonpress() == 2 &&
+           keyframe_hairline == HAIRLINE_DRAGGING && dragging ) ) {
+               for( Track *track = mwindow->edl->tracks->first; track;
+                    track=track->next ) {
+                       Automation *automation = track->automation;
+                       for( int i=0; i<AUTOMATION_TOTAL; ++i ) {
+                               if( !mwindow->edl->session->auto_conf->autos[i] ) continue;
+                               // automation visible
+                               Autos *autos = automation->autos[i];
+                               if( !autos ) continue;
+                               for( Auto *auto_keyframe=autos->first; auto_keyframe;
+                                    auto_keyframe = auto_keyframe->next ) {
+                                       draw_hairline(auto_keyframe, GREEN);
+                               }
+                       }
+
+                       if( dragging && mwindow->session->drag_auto ) {
+                               draw_hairline(mwindow->session->drag_auto, RED);
+                       }
+               }
+       }
+}
+
 void TrackCanvas::draw_auto(Auto *current,
        int x,
        int y,
@@ -2158,14 +2200,14 @@ void TrackCanvas::draw_cropped_line(int x1,
 }
 
 
-void TrackCanvas::draw_floatauto(FloatAuto *current, 
-       int x, 
-       int y, 
-       int in_x, 
-       int in_y, 
-       int out_x, 
-       int out_y, 
-       int center_pixel, 
+void TrackCanvas::draw_floatauto(FloatAuto *current,
+       int x,
+       int y,
+       int in_x,
+       int in_y,
+       int out_x,
+       int out_y,
+       int center_pixel,
        int zoom_track,
        int color)
 {
@@ -2186,7 +2228,7 @@ void TrackCanvas::draw_floatauto(FloatAuto *current,
                draw_box(x1, y1, x2 - x1, y2 - y1);
        }
 
-// show bezier control points (only) if this 
+// show bezier control points (only) if this
 // floatauto doesn't adjust it's tangents automatically
        if(current->curve_mode != FloatAuto::FREE &&
           current->curve_mode != FloatAuto::TFREE)
@@ -2214,22 +2256,22 @@ inline void TrackCanvas::draw_floatauto_ctrlpoint(
 
        y    += center_pixel;
        cp_y += center_pixel;
-       
+
        // drawing the tangent as a dashed line...
        int const dash = HANDLE_W;
        int const gap  = HANDLE_W / 2;
        float sx = 3 * (cp_x - x) / 4.;
        float ex = 0;
-       
+
        // q is the x displacement for a unit line of slope
        float q = (sx > 0 ? 1 : -1) / sqrt(1 + slope * slope);
-       
+
        float dist = 1/q * sx;
        if( dist > dash )
                ex = sx - q * dash;
-       
+
        set_color(color);
-       do {    
+       do {
                float sy = slope * sx, ey = slope * ex;
                draw_line(quantize(sx + x), quantize(sy + y), quantize(ex + x), quantize(ey + y));
                sx = ex - q * gap;
@@ -2312,10 +2354,10 @@ inline float test_curve_line( int x0, int y0, int ctrl_x, int ctrl_y,
 }
 
 
-inline 
+inline
 float levered_position(float position, float ref_pos)
 {
-       if( 1e-6 > fabs(ref_pos) || isnan(ref_pos)) 
+       if( 1e-6 > fabs(ref_pos) || isnan(ref_pos))
                return 0.0;
        return ref_pos / position;
 }
@@ -2337,7 +2379,7 @@ float TrackCanvas::value_to_percentage(float auto_value, int autogrouptype)
 
 
 int TrackCanvas::test_floatauto(FloatAuto *current, int x, int y, int in_x,
-       int in_y, int out_x, int out_y, int center_pixel, int zoom_track, 
+       int in_y, int out_x, int out_y, int center_pixel, int zoom_track,
        int cursor_x, int cursor_y, int buttonpress, int autogrouptype)
 {
        int result = 0;
@@ -2388,7 +2430,7 @@ int TrackCanvas::test_floatauto(FloatAuto *current, int x, int y, int in_x,
                if( WITHIN(x1,x2,y1,y2))
                {       // cursor hits node
                        result = 1;
-                       
+
                        if(buttonpress && (buttonpress != 3))
                        {
                                INIT_DRAG(current->position, value_to_percentage(current->get_value(), autogrouptype))
@@ -2405,13 +2447,13 @@ int TrackCanvas::test_floatauto(FloatAuto *current, int x, int y, int in_x,
                                // could be ctrl-click or ctrl-drag
                                // click would cycle through tangent modes
                                ((FloatAuto*)current)->toggle_curve_mode();
-                               
+
                                // drag will start dragging the tangent, if applicable
                                INIT_DRAG(current->position, value_to_percentage(current->get_value(), autogrouptype))
                                mwindow->session->drag_handle = 0;
                        }
                }
-                       
+
                float lever = 0.0; // we use the tangent as a draggable lever. 1.0 is at the ctrl point
 
 // Test in control
@@ -2460,8 +2502,8 @@ int TrackCanvas::test_floatauto(FloatAuto *current, int x, int y, int in_x,
 #undef WITHIN
 #undef INIT_DRAG
 
-// if(buttonpress) 
-// printf("TrackCanvas::test_floatauto 2 drag_handle=%d ctrl_down=%d cursor_x=%d cursor_y=%d x1=%d x2=%d y1=%d y2=%d\n", 
+// if(buttonpress)
+// printf("TrackCanvas::test_floatauto 2 drag_handle=%d ctrl_down=%d cursor_x=%d cursor_y=%d x1=%d x2=%d y1=%d y2=%d\n",
 // mwindow->session->drag_handle,
 // ctrl_down(),
 // cursor_x,
@@ -2585,7 +2627,10 @@ int TrackCanvas::test_floatline(int center_pixel,
                {
                        Auto *current;
                        mwindow->undo->update_undo_before();
-                       current = mwindow->session->drag_auto = autos->insert_auto(position1);
+                       double position = autos->track->from_units(position1);
+                       position = mwindow->edl->align_to_frame(position, 0);
+                       int64_t new_position = autos->track->to_units(position,0);
+                       current = mwindow->session->drag_auto = autos->insert_auto(new_position);
                        ((FloatAuto*)current)->set_value(value);
                        mwindow->session->drag_start_percentage = value_to_percentage(value, autogrouptype);
                        mwindow->session->drag_start_position = current->position;
@@ -2946,7 +2991,7 @@ int TrackCanvas::do_float_autos(Track *track, Autos *autos, int cursor_x, int cu
                                (int)ax, (int)ax2, cursor_x, cursor_y,
                                buttonpress, autogrouptype);
                }
-               if( draw ) 
+               if( draw )
                        draw_floatline(center_pixel,
                                (FloatAuto*)previous, (FloatAuto*)current,
                                (FloatAutos*)autos, unit_start, zoom_units, yscale,
@@ -3328,6 +3373,28 @@ int TrackCanvas::do_plugin_autos(Track *track, int cursor_x, int cursor_y,
        return result;
 }
 
+int TrackCanvas::draw_hairline(Auto *auto_keyframe, int color)
+{
+       Track *track = auto_keyframe->autos->track;
+       int autogrouptype = auto_keyframe->autos->get_type();
+
+       int center_pixel;
+       double view_start, unit_start;
+       double view_end, unit_end, yscale;
+       double zoom_sample, zoom_units;
+
+       calculate_viewport(track, view_start, unit_start, view_end, unit_end,
+                       yscale, center_pixel, zoom_sample, zoom_units);
+
+       double ax = 0, ay = 0;
+       calculate_auto_position(&ax, &ay, 0, 0, 0, 0,
+               auto_keyframe, unit_start, zoom_units, yscale, autogrouptype);
+
+       set_color(color);
+       draw_line(ax, 0, ax, get_h());
+       return 0;
+}
+
 void TrackCanvas::draw_overlays()
 {
        int new_cursor, update_cursor, rerender;
@@ -3352,7 +3419,7 @@ void TrackCanvas::draw_overlays()
 
 // Loop points
        draw_loop_points();
-       draw_brender_start();
+       draw_brender_range();
 
 // Highlighted areas
        draw_highlighting();
@@ -3369,6 +3436,8 @@ void TrackCanvas::draw_overlays()
 // Playback cursor
        draw_playback_cursor();
 
+       draw_keyframe_reticle();
+
        show_window(0);
 }
 
@@ -3513,7 +3582,7 @@ int TrackCanvas::update_drag_floatauto(int cursor_x, int cursor_y)
 // not really editing the node, rather start editing the curve
 // tangent is editable and drag movement is significant
                if( (FloatAuto::FREE == current->curve_mode ||
-                    FloatAuto::TFREE==current->curve_mode) &&                                          
+                    FloatAuto::TFREE==current->curve_mode) &&
                    (fabs(x) > HANDLE_W / 2 || fabs(y) > HANDLE_W / 2))
                        mwindow->session->drag_handle = x < 0 ? 1 : 2;
        }
@@ -3559,7 +3628,7 @@ int TrackCanvas::update_drag_floatauto(int cursor_x, int cursor_y)
 
                if(value != old_value || position != current->position) {
                        result = 1;
-                       float change = value - old_value;               
+                       float change = value - old_value;
                        current->adjust_to_new_coordinates(position, value);
                        synchronize_autos(change, current->autos->track, current, 0);
                        show_message(current, 1,", %.2f", current->get_value());
@@ -3636,7 +3705,7 @@ int TrackCanvas::update_drag_auto(int cursor_x, int cursor_y)
 
                double position_f = current->autos->track->from_units(current->position);
                double center_f = (mwindow->edl->local_session->get_selectionstart(1) +
-                       mwindow->edl->local_session->get_selectionend(1)) / 
+                       mwindow->edl->local_session->get_selectionend(1)) /
                        2;
                if(!shift_down())
                {
@@ -3668,7 +3737,7 @@ int TrackCanvas::update_drag_pluginauto(int cursor_x, int cursor_y)
                //PluginAutos *pluginautos = (PluginAutos *)current->autos;
                PluginSet *pluginset;
                Plugin *plugin = 0;
-// figure out the correct pluginset & correct plugin 
+// figure out the correct pluginset & correct plugin
                int found = 0;
                for(int i = 0; i < track->plugin_set.total; i++)
                {
@@ -3680,16 +3749,16 @@ int TrackCanvas::update_drag_pluginauto(int cursor_x, int cursor_y)
                                        currentkeyframe;
                                        currentkeyframe = (KeyFrame *) currentkeyframe->next)
                                {
-                                       if (currentkeyframe == current) 
+                                       if (currentkeyframe == current)
                                        {
                                                found = 1;
                                                break;
                                        }
+
                                }
-                               if (found) break;                       
+                               if (found) break;
                        }
-                       if (found) break;                       
+                       if (found) break;
                }
 
                mwindow->session->plugin_highlighted = plugin;
@@ -3700,7 +3769,7 @@ int TrackCanvas::update_drag_pluginauto(int cursor_x, int cursor_y)
 
                double position_f = current->autos->track->from_units(current->position);
                double center_f = (mwindow->edl->local_session->get_selectionstart(1) +
-                       mwindow->edl->local_session->get_selectionend(1)) / 
+                       mwindow->edl->local_session->get_selectionend(1)) /
                        2;
                if(!shift_down())
                {
@@ -3725,7 +3794,7 @@ void TrackCanvas::update_drag_caption()
        switch(mwindow->session->current_operation)
        {
                case DRAG_FADE:
-                       
+
                        break;
        }
 }
@@ -4649,8 +4718,7 @@ int TrackCanvas::button_press_event()
                        switch(mwindow->edl->session->editing_mode) {
 // Test handles and resource boundaries and highlight a track
                        case EDITING_ARROW: {
-                               if( mwindow->edl->session->auto_conf->transitions &&
-                                       do_transitions(cursor_x, cursor_y,
+                               if( do_transitions(cursor_x, cursor_y,
                                                1, new_cursor, update_cursor) ) break;
 
                                if( do_keyframes(cursor_x, cursor_y,
@@ -4689,8 +4757,7 @@ int TrackCanvas::button_press_event()
                                        mwindow->edl->session->sample_rate;
 //printf("TrackCanvas::button_press_event %d\n", position);
 
-                               if(mwindow->edl->session->auto_conf->transitions &&
-                                       do_transitions(cursor_x, cursor_y,
+                               if( do_transitions(cursor_x, cursor_y,
                                                1, new_cursor, update_cursor)) break;
                                if(do_keyframes(cursor_x, cursor_y,
                                        0, get_buttonpress(), new_cursor,
@@ -4712,6 +4779,7 @@ int TrackCanvas::button_press_event()
 
                                if( do_tracks(cursor_x, cursor_y, 1) ) break;
 // Highlight selection
+                               if( get_buttonpress() != LEFT_BUTTON ) break;
                                rerender = start_selection(position);
                                mwindow->session->current_operation = SELECT_REGION;
                                update_cursor = 1;
@@ -4731,17 +4799,17 @@ int TrackCanvas::button_press_event()
                if( update_overlay ) {
                        gui->draw_overlays(1);
                }
-
-               if( update_cursor > 0 ) {
+               if( update_cursor < 0 ) {
+// double_click edit
+                       gui->swindow->update_selection();
+               }
+               if( update_cursor ) {
                        gui->update_timebar(0);
                        gui->hide_cursor(0);
                        gui->show_cursor(1);
                        gui->zoombar->update();
                        gui->flash_canvas(1);
                }
-               else if(update_cursor < 0) {
-                       gui->swindow->update_selection();
-               }
        }
        return result;
 }
@@ -4755,7 +4823,7 @@ int TrackCanvas::start_selection(double position)
 // Extend a border
        if(shift_down())
        {
-               double midpoint = (mwindow->edl->local_session->get_selectionstart(1) + 
+               double midpoint = (mwindow->edl->local_session->get_selectionstart(1) +
                        mwindow->edl->local_session->get_selectionend(1)) / 2;
 
                if(position < midpoint)
@@ -4782,7 +4850,7 @@ int TrackCanvas::start_selection(double position)
 // Que the CWindow
                rerender = 1;
        }
-       
+
        return rerender;
 }
 
@@ -4799,8 +4867,8 @@ void TrackCanvas::end_pluginhandle_selection()
 
 double TrackCanvas::time_visible()
 {
-       return (double)get_w() * 
-               mwindow->edl->local_session->zoom_sample / 
+       return (double)get_w() *
+               mwindow->edl->local_session->zoom_sample /
                mwindow->edl->session->sample_rate;
 }
 
@@ -4814,7 +4882,7 @@ void TrackCanvas::show_message(Auto *current, int show_curve_type, const char *f
                        FloatAuto::curve_name(((FloatAuto*)current)->curve_mode));
        }
        char string2[BCTEXTLEN];
-       Units::totext(string2, 
+       Units::totext(string2,
                current->autos->track->from_units(current->position),
                mwindow->edl->session->time_format,
                mwindow->edl->session->sample_rate,
@@ -4842,7 +4910,7 @@ void TrackCanvas::show_message(Auto *current, int show_curve_type, const char *f
 //             else
 //                     return gui->pane[BOTTOM_LEFT_PANE]->patchbay;
 //     }
-// 
+//
 //     return 0;
 // }