From 9cd1fd9e4aba0aeebb2271156be36890b4274eaf Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 17 Jul 2019 22:57:30 +0200 Subject: [PATCH] Prepare screenshot of all mixer-strips This will allow to create a PNG of all mixer-strips, even those currently off-screen due to scrolling. It currently shows the main scroll-pane page only (master-bus, VCAs are not included). This method is not yet exposed. --- gtk2_ardour/mixer_ui.cc | 20 ++++++++++++++++++++ gtk2_ardour/mixer_ui.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 4bf6d60f7b..1773c4497c 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -30,6 +30,7 @@ #include #include +#include #include #include "pbd/convert.h" @@ -3501,3 +3502,22 @@ Mixer_UI::vca_unassign (boost::shared_ptr 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 pb = osw.get_pixbuf (); + pb->save (filename, "png"); + osw.remove (); + pb.release (); + add_button.show (); + strip_group_box.pack_start (strip_packer); +} diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index 5e0a25e925..85197b991d 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -147,6 +147,8 @@ public: void showhide_mixbusses (bool on); #endif + void screenshot (std::string const&); + protected: void set_axis_targets_for_operation (); ARDOUR::AutomationControlSet selected_gaincontrols ();