in_x2 > in_x1 &&
in_y2 > in_y1)
{
+// input scaled from session to refresh frame coordinates
+ int ow = get_output_w(mwindow->edl);
+ int oh = get_output_h(mwindow->edl);
+ int rw = refresh_frame->get_w();
+ int rh = refresh_frame->get_h();
+ float xs = (float)rw / ow;
+ float ys = (float)rh / oh;
+ in_x1 *= xs; in_x2 *= xs;
+ in_y1 *= ys; in_y2 *= ys;
// Can't use OpenGL here because it is called asynchronously of the
// playback operation.
get_canvas()->draw_vframe(refresh_frame,
(int)out_x1,
(int)out_y1,
(int)(out_x2 - out_x1),
- (int)(out_y2 - out_y1));
-// if refresh_frame session geometry...
-// (int)in_x1,
-// (int)in_y1,
-// (int)(in_x2 - in_x1),
-// (int)(in_y2 - in_y1),
-// 0);
+ (int)(out_y2 - out_y1),
+ (int)in_x1,
+ (int)in_y1,
+ (int)(in_x2 - in_x1),
+ (int)(in_y2 - in_y1),
+ 0);
}
}
else
{
last_center_x = gui->affected_x->get_value();
last_center_y = gui->affected_y->get_value();
- float x = gui->center_x + cursor_x - gui->x_origin;
- float y = gui->center_y + cursor_y - gui->y_origin;
+ float dx = cursor_x - gui->x_origin;
+ float dy = cursor_y - gui->y_origin;
+ if(gui->current_operation == CWINDOW_CAMERA ) {
+ dx = -dx; dy = -dy;
+ }
+ float x = gui->center_x + dx;
+ float y = gui->center_y + dy;
gui->affected_x->set_value(x);
gui->affected_y->set_value(y);
if( !EQUIV(last_center_x, x) || !EQUIV(last_center_y, y) )