X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcwindowtool.C;h=d73a265b5727d15d3e4391d479ea21845ddc57b4;hb=4784a8d70bc39f9b7e467f93304d2df3f23fd2df;hp=6a4a1d7255deaec89758e6729d6e45e94738dbe7;hpb=87141f1b454130848c34efdea9cf832d17463830;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/cwindowtool.C b/cinelerra-5.1/cinelerra/cwindowtool.C index 6a4a1d72..d73a265b 100644 --- a/cinelerra-5.1/cinelerra/cwindowtool.C +++ b/cinelerra-5.1/cinelerra/cwindowtool.C @@ -19,6 +19,9 @@ * */ +#include +#include + #include "automation.h" #include "cicolors.h" #include "clip.h" @@ -458,11 +461,7 @@ void CWindowCropGUI::update() CWindowEyedropGUI::CWindowEyedropGUI(MWindow *mwindow, CWindowTool *thread) - : CWindowToolGUI(mwindow, - thread, - _(PROGRAM_NAME ": Color"), - 200, - 250) + : CWindowToolGUI(mwindow, thread, _(PROGRAM_NAME ": Color"), 220, 250) { } @@ -473,11 +472,13 @@ CWindowEyedropGUI::~CWindowEyedropGUI() void CWindowEyedropGUI::create_objects() { int margin = mwindow->theme->widget_border; - int x = margin; - int y = margin; - int x2 = 70; + int x = 10 + margin; + int y = 10 + margin; + int x2 = 70, x3 = x2 + 60; lock_window("CWindowEyedropGUI::create_objects"); - BC_Title *title1, *title2, *title3, *title4, *title5, *title6, *title7; + BC_Title *title0, *title1, *title2, *title3, *title4, *title5, *title6, *title7; + add_subwindow(title0 = new BC_Title(x, y,_("X,Y:"))); + y += title0->get_h() + margin; add_subwindow(title7 = new BC_Title(x, y, _("Radius:"))); y += BC_TextBox::calculate_h(this, MEDIUMFONT, 1, 1) + margin; @@ -494,22 +495,24 @@ void CWindowEyedropGUI::create_objects() y += title5->get_h() + margin; add_subwindow(title6 = new BC_Title(x, y, "V:")); + add_subwindow(current = new BC_Title(x2, title0->get_y(), "")); radius = new CWindowCoord(this, x2, title7->get_y(), mwindow->edl->session->eyedrop_radius); radius->create_objects(); radius->set_boundaries((int64_t)0, (int64_t)255); - add_subwindow(red = new BC_Title(x2, title1->get_y(), "0")); add_subwindow(green = new BC_Title(x2, title2->get_y(), "0")); add_subwindow(blue = new BC_Title(x2, title3->get_y(), "0")); + add_subwindow(rgb_hex = new BC_Title(x3, red->get_y(), "#000000")); add_subwindow(this->y = new BC_Title(x2, title4->get_y(), "0")); add_subwindow(this->u = new BC_Title(x2, title5->get_y(), "0")); add_subwindow(this->v = new BC_Title(x2, title6->get_y(), "0")); + add_subwindow(yuv_hex = new BC_Title(x3, this->y->get_y(), "#000000")); - y = title6->get_y() + this->v->get_h() + margin; + y = title6->get_y() + this->v->get_h() + 2*margin; add_subwindow(sample = new BC_SubWindow(x, y, 50, 50)); update(); unlock_window(); @@ -517,27 +520,44 @@ void CWindowEyedropGUI::create_objects() void CWindowEyedropGUI::update() { + char string[BCTEXTLEN]; + sprintf(string, "%d, %d", + thread->gui->eyedrop_x, + thread->gui->eyedrop_y); + current->update(string); + radius->update((int64_t)mwindow->edl->session->eyedrop_radius); - red->update(mwindow->edl->local_session->red); - green->update(mwindow->edl->local_session->green); - blue->update(mwindow->edl->local_session->blue); + float r = mwindow->edl->local_session->red; + float g = mwindow->edl->local_session->green; + float b = mwindow->edl->local_session->blue; + red->update(r); + green->update(g); + blue->update(b); + int rx = 255*r + 0.5; bclamp(rx,0,255); + int gx = 255*g + 0.5; bclamp(gx,0,255); + int bx = 255*b + 0.5; bclamp(bx,0,255); + char rgb_text[BCSTRLEN]; + sprintf(rgb_text, "#%02x%02x%02x", rx, gx, bx); + rgb_hex->update(rgb_text); float y, u, v; YUV::rgb_to_yuv_f(mwindow->edl->local_session->red, mwindow->edl->local_session->green, mwindow->edl->local_session->blue, - y, - u, - v); + y, u, v); this->y->update(y); - this->u->update(u); - this->v->update(v); - - int red = (int)(CLIP(mwindow->edl->local_session->red, 0, 1) * 0xff); - int green = (int)(CLIP(mwindow->edl->local_session->green, 0, 1) * 0xff); - int blue = (int)(CLIP(mwindow->edl->local_session->blue, 0, 1) * 0xff); - sample->set_color((red << 16) | (green << 8) | blue); + this->u->update(u); u += 0.5; + this->v->update(v); v += 0.5; + int yx = 255*y + 0.5; bclamp(yx,0,255); + int ux = 255*u + 0.5; bclamp(ux,0,255); + int vx = 255*v + 0.5; bclamp(vx,0,255); + char yuv_text[BCSTRLEN]; + sprintf(yuv_text, "#%02x%02x%02x", yx, ux, vx); + yuv_hex->update(yuv_text); + + int rgb = (rx << 16) | (gx << 8) | (bx << 0); + sample->set_color(rgb); sample->draw_box(0, 0, sample->get_w(), sample->get_h()); sample->set_color(BLACK); sample->draw_rectangle(0, 0, sample->get_w(), sample->get_h()); @@ -586,28 +606,27 @@ const _CVD Camera_Crv_Smooth = { FloatAuto::SMOOTH, true, "tan_smooth", - _("\"smooth\" Curve on current Camera Keyframes") + N_("\"smooth\" Curve on current Camera Keyframes") }; const _CVD Camera_Crv_Linear = { FloatAuto::LINEAR, true, "tan_linear", - _("\"linear\" Curve on current Camera Keyframes") + N_("\"linear\" Curve on current Camera Keyframes") }; const _CVD Projector_Crv_Smooth = { FloatAuto::SMOOTH, false, "tan_smooth", - _("\"smooth\" Curve on current Projector Keyframes") + N_("\"smooth\" Curve on current Projector Keyframes") }; const _CVD Projector_Crv_Linear = { FloatAuto::LINEAR, false, "tan_linear", - _("\"linear\" Curve on current Projector Keyframes") + N_("\"linear\" Curve on current Projector Keyframes") }; - // Implementation Class für Keyframe Curve Mode buttons // // This button reflects the state of the "current" keyframe @@ -635,7 +654,7 @@ CWindowCurveToggle::CWindowCurveToggle(_CVD mode, MWindow *mwindow, CWindowToolG { this->gui = gui; this->mwindow = mwindow; - set_tooltip(cfg.tooltip); + set_tooltip(_(cfg.tooltip)); } void CWindowCurveToggle::check_toggle_state(FloatAuto *x, FloatAuto *y, FloatAuto *z) @@ -810,9 +829,9 @@ void CWindowCameraGUI::handle_event() if(z_auto) { float zoom = atof(z->get_text()); - if(zoom > 10) zoom = 10; + if(zoom > 100.) zoom = 100.; else - if(zoom < 0) zoom = 0; + if(zoom < 0.01) zoom = 0.01; // Doesn't allow user to enter from scratch // if(zoom != atof(z->get_text())) // z->update(zoom); @@ -853,8 +872,11 @@ void CWindowCameraGUI::update() x->update(x_auto->get_value()); if(y_auto) y->update(y_auto->get_value()); - if(z_auto) - z->update(z_auto->get_value()); + if(z_auto) { + float value = z_auto->get_value(); + z->update(value); + thread->gui->composite_panel->cpanel_zoom->update(value); + } if( x_auto && y_auto && z_auto ) { @@ -1255,9 +1277,8 @@ void CWindowProjectorGUI::handle_event() if(z_auto) { float zoom = atof(z->get_text()); - if(zoom > 10000) zoom = 10000; - else - if(zoom < 0) zoom = 0; + if(zoom > 100.) zoom = 100.; + else if(zoom < 0.01) zoom = 0.01; // if (zoom != atof(z->get_text())) // z->update(zoom); z_auto->set_value(zoom); @@ -1297,8 +1318,11 @@ void CWindowProjectorGUI::update() x->update(x_auto->get_value()); if(y_auto) y->update(y_auto->get_value()); - if(z_auto) - z->update(z_auto->get_value()); + if(z_auto) { + float value = z_auto->get_value(); + z->update(value); + thread->gui->composite_panel->cpanel_zoom->update(value); + } if( x_auto && y_auto && z_auto ) { @@ -1876,7 +1900,7 @@ int CWindowMaskFeather::handle_event() mask, point, create_it); if(track) - { + { #ifdef USE_KEYFRAME_SPANNING // Create temp keyframe MaskAuto temp_keyframe(mwindow->edl, autos); @@ -1927,7 +1951,7 @@ int CWindowMaskValue::handle_event() #else int create_it = 1; #endif - + mwindow->undo->update_undo_before(_("mask value"), this); ((CWindowMaskGUI*)gui)->get_keyframe(track, autos, keyframe, mask, point, create_it);