X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fexport_profile_manager.h;h=2757795ff3598d7c890bcc6be91c052659884de2;hb=5399425f534e2d96d07cf29f427bfa0f39d904b7;hp=c0d2bb1dd8c7448c8f76744ec206dd7e64238837;hpb=7468fdb9ca9892cec9b298690bf0edf3655d6453;p=ardour.git diff --git a/libs/ardour/ardour/export_profile_manager.h b/libs/ardour/ardour/export_profile_manager.h index c0d2bb1dd8..2757795ff3 100644 --- a/libs/ardour/ardour/export_profile_manager.h +++ b/libs/ardour/ardour/export_profile_manager.h @@ -35,6 +35,7 @@ #include "ardour/filesystem_paths.h" #include "ardour/location.h" +#include "ardour/libardour_visibility.h" #include "ardour/types.h" #include "ardour/export_handler.h" @@ -46,11 +47,19 @@ class Location; class Session; /// Manages (de)serialization of export profiles and related classes -class ExportProfileManager +class LIBARDOUR_API ExportProfileManager { public: - ExportProfileManager (Session & s, std::string xml_node_name); + enum ExportType { + RegularExport, + RangeExport, + SelectionExport, + RegionExport, + StemExport + }; + + ExportProfileManager (Session & s, ExportType type); ~ExportProfileManager (); void load_profile (); @@ -67,16 +76,17 @@ class ExportProfileManager private: typedef boost::shared_ptr HandlerPtr; - typedef std::pair FilePair; - typedef std::map FileMap; + typedef std::pair FilePair; + typedef std::map FileMap; - std::string const xml_node_name; + ExportType type; + std::string xml_node_name; HandlerPtr handler; Session & session; std::string preset_filename (std::string const & preset_name); void load_presets (); - void load_preset_from_disk (PBD::sys::path const & path); + void load_preset_from_disk (std::string const & path); bool set_state (XMLNode const & root); bool set_global_state (XMLNode const & root); @@ -90,10 +100,10 @@ class ExportProfileManager ExportPresetPtr current_preset; FileMap preset_file_map; - std::vector find_file (std::string const & pattern); + std::vector find_file (std::string const & pattern); - PBD::sys::path export_config_dir; - PBD::SearchPath search_path; + std::string export_config_dir; + PBD::Searchpath search_path; /* Timespans */ public: @@ -113,16 +123,13 @@ class ExportProfileManager TimespanListPtr timespans; TimeFormat time_format; - boost::shared_ptr session_range; boost::shared_ptr selection_range; boost::shared_ptr ranges; - TimespanState (boost::shared_ptr session_range, - boost::shared_ptr selection_range, + TimespanState (boost::shared_ptr selection_range, boost::shared_ptr ranges) : timespans (new TimespanList ()) , time_format (Timecode) - , session_range (session_range) , selection_range (selection_range) , ranges (ranges) {} @@ -148,7 +155,6 @@ class ExportProfileManager void update_ranges (); - boost::shared_ptr session_range; boost::shared_ptr selection_range; boost::shared_ptr ranges; @@ -195,7 +201,7 @@ class ExportProfileManager FormatStatePtr duplicate_format_state (FormatStatePtr state); void remove_format_state (FormatStatePtr state); - PBD::sys::path save_format_to_disk (ExportFormatSpecPtr format); + std::string save_format_to_disk (ExportFormatSpecPtr format); void remove_format_profile (ExportFormatSpecPtr format); ExportFormatSpecPtr get_new_format (ExportFormatSpecPtr original); @@ -212,7 +218,7 @@ class ExportProfileManager void load_formats (); ExportFormatSpecPtr load_format (XMLNode & node); - void load_format_from_disk (PBD::sys::path const & path); + void load_format_from_disk (std::string const & path); boost::shared_ptr format_list; FileMap format_file_map; @@ -232,6 +238,8 @@ class ExportProfileManager FilenameStatePtr duplicate_filename_state (FilenameStatePtr state); void remove_filename_state (FilenameStatePtr state); + std::string get_sample_filename_for_format (ExportFilenamePtr filename, ExportFormatSpecPtr format); + private: FilenameStateList filenames; @@ -261,6 +269,10 @@ class ExportProfileManager /* Utilities */ + void build_filenames(std::list & result, ExportFilenamePtr filename, + TimespanListPtr timespans, ExportChannelConfigPtr channel_config, + ExportFormatSpecPtr format); + /* Element state lists should never be empty, this is used to check them */ template std::list const &