X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcwindowgui.C;h=11114bc91223807af309babfeac40c86c77db88a;hb=24d4cd640db4007db78cb2e927c56ffe60ffb11c;hp=24a515fa83a3f3ec6009ab7211651dab01990545;hpb=e9a3c57c8d3bb4d79e76a4c3942f86a66d3c267e;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/cwindowgui.C b/cinelerra-5.1/cinelerra/cwindowgui.C index 24a515fa..11114bc9 100644 --- a/cinelerra-5.1/cinelerra/cwindowgui.C +++ b/cinelerra-5.1/cinelerra/cwindowgui.C @@ -296,6 +296,31 @@ int CWindowGUI::resize_event(int w, int h) int CWindowGUI::button_press_event() { + if( current_operation == CWINDOW_NONE && + mwindow->edl != 0 && canvas->get_canvas() && + canvas->get_canvas()->get_cursor_over_window() ) { + switch( get_buttonpress() ) { + case LEFT_BUTTON: + if( !cwindow->playback_engine->is_playing_back ) { + double length = mwindow->edl->tracks->total_playable_length(); + double position = cwindow->playback_engine->get_tracking_position(); + if( position >= length ) transport->goto_start(); + } + return transport->forward_play->handle_event(); + case MIDDLE_BUTTON: + if( !cwindow->playback_engine->is_playing_back ) { + double position = cwindow->playback_engine->get_tracking_position(); + if( position <= 0 ) transport->goto_end(); + } + return transport->reverse_play->handle_event(); + case RIGHT_BUTTON: // activates popup + break; + case WHEEL_UP: + return transport->frame_forward_play->handle_event(); + case WHEEL_DOWN: + return transport->frame_reverse_play->handle_event(); + } + } if(canvas->get_canvas()) return canvas->button_press_event_base(canvas->get_canvas()); return 0; @@ -473,58 +498,34 @@ int CWindowGUI::keypress_event() lock_window("CWindowGUI::keypress_event 4"); break; case LEFT: - if(!ctrl_down()) - { - if (alt_down()) - { - int shift_down = this->shift_down(); - unlock_window(); - mwindow->gui->mbuttons->transport->handle_transport(STOP, 1, 0, 0); - - mwindow->gui->lock_window("CWindowGUI::keypress_event 2"); + if( !ctrl_down() ) { + int alt_down = this->alt_down(); + int shift_down = this->shift_down(); + unlock_window(); + stop_transport(0); + mwindow->gui->lock_window("CWindowGUI::keypress_event 2"); + if( alt_down ) mwindow->prev_edit_handle(shift_down); - mwindow->gui->unlock_window(); - - lock_window("CWindowGUI::keypress_event 1"); - } else - { - unlock_window(); - - mwindow->gui->lock_window("CWindowGUI::keypress_event 3"); mwindow->move_left(); - mwindow->gui->unlock_window(); - - lock_window("CWindowGUI::keypress_event 2"); - } + mwindow->gui->unlock_window(); + lock_window("CWindowGUI::keypress_event 2"); result = 1; } break; case RIGHT: - if(!ctrl_down()) - { - if (alt_down()) - { - int shift_down = this->shift_down(); - unlock_window(); - mwindow->gui->mbuttons->transport->handle_transport(STOP, 1, 0, 0); - - mwindow->gui->lock_window("CWindowGUI::keypress_event 2"); + if( !ctrl_down() ) { + int alt_down = this->alt_down(); + int shift_down = this->shift_down(); + unlock_window(); + stop_transport(0); + mwindow->gui->lock_window("CWindowGUI::keypress_event 2"); + if( alt_down ) mwindow->next_edit_handle(shift_down); - mwindow->gui->unlock_window(); - - lock_window("CWindowGUI::keypress_event 2"); - } else - { - unlock_window(); - - mwindow->gui->lock_window("CWindowGUI::keypress_event 4"); mwindow->move_right(); - mwindow->gui->unlock_window(); - - lock_window("CWindowGUI::keypress_event 3"); - } + mwindow->gui->unlock_window(); + lock_window("CWindowGUI::keypress_event 2"); result = 1; } break; @@ -676,6 +677,13 @@ void CWindowGUI::update_meters() } } +void CWindowGUI::stop_transport(const char *lock_msg) +{ + if( lock_msg ) unlock_window(); + mwindow->stop_transport(); + if( lock_msg ) lock_window(lock_msg); +} + CWindowEditing::CWindowEditing(MWindow *mwindow, CWindow *cwindow) : EditPanel(mwindow, @@ -716,8 +724,7 @@ CWrapper(splice_selection) CWrapper(overwrite_selection) CWrapper(set_inpoint) CWrapper(set_outpoint) -CWrapper(clear_inpoint) -CWrapper(clear_outpoint) +CWrapper(unset_inoutpoint) CWrapper(toggle_label) CWrapper(prev_label) CWrapper(next_label) @@ -829,7 +836,7 @@ int CWindowSlider::handle_event() void CWindowSlider::set_position() { - double new_length = mwindow->edl->tracks->total_playable_length(); + double new_length = mwindow->edl->tracks->total_length(); // if(mwindow->edl->local_session->preview_end <= 0 || // mwindow->edl->local_session->preview_end > new_length) // mwindow->edl->local_session->preview_end = new_length; @@ -2167,15 +2174,24 @@ int CWindowCanvas::do_eyedrop(int &rerender, int button_press, int draw) float blue = (float)*row++ / max; \ if(do_yuv) \ { \ - mwindow->edl->local_session->red += red + V_TO_R * (blue - 0.5); \ - mwindow->edl->local_session->green += red + U_TO_G * (green - 0.5) + V_TO_G * (blue - 0.5); \ - mwindow->edl->local_session->blue += red + U_TO_B * (green - 0.5); \ + float r = red + V_TO_R * (blue - 0.5); \ + float g = red + U_TO_G * (green - 0.5) + V_TO_G * (blue - 0.5); \ + float b = red + U_TO_B * (green - 0.5); \ + mwindow->edl->local_session->red += r; \ + mwindow->edl->local_session->green += g; \ + mwindow->edl->local_session->blue += b; \ + if(r > mwindow->edl->local_session->red_max) mwindow->edl->local_session->red_max = r; \ + if(g > mwindow->edl->local_session->green_max) mwindow->edl->local_session->green_max = g; \ + if(b > mwindow->edl->local_session->blue_max) mwindow->edl->local_session->blue_max = b; \ } \ else \ { \ mwindow->edl->local_session->red += red; \ mwindow->edl->local_session->green += green; \ mwindow->edl->local_session->blue += blue; \ + if(red > mwindow->edl->local_session->red_max) mwindow->edl->local_session->red_max = red; \ + if(green > mwindow->edl->local_session->green_max) mwindow->edl->local_session->green_max = green; \ + if(blue > mwindow->edl->local_session->blue_max) mwindow->edl->local_session->blue_max = blue; \ } \ } @@ -2184,6 +2200,9 @@ int CWindowCanvas::do_eyedrop(int &rerender, int button_press, int draw) mwindow->edl->local_session->red = 0; mwindow->edl->local_session->green = 0; mwindow->edl->local_session->blue = 0; + mwindow->edl->local_session->red_max = 0; + mwindow->edl->local_session->green_max = 0; + mwindow->edl->local_session->blue_max = 0; for(int i = row1; i < row2; i++) { for(int j = column1; j < column2; j++) @@ -3166,10 +3185,7 @@ int CWindowCanvas::cursor_motion_event() gui->unlock_window(); mwindow->restart_brender(); mwindow->sync_parameters(CHANGE_PARAMS); - gui->cwindow->playback_engine->que->send_command(CURRENT_FRAME, - CHANGE_NONE, - mwindow->edl, - 1); + mwindow->cwindow->refresh_frame(CHANGE_NONE); if(!redraw) gui->update_tool(); gui->lock_window("CWindowCanvas::cursor_motion_event 2"); } @@ -3196,7 +3212,8 @@ int CWindowCanvas::button_press_event() gui->y_offset = get_y_offset(mwindow->edl, 0, zoom_y, conformed_w, conformed_h); // Scroll view - if(get_buttonpress() == 2) + if( mwindow->edl->session->cwindow_operation != CWINDOW_PROTECT && + get_buttonpress() == 2 ) { gui->current_operation = CWINDOW_SCROLL; result = 1; @@ -3258,10 +3275,7 @@ int CWindowCanvas::button_press_event() mwindow->restart_brender(); mwindow->sync_parameters(CHANGE_PARAMS); - gui->cwindow->playback_engine->que->send_command(CURRENT_FRAME, - CHANGE_NONE, - mwindow->edl, - 1); + mwindow->cwindow->refresh_frame(CHANGE_NONE); if(!redraw) gui->update_tool(); gui->lock_window("CWindowCanvas::button_press_event 2"); }