andrew file-exr/png/tiff mods, png add depth/compression, exr add b44-dwab, tiff...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / zwindowgui.C
index 62bcb93e17e58d76747ced7436a3b137089feb7f..6f1f8132848bfc62b8115c46640c30c445230a8c 100644 (file)
@@ -85,7 +85,7 @@ int ZWindowGUI::translation_event()
 
 int ZWindowGUI::close_event()
 {
-       set_done(0);
+       set_done(1);
        return 1;
 }
 
@@ -98,11 +98,12 @@ int ZWindowGUI::keypress_event()
        }
        int result = 1;
        switch( key ) {
-       case 'f':
-               canvas->set_fullscreen(canvas->get_fullscreen() ? 0 : 1);
-               break;
+       case 'f': {
+               int on = canvas->get_fullscreen() ? 0 : 1;
+               canvas->set_fullscreen(on, 1);
+               break; }
        case ESC:
-               canvas->set_fullscreen(0);
+               canvas->set_fullscreen(0, 1);
                break;
        default:
                unlock_window();
@@ -193,6 +194,18 @@ int ZWindowGUI::draw_overlays()
        return 1;
 }
 
+
+ZWindowCanvasTileMixers::ZWindowCanvasTileMixers(ZWindowCanvas *canvas)
+ : BC_MenuItem(_("Tile Mixers"))
+{
+       this->canvas = canvas;
+}
+int ZWindowCanvasTileMixers::handle_event()
+{
+       canvas->mwindow->tile_mixers();
+       return 1;
+}
+
 ZWindowCanvas::ZWindowCanvas(MWindow *mwindow, ZWindowGUI *gui,
                int x, int y, int w, int h)
  : Canvas(mwindow, gui, x,y, w,h, 0,0,0)
@@ -201,6 +214,12 @@ ZWindowCanvas::ZWindowCanvas(MWindow *mwindow, ZWindowGUI *gui,
        this->gui = gui;
 }
 
+void ZWindowCanvas::create_objects(EDL *edl)
+{
+       Canvas::create_objects(edl);
+       canvas_menu->add_item(new ZWindowCanvasTileMixers(this));
+}
+
 void ZWindowCanvas::close_source()
 {
        gui->unlock_window();
@@ -213,7 +232,6 @@ void ZWindowCanvas::close_source()
        }
 }
 
-
 void ZWindowCanvas::draw_refresh(int flush)
 {
        EDL *edl = gui->zwindow->edl;
@@ -258,3 +276,33 @@ float ZWindowCanvas::get_auto_zoom()
        return zoom_x < zoom_y ? zoom_x : zoom_y;
 }
 
+float ZWindowCanvas::get_zoom()
+{
+        return gui->zwindow->zoom;
+}
+void ZWindowCanvas::update_zoom(int x, int y, float zoom)
+{
+        gui->zwindow->zoom = zoom;
+}
+
+void ZWindowCanvas::zoom_auto()
+{
+       EDL *edl = gui->zwindow->edl;
+       if( !edl ) edl = mwindow->edl;
+        set_zoom(edl, 0);
+}
+
+void ZWindowCanvas::zoom_resize_window(float zoom)
+{
+       if( !zoom ) zoom = get_auto_zoom();
+       EDL *edl = gui->zwindow->edl;
+       if( !edl ) edl = mwindow->edl;
+       int ow = edl->session->output_w, oh = edl->session->output_h;
+       int canvas_w, canvas_h;
+       calculate_sizes(mwindow->edl->get_aspect_ratio(), ow, oh,
+               zoom, canvas_w, canvas_h);
+       int new_w = canvas_w + xS(20);
+       int new_h = canvas_h + yS(20);
+       gui->resize_window(new_w, new_h);
+       gui->resize_event(new_w, new_h);
+}