mwindow->session->cwindow_y,
mwindow->session->cwindow_w,
mwindow->session->cwindow_h,
- 100, 100, 1, 1, 1,
+ xS(100), yS(100), 1, 1, 1,
BC_WindowBase::get_resources()->bg_color,
mwindow->get_cwindow_display())
{
void panel_btn(fit_autos,(int all), fit_autos(all))
void panel_btn(set_editing_mode,(int mode), set_editing_mode(mode))
void panel_btn(set_auto_keyframes,(int v), set_auto_keyframes(v))
+void panel_btn(set_span_keyframes,(int v), set_span_keyframes(v))
void panel_btn(set_labels_follow_edits,(int v), set_labels_follow_edits(v))
#ifdef USE_SLIDER
CWindowSlider::CWindowSlider(MWindow *mwindow, CWindow *cwindow, int x, int y, int pixels)
- : BC_PercentageSlider(x,
- y,
- 0,
- pixels,
- pixels,
- 0,
- 1,
- 0)
+ : BC_PercentageSlider(x, y, 0, pixels, pixels, 0, 1, 0)
{
this->mwindow = mwindow;
this->cwindow = cwindow;
CWindowCanvas::CWindowCanvas(MWindow *mwindow, CWindowGUI *gui)
- : Canvas(mwindow,
- gui,
- mwindow->theme->ccanvas_x,
- mwindow->theme->ccanvas_y,
- mwindow->theme->ccanvas_w,
- mwindow->theme->ccanvas_h,
- 0,
- 0,
- mwindow->edl->session->cwindow_scrollbars)
+ : Canvas(mwindow, gui,
+ mwindow->theme->ccanvas_x, mwindow->theme->ccanvas_y,
+ mwindow->theme->ccanvas_w, mwindow->theme->ccanvas_h,
+ 0, 0, mwindow->edl->session->cwindow_scrollbars)
{
this->mwindow = mwindow;
this->gui = gui;
//printf("CWindowCanvas::draw_refresh 10\n");
}
-#define CROPHANDLE_W 10
-#define CROPHANDLE_H 10
+#define CROPHANDLE_W xS(10)
+#define CROPHANDLE_H yS(10)
void CWindowCanvas::draw_crophandle(int x, int y)
{
}
-#define CONTROL_W 10
-#define CONTROL_H 10
-#define FIRST_CONTROL_W 20
-#define FIRST_CONTROL_H 20
+#define CONTROL_W xS(10)
+#define CONTROL_H yS(10)
+#define FIRST_CONTROL_W xS(20)
+#define FIRST_CONTROL_H yS(20)
#undef BC_INFINITY
#define BC_INFINITY 65536
-#define RULERHANDLE_W 16
-#define RULERHANDLE_H 16
+#define RULERHANDLE_W xS(16)
+#define RULERHANDLE_H yS(16)
-int CWindowCanvas::do_ruler(int draw,
- int motion,
- int button_press,
- int button_release)
+int CWindowCanvas::do_ruler(int draw, int motion,
+ int button_press, int button_release)
{
int result = 0;
float x1 = mwindow->edl->session->ruler_x1;
{
double angle_value = fabs(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);
+ 360 / 2 / M_PI);
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 = fabs(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);
+ 360 / 2 / M_PI);
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));
if( draw && mask_gui && mask_gui->focused ) {
float fx = atof(mask_gui->focus_x->get_text());
float fy = atof(mask_gui->focus_y->get_text());
+ fx = (fx - half_track_w) * projector_z + projector_x;
+ fy = (fy - half_track_h) * projector_z + projector_y;
output_to_canvas(mwindow->edl, 0, fx, fy);
float r = bmax(cvs_win->get_w(), cvs_win->get_h());
float d = 0.005*r;
cx /= n; cy /= n;
if( !mask_gui->focused )
mask_gui->set_focused(0, cx, cy);
+ cx = (cx - half_track_w) * projector_z + projector_x;
+ cy = (cy - half_track_h) * projector_z + projector_y;
output_to_canvas(mwindow->edl, 0, cx, cy);
float r = bmax(cvs_win->get_w(), cvs_win->get_h());
float d = 0.007*r;
// Make copy of current parameters in local keyframe
gui->mask_keyframe =
(MaskAuto*)gui->cwindow->calculate_affected_auto(
- mask_autos,
- 0);
+ mask_autos, 0);
gui->orig_mask_keyframe->copy_data(gui->mask_keyframe);
#else
gui->mask_keyframe =
(MaskAuto*)gui->cwindow->calculate_affected_auto(
- mask_autos,
- 1);
+ mask_autos, 1);
#endif
}
SubMask *mask = gui->mask_keyframe->get_submask(mwindow->edl->session->cwindow_mask);
case CWINDOW_MASK_TRANSLATE: {
if( !mask_gui ) break;
+ int mode = mask_gui->scale_mode;
MaskAuto *keyframe = gui->mask_keyframe;
int gang = mask_gui->gang_focus->get_value();
float dx = mask_cursor_x - gui->x_origin;
MaskPoints &points = sub_mask->points;
for( int i=0; i<points.size(); ++i ) {
MaskPoint *point = points[i];
- point->x += dx;
- point->y += dy;
+ if( mode == MASK_SCALE_X || mode == MASK_SCALE_XY ) point->x += dx;
+ if( mode == MASK_SCALE_Y || mode == MASK_SCALE_XY ) point->y += dy;
}
}
gui->x_origin = mask_cursor_x;
double ds = accel/64., dt = accel*M_PI/360.;
double scale = button_no == WHEEL_UP ? 1.+ds : 1.-ds;
int mode = mask_gui->scale_mode;
- double xscale = !rotate && (mode == 0 || mode == 2 ) ? scale : 1.;
- double yscale = !rotate && (mode == 1 || mode == 2 ) ? scale : 1.;
+ double xscale = !rotate && (mode == MASK_SCALE_X ||
+ mode == MASK_SCALE_XY ) ? scale : 1.;
+ double yscale = !rotate && (mode == MASK_SCALE_Y ||
+ mode == MASK_SCALE_XY ) ? scale : 1.;
double theta = button_no == WHEEL_UP ? dt : -dt;
if( rotate ? theta==0 : scale==1 ) break;
float st = sin(theta), ct = cos(theta);
int CWindowCanvas::do_mask_focus()
{
- CWindowMaskGUI *mask_gui = (CWindowMaskGUI*) gui->tool_panel->tool_gui;
+ Track *track = gui->cwindow->calculate_affected_track();
+ int64_t position = track->to_units(
+ mwindow->edl->local_session->get_selectionstart(1),
+ 0);
+ float projector_x, projector_y, projector_z;
+ track->automation->get_projector(
+ &projector_x, &projector_y, &projector_z,
+ position, PLAY_FORWARD);
float cx = get_cursor_x(), cy = get_cursor_y();
canvas_to_output(mwindow->edl, 0, cx, cy);
+ projector_x += mwindow->edl->session->output_w / 2;
+ projector_y += mwindow->edl->session->output_h / 2;
+ float half_track_w = (float)track->track_w / 2;
+ float half_track_h = (float)track->track_h / 2;
+ cx = (cx - projector_x) / projector_z + half_track_w;
+ cy = (cy - projector_y) / projector_z + half_track_h;
+ CWindowMaskGUI *mask_gui = (CWindowMaskGUI*) gui->tool_panel->tool_gui;
mask_gui->set_focused(1, cx, cy);
return 1;
}
float z_val = gui->affected_z->get_value();
if( gui->translating_zoom ) {
- float z = gui->center_z + (cursor_y - gui->y_origin) / 128;
+ float z = gui->center_z + (cursor_y - gui->y_origin) / yS(128);
if( z < 0 ) z = 0;
if( !EQUIV(z_val, z) ) {
rerender = 1;
return mwindow->session->cwindow_controls;
}
-
+int CWindowCanvas::get_clear_color()
+{
+ int color = mwindow->edl->session->cwindow_clear_color;
+ if( color < 0 ) color = get_canvas()->get_bg_color();
+ return color;
+}