X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftrack.h;h=9c12af1fff1fc31537f2cf558bc1ab140acae321;hb=166867a58d74619aa11aeb562a994cc364d62231;hp=e2326cbc9d0c2b38f1476d9698a6ca885e75e745;hpb=0c086b3e7b552e0f6b06c8696d7682d9d4bd91db;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/track.h b/cinelerra-5.1/cinelerra/track.h index e2326cbc..9c12af1f 100644 --- a/cinelerra-5.1/cinelerra/track.h +++ b/cinelerra-5.1/cinelerra/track.h @@ -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 { 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 *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. @@ -155,10 +165,17 @@ public: 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); + 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); EDL *edl; Tracks *tracks; @@ -170,15 +187,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; @@ -193,11 +214,9 @@ public: virtual int dump(FILE *fp); // ===================================== editing - int copy(double start, double end, + int copy(int copy_flags, double start, double end, FileXML *file, const char *output_path = ""); - int copy_assets(double start, - double end, - ArrayList *asset_list); + int copy_assets(double start, double end, ArrayList *asset_list); virtual int copy_derived(int64_t start, int64_t end, FileXML *file) { return 0; }; virtual int paste_derived(int64_t start, int64_t end, int64_t total_length, FileXML *file, int ¤t_channel) { return 0; }; @@ -226,8 +245,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 ¤t_pan) { return 0; }; @@ -257,13 +276,9 @@ public: int popup_transition(int cursor_x, int cursor_y); // Return 1 if the left handle was selected 2 if the right handle was selected 3 if the track isn't recordable - int modify_edithandles(double oldposition, - double newposition, - int currentend, - int handle_mode, - int edit_labels, - int edit_plugins, - int edit_autos); + int modify_edithandles(double oldposition, double newposition, + int currentend, int handle_mode, int edit_labels, + int edit_plugins, int edit_autos, int group_id); int modify_pluginhandles(double oldposition, double newposition, int currentend, @@ -307,6 +322,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 @@ -314,7 +330,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