RafaMar + programmer friend Help button in Batch Render addition
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / track.h
index 5552feeb40f2d69e18e27368162e09fa25378417..c267eb5b3b58e2d2e8ae6a3873e3f4b96d66cd29 100644 (file)
@@ -50,6 +50,7 @@
 #include "trackcanvas.inc"
 #include "tracks.inc"
 #include "transition.inc"
+#include "zwindow.inc"
 
 // UNITS ARE SAMPLES FOR ALL
 
@@ -57,7 +58,6 @@ class Track : public ListItem<Track>
 {
 public:
        Track(EDL *edl, Tracks *tracks);
-       Track();
        virtual ~Track();
 
        void create_objects();
@@ -71,6 +71,13 @@ public:
        void equivalent_output(Track *track, double *result);
        int get_mixer_id();
 
+       void get_fauto_xyz(int fauto, float &x, float &y, float &z);
+       void set_fauto_xyz(int fauto, float x, float y, float z);
+       void get_projector(float &x, float &y, float &z);
+       void set_projector(float x, float y, float z);
+       void get_camera(float &x, float &y, float &z);
+       void set_camera(float x, float y, float z);
+
        virtual void copy_from(Track *track);
        Track& operator=(Track& track);
        virtual PluginSet* new_plugins() { return 0; };
@@ -84,6 +91,8 @@ public:
 
 // Speed curve in use
        int has_speed();
+// length when speed is applied
+       int64_t speed_length(int64_t start, int64_t end);
 // Get length of track in seconds
        double get_length();
 // Get dimensions of source for convenience functions
@@ -105,7 +114,7 @@ public:
                double edl_length);
        void shuffle_edits(double start, double end, int first_track);
        void reverse_edits(double start, double end, int first_track);
-       void align_edits(double start, double end, ArrayList<double> *times);
+       void align_edits(double start, double end, Track *master_track);
 // Optimize editing
        void optimize();
        int is_muted(int64_t position, int direction);  // Test muting status
@@ -134,12 +143,13 @@ public:
 
 // detach shared effects referencing module
        void detach_shared_effects(int module);
-
+// detach all corresponding effects in gang
+       void detach_ganged_effects(Plugin *plugin);
 
 // Called by playable tracks to test for playable server.
 // Descends the plugin tree without creating a virtual console.
 // Used by PlayableTracks::is_playable.
-       int is_synthesis(int64_t position, int direction);
+       int is_synthesis(int64_t position, int direction, int depth=0);
 
 // Used by PlayableTracks::is_playable
 // Returns 1 if the track is in the output boundaries.
@@ -153,12 +163,20 @@ public:
 // align to frame boundary
        int64_t frame_align(int64_t position, int round);
 
-       virtual int copy_settings(Track *track, int do_title=1);
+       virtual int copy_settings(Track *track);
        void shift_keyframes(int64_t position, int64_t length);
        void shift_effects(int64_t position, int64_t length, int edit_autos, Edits *trim_edits);
        void change_plugins(SharedLocation &old_location, SharedLocation &new_location, int do_swap);
        void change_modules(int old_location, int new_location, int do_swap);
-       int plugin_exists(Plugin *plugin);
+       Plugin *plugin_exists(int plugin_id);
+       Track *gang_master();
+       int is_hidden();
+       int in_gang(Track *track);
+       int is_armed();
+       int is_ganged();
+       int armed_gang(Track *track);
+       int index_in(Mixer *mixer);
+       int plays();
 
        EDL *edl;
        Tracks *tracks;
@@ -170,15 +188,19 @@ public:
 
 // Vertical offset from top of timeline
        int y_pixel;
+// Vertical height of the track asset
+       int data_h;
        int expand_view;
        int draw;
 // There is some debate on whether to expand gang from faders to
 // dragging operations.  This would allow every edit in a column to get dragged
 // simultaneously.
-       int gang;
+       int ganged;
        char title[BCTEXTLEN];
        int play;
-       int record;
+       int armed;
+// mask enable bit flags
+       int masks;
 // Nudge in track units.  Positive shifts track earlier in time.  This way
 // the position variables only need to add the nudge.
        int64_t nudge;
@@ -224,8 +246,8 @@ public:
        virtual int copy_automation_derived(AutoConf *auto_conf,
                double selectionstart, double selectionend,
                FileXML *file) { return 0; };
-       int paste_automation(double selectionstart, double total_length,
-               double frame_rate, int64_t sample_rate, FileXML *file,
+       int paste_automation(FileXML *file,
+               double selectionstart, double src_length, double src_rate,
                int default_only, int active_only);
        virtual int paste_automation_derived(double selectionstart, double selectionend,
                double total_length, FileXML *file, int shift_autos, int &current_pan) { return 0; };
@@ -301,6 +323,7 @@ public:
 // If the edit under position is playable.
 // Used by PlayableTracks::is_playable.
        int playable_edit(int64_t position, int direction);
+       void create_keyframes(double position, int mask, int mode);
 
 // ===================================== for handles, titles, etc
 
@@ -308,7 +331,8 @@ public:
        int pixel;   // pixel position from top of track view
 // Dimensions of this track if video
        int track_w, track_h;
-       int mixer_id;
+// mixer set track id, gang master flag
+       int mixer_id, master;
 
 private:
 // Identification of the track