add binfolder path relative filters, fix gbrp color model, vwdw timebar tweaks, title...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / edl.h
index 45740cdf05f2ec9a6f412a9a17d006d57d15d89e..8a96155e1933338cc11d3a83e80dacf29f019745 100644 (file)
@@ -29,6 +29,7 @@
 #include "assets.inc"
 #include "autoconf.inc"
 #include "bchash.inc"
+#include "binfolder.h"
 #include "edit.inc"
 #include "edits.inc"
 #include "edl.inc"
@@ -40,7 +41,7 @@
 #include "localsession.inc"
 #include "maxchannels.h"
 #include "mutex.inc"
-#include "nestededls.inc"
+#include "clipedls.h"
 #include "playabletracks.inc"
 #include "playbackconfig.h"
 #include "pluginserver.h"
@@ -50,6 +51,7 @@
 #include "theme.inc"
 #include "tracks.inc"
 #include "vedit.inc"
+#include "zwindow.h"
 
 // Loading and saving are built on load and copy except for automation:
 
@@ -79,14 +81,11 @@ public:
        void boundaries();
 // Create tracks using existing configuration
        int create_default_tracks();
-       int load_xml(FileXML *file,
-               uint32_t load_flags);
-       int save_xml(FileXML *xml,
-               const char *output_path,
-               int is_clip,
-               int is_vwindow);
-    int load_audio_config(FileXML *file, int append_mode, uint32_t load_flags);
-    int load_video_config(FileXML *file, int append_mode, uint32_t load_flags);
+       int load_xml(FileXML *file, uint32_t load_flags);
+       int read_xml(FileXML *file, uint32_t load_flags);
+       int save_xml(FileXML *xml, const char *output_path);
+       int load_audio_config(FileXML *file, int append_mode, uint32_t load_flags);
+       int load_video_config(FileXML *file, int append_mode, uint32_t load_flags);
 
 // Return 1 if rendering requires a virtual console.
        int get_use_vconsole(VEdit* *playable_edit,
@@ -94,14 +93,35 @@ public:
                int direction,
                PlayableTracks *playable_tracks);
 
-// Convert position to frames if cursor alignment is enabled
+// Convert position to frame boundry times
+       double frame_align(double position, int round);
+// frame align if cursor alignment is enabled
        double align_to_frame(double position, int round);
+// get position under cursor in pane
+       double get_cursor_position(int cursor_x, int pane_no);
 
 // increase track w/h to at least session w/h
        void retrack();
 // Scale all sample values since everything is locked to audio
        void rechannel();
        void resample(double old_rate, double new_rate, int data_type);
+
+       int copy(double start, double end, int all,
+               FileXML *file, const char *output_path, int rewind_it);
+       int copy(int all, FileXML *file, const char *output_path, int rewind_it);
+
+       int copy_clip(double start, double end, int all,
+               FileXML *file, const char *output_path, int rewind_it);
+       int copy_clip(int all, FileXML *file, const char *output_path, int rewind_it);
+
+       int copy_nested_edl(double start, double end, int all,
+               FileXML *file, const char *output_path, int rewind_it);
+       int copy_nested_edl(int all, FileXML *file, const char *output_path, int rewind_it);
+
+       int copy_vwindow_edl(double start, double end, int all,
+               FileXML *file, const char *output_path, int rewind_it);
+       int copy_vwindow_edl(int all, FileXML *file, const char *output_path, int rewind_it);
+
        void copy_tracks(EDL *edl);
 // Copies project path, folders, EDLSession, and LocalSession from edl argument.
 // session_only - used by preferences and format specify
@@ -110,6 +130,8 @@ public:
        int copy_all(EDL *edl);
        void copy_assets(EDL *edl);
        void copy_clips(EDL *edl);
+       void copy_nested(EDL *edl);
+       void copy_mixers(EDL *edl);
 // Copy pan and fade settings from edl
        void synchronize_params(EDL *edl);
 // Determine if the positions are equivalent if they're within half a frame
