canvas_subwindow = 0;
canvas_fullscreen = 0;
is_processing = 0;
+ is_fullscreen = 0;
cursor_inside = 0;
}
canvas_menu->use_vwindow();
}
+int Canvas::get_fullscreen()
+{
+ return is_fullscreen;
+}
+
+void Canvas::set_fullscreen(int value)
+{
+ is_fullscreen = value;
+}
+
// Get dimensions given a zoom
void Canvas::calculate_sizes(float aspect_ratio,
int output_w,
//printf("Canvas::get_scrollbars 5 %d %d\n", get_xscroll(), get_yscroll());
}
+
+void Canvas::update_geometry(EDL *edl, int x, int y, int w, int h)
+{
+ int redraw = 0;
+ if( this->x != x || this->y != y ||
+ this->w != w || this->h != h ) redraw = 1;
+ if( !redraw ) {
+ int vx = x, vy = y, vw = w, vh = h;
+ get_scrollbars(edl, vx, vy, vw, vh);
+ if( vx != view_x || vy != view_y ||
+ vw != view_w || vh != view_h ) redraw = 1;
+ }
+ if( !redraw ) return;
+ reposition_window(edl, x, y, w, h);
+}
+
void Canvas::reposition_window(EDL *edl, int x, int y, int w, int h)
{
this->x = view_x = x; this->y = view_y = y;
canvas_subwindow->flash(0);
}
}
-
-
draw_refresh(0);
}
int x, y, w, h;
wdw->get_fullscreen_geometry(x, y, w, h);
- if( canvas_fullscreen )
- {
+ if( canvas_fullscreen ) {
if( x != canvas_fullscreen->get_x() ||
y != canvas_fullscreen->get_y() ||
w != canvas_fullscreen->get_w() ||
canvas_fullscreen = 0;
}
}
- if(!canvas_fullscreen)
- {
+ if( !canvas_fullscreen )
canvas_fullscreen = new CanvasFullScreen(this, w, h);
- }
- else
- {
- canvas_fullscreen->reposition_window(x, y);
- canvas_fullscreen->show_window();
- }
+ canvas_fullscreen->show_window();
+ canvas_fullscreen->sync_display();
+ canvas_fullscreen->reposition_window(x, y);
}
-
- if(!video_on)
- {
+ if( !video_on ) {
get_canvas()->lock_window("Canvas::create_canvas 1");
draw_refresh();
get_canvas()->unlock_window();
}
- if(video_on) get_canvas()->start_video();
+ if( video_on )
+ get_canvas()->start_video();
get_canvas()->lock_window("Canvas::create_canvas 2");
get_canvas()->focus();
refresh_frame->transfer_from(output_frame, -1);
}
-
-void Canvas::clear(int flush)
+void Canvas::clear(int flash)
{
- if( refresh_frame )
- refresh_frame->clear_frame();
- BC_WindowBase *wdw = get_canvas();
- if( !wdw ) return;
- wdw->set_bg_color(BLACK);
- wdw->clear_box(0,0, wdw->get_w(), wdw->get_h());
- wdw->flash(flush);
+ BC_WindowBase *cwdw = get_canvas();
+ if( !cwdw ) return;
+ cwdw->set_bg_color(BLACK);
+ cwdw->clear_box(0,0, cwdw->get_w(), cwdw->get_h());
+ if( flash ) cwdw->flash();
}
-
CanvasOutput::CanvasOutput(Canvas *canvas,
int x,
int y,
{
}
+CanvasZoomSize::CanvasZoomSize(Canvas *canvas)
+ : BC_MenuItem(_("Zoom..."))
+{
+ this->canvas = canvas;
+}
+
+CanvasSizeSubMenu::CanvasSizeSubMenu(CanvasZoomSize *zoom_size)
+{
+ this->zoom_size = zoom_size;
+}
+
void CanvasPopup::create_objects()
{
add_item(new BC_MenuItem("-"));
add_item(new CanvasFullScreenItem(canvas));
- add_item(new CanvasPopupSize(canvas, _("Zoom 25%"), 0.25));
- add_item(new CanvasPopupSize(canvas, _("Zoom 33%"), 0.33));
- add_item(new CanvasPopupSize(canvas, _("Zoom 50%"), 0.5));
- add_item(new CanvasPopupSize(canvas, _("Zoom 75%"), 0.75));
- add_item(new CanvasPopupSize(canvas, _("Zoom 100%"), 1.0));
- add_item(new CanvasPopupSize(canvas, _("Zoom 150%"), 1.5));
- add_item(new CanvasPopupSize(canvas, _("Zoom 200%"), 2.0));
- add_item(new CanvasPopupSize(canvas, _("Zoom 300%"), 3.0));
- add_item(new CanvasPopupSize(canvas, _("Zoom 400%"), 4.0));
+
+ CanvasZoomSize *zoom_size = new CanvasZoomSize(canvas);
+ add_item(zoom_size);
+ CanvasSizeSubMenu *submenu = new CanvasSizeSubMenu(zoom_size);
+ zoom_size->add_submenu(submenu);
+
+ submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 25%"), 0.25));
+ submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 33%"), 0.33));
+ submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 50%"), 0.5));
+ submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 75%"), 0.75));
+ submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 100%"), 1.0));
+ submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 150%"), 1.5));
+ submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 200%"), 2.0));
+ submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 300%"), 3.0));
+ submenu->add_submenuitem(new CanvasPopupSize(canvas, _("Zoom 400%"), 4.0));
}
void CanvasPopup::use_cwindow()
add_item(new CanvasPopupAuto(canvas));
add_item(new CanvasPopupResetCamera(canvas));
add_item(new CanvasPopupResetProjector(canvas));
+ add_item(new CanvasPopupCameraKeyframe(canvas));
+ add_item(new CanvasPopupProjectorKeyframe(canvas));
add_item(toggle_controls = new CanvasToggleControls(canvas));
}
CanvasPopupResetCamera::CanvasPopupResetCamera(Canvas *canvas)
- : BC_MenuItem(_("Reset camera"), "F11", KEY_F11)
+ : BC_MenuItem(_("Reset camera"), _("F11"), KEY_F11)
{
this->canvas = canvas;
}
return 1;
}
-
-
CanvasPopupResetProjector::CanvasPopupResetProjector(Canvas *canvas)
- : BC_MenuItem(_("Reset projector"), "F12", KEY_F12)
+ : BC_MenuItem(_("Reset projector"), _("F12"), KEY_F12)
{
this->canvas = canvas;
}
}
+CanvasPopupCameraKeyframe::CanvasPopupCameraKeyframe(Canvas *canvas)
+ : BC_MenuItem(_("Camera keyframe"), _("Shift-F11"), KEY_F11)
+{
+ this->canvas = canvas;
+ set_shift(1);
+}
+int CanvasPopupCameraKeyframe::handle_event()
+{
+ canvas->camera_keyframe();
+ return 1;
+}
+
+CanvasPopupProjectorKeyframe::CanvasPopupProjectorKeyframe(Canvas *canvas)
+ : BC_MenuItem(_("Projector keyframe"), _("Shift-F12"), KEY_F12)
+{
+ this->canvas = canvas;
+ set_shift(1);
+}
+int CanvasPopupProjectorKeyframe::handle_event()
+{
+ canvas->projector_keyframe();
+ return 1;
+}
+
+
CanvasPopupResetTranslation::CanvasPopupResetTranslation(Canvas *canvas)
: BC_MenuItem(_("Reset translation"))