projects
/
goodguy
/
history.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add ffmpeg audio pts tolerance, update plugin info
[goodguy/history.git]
/
cinelerra-5.1
/
cinelerra
/
cwindowtool.C
diff --git
a/cinelerra-5.1/cinelerra/cwindowtool.C
b/cinelerra-5.1/cinelerra/cwindowtool.C
index f326635636e1240070d28c29711e564457e41a85..f0f372a5aba2f82315f2ee38d7a232af060e21a8 100644
(file)
--- a/
cinelerra-5.1/cinelerra/cwindowtool.C
+++ b/
cinelerra-5.1/cinelerra/cwindowtool.C
@@
-83,6
+83,7
@@
void CWindowTool::start_tool(int operation)
//printf("CWindowTool::start_tool 1\n");
if(current_tool != operation)
{
//printf("CWindowTool::start_tool 1\n");
if(current_tool != operation)
{
+ int previous_tool = current_tool;
current_tool = operation;
switch(operation)
{
current_tool = operation;
switch(operation)
{
@@
-104,6
+105,10
@@
void CWindowTool::start_tool(int operation)
case CWINDOW_RULER:
new_gui = new CWindowRulerGUI(mwindow, this);
break;
case CWINDOW_RULER:
new_gui = new CWindowRulerGUI(mwindow, this);
break;
+ case CWINDOW_PROTECT:
+ mwindow->edl->session->tool_window = 0;
+ gui->composite_panel->operation[CWINDOW_TOOL_WINDOW]->update(0);
+ // fall thru
default:
result = 1;
stop_tool();
default:
result = 1;
stop_tool();
@@
-120,13
+125,11
@@
void CWindowTool::start_tool(int operation)
output_lock->lock("CWindowTool::start_tool");
this->tool_gui = new_gui;
tool_gui->create_objects();
output_lock->lock("CWindowTool::start_tool");
this->tool_gui = new_gui;
tool_gui->create_objects();
-
- if(mwindow->edl->session->tool_window &&
- mwindow->session->show_cwindow) tool_gui->show_window();
- tool_gui->lock_window("CWindowTool::start_tool 1");
- tool_gui->flush();
- tool_gui->unlock_window();
-
+ if( previous_tool == CWINDOW_PROTECT || previous_tool == CWINDOW_NONE ) {
+ mwindow->edl->session->tool_window = 1;
+ gui->composite_panel->operation[CWINDOW_TOOL_WINDOW]->update(1);
+ }
+ update_show_window();
// Signal thread to run next tool GUI
input_lock->unlock();
// Signal thread to run next tool GUI
input_lock->unlock();
@@
-289,9
+292,29
@@
int CWindowToolGUI::close_event()
int CWindowToolGUI::keypress_event()
{
int CWindowToolGUI::keypress_event()
{
- if(get_keypress() == 'w' || get_keypress() == 'W')
+ int result = 0;
+
+ switch( get_keypress() ) {
+ case 'w':
+ case 'W':
return close_event();
return close_event();
- return 0;
+ case KEY_F1:
+ case KEY_F2:
+ case KEY_F3:
+ case KEY_F4:
+ case KEY_F5:
+ case KEY_F6:
+ case KEY_F7:
+ case KEY_F8:
+ case KEY_F9:
+ case KEY_F10:
+ case KEY_F11:
+ case KEY_F12:
+ resend_event(thread->gui);
+ result = 1;
+ }
+
+ return result;
}
int CWindowToolGUI::translation_event()
}
int CWindowToolGUI::translation_event()
@@
-546,7
+569,7
@@
void CWindowEyedropGUI::update()
rgb_hex->update(rgb_text);
float y, u, v;
rgb_hex->update(rgb_text);
float y, u, v;
- YUV::rgb_to_yuv_f(r, g, b, y, u, v);
+ YUV::
yuv.
rgb_to_yuv_f(r, g, b, y, u, v);
this->y->update(y);
this->u->update(u); u += 0.5;
this->v->update(v); v += 0.5;
this->y->update(y);
this->u->update(u); u += 0.5;
this->v->update(v); v += 0.5;
@@
-794,8
+817,7
@@
void CWindowCameraGUI::update_preview()
mwindow->gui->draw_overlays(1);
mwindow->sync_parameters(CHANGE_PARAMS);
mwindow->gui->unlock_window();
mwindow->gui->draw_overlays(1);
mwindow->sync_parameters(CHANGE_PARAMS);
mwindow->gui->unlock_window();
- mwindow->cwindow->playback_engine->que->send_command(CURRENT_FRAME,
- CHANGE_NONE, mwindow->edl, 1);
+ mwindow->cwindow->refresh_frame(CHANGE_NONE);
mwindow->cwindow->gui->lock_window("CWindowCameraGUI::update_preview");
mwindow->cwindow->gui->canvas->draw_refresh();
mwindow->cwindow->gui->unlock_window();
mwindow->cwindow->gui->lock_window("CWindowCameraGUI::update_preview");
mwindow->cwindow->gui->canvas->draw_refresh();
mwindow->cwindow->gui->unlock_window();
@@
-891,7
+913,9
@@
void CWindowCameraGUI::update()
if(z_auto) {
float value = z_auto->get_value();
z->update(value);
if(z_auto) {
float value = z_auto->get_value();
z->update(value);
+ thread->gui->lock_window("CWindowCameraGUI::update");
thread->gui->composite_panel->cpanel_zoom->update(value);
thread->gui->composite_panel->cpanel_zoom->update(value);
+ thread->gui->unlock_window();
}
if( x_auto && y_auto && z_auto )
}
if( x_auto && y_auto && z_auto )
@@
-1239,8
+1263,7
@@
void CWindowProjectorGUI::update_preview()
mwindow->sync_parameters(CHANGE_PARAMS);
mwindow->gui->draw_overlays(1);
mwindow->gui->unlock_window();
mwindow->sync_parameters(CHANGE_PARAMS);
mwindow->gui->draw_overlays(1);
mwindow->gui->unlock_window();
- mwindow->cwindow->playback_engine->que->send_command(CURRENT_FRAME,
- CHANGE_NONE, mwindow->edl, 1);
+ mwindow->cwindow->refresh_frame(CHANGE_NONE);
mwindow->cwindow->gui->lock_window("CWindowProjectorGUI::update_preview");
mwindow->cwindow->gui->canvas->draw_refresh();
mwindow->cwindow->gui->unlock_window();
mwindow->cwindow->gui->lock_window("CWindowProjectorGUI::update_preview");
mwindow->cwindow->gui->canvas->draw_refresh();
mwindow->cwindow->gui->unlock_window();
@@
-1334,7
+1357,9
@@
void CWindowProjectorGUI::update()
if(z_auto) {
float value = z_auto->get_value();
z->update(value);
if(z_auto) {
float value = z_auto->get_value();
z->update(value);
+ thread->gui->lock_window("CWindowProjectorGUI::update");
thread->gui->composite_panel->cpanel_zoom->update(value);
thread->gui->composite_panel->cpanel_zoom->update(value);
+ thread->gui->unlock_window();
}
if( x_auto && y_auto && z_auto )
}
if( x_auto && y_auto && z_auto )
@@
-1664,6
+1689,9
@@
int CWindowMaskDelete::handle_event()
temp_keyframe.copy_data(keyframe);
// Update parameter
SubMask *submask = temp_keyframe.get_submask(mwindow->edl->session->cwindow_mask);
temp_keyframe.copy_data(keyframe);
// Update parameter
SubMask *submask = temp_keyframe.get_submask(mwindow->edl->session->cwindow_mask);
+ if( shift_down() )
+ submask->points.remove_all_objects();
+
for(int i = mwindow->cwindow->gui->affected_point;
i < submask->points.total - 1;
i++)
for(int i = mwindow->cwindow->gui->affected_point;
i < submask->points.total - 1;
i++)
@@
-1685,6
+1713,8
@@
int CWindowMaskDelete::handle_event()
current; )
{
SubMask *submask = current->get_submask(mwindow->edl->session->cwindow_mask);
current; )
{
SubMask *submask = current->get_submask(mwindow->edl->session->cwindow_mask);
+ if( shift_down() )
+ submask->points.remove_all_objects();
for(int i = mwindow->cwindow->gui->affected_point;
i < submask->points.total - 1;
for(int i = mwindow->cwindow->gui->affected_point;
i < submask->points.total - 1;
@@
-2047,11
+2077,8
@@
int CWindowDisableOpenGLMasking::handle_event()
CWindowMaskGUI::CWindowMaskGUI(MWindow *mwindow, CWindowTool *thread)
CWindowMaskGUI::CWindowMaskGUI(MWindow *mwindow, CWindowTool *thread)
- : CWindowToolGUI(mwindow,
- thread,
- _(PROGRAM_NAME ": Mask"),
- 330,
- 310)
+ : CWindowToolGUI(mwindow, thread,
+ _(PROGRAM_NAME ": Mask"), 330, 320)
{
this->mwindow = mwindow;
this->thread = thread;
{
this->mwindow = mwindow;
this->thread = thread;
@@
-2119,6
+2146,8
@@
void CWindowMaskGUI::create_objects()
y += title->get_h() + margin;
add_subwindow(title = new BC_Title(x, y, _("Press Ctrl to move a control point")));
y += title->get_h() + margin;
y += title->get_h() + margin;
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, _("Shift+click Delete to delete the mask")));
+ y += title->get_h() + margin;
add_subwindow(title = new BC_Title(x, y, _("Press Alt to translate the mask")));
y += 30;
add_subwindow(title = new BC_Title(x, y, _("Press Alt to translate the mask")));
y += 30;
@@
-2263,8
+2292,7
@@
void CWindowMaskGUI::update_preview()
mwindow->sync_parameters(CHANGE_PARAMS);
mwindow->gui->draw_overlays(1);
mwindow->gui->unlock_window();
mwindow->sync_parameters(CHANGE_PARAMS);
mwindow->gui->draw_overlays(1);
mwindow->gui->unlock_window();
- mwindow->cwindow->playback_engine->que->send_command(CURRENT_FRAME,
- CHANGE_NONE, mwindow->edl, 1);
+ mwindow->cwindow->refresh_frame(CHANGE_NONE);
mwindow->cwindow->gui->lock_window("CWindowMaskGUI::update_preview");
mwindow->cwindow->gui->canvas->draw_refresh();
mwindow->cwindow->gui->unlock_window();
mwindow->cwindow->gui->lock_window("CWindowMaskGUI::update_preview");
mwindow->cwindow->gui->canvas->draw_refresh();
mwindow->cwindow->gui->unlock_window();
@@
-2286,30
+2314,32
@@
CWindowRulerGUI::~CWindowRulerGUI()
void CWindowRulerGUI::create_objects()
{
void CWindowRulerGUI::create_objects()
{
- int x = 10, y = 10;
+ int x = 10, y = 10
, x1 = 100
;
BC_Title *title;
lock_window("CWindowRulerGUI::create_objects");
add_subwindow(title = new BC_Title(x, y, _("Current:")));
BC_Title *title;
lock_window("CWindowRulerGUI::create_objects");
add_subwindow(title = new BC_Title(x, y, _("Current:")));
- add_subwindow(current = new BC_T
itle(x + title->get_w() + 10, y
, ""));
+ add_subwindow(current = new BC_T
extBox(x1, y, 200, 1
, ""));
y += title->get_h() + 5;
y += title->get_h() + 5;
-
add_subwindow(title = new BC_Title(x, y, _("Point 1:")));
add_subwindow(title = new BC_Title(x, y, _("Point 1:")));
- add_subwindow(point1 = new BC_T
itle(x + title->get_w() + 10, y
, ""));
+ add_subwindow(point1 = new BC_T
extBox(x1, y, 200, 1
, ""));
y += title->get_h() + 5;
y += title->get_h() + 5;
-
add_subwindow(title = new BC_Title(x, y, _("Point 2:")));
add_subwindow(title = new BC_Title(x, y, _("Point 2:")));
- add_subwindow(point2 = new BC_Title(x + title->get_w() + 10, y, ""));
+ add_subwindow(point2 = new BC_TextBox(x1, y, 200, 1, ""));
+ y += title->get_h() + 5;
+ add_subwindow(title = new BC_Title(x, y, _("Deltas:")));
+ add_subwindow(deltas = new BC_TextBox(x1, y, 200, 1, ""));
y += title->get_h() + 5;
y += title->get_h() + 5;
-
add_subwindow(title = new BC_Title(x, y, _("Distance:")));
add_subwindow(title = new BC_Title(x, y, _("Distance:")));
- add_subwindow(distance = new BC_T
itle(x + title->get_w() + 10, y
, ""));
+ add_subwindow(distance = new BC_T
extBox(x1, y, 200, 1
, ""));
y += title->get_h() + 5;
add_subwindow(title = new BC_Title(x, y, _("Angle:")));
y += title->get_h() + 5;
add_subwindow(title = new BC_Title(x, y, _("Angle:")));
- add_subwindow(angle = new BC_T
itle(x + title->get_w() + 10, y
, ""));
+ add_subwindow(angle = new BC_T
extBox(x1, y, 200, 1
, ""));
y += title->get_h() + 10;
char string[BCTEXTLEN];
y += title->get_h() + 10;
char string[BCTEXTLEN];
- sprintf(string, _("Press Ctrl to lock ruler to the\nnearest 45%c angle."), 0xb0);
+ sprintf(string,
+ _("Press Ctrl to lock ruler to the\nnearest 45%c%c angle."),
+ 0xc2, 0xb0); // degrees utf
add_subwindow(title = new BC_Title(x,
y,
string));
add_subwindow(title = new BC_Title(x,
y,
string));
@@
-2324,42
+2354,27
@@
void CWindowRulerGUI::create_objects()
void CWindowRulerGUI::update()
{
void CWindowRulerGUI::update()
{
- double distance_value =
- sqrt(SQR(mwindow->edl->session->ruler_x2 - mwindow->edl->session->ruler_x1) +
- SQR(mwindow->edl->session->ruler_y2 - mwindow->edl->session->ruler_y1));
- double angle_value = atan((mwindow->edl->session->ruler_y2 - mwindow->edl->session->ruler_y1) /
- (mwindow->edl->session->ruler_x2 - mwindow->edl->session->ruler_x1)) *
- 360 /
- 2 /
- M_PI;
-
- if(EQUIV(distance_value, 0.0))
- {
- angle_value = 0.0;
- }
- else
- if(angle_value < 0)
- {
- angle_value *= -1;
- }
-
char string[BCTEXTLEN];
char string[BCTEXTLEN];
- sprintf(string, "%d, %d",
- mwindow->session->cwindow_output_x,
-
mwindow->session->cwindow_output_
y);
+ int cx = mwindow->session->cwindow_output_x;
+ int cy = mwindow->session->cwindow_output_y;
+
sprintf(string, "%d, %d", cx, c
y);
current->update(string);
current->update(string);
- sprintf(string, "%.0f, %.0f",
- mwindow->edl->session->ruler_x1,
-
mwindow->edl->session->ruler_
y1);
+ double x1 = mwindow->edl->session->ruler_x1;
+ double y1 = mwindow->edl->session->ruler_y1;
+
sprintf(string, "%.0f, %.0f", x1,
y1);
point1->update(string);
point1->update(string);
- sprintf(string, "%.0f, %.0f",
- mwindow->edl->session->ruler_x2,
-
mwindow->edl->session->ruler_
y2);
+ double x2 = mwindow->edl->session->ruler_x2;
+ double y2 = mwindow->edl->session->ruler_y2;
+
sprintf(string, "%.0f, %.0f", x2,
y2);
point2->update(string);
point2->update(string);
-
- sprintf(string, _("%0.01f pixels"), distance_value);
+ double dx = x2 - x1, dy = y2 - y1;
+ sprintf(string, "%s%.0f, %s%.0f", (dx>=0? "+":""), dx, (dy>=0? "+":""), dy);
+ deltas->update(string);
+ double d = sqrt(dx*dx + dy*dy);
+ sprintf(string, _("%0.01f pixels"), d);
distance->update(string);
distance->update(string);
- sprintf(string, "%0.02f %c", angle_value, 0xb0);
+ double a = d > 0 ? (atan2(-dy, dx) * 180/M_PI) : 0.;
+ sprintf(string, "%0.02f %c%c", a, 0xc2, 0xb0);
angle->update(string);
}
angle->update(string);
}