canvas_auxwindow = aux;
}
-void Canvas::use_cwindow()
-{
- canvas_menu->use_cwindow();
- fullscreen_menu->use_cwindow();
-}
-
-void Canvas::use_rwindow()
-{
- canvas_menu->use_rwindow();
-}
-
-void Canvas::use_vwindow()
-{
- 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, int output_h, float zoom,
int canvas_h = get_canvas()->get_h(), out_h = canvas_h;
float conformed_ratio = conformed_w/conformed_h;
if( (float)out_w/out_h > conformed_ratio )
- out_w = out_h * conformed_ratio + 0.5;
+ out_w = out_h * conformed_ratio + 0.5f;
float ret = out_w >= canvas_w ? 0 : -0.5f*(canvas_w - out_w) / zoom_x;
return ret;
}
}
}
-
-int Canvas::use_fullscreen(int on)
+int Canvas::set_fullscreen(int on, int unlock)
{
+ int ret = 0;
+ BC_WindowBase *window = get_canvas();
+ if( unlock )
+ window->unlock_window();
if( on && !get_fullscreen() ) {
start_fullscreen();
- return 1;
+ ret = 1;
}
if( !on && get_fullscreen() ) {
stop_fullscreen();
- return 1;
+ ret = 1;
}
- return 0;
+ if( unlock )
+ window->lock_window("Canvas::set_fullscreen");
+ return ret;
}
void Canvas::start_fullscreen()
{
- set_fullscreen(1);
+ is_fullscreen = 1;
create_canvas();
}
void Canvas::stop_fullscreen()
{
- set_fullscreen(0);
+ is_fullscreen = 0;
create_canvas();
}
}
-
int Canvas::cursor_leave_event_base(BC_WindowBase *caller)
{
int result = 0;
{
int key = caller->get_keypress();
switch( key ) {
- case 'f':
- caller->unlock_window();
- use_fullscreen(get_fullscreen() ? 0 : 1);
- caller->lock_window("Canvas::keypress_event 1");
- break;
+ case 'f': {
+ int on = get_fullscreen() ? 0 : 1;
+ set_fullscreen(on, 1);
+ break; }
case ESC:
- caller->unlock_window();
- use_fullscreen(0);
- caller->lock_window("Canvas::keypress_event 2");
+ set_fullscreen(0, 1);
break;
default:
- return 0;
+ return caller->context_help_check_and_show();
}
return 1;
}
+// process_scope uses the refresh frame for opengl
void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
{
int best_color_model = output_frame->get_color_model();
}
else
refresh_frame->transfer_from(output_frame, -1);
+ draw_scope(refresh_frame, 1);
+}
+
+void Canvas::process_scope(VideoDevice *video, VFrame *frame)
+{
+ if( !scope_on() ) return;
+ int use_opengl =
+ video->out_config->driver == PLAYBACK_X11_GL &&
+ frame->get_opengl_state() != VFrame::RAM;
+ if( use_opengl ) {
+ update_refresh(video, frame);
+ frame = refresh_frame;
+ }
+ if( frame )
+ draw_scope(frame, 0);
}
void Canvas::clear(int flash)
{
BC_WindowBase *window = get_canvas();
if( !window ) return;
-
int window_w = window->get_w();
int window_h = window->get_h();
+ int color = get_clear_color();
+ window->set_color(color);
+
+ if( !edl ) {
+ window->draw_box(0, 0, window_w, window_h);
+ window->flash(0);
+ return;
+ }
+
float output_x1,output_y1, output_x2,output_y2;
float canvas_x1,canvas_y1, canvas_x2,canvas_y2;
get_transfers(edl,
output_x1, output_y1, output_x2, output_y2,
canvas_x1, canvas_y1, canvas_x2, canvas_y2);
- int color = get_clear_color();
- window->set_color(color);
if( canvas_y1 > 0 ) {
window->draw_box(0, 0, window_w, canvas_y1);
add_item(new CanvasSubWindowItem(canvas));
}
-void CanvasFullScreenPopup::use_cwindow()
-{
- add_item(new CanvasPopupAuto(canvas));
-}
-
CanvasSubWindowItem::CanvasSubWindowItem(Canvas *canvas)
: BC_MenuItem(_("Windowed"), "f", 'f')
{
{
// It isn't a problem to delete the canvas from in here because the event
// dispatcher is the canvas subwindow.
- canvas->subwindow->unlock_window();
- canvas->use_fullscreen(0);
- canvas->subwindow->lock_window("CanvasSubWindowItem::handle_event");
+ canvas->set_fullscreen(0, 1);
return 1;
}
}
CanvasZoomSize::CanvasZoomSize(Canvas *canvas)
- : BC_MenuItem(_("Zoom..."))
+ : BC_MenuItem(_("Resize Window..."))
{
this->canvas = canvas;
}
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));
-}
-
-void CanvasPopup::use_rwindow()
-{
- add_item(new CanvasPopupResetTranslation(canvas));
-}
-
-void CanvasPopup::use_vwindow()
-{
- add_item(new CanvasPopupRemoveSource(canvas));
-}
-
CanvasPopupAuto::CanvasPopupAuto(Canvas *canvas)
: BC_MenuItem(_("Zoom Auto"))
}
-
CanvasPopupResetTranslation::CanvasPopupResetTranslation(Canvas *canvas)
: BC_MenuItem(_("Reset translation"))
{
}
-
-CanvasToggleControls::CanvasToggleControls(Canvas *canvas)
- : BC_MenuItem(calculate_text(canvas->get_cwindow_controls()))
-{
- this->canvas = canvas;
-}
-int CanvasToggleControls::handle_event()
-{
- canvas->toggle_controls();
- set_text(calculate_text(canvas->get_cwindow_controls()));
- return 1;
-}
-
-char* CanvasToggleControls::calculate_text(int cwindow_controls)
-{
- if(!cwindow_controls)
- return _("Show controls");
- else
- return _("Hide controls");
-}
-
-
-
-
-
-
-
CanvasFullScreenItem::CanvasFullScreenItem(Canvas *canvas)
: BC_MenuItem(_("Fullscreen"), "f", 'f')
{
}
int CanvasFullScreenItem::handle_event()
{
- canvas->subwindow->unlock_window();
- canvas->use_fullscreen(1);
- canvas->subwindow->lock_window("CanvasFullScreenItem::handle_event");
+ canvas->set_fullscreen(1, 1);
return 1;
}
-
-
-
-
-
-
-
CanvasPopupRemoveSource::CanvasPopupRemoveSource(Canvas *canvas)
: BC_MenuItem(_("Close source"))
{