@@ -127,6 +149,7 @@ public:
 // Set points and labels
        void set_inpoint(double position);
        void set_outpoint(double position);
+       void unset_inoutpoint();
 // Redraw resources during index builds
        void set_index_file(Indexable *indexable);
 // Add assets from the src to the destination
@@ -138,9 +161,13 @@ public:
 // Debug
        int dump(FILE *fp=stdout);
        static int next_id();
-// Create a new folder if it doesn't exist already
-       void new_folder(const char *folder);
-       void delete_folder(const char *folder);
+// folders
+       BinFolder *get_folder(int no);
+       int get_folder_number(const char *title);
+       const char *get_folder_name(int no);
+       int new_folder(const char *title, int is_clips);
+       int delete_folder(const char *title);
+
        void modify_edithandles(double oldposition,
                double newposition,
                int currentend,
@@ -164,28 +191,23 @@ public:
                int edit_autos);
 
 // Editing functions
-       int copy_assets(double start,
-               double end,
-               FileXML *file,
-               int all,
-               const char *output_path);
-       int copy(double start,
-               double end,
-               int all,   // Ignore recordable status of tracks for saving
-               int is_clip,
-               int is_vwindow,
-               FileXML *file,
-               const char *output_path,
-               int rewind_it);     // Rewind EDL for easy pasting
-       void paste_silence(double start,
-               double end,
+       int copy_assets(double start, double end,
+               FileXML *file, int all, const char *output_path);
+       int copy(double start, double end, int all,
+               const char *closer, FileXML *file,
+               const char *output_path, int rewind_it);
+       void copy_indexables(EDL *edl);
+       EDL *new_nested(EDL *edl, const char *path);
+       EDL *create_nested_clip(EDL *nested);
+       void create_nested(EDL *nested);
+       void paste_silence(double start, double end,
                int edit_labels /* = 1 */,
                int edit_plugins,
                int edit_autos);
        void remove_from_project(ArrayList<Indexable*> *assets);
        void remove_from_project(ArrayList<EDL*> *clips);
-       int clear(double start,
-               double end,
+       int blade(double position);
+       int clear(double start, double end,
                int clear_labels,
                int clear_plugins,
                int edit_autos);
@@ -234,24 +256,27 @@ public:
 // Adds to list of EDLs & increase garbage collection counter
 // Does nothing if EDL already exists
        void append_vwindow_edl(EDL *edl, int increase_counter);
+       void rescale_proxy(int orig_scale, int new_scale);
+       void set_proxy(int new_scale, int use_scaler,
+               ArrayList<Indexable*> *orig_assets, ArrayList<Indexable*> *proxy_assets);
+       void add_proxy(int use_scaler,
+               ArrayList<Indexable*> *orig_assets, ArrayList<Indexable*> *proxy_assets);
+       Asset *get_proxy_asset();
 
 // Titles of all subfolders
-       ArrayList<char*> folders;
-// Clips
-       ArrayList<EDL*> clips;
-// Nested EDLs
-       NestedEDLs *nested_edls;
+       BinFolders folders;
+// Clips, Nested EDLs
+       ClipEDLs clips, nested_edls;
 // EDLs being shown in VWindows
        ArrayList<EDL*> vwindow_edls;
 // is the vwindow_edl shared and therefore should not be deleted in destructor
 //     int vwindow_edl_shared;
+       Mixers mixers;
 
 // Media files
 // Shared between all EDLs
        Assets *assets;
 
-
-
        Tracks *tracks;
        Labels *labels;
 // Shared between all EDLs in a tree, for projects.
@@ -259,17 +284,8 @@ public:
 // Specific to this EDL, for clips.
        LocalSession *local_session;
 
-
-
-
-
-
 // Use parent Assets if nonzero
        EDL *parent_edl;
-
-
-       static Mutex *id_lock;
-
 };
 
 #endif