X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcwindowgui.C;h=95bae3979ce8071ca20358da276f75e33ea4b67c;hp=bc37551a84bf87b49f070cd8d4583cf660c9ec7c;hb=0513350234a8dcd08e5a0117d5121724ef7b76b6;hpb=2162ee52e4d53d53ad5ce40af82784d8c8da0bad diff --git a/cinelerra-5.1/cinelerra/cwindowgui.C b/cinelerra-5.1/cinelerra/cwindowgui.C index bc37551a..95bae397 100644 --- a/cinelerra-5.1/cinelerra/cwindowgui.C +++ b/cinelerra-5.1/cinelerra/cwindowgui.C @@ -92,23 +92,28 @@ CWindowGUI::CWindowGUI(MWindow *mwindow, CWindow *cwindow) this->mwindow = mwindow; this->cwindow = cwindow; affected_track = 0; - affected_x = 0; - affected_y = 0; - affected_z = 0; + affected_x = affected_y = affected_z = 0; mask_keyframe = 0; orig_mask_keyframe = new MaskAuto(0, 0); affected_point = 0; - x_offset = 0; - y_offset = 0; - x_origin = 0; - y_origin = 0; + x_offset = y_offset = 0; + x_origin = y_origin = 0; current_operation = CWINDOW_NONE; tool_panel = 0; - translating_zoom = 0; active = 0; inactive = 0; - crop_translate = 0; + crop_handle = -1; crop_translate = 0; + crop_origin_x = crop_origin_y = 0; + crop_origin_x1 = crop_origin_y1 = 0; + crop_origin_x2 = crop_origin_y2 = 0; eyedrop_visible = 0; + eyedrop_x = eyedrop_y = 0; + ruler_origin_x = ruler_origin_y = 0; + ruler_handle = -1; ruler_translate = 0; + center_x = center_y = center_z = 0; + control_in_x = control_in_y = 0; + control_out_x = control_out_y = 0; + translating_zoom = 0; highlighted = 0; } @@ -245,7 +250,7 @@ int CWindowGUI::resize_event(int w, int h) flash(0); composite_panel->reposition_buttons(mwindow->theme->ccomposite_x, - mwindow->theme->ccomposite_y); + mwindow->theme->ccomposite_y, mwindow->theme->ccomposite_h); canvas->reposition_window(mwindow->edl, mwindow->theme->ccanvas_x, @@ -370,27 +375,23 @@ float CWindowGUI::get_auto_zoom() void CWindowGUI::zoom_canvas(double value, int update_menu) { - EDL *edl = mwindow->edl; - float x = canvas->get_xscroll(), y = canvas->get_yscroll(); - float old_zoom = mwindow->edl->session->cwindow_zoom; - float new_zoom = !value ? get_auto_zoom() : value; - edl->session->cwindow_scrollbars = !value ? 0 : 1; + float x = 0, y = 0; + float zoom = !value ? get_auto_zoom() : value; + mwindow->edl->session->cwindow_scrollbars = !value ? 0 : 1; if( value ) { - float z = (1 - old_zoom / new_zoom) / 2; - x += canvas->w_visible * z; - y += canvas->h_visible * z; + float cx = canvas->get_xscroll() + 0.5f*canvas->w_visible; + float cy = canvas->get_yscroll() + 0.5f*canvas->h_visible; + float output_x = cx, output_y = cy; + canvas->output_to_canvas(mwindow->edl, 0, cx, cy); + x = output_x - cx / zoom; + y = output_y - cy / zoom; } - else - x = y = 0; - - canvas->update_zoom((int)x, (int)y, new_zoom); - if( !value ) - mwindow->edl->session->cwindow_scrollbars = 0; + canvas->update_zoom((int)(x+0.5), (int)(y+0.5), zoom); if( update_menu ) zoom_panel->update(value); if( mwindow->edl->session->cwindow_operation == CWINDOW_ZOOM ) - composite_panel->cpanel_zoom->update(new_zoom); + composite_panel->cpanel_zoom->update(zoom); canvas->reposition_window(mwindow->edl, mwindow->theme->ccanvas_x, mwindow->theme->ccanvas_y, @@ -603,7 +604,7 @@ int CWindowGUI::drag_stop() if(mwindow->session->drag_assets->total) { mwindow->gui->lock_window("CWindowGUI::drag_stop 1"); - mwindow->clear(0); + mwindow->clear(0, 1); mwindow->load_assets(mwindow->session->drag_assets, mwindow->edl->local_session->get_selectionstart(), LOADMODE_PASTE, @@ -618,7 +619,7 @@ int CWindowGUI::drag_stop() if(mwindow->session->drag_clips->total) { mwindow->gui->lock_window("CWindowGUI::drag_stop 2"); - mwindow->clear(0); + mwindow->clear(0, 1); mwindow->paste_edls(mwindow->session->drag_clips, LOADMODE_PASTE, mwindow->session->track_highlighted, @@ -717,13 +718,16 @@ CWrapper(set_inpoint) CWrapper(set_outpoint) CWrapper(clear_inpoint) CWrapper(clear_outpoint) -CWrapper(to_clip) CWrapper(toggle_label) CWrapper(prev_label) CWrapper(next_label) CWrapper(prev_edit) CWrapper(next_edit) +void CWindowEditing::to_clip() +{ + mwindow->to_clip(mwindow->edl, _("composer window: ")); +} CWindowMeters::CWindowMeters(MWindow *mwindow, @@ -825,7 +829,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; @@ -2163,15 +2167,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; \ } \ } @@ -2180,6 +2193,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++) @@ -2944,13 +2960,7 @@ int CWindowCanvas::test_zoom(int &redraw) float x, y; float zoom = 0; - if( !mwindow->edl->session->cwindow_scrollbars ) { - mwindow->edl->session->cwindow_scrollbars = 1; - x = (mwindow->edl->session->output_w - w) / 2; - y = (mwindow->edl->session->output_h - h) / 2; - zoom = 1; - } - else { + if( mwindow->edl->session->cwindow_scrollbars ) { if( *gui->zoom_panel->get_text() != 'x' ) { // Find current zoom in table int idx = total_zooms; float old_zoom = get_zoom(); @@ -2963,19 +2973,25 @@ int CWindowCanvas::test_zoom(int &redraw) } } x = get_cursor_x(); y = get_cursor_y(); + if( !zoom ) { + mwindow->edl->session->cwindow_scrollbars = 0; + gui->zoom_panel->update(0); + zoom = gui->get_auto_zoom(); + } + else { + gui->zoom_panel->ZoomPanel::update(zoom); + float output_x = x, output_y = y; + canvas_to_output(mwindow->edl, 0, output_x, output_y); + x = output_x - x / zoom; + y = output_y - y / zoom; + } } - if( !zoom ) { - mwindow->edl->session->cwindow_scrollbars = 0; - gui->zoom_panel->update(0); - zoom = gui->get_auto_zoom(); + else { + mwindow->edl->session->cwindow_scrollbars = 1; + x = (mwindow->edl->session->output_w - w) / 2; + y = (mwindow->edl->session->output_h - h) / 2; + zoom = 1; } - else - gui->zoom_panel->ZoomPanel::update(zoom); - - float output_x = x, output_y = y; - canvas_to_output(mwindow->edl, 0, output_x, output_y); - x = output_x - x / zoom; - y = output_y - y / zoom; update_zoom((int)x, (int)y, zoom); gui->composite_panel->cpanel_zoom->update(zoom);