#include "trackcanvas.inc"
#include "tracks.inc"
#include "transition.inc"
+#include "zwindow.inc"
// UNITS ARE SAMPLES FOR ALL
{
public:
Track(EDL *edl, Tracks *tracks);
- Track();
virtual ~Track();
void create_objects();
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; };
// 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
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
// 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.
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);
+ int plays();
EDL *edl;
Tracks *tracks;
// 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;
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*> *asset_list);
+ int copy_assets(double start, double end, ArrayList<Asset*> *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; };
int blade(double position);
int clear(double start, double end,
int edit_edits, int edit_labels, int clear_plugins,
- int edit_autos, int convert_units, Edits *trim_edits);
+ int edit_autos, Edits *trim_edits);
+ int clear(int64_t start, int64_t end,
+ int edit_edits, int edit_labels, int clear_plugins,
+ int edit_autos, Edits *trim_edits);
// Returns the point to restart background rendering at.
// -1 means nothing changed.
void clear_automation(double selectionstart, double selectionend,
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; };
int clear_labels, int clear_plugins, int edit_autos,
double &distance);
int paste_silence(double start, double end, int edit_plugins, int edit_autos);
+ int paste_silence(int64_t start, int64_t end, int edit_plugins, int edit_autos);
virtual int select_translation(int cursor_x, int cursor_y) { return 0; }; // select video coordinates for frame
virtual int update_translation(int cursor_x, int cursor_y, int shift_down) { return 0; }; // move video coordinates
int select_auto(AutoConf *auto_conf, int cursor_x, int cursor_y);
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,
// 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
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