awindowgui / mwindowedit / label rework
[goodguy/history.git] / cinelerra-5.1 / cinelerra / cwindowtool.C
index 64c9f4f38710e0305a63ed991828a71a695d285c..caf0bf82d2953b65b9f4eeb2d9917d9a958cdd9b 100644 (file)
@@ -19,6 +19,9 @@
  *
  */
 
+#include <stdio.h>
+#include <stdint.h>
+
 #include "automation.h"
 #include "cicolors.h"
 #include "clip.h"
@@ -457,10 +460,6 @@ void CWindowCropGUI::update()
 }
 
 
-
-
-
-
 CWindowEyedropGUI::CWindowEyedropGUI(MWindow *mwindow, CWindowTool *thread)
  : CWindowToolGUI(mwindow,
        thread,
@@ -481,7 +480,9 @@ void CWindowEyedropGUI::create_objects()
        int y = margin;
        int x2 = 70;
        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;
 
@@ -498,6 +499,7 @@ 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);
@@ -521,6 +523,12 @@ 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);
@@ -590,28 +598,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
@@ -639,7 +646,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)
@@ -675,10 +682,6 @@ int CWindowCurveToggle::handle_event()
 }
 
 
-
-
-
-
 CWindowCameraGUI::CWindowCameraGUI(MWindow *mwindow, CWindowTool *thread)
  : CWindowToolGUI(mwindow,
        thread,
@@ -818,9 +821,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);
@@ -861,8 +864,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 )
        {
@@ -1120,21 +1126,6 @@ int CWindowCameraBottom::handle_event()
 }
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 CWindowProjectorGUI::CWindowProjectorGUI(MWindow *mwindow, CWindowTool *thread)
  : CWindowToolGUI(mwindow,
        thread,
@@ -1278,9 +1269,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);
@@ -1320,8 +1310,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 )
        {
@@ -1330,44 +1323,6 @@ void CWindowProjectorGUI::update()
        }
 }
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 CWindowProjectorLeft::CWindowProjectorLeft(MWindow *mwindow, CWindowProjectorGUI *gui, int x, int y)
  : BC_Button(x, y, mwindow->theme->get_image_set("left_justify"))
 {
@@ -1576,12 +1531,6 @@ int CWindowProjectorBottom::handle_event()
 }
 
 
-
-
-
-
-
-
 CWindowMaskMode::CWindowMaskMode(MWindow *mwindow,
        CWindowToolGUI *gui, int x, int y, const char *text)
  : BC_PopupMenu(x, y, 220, text, 1)
@@ -1943,7 +1892,7 @@ int CWindowMaskFeather::handle_event()
                        mask, point, create_it);
 
        if(track)
-       {       
+       {
 #ifdef USE_KEYFRAME_SPANNING
 // Create temp keyframe
                MaskAuto temp_keyframe(mwindow->edl, autos);
@@ -1994,7 +1943,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);
@@ -2046,6 +1995,30 @@ int CWindowMaskBeforePlugins::handle_event()
 }
 
 
+CWindowDisableOpenGLMasking::CWindowDisableOpenGLMasking(CWindowToolGUI *gui, int x, int y)
+ : BC_CheckBox(x, y, 1, _("Disable OpenGL masking"))
+{
+       this->gui = gui;
+}
+
+int CWindowDisableOpenGLMasking::handle_event()
+{
+       Track *track;
+       MaskAutos *autos;
+       MaskAuto *keyframe;
+       SubMask *mask;
+       MaskPoint *point;
+       ((CWindowMaskGUI*)gui)->get_keyframe(track, autos, keyframe, mask, point, 1);
+
+       if (keyframe) {
+               keyframe->disable_opengl_masking = get_value();
+               gui->update_preview();
+       }
+       return 1;
+}
+
+
+
 
 
 
@@ -2057,7 +2030,7 @@ CWindowMaskGUI::CWindowMaskGUI(MWindow *mwindow, CWindowTool *thread)
        thread,
        _(PROGRAM_NAME ": Mask"),
        330,
-       280)
+       310)
 {
        this->mwindow = mwindow;
        this->thread = thread;
@@ -2121,19 +2094,16 @@ void CWindowMaskGUI::create_objects()
 
        x = 10;
        y += this->y->get_h() + margin;
-       add_subwindow(title = new BC_Title(x, y, _("Press Ctrl to move a point")));
+       add_subwindow(title = new BC_Title(x, y, _("Press Shift to move an end point")));
        y += title->get_h() + margin;
-       add_subwindow(title = new BC_Title(x, y, _("Press Alt to translate the mask")));
+       add_subwindow(title = new BC_Title(x, y, _("Press Ctrl to move a control point")));
        y += title->get_h() + margin;
-       add_subwindow(title = new BC_Title(x, y, _("Press Shift to edit bezier curve")));
-
+       add_subwindow(title = new BC_Title(x, y, _("Press Alt to translate the mask")));
        y += 30;
-//     add_subwindow(title = new BC_Title(x, y, _("Apply mask before plugins:")));
 
-       add_subwindow(this->apply_before_plugins = new CWindowMaskBeforePlugins(this,
-               10,
-               y));
-//     this->apply_before_plugins->create_objects();
+       add_subwindow(this->apply_before_plugins = new CWindowMaskBeforePlugins(this, 10, y));
+       y += this->apply_before_plugins->get_h() + margin;
+       add_subwindow(this->disable_opengl_masking = new CWindowDisableOpenGLMasking(this, 10, y));
 
        update();
        unlock_window();
@@ -2201,6 +2171,7 @@ void CWindowMaskGUI::update()
                        feather->update((int64_t)autos->get_feather(position_i, PLAY_FORWARD));
                        value->update((int64_t)autos->get_value(position_i, PLAY_FORWARD));
                        apply_before_plugins->update((int64_t)keyframe->apply_before_plugins);
+                       disable_opengl_masking->update((int64_t)keyframe->disable_opengl_masking);
                }
        }