X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcanvas.h;h=1b1adb1d61f1a763d472b69438a440451e3d83a5;hp=1984269560882a1583377cce0ba19fcbb3bfd530;hb=e8453fdab4d5ed7b384279a5b37c92010ac13295;hpb=2e28d225c343f02500594688bf8d0528df40600c diff --git a/cinelerra-5.1/cinelerra/canvas.h b/cinelerra-5.1/cinelerra/canvas.h index 19842695..1b1adb1d 100644 --- a/cinelerra-5.1/cinelerra/canvas.h +++ b/cinelerra-5.1/cinelerra/canvas.h @@ -22,44 +22,28 @@ #ifndef CANVAS_H #define CANVAS_H +#include "canvas.inc" #include "edl.inc" #include "guicast.h" #include "mwindow.inc" #include "videodevice.inc" - // Output for all X11 video -class CanvasOutput; -class CanvasFullScreen; -class CanvasXScroll; -class CanvasYScroll; -class CanvasPopup; -class CanvasFullScreenPopup; -class CanvasToggleControls; - // The EDL arguments can be set to 0 if the canvas_w and canvas_h are used class Canvas { public: - Canvas(MWindow *mwindow, - BC_WindowBase *subwindow, - int x, - int y, - int w, - int h, - int output_w, - int output_h, + Canvas(MWindow *mwindow, BC_WindowBase *subwindow, + int x, int y, int w, int h, + int output_w, int output_h, int use_scrollbars); virtual ~Canvas(); void reset(); // Get dimensions given a zoom void calculate_sizes(float aspect_ratio, - int output_w, - int output_h, - float zoom, - int &w, - int &h); + int output_w, int output_h, float zoom, + int &w, int &h); // Lock access to the canvas pointer. // Must be called before get_canvas or locking the canvas. void lock_canvas(const char *location); @@ -88,21 +72,23 @@ public: virtual void status_event() {}; - virtual void reset_camera() {}; - virtual void reset_projector() {}; - virtual void zoom_resize_window(float percentage) {}; - virtual void zoom_auto() {}; - virtual int cursor_leave_event() { return 0; }; - virtual int cursor_enter_event() { return 0; }; - virtual int button_release_event() { return 0; }; + virtual void reset_camera() {} + virtual void reset_projector() {} + virtual void camera_keyframe() {} + virtual void projector_keyframe() {} + virtual void zoom_resize_window(float percentage) {} + virtual void zoom_auto() {} + virtual int cursor_leave_event() { return 0; } + virtual int cursor_enter_event() { return 0; } + virtual int button_release_event() { return 0; } virtual int button_press_event(); - virtual int cursor_motion_event() { return 0; }; + virtual int cursor_motion_event() { return 0; } virtual int need_overlays() { return 1; } - virtual void draw_overlays() { }; - virtual void toggle_controls() { } ; - virtual int get_cwindow_controls() { return 0; }; - virtual int get_fullscreen() { return 0; } - virtual void set_fullscreen(int value) { }; + virtual void draw_overlays() {} + virtual void toggle_controls() {} + virtual int get_cwindow_controls() { return 0; } + virtual int get_fullscreen(); + virtual void set_fullscreen(int value); int cursor_leave_event_base(BC_WindowBase *caller); int cursor_enter_event_base(BC_WindowBase *caller); @@ -214,6 +200,7 @@ public: // For cases where video is not enabled on the canvas but processing is // occurring for a single frame, this causes the status to update. int is_processing; + int is_fullscreen; // Cursor is inside video surface int cursor_inside; int view_x; @@ -335,6 +322,22 @@ public: CanvasToggleControls *toggle_controls; }; +class CanvasZoomSize : public BC_MenuItem +{ +public: + CanvasZoomSize(Canvas *canvas); + + Canvas *canvas; +}; + +class CanvasSizeSubMenu : public BC_SubMenu +{ +public: + CanvasSizeSubMenu(CanvasZoomSize *zoom_size); + + CanvasZoomSize *zoom_size; +}; + class CanvasPopupSize : public BC_MenuItem { public: @@ -369,6 +372,22 @@ public: Canvas *canvas; }; +class CanvasPopupCameraKeyframe : public BC_MenuItem +{ +public: + CanvasPopupCameraKeyframe(Canvas *canvas); + int handle_event(); + Canvas *canvas; +}; + +class CanvasPopupProjectorKeyframe : public BC_MenuItem +{ +public: + CanvasPopupProjectorKeyframe(Canvas *canvas); + int handle_event(); + Canvas *canvas; +}; + class CanvasToggleControls : public BC_MenuItem { public: