Prepare screenshot of all mixer-strips
[ardour.git] / gtk2_ardour / mixer_ui.cc
index 4bf6d60f7be15fa710d42c8debc6b95a95b2b517..1773c4497cce89e28ab22c1402cd51801ac948ee 100644 (file)
@@ -30,6 +30,7 @@
 #include <glibmm/threads.h>
 
 #include <gtkmm/accelmap.h>
+#include <gtkmm/offscreenwindow.h>
 #include <gtkmm/stock.h>
 
 #include "pbd/convert.h"
@@ -3501,3 +3502,22 @@ Mixer_UI::vca_unassign (boost::shared_ptr<VCA> vca)
                }
        }
 }
+
+void
+Mixer_UI::screenshot (std::string const& filename)
+{
+       Gtk::OffscreenWindow osw;
+       int height = strip_packer.get_height();
+       strip_group_box.remove (strip_packer);
+       osw.add (strip_packer);
+       add_button.hide ();
+       osw.set_size_request (-1, height);
+       osw.show();
+       osw.get_window()->process_updates (true);
+       Glib::RefPtr<Gdk::Pixbuf> pb = osw.get_pixbuf ();
+       pb->save (filename, "png");
+       osw.remove ();
+       pb.release ();
+       add_button.show ();
+       strip_group_box.pack_start (strip_packer);
+}