LiVES  3.0.2
multitrack.h
Go to the documentation of this file.
1 // multitrack.h
2 // LiVES
3 // (c) G. Finch 2005 - 2017 <salsaman+lives@gmail.com>
4 // released under the GNU GPL 3 or later
5 // see file ../COPYING for licensing details
6 
7 // multitrack window
8 
9 #ifndef HAS_LIVES_MULTITRACK_H
10 #define HAS_LIVES_MULTITRACK_H
11 
13 
14 #define CLIP_THUMB_WIDTH ((int)(72.*widget_opts.scale))
15 #define CLIP_THUMB_HEIGHT ((int)(72.*widget_opts.scale))
16 
17 #define CLIP_LABEL_LENGTH ((int)(20.*widget_opts.scale))
18 
19 #define BLOCK_THUMB_WIDTH ((int)(40.*widget_opts.scale))
20 
21 #define MT_PLAY_WIDTH_SMALL ((int)(320.*widget_opts.scale))
22 #define MT_PLAY_HEIGHT_SMALL ((int)(216.*widget_opts.scale))
23 
24 #define MT_PLAY_WIDTH_EXP ((int)(432.*widget_opts.scale))
25 #define MT_PLAY_HEIGHT_EXP ((int)(324.*widget_opts.scale))
26 
27 #define MT_CTX_WIDTH ((int)(320.*widget_opts.scale))
28 #define MT_CTX_HEIGHT ((int)(220.*widget_opts.scale))
29 
30 #define FX_BLOCK_WIDTH ((int)(80.*widget_opts.scale))
31 #define FX_BLOCK_HEIGHT ((int)(20.*widget_opts.scale))
32 
33 #define MT_TRACK_HEIGHT ((int)(35.*widget_opts.scale))
34 
35 #define TIMECODE_LENGTH 14
36 
37 #define TIMELINE_TABLE_COLUMNS 40
38 
39 #define MENUBAR_MIN 1024
40 
42 
43 #define BLOCK_DRAW_SIMPLE 1
44 #define BLOCK_DRAW_THUMB 2
45 #define BLOCK_DRAW_TYPE BLOCK_DRAW_THUMB
46 
47 #define SELBLOCK_ALPHA 0.6
48 
49 #define DEF_TIME 120
50 
51 typedef struct _mt lives_mt;
52 
53 typedef struct _track_rect track_rect;
54 
55 typedef struct _mt_opts mt_opts;
56 
57 typedef struct _lives_amixer_t lives_amixer_t;
58 
59 typedef enum {
64 
65 typedef enum {
67 
68  // not implemented yet
73 
74 typedef enum {
79 
80 typedef enum {
81  // undo actions
86 
87  // minimal event_list
93 
94  // full backups of event_list
102 
103 typedef enum {
110 
111 typedef enum {
121 
122 typedef enum {
126 
127 typedef enum {
132 
133 typedef enum {
138 
139 typedef enum {
140  // block state
144 
145 struct _mt_opts {
146  boolean set;
147  boolean move_effects;
149  boolean snap_over;
153  boolean show_audio;
154  boolean show_ctx;
155  boolean ign_ins_sel;
157  boolean insert_audio;
158  boolean pertrack_audio;
159  boolean audio_bleedthru;
160  boolean gang_audio;
161  boolean autocross_audio;
163  boolean render_vidp;
164  boolean render_audp;
165  boolean normalise_audp;
168  LiVESList *aparam_view_list;
169 };
170 
171 struct _mt {
172  // widgets
173  LiVESWidget *menubar;
174  LiVESWidget *top_vbox;
175  LiVESWidget *xtravbox;
176  LiVESWidget *hbox;
177  LiVESWidget *play_blank;
178  LiVESWidget *play_box;
179  LiVESWidget *poly_box;
180  LiVESWidget *clip_scroll;
181  LiVESWidget *clip_inner_box;
182  LiVESWidget *in_out_box;
183  LiVESWidget *in_hbox;
184  LiVESWidget *out_hbox;
185  LiVESWidget *in_frame;
186  LiVESWidget *out_frame;
187  LiVESWidget *in_image;
188  LiVESWidget *out_image;
189  LiVESWidget *scrolledwindow;
190  LiVESWidget *context_box;
191  LiVESWidget *context_scroll;
192  LiVESWidget *sep_image;
193  LiVESWidget *timeline_table_header;
194  LiVESWidget *tl_eventbox;
195  LiVESWidget *timeline_table;
196  LiVESWidget *timeline;
197  LiVESWidget *timeline_eb;
198  LiVESWidget *timeline_reg;
199  LiVESWidget *infobar;
200  LiVESWidget *stop;
201  LiVESWidget *rewind;
202  LiVESWidget *sepwin;
203  LiVESWidget *mute_audio;
204  LiVESWidget *loop_continue;
205  LiVESWidget *insert;
206  LiVESWidget *audio_insert;
207  LiVESWidget *delblock;
208  LiVESWidget *clipedit;
209  LiVESWidget *vpaned;
210  LiVESWidget *hpaned;
211  LiVESWidget *scrollbar;
212  LiVESWidget *playall;
213  LiVESWidget *playsel;
214  LiVESWidget *jumpnext;
215  LiVESWidget *jumpback;
216  LiVESWidget *render;
217  LiVESWidget *prerender_aud;
218  LiVESWidget *message_box;
219  LiVESWidget *msg_area;
220  LiVESWidget *msg_scrollbar;
221  LiVESAdjustment *msg_adj;
222  LiVESWidget *fx_block;
223  LiVESWidget *fx_blockv;
224  LiVESWidget *fx_blocka;
225  LiVESWidget *fx_delete;
226  LiVESWidget *fx_edit;
227  LiVESWidget *fx_region;
228  LiVESWidget *fx_region_1;
229  LiVESWidget *fx_region_1v;
230  LiVESWidget *fx_region_1a;
231  LiVESWidget *fx_region_2;
232  LiVESWidget *fx_region_2av;
233  LiVESWidget *fx_region_2v;
234  LiVESWidget *fx_region_2a;
235  LiVESWidget *fx_region_3;
236  LiVESWidget *atrans_menuitem;
237  LiVESWidget *submenu_atransfx;
238  LiVESWidget *move_fx;
239  LiVESWidget *mm_menuitem;
240  LiVESWidget *mm_move;
241  LiVESWidget *mm_select;
242  LiVESWidget *ins_menuitem;
243  LiVESWidget *ins_normal;
244  LiVESWidget *grav_menuitem;
245  LiVESWidget *grav_label;
246  LiVESWidget *grav_normal;
247  LiVESWidget *grav_left;
248  LiVESWidget *grav_right;
249  LiVESWidget *select_track;
250  LiVESWidget *seldesel_menuitem;
251  LiVESWidget *view_events;
252  LiVESWidget *view_clips;
253  LiVESWidget *view_in_out;
254  LiVESWidget *view_effects;
255  LiVESWidget *avel_box;
257  LiVESWidget *spinbutton_avel;
258  LiVESWidget *avel_scale;
259  LiVESWidget *spinbutton_in;
260  LiVESWidget *spinbutton_out;
263  LiVESWidget *timecode;
264  LiVESWidget *spinbutton_start;
265  LiVESWidget *spinbutton_end;
266  LiVESWidget *tl_hbox;
267  LiVESWidget *fx_base_box;
268  LiVESWidget *fx_contents_box;
269  LiVESWidget *fx_box;
270  LiVESWidget *fx_label;
271  LiVESWidget *param_inner_box;
272  LiVESWidget *param_box;
273  LiVESWidget *next_node_button;
274  LiVESWidget *prev_node_button;
275  LiVESWidget *del_node_button;
276  LiVESWidget *node_spinbutton;
277  LiVESWidget *node_scale;
278  LiVESWidget *sel_label;
279  LiVESWidget *l_sel_arrow;
280  LiVESWidget *r_sel_arrow;
281  LiVESWidget *save_event_list;
282  LiVESWidget *load_event_list;
283  LiVESWidget *clear_event_list;
284  LiVESWidget *tc_to_rs;
285  LiVESWidget *tc_to_re;
286  LiVESWidget *rs_to_tc;
287  LiVESWidget *re_to_tc;
288  LiVESWidget *undo;
289  LiVESWidget *redo;
290  LiVESWidget *ac_audio_check;
291  LiVESWidget *remove_gaps;
292  LiVESWidget *remove_first_gaps;
293  LiVESWidget *split_sel;
294  LiVESWidget *ins_gap_sel;
295  LiVESWidget *ins_gap_cur;
296  LiVESWidget *last_filter_map;
297  LiVESWidget *next_filter_map;
298  LiVESWidget *fx_list_box;
299  LiVESWidget *fx_list_scroll;
300  LiVESWidget *fx_list_vbox;
301  LiVESWidget *next_fm_button;
302  LiVESWidget *prev_fm_button;
303  LiVESWidget *fx_ibefore_button;
304  LiVESWidget *fx_iafter_button;
305  LiVESWidget *rename_track;
306  LiVESWidget *cback_audio;
307  LiVESWidget *aload_subs;
308  LiVESWidget *load_vals;
309  LiVESWidget *change_vals;
310  LiVESWidget *aparam_separator;
311  LiVESWidget *aparam_menuitem;
312  LiVESWidget *aparam_submenu;
313  LiVESWidget *render_sep;
314  LiVESWidget *render_vid;
315  LiVESWidget *render_aud;
316  LiVESWidget *normalise_aud;
317  LiVESWidget *view_audio;
318  LiVESWidget *clear_marks;
319  LiVESWidget *fd_frame;
320  LiVESWidget *apply_fx_button;
321  LiVESToolItem *eview_button;
322  LiVESWidget *eview_label;
323  LiVESWidget *follow_play;
324  LiVESWidget *change_max_disp;
325  LiVESWidget *add_vid_behind;
326  LiVESWidget *add_vid_front;
327  LiVESWidget *quit;
328  LiVESWidget *troubleshoot;
329  LiVESWidget *fx_params_label;
330  LiVESWidget *amixer_button;
331  LiVESWidget *view_sel_events;
332  LiVESWidget *adjust_start_end;
333  LiVESWidget *context_frame;
334  LiVESWidget *nb;
335  LiVESWidget *nb_label;
336 
337  LiVESWidget *eventbox;
338  LiVESWidget *scroll_label;
339  LiVESWidget *preview_frame;
340  LiVESWidget *preview_eventbox;
341  LiVESWidget *btoolbarx;
342  LiVESWidget *btoolbary;
343  LiVESWidget *time_label;
344  LiVESWidget *insa_label;
345  LiVESWidget *overlap_label;
346  LiVESWidget *amix_label;
347  LiVESWidget *tl_label;
348  LiVESWidget *dumlabel1;
349  LiVESWidget *dumlabel2;
350  LiVESWidget *top_eventbox;
351  LiVESWidget *tlx_eventbox;
352  LiVESWidget *amixb_eventbox;
353 
354  LiVESWidget *grav_submenu;
355  LiVESWidget *ins_submenu;
356  LiVESWidget *mm_submenu;
357  LiVESWidget *ins_label;
358  LiVESWidget *mm_label;
359 
360  LiVESWidget *nb_label1;
361  LiVESWidget *nb_label2;
362  LiVESWidget *nb_label3;
363  LiVESWidget *nb_label4;
364  LiVESWidget *nb_label5;
365  LiVESWidget *nb_label6;
366  LiVESWidget *nb_label7;
367 
368  LiVESToolItem *sep1;
369  LiVESToolItem *sep2;
370  LiVESToolItem *sep3;
371  LiVESWidget *sep4;
372 
373  LiVESWidget *btoolbar;
374  LiVESWidget *btoolbar2;
375  LiVESWidget *btoolbar3;
376 
377  LiVESWidget *menu_hbox;
378 
379  LiVESWidget *hseparator;
380  LiVESWidget *hseparator2;
381 
382  LiVESWidget *files_menu;
383  LiVESWidget *edit_menu;
384  LiVESWidget *play_menu;
385  LiVESWidget *effects_menu;
386  LiVESWidget *tracks_menu;
387  LiVESWidget *selection_menu;
388  LiVESWidget *tools_menu;
389  LiVESWidget *render_menu;
390  LiVESWidget *view_menu;
391  LiVESWidget *help_menu;
392 
393  LiVESWidget *open_menu;
394 #ifdef HAVE_WEBM
395  LiVESWidget *open_loc_menu;
396 #endif
397 #ifdef ENABLE_DVD_GRAB
398  LiVESWidget *vcd_dvd_menu;
399 #endif
400 #ifdef HAVE_LDVGRAB
401  LiVESWidget *device_menu;
402 #endif
403  LiVESWidget *recent_menu;
404  LiVESWidget *recent[N_RECENT_FILES];
405 
406  LiVESWidget *time_scrollbar;
407  LiVESWidget *show_layout_errors;
408 
409  LiVESWidget *load_set;
410  LiVESWidget *save_set;
411 
412  LiVESWidget *close;
413 
414  LiVESWidget *clear_ds;
415 
416  LiVESWidget *gens_submenu;
417  LiVESWidget *capture;
418 
419  LiVESWidget *insa_checkbutton;
420  LiVESWidget *snapo_checkbutton;
421 
422  LiVESObject *spinbutton_in_adj;
423  LiVESObject *spinbutton_out_adj;
424 
425  LiVESObject *hadjustment;
426  LiVESObject *node_adj;
427 
428  LiVESList *audio_draws;
429 
430  LiVESList *audio_vols;
431  LiVESList *audio_vols_back;
432 
433  LiVESAccelGroup *accel_group;
434  LiVESList *video_draws;
435  LiVESObject *vadjustment;
436 
437  LiVESXDisplay *display;
438 
439  LiVESPixbuf *frame_pixbuf;
440 
441  LiVESList *cb_list;
442 
449 
452 
454 
458 
462 
464 
466 
468 
469  weed_plant_t *event_list;
470 
471  weed_plant_t *init_event;
472  weed_plant_t *selected_init_event;
473  int num_video_tracks;
475  double end_secs;
476 
477  // timeline min and max display values
478  double tl_min;
479  double tl_max;
480 
484 
485  LiVESList *selected_tracks;
486 
488 
490 
492 
493  track_rect *block_selected;
494  track_rect *putative_block;
495 
496  double ptr_time;
497 
499 
500  double fps;
501 
502  double region_start;
503  double region_end;
504  double region_init;
506 
507  boolean is_rendering;
508  boolean pr_audio;
509 
511 
513 
514  boolean in_sensitise;
515 
517 
518  char layout_name[PATH_MAX];
519 
520  // cursor warping for mouse move mode
521  double hotspot_x;
523 
524  boolean moving_block;
525 
526  double pb_start_time;
528 
530 
531  int sel_x;
532  int sel_y;
533 
536 
537  boolean tl_selecting;
538 
539  /* start and end offset overrides for inserting (used during block move) */
540  weed_timecode_t insert_start;
541  weed_timecode_t insert_end;
542 
544  double insert_avel;
545 
546  LiVESList *undos;
548  uint8_t *undo_mem;
550  boolean did_backup;
551 
552  char undo_text[32];
553  char redo_text[32];
554 
555  boolean undoable;
556  boolean redoable;
557 
558  boolean changed;
559  boolean auto_changed;
560 
561  int64_t auto_back_time;
562 
563  // stuff to do with framedraw "special" widgets
564  int inwidth;
565  int inheight;
566  int outwidth;
570 
572 
574 
575  mt_opts opts;
576 
577  boolean auto_reloading;
578 
579  weed_plant_t *fm_edit_event;
580  weed_plant_t *moving_fx;
581 
582  int avol_fx;
583  weed_plant_t *avol_init_event;
584 
587 
588  boolean layout_prompt;
591 
592  double user_fps;
599 
601 
603 
604  weed_plant_t *solo_inst;
605 
606  LiVESList *tl_marks;
607 
608  weed_plant_t *pb_start_event;
609  weed_plant_t *pb_loop_event;
610 
611  weed_plant_t *specific_event;
612 
613  double context_time;
614  boolean use_context;
615 
617 
618  boolean is_paused;
619 
620  /* current size of frame inside playback/preview area */
623 
624  /* current size of playback/preview area */
627 
629 
630  int top_track;
631 
632  boolean redraw_block;
633 
634  boolean was_undo_redo;
635 
636  boolean no_expose;
637 
638  boolean is_ready;
639 
641 
642  boolean has_audio_file;
643 
644  boolean tl_mouse;
645 
646  boolean playing_sel;
647 
648  uint32_t idlefunc;
649 
650  LiVESList *clip_labels;
651 
652  lives_amixer_t *amixer;
653 
654  double prev_fx_time;
655 
656  boolean block_tl_move;
657  boolean block_node_spin;
658 
659  boolean is_atrans;
660 
662 }; // lives_mt
664 
665 typedef struct {
667  weed_timecode_t tc;
668  void *extra;
669  size_t data_len;
670 } mt_undo;
671 
673  LiVESWidget *main_hbox;
674  LiVESWidget **ch_sliders;
675  LiVESWidget *gang_checkbutton;
676  LiVESWidget *inv_checkbutton;
678  int nchans;
679  lives_mt *mt;
680 };
681 
682 // reasons for track invisibility (bitmap)
683 #define TRACK_I_HIDDEN_USER (1<<0)
684 #define TRACK_I_HIDDEN_SCROLLED (1<<1)
685 
690 
692 struct _track_rect {
694 
695  track_rect *next;
696  track_rect *prev;
697  weed_plant_t *start_event;
698  weed_plant_t *end_event;
699 
700  weed_timecode_t offset_start;
701 
703  boolean start_anchored;
704  boolean end_anchored;
705  boolean ordered;
706 
707  LiVESWidget
709 };
710 
711 /* translation table for matching event_id to init_event */
712 typedef struct {
713  uint64_t in;
714  void *out;
715 } ttable;
716 
717 /* clip->layout use mapping, from layout.map lives_clip_t */
718 typedef struct {
719  char *handle;
720  int64_t unique_id;
721  char *name;
722  LiVESList *list;
723 } layout_map;
724 
726 
727 // setup functions
728 
729 lives_mt *multitrack(weed_plant_t *, int orig_file, double fps);
730 void mt_init_tracks(lives_mt *, boolean set_min_max);
731 boolean on_multitrack_activate(LiVESMenuItem *menuitem, weed_plant_t *event_list);
732 
733 // theming
734 void set_mt_colours(lives_mt *);
735 
736 // delete function
737 boolean multitrack_delete(lives_mt *, boolean save);
738 
739 // morph the poly window
740 void polymorph(lives_mt *, lives_mt_poly_state_t poly);
741 void set_poly_tab(lives_mt *mt, uint32_t tab);
742 
743 // gui related
744 void mt_desensitise(lives_mt *);
745 void mt_sensitise(lives_mt *);
746 void set_mt_play_sizes(lives_mt *mt, int width, int height);
747 
748 void add_aparam_menuitems(lives_mt *);
749 
750 // external control callbacks
751 void insert_here_cb(LiVESMenuItem *, livespointer mt);
752 void insert_audio_here_cb(LiVESMenuItem *, livespointer mt);
753 void insert_at_ctx_cb(LiVESMenuItem *, livespointer mt);
754 void insert_audio_at_ctx_cb(LiVESMenuItem *, livespointer mt);
755 void multitrack_end_cb(LiVESMenuItem *, livespointer mt);
756 void delete_block_cb(LiVESMenuItem *, livespointer mt);
757 void selblock_cb(LiVESMenuItem *, livespointer mt);
758 void list_fx_here_cb(LiVESMenuItem *, livespointer mt);
759 void edit_start_end_cb(LiVESMenuItem *, livespointer mt);
760 void close_clip_cb(LiVESMenuItem *, livespointer mt);
761 void show_clipinfo_cb(LiVESMenuItem *, livespointer mt);
762 
763 boolean multitrack_insert(LiVESMenuItem *, livespointer mt);
764 track_rect *move_block(lives_mt *, track_rect *block, double timesecs, int old_track, int new_track);
765 
766 void update_grav_mode(lives_mt *);
767 void update_insert_mode(lives_mt *);
768 
769 boolean on_render_activate(LiVESMenuItem *, livespointer mt);
770 
771 void mt_set_autotrans(int idx);
772 
773 // event_list functions
774 weed_plant_t *add_blank_frames_up_to(weed_plant_t *event_list, weed_plant_t *start_event, weed_timecode_t end_tc, double fps);
775 
776 // track functions
777 char *get_track_name(lives_mt *, int track_num, boolean is_audio);
778 void on_cback_audio_activate(LiVESMenuItem *, livespointer mt);
779 LiVESWidget *add_audio_track(lives_mt *, int trackno, boolean behind);
780 int add_video_track_behind(LiVESMenuItem *, livespointer mt);
781 int add_video_track_front(LiVESMenuItem *, livespointer mt);
782 void delete_video_track(lives_mt *, int layer, boolean full);
783 void delete_audio_track(lives_mt *, LiVESWidget *eventbox, boolean full);
784 void delete_audio_tracks(lives_mt *, LiVESList *list, boolean full);
785 void remove_gaps(LiVESMenuItem *, livespointer mt);
786 void remove_first_gaps(LiVESMenuItem *, livespointer mt);
787 void on_insgap_sel_activate(LiVESMenuItem *, livespointer mt);
788 void on_insgap_cur_activate(LiVESMenuItem *, livespointer mt);
789 void on_split_activate(LiVESMenuItem *, livespointer mt);
790 void scroll_tracks(lives_mt *, int top_track, boolean set_value);
791 boolean track_arrow_pressed(LiVESWidget *ahbox, LiVESXEventButton *, livespointer mt);
792 void track_select(lives_mt *);
793 boolean mt_track_is_audio(lives_mt *, int ntrack);
794 boolean mt_track_is_video(lives_mt *, int ntrack);
795 
796 void mt_do_autotransition(lives_mt *, track_rect *block);
797 
798 void set_track_label_string(lives_mt *mt, int track, const char *label);
799 
800 LiVESWidget *get_eventbox_for_track(lives_mt *mt, int ntrack);
801 void on_rename_track_activate(LiVESMenuItem *menuitem, livespointer mt);
802 
803 // track mouse movement
804 boolean on_track_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
805 boolean on_atrack_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
806 boolean on_track_header_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
807 boolean on_track_between_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
808 boolean on_track_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt);
809 boolean on_atrack_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt);
810 boolean on_track_header_release(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
811 boolean on_track_between_release(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
812 boolean on_track_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer mt);
813 boolean on_track_header_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer mt);
814 
815 void unselect_all(lives_mt *);
816 void insert_frames(int filenum, weed_timecode_t offset_start, weed_timecode_t offset_end, weed_timecode_t tc,
817  lives_direction_t direction, LiVESWidget *eventbox, lives_mt *, track_rect *in_block);
818 void insert_audio(int filenum, weed_timecode_t offset_start, weed_timecode_t offset_end, weed_timecode_t tc,
819  double avel, lives_direction_t direction, LiVESWidget *eventbox, lives_mt *, track_rect *in_block);
820 void on_seltrack_toggled(LiVESWidget *, livespointer mt);
821 void scroll_track_by_scrollbar(LiVESScrollbar *sbar, livespointer mt);
822 
823 // block functions
824 void in_out_start_changed(LiVESWidget *, livespointer mt);
825 void in_out_end_changed(LiVESWidget *, livespointer mt);
826 void in_anchor_toggled(LiVESToggleButton *, livespointer mt);
827 void out_anchor_toggled(LiVESToggleButton *, livespointer mt);
828 void avel_reverse_toggled(LiVESToggleButton *, livespointer mt);
829 void avel_spin_changed(LiVESSpinButton *, livespointer mt);
830 
831 // block API functions
832 track_rect *find_block_by_uid(lives_mt *mt, ulong uid);
833 ulong mt_get_last_block_uid(lives_mt *mt);
834 int mt_get_block_count(lives_mt *, int ntrack);
835 double mt_get_block_sttime(lives_mt *, int ntrack, int iblock);
836 double mt_get_block_entime(lives_mt *, int ntrack, int iblock);
837 
838 track_rect *get_block_from_track_and_time(lives_mt *mt, int track, double time);
839 
840 int get_track_for_block(track_rect *block);
841 int get_clip_for_block(track_rect *block);
842 
843 // timeline functions
844 boolean resize_timeline(lives_mt *);
845 void mt_tl_move(lives_mt *, double pos_abs);
846 void set_timeline_end_secs(lives_mt *, double secs);
847 boolean on_timeline_press(LiVESWidget *, LiVESXEventButton *, livespointer mt);
848 boolean on_timeline_release(LiVESWidget *, LiVESXEventButton *, livespointer mt);
849 boolean on_timeline_update(LiVESWidget *, LiVESXEventMotion *, livespointer mt);
850 void draw_region(lives_mt *mt);
851 void tc_to_rs(LiVESMenuItem *, livespointer mt);
852 void tc_to_re(LiVESMenuItem *, livespointer mt);
853 void rs_to_tc(LiVESMenuItem *, livespointer mt);
854 void re_to_tc(LiVESMenuItem *, livespointer mt);
855 
856 boolean mt_mark_callback(LiVESAccelGroup *group, LiVESObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data);
857 
858 void multitrack_clear_marks(LiVESMenuItem *, livespointer mt);
859 void mt_show_current_frame(lives_mt *, boolean return_layer);
860 void mt_clear_timeline(lives_mt *mt);
861 
862 void mt_zoom_in(LiVESMenuItem *, livespointer mt);
863 void mt_zoom_out(LiVESMenuItem *, livespointer mt);
864 
865 // context box text
866 void clear_context(lives_mt *);
867 void add_context_label(lives_mt *, const char *text);
868 void mouse_mode_context(lives_mt *);
869 void do_sel_context(lives_mt *);
870 void do_fx_list_context(lives_mt *, int fxcount);
871 void do_fx_move_context(lives_mt *mt);
872 
873 // playback / animation
874 void multitrack_playall(lives_mt *);
875 void multitrack_play_sel(LiVESMenuItem *, livespointer mt);
876 void animate_multitrack(lives_mt *);
877 void unpaint_line(lives_mt *, LiVESWidget *eventbox);
878 void unpaint_lines(lives_mt *);
879 
880 void mt_prepare_for_playback(lives_mt *);
881 void mt_post_playback(lives_mt *);
882 
883 // effect node controls
884 void on_next_node_clicked(LiVESWidget *, livespointer mt);
885 void on_prev_node_clicked(LiVESWidget *, livespointer mt);
886 void on_del_node_clicked(LiVESWidget *, livespointer mt);
887 void on_node_spin_value_changed(LiVESSpinButton *, livespointer mt);
888 double mt_get_effect_time(lives_mt *);
889 
890 void on_frame_preview_clicked(LiVESButton *, livespointer mt);
891 void show_preview(lives_mt *, weed_timecode_t tc);
892 
893 boolean add_mt_param_box(lives_mt *);
894 
895 // filter list controls
896 weed_plant_t *get_prev_fm(lives_mt *, int current_track, weed_plant_t *frame);
897 weed_plant_t *get_next_fm(lives_mt *, int current_track, weed_plant_t *frame);
898 
899 void on_prev_fm_clicked(LiVESWidget *button, livespointer mt);
900 void on_next_fm_clicked(LiVESWidget *button, livespointer mt);
901 void on_fx_insb_clicked(LiVESWidget *button, livespointer mt);
902 void on_fx_insa_clicked(LiVESWidget *button, livespointer mt);
903 
904 // utils
905 uint32_t event_list_get_byte_size(lives_mt *, weed_plant_t *event_list, int *num_events);
906 boolean event_list_rectify(lives_mt *, weed_plant_t *event_listy);
907 void reset_renumbering(void);
908 boolean make_backup_space(lives_mt *, size_t space_needed);
909 void activate_mt_preview(lives_mt *);
910 void **mt_get_pchain(void);
911 void event_list_free_undos(lives_mt *);
912 boolean used_in_current_layout(lives_mt *, int file);
913 
914 boolean set_new_set_name(lives_mt *);
915 
916 LiVESPixbuf *make_thumb(lives_mt *, int file, int width, int height, int frame, boolean noblanks);
917 
918 // event_list utilities
919 boolean compare_filter_maps(weed_plant_t *fm1, weed_plant_t *fm2,
920  int ctrack);
921 void move_init_in_filter_map(lives_mt *, weed_plant_t *event_list, weed_plant_t *fmap, weed_plant_t *ifrom,
922  weed_plant_t *ito, int track, boolean after);
923 void update_filter_events(lives_mt *, weed_plant_t *first_event, weed_timecode_t start_tc, weed_timecode_t end_tc,
924  int track, weed_timecode_t new_start_tc, int new_track);
925 void mt_fixup_events(lives_mt *, weed_plant_t *old_event, weed_plant_t *new_event);
926 
927 // event_list load/save
928 char *get_eload_filename(lives_mt *mt, boolean allow_auto_reload);
929 weed_plant_t *load_event_list(lives_mt *, char *eload_file);
930 boolean on_save_event_list_activate(LiVESMenuItem *, livespointer mt);
931 
932 // layouts and layout maps
933 LiVESList *load_layout_map(void);
934 void add_markers(lives_mt *, weed_plant_t *event_list, boolean add_block_ids);
935 void remove_markers(weed_plant_t *event_list);
936 void save_layout_map(int *lmap, double *lmap_audio, const char *file, const char *dir);
937 
938 void wipe_layout(lives_mt *);
939 
940 void migrate_layouts(const char *old_set_name, const char *new_set_name);
941 
942 LiVESList *layout_frame_is_affected(int clipno, int frame);
943 LiVESList *layout_audio_is_affected(int clipno, double time);
944 
945 boolean check_for_layout_del(lives_mt *, boolean exiting);
946 
947 boolean on_load_event_list_activate(LiVESMenuItem *, livespointer mt);
948 
949 void stored_event_list_free_all(boolean wiped);
951 void remove_current_from_affected_layouts(lives_mt *);
952 
953 // auto backup
954 uint32_t mt_idle_add(lives_mt *);
955 boolean recover_layout(void);
956 void recover_layout_cancelled(boolean is_startup);
957 boolean write_backup_layout_numbering(lives_mt *);
958 boolean mt_auto_backup(livespointer mt);
959 
960 // amixer funcs
961 void amixer_show(LiVESButton *, livespointer mt);
962 void on_amixer_close_clicked(LiVESButton *, lives_mt *mt);
963 LiVESWidget *amixer_add_channel_slider(lives_mt *, int i);
964 
965 // misc
966 void mt_change_disp_tracks_ok(LiVESButton *, livespointer mt);
967 void mt_swap_play_pause(lives_mt *, boolean put_pause);
968 char *set_values_from_defs(lives_mt *, boolean from_prefs);
969 
970 // clip boxes
971 void mt_clip_select(lives_mt *, boolean scroll);
972 void mt_delete_clips(lives_mt *, int file);
973 void mt_init_clips(lives_mt *, int orig_file, boolean add);
974 
975 // key shortcuts
976 boolean mt_prevclip(LiVESAccelGroup *, LiVESObject *, uint32_t keyval, LiVESXModifierType mod, livespointer);
977 boolean mt_nextclip(LiVESAccelGroup *, LiVESObject *, uint32_t keyval, LiVESXModifierType mod, livespointer);
978 
979 typedef enum {
980  /* default to warn about */
985 
986  /*non-default*/
991 
992  /* info */
995 
996 // array max: TODO - use dynamic arrays to bypass track limits
997 
998 #define MAX_TRACKS 65536
999 #define MAX_VIDEO_TRACKS 65536
1000 #define MAX_AUDIO_TRACKS 65536
1001 
1002 #endif
Definition: multitrack.h:141
Definition: multitrack.h:84
ulong grav_right_func
Definition: multitrack.h:457
LiVESWidget * param_box
Definition: multitrack.h:272
void stored_event_list_free_undos(void)
Definition: multitrack.c:5494
LiVESWidget * fx_region_2
Definition: multitrack.h:231
boolean move_effects
should we move effects attached to a block ?
Definition: multitrack.h:147
LiVESWidget * fx_blocka
Definition: multitrack.h:224
LiVESWidget * view_effects
Definition: multitrack.h:254
LiVESWidget * view_events
Definition: multitrack.h:251
LiVESWidget * loop_continue
Definition: multitrack.h:204
void re_to_tc(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13944
void insert_audio_at_ctx_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13893
LiVESWidget * save_event_list
menuitem
Definition: multitrack.h:281
LiVESWidget * edit_menu
Definition: multitrack.h:383
LiVESWidget * render_menu
Definition: multitrack.h:389
int mt_get_block_count(lives_mt *, int ntrack)
count blocks in track
Definition: multitrack.c:22174
void mt_fixup_events(lives_mt *, weed_plant_t *old_event, weed_plant_t *new_event)
Definition: multitrack.c:18550
boolean insert_audio
do we insert audio with video ?
Definition: multitrack.h:157
void scroll_tracks(lives_mt *, int top_track, boolean set_value)
Definition: multitrack.c:2124
LiVESWidget * fd_frame
Definition: multitrack.h:319
LiVESWidget * fx_region_1v
Definition: multitrack.h:229
LiVESWidget * sel_label
Definition: multitrack.h:278
int get_clip_for_block(track_rect *block)
Definition: multitrack.c:22216
Definition: multitrack.h:130
int current_track
starts at 0
Definition: multitrack.h:483
boolean audio_bleedthru
should we allow all audio to bleed thru ?
Definition: multitrack.h:159
LiVESWidget * amixer_button
Definition: multitrack.h:330
LiVESWidget * seldesel_menuitem
Definition: multitrack.h:250
Definition: multitrack.h:135
Definition: multitrack.h:988
int get_track_for_block(track_rect *block)
return track number for a given block
Definition: multitrack.c:232
Definition: multitrack.h:983
LiVESWidget * load_set
Definition: multitrack.h:409
Definition: multitrack.h:90
void update_grav_mode(lives_mt *)
Definition: multitrack.c:4689
#define N_RECENT_FILES
need this for event_list_t *
Definition: main.h:374
boolean on_track_header_release(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:13531
LiVESWidget * top_eventbox
Definition: multitrack.h:350
boolean multitrack_insert(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:16912
boolean follow_playback
Definition: multitrack.h:156
int add_video_track_behind(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:10265
LiVESWidget * sep4
Definition: multitrack.h:371
boolean region_updating
Definition: multitrack.h:505
LiVESWidget * time_scrollbar
Definition: multitrack.h:406
boolean use_context
Definition: multitrack.h:614
lives_mt_fx_order_t
Definition: multitrack.h:133
LiVESWidget * hseparator2
Definition: multitrack.h:380
LiVESWidget * context_frame
Definition: multitrack.h:333
LiVESWidget * add_vid_front
Definition: multitrack.h:326
LiVESWidget * in_image
Definition: multitrack.h:187
int current_fx
Definition: multitrack.h:510
Definition: multitrack.h:116
#define PATH_MAX
Definition: main.h:249
void update_insert_mode(lives_mt *)
Definition: multitrack.c:4622
double region_init
point where user pressed the mouse
Definition: multitrack.h:504
char * force_load_name
< force some visual changes when applying autotrans
Definition: multitrack.h:661
Definition: multitrack.h:96
LiVESWidget * clip_scroll
Definition: multitrack.h:180
lives_direction_t last_direction
last direction timeline cursor was moved in
Definition: multitrack.h:491
LiVESWidget * del_node_button
Definition: multitrack.h:275
lives_mt_mouse_mode_t
Definition: multitrack.h:59
LiVESWidget * ins_normal
Definition: multitrack.h:243
Definition: multitrack.h:112
LiVESWidget * fx_delete
Definition: multitrack.h:225
LiVESWidget * fx_contents_box
Definition: multitrack.h:268
Definition: multitrack.h:134
lives_mt_fx_order_t fx_order
Definition: multitrack.h:573
LiVESWidget * context_scroll
Definition: multitrack.h:191
Definition: multitrack.h:118
Definition: multitrack.h:124
LiVESWidget * fx_region_2av
Definition: multitrack.h:232
LiVESWidget * render_sep
Definition: multitrack.h:313
LiVESWidget * timeline_eb
Definition: multitrack.h:197
int inheight
Definition: multitrack.h:565
weed_plant_t * pb_loop_event
FRAME event to loop back to (can be different from pb_start_event if we are paused) ...
Definition: multitrack.h:609
Definition: multitrack.h:665
ulong mouse_mot2
Definition: multitrack.h:535
void update_filter_events(lives_mt *, weed_plant_t *first_event, weed_timecode_t start_tc, weed_timecode_t end_tc, int track, weed_timecode_t new_start_tc, int new_track)
Definition: multitrack.c:15902
Definition: multitrack.h:128
void mt_init_clips(lives_mt *, int orig_file, boolean add)
Definition: multitrack.c:10602
boolean compare_filter_maps(weed_plant_t *fm1, weed_plant_t *fm2, int ctrack)
ctrack can be -1 to compare all events, else we cf for ctrack
Definition: multitrack.c:19563
LiVESWidget * load_vals
Definition: multitrack.h:308
weed_plant_t * specific_event
a pointer to some generally interesting event
Definition: multitrack.h:611
boolean no_expose
block timeline expose while we are exiting
Definition: multitrack.h:636
LiVESWidget * btoolbarx
Definition: multitrack.h:341
void wipe_layout(lives_mt *)
Definition: multitrack.c:21067
int user_height
Definition: multitrack.h:594
void on_fx_insa_clicked(LiVESWidget *button, livespointer mt)
Definition: multitrack.c:18279
boolean event_list_rectify(lives_mt *, weed_plant_t *event_listy)
Definition: multitrack.c:19876
weed_plant_t * solo_inst
instance to view solo in the frame preview
Definition: multitrack.h:604
LiVESWidget * btoolbar
Definition: multitrack.h:373
boolean autocross_audio
crossfade audio with autotransitions
Definition: multitrack.h:161
LiVESObject * node_adj
Definition: multitrack.h:426
void in_out_start_changed(LiVESWidget *, livespointer mt)
Definition: multitrack.c:11587
boolean on_timeline_update(LiVESWidget *, LiVESXEventMotion *, livespointer mt)
Definition: multitrack.c:17834
boolean on_atrack_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt)
LiVESList * selected_tracks
Definition: multitrack.h:485
char * get_track_name(lives_mt *, int track_num, boolean is_audio)
Definition: multitrack.c:958
LiVESList * audio_vols_back
layer volume levels (coarse control) - reset levels
Definition: multitrack.h:431
LiVESWidget * fx_box
Definition: multitrack.h:269
boolean in_sensitise
Definition: multitrack.h:514
LiVESWidget * fx_block
Definition: multitrack.h:222
void reset_renumbering(void)
Definition: multitrack.c:9390
boolean on_track_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt)
Definition: multitrack.c:13373
LiVESWidget * clear_ds
Definition: multitrack.h:414
void mt_post_playback(lives_mt *)
Definition: multitrack.c:16743
void mt_clear_timeline(lives_mt *mt)
Definition: multitrack.c:10489
LiVESWidget * jumpnext
Definition: multitrack.h:214
void * extra
Definition: multitrack.h:668
LiVESWidget * render_vid
Definition: multitrack.h:314
LiVESWidget * vpaned
Definition: multitrack.h:209
boolean auto_reloading
Definition: multitrack.h:577
size_t data_len
including this mt_undo
Definition: multitrack.h:669
LiVESWidget * play_blank
Definition: multitrack.h:177
boolean check_for_layout_del(lives_mt *, boolean exiting)
Definition: multitrack.c:5577
LiVESToolItem * sep1
Definition: multitrack.h:368
void do_fx_list_context(lives_mt *, int fxcount)
Definition: multitrack.c:17971
LiVESWidget * atrans_menuitem
Definition: multitrack.h:236
lives_mt_insert_mode_t
Definition: multitrack.h:65
boolean changed
changed since last saved
Definition: multitrack.h:558
boolean tl_mouse
Definition: multitrack.h:644
void list_fx_here_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13915
LiVESWidget * timecode
Definition: multitrack.h:263
LiVESWidget * out_frame
Definition: multitrack.h:186
LiVESWidget * next_node_button
Definition: multitrack.h:273
the default (only insert if it fits)
Definition: multitrack.h:66
LiVESWidget * render_aud
Definition: multitrack.h:315
void multitrack_clear_marks(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13958
boolean is_atrans
Definition: multitrack.h:659
LiVESWidget * l_sel_arrow
Definition: multitrack.h:279
double tl_min
Definition: multitrack.h:478
void * out
Definition: multitrack.h:714
void on_insgap_cur_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14652
void mt_delete_clips(lives_mt *, int file)
Definition: multitrack.c:10542
void insert_frames(int filenum, weed_timecode_t offset_start, weed_timecode_t offset_end, weed_timecode_t tc, lives_direction_t direction, LiVESWidget *eventbox, lives_mt *, track_rect *in_block)
Definition: multitrack.c:17206
lives_mt_last_fx_type_t last_fx_type
Definition: multitrack.h:571
boolean render_vidp
render video
Definition: multitrack.h:163
void set_timeline_end_secs(lives_mt *, double secs)
Definition: multitrack.c:2911
lives_mt_grav_mode_t grav_mode
Definition: multitrack.h:150
LiVESWidget * amix_label
Definition: multitrack.h:346
Definition: multitrack.h:718
LiVESWidget * checkbutton_start_anchored
Definition: multitrack.h:261
lives_cursor_t
Definition: widget-helper.h:1035
void mt_clip_select(lives_mt *, boolean scroll)
Definition: multitrack.c:2806
int64_t auto_back_time
time when last backup was done (not to be confused with prefs->auto_back)
Definition: multitrack.h:561
int outwidth
Definition: multitrack.h:566
LiVESWidget * stop
Definition: multitrack.h:200
LiVESObject * vadjustment
Definition: multitrack.h:435
int64_t unique_id
Definition: multitrack.h:720
LiVESList * layout_audio_is_affected(int clipno, double time)
Definition: multitrack.c:21413
LiVESList * audio_vols
layer volume levels (coarse control) - set in mixer
Definition: multitrack.h:430
boolean redraw_block
block drawing of playback cursor during track redraws
Definition: multitrack.h:632
LiVESWidget * undo
Definition: multitrack.h:288
LiVESWidget * cback_audio
Definition: multitrack.h:306
LiVESWidget * preview_eventbox
Definition: multitrack.h:340
LiVESWidget * timeline_table
Definition: multitrack.h:195
LiVESWidget * close
Definition: multitrack.h:412
int nchans
Definition: multitrack.h:678
weed_timecode_t insert_end
Definition: multitrack.h:541
ulong grav_left_func
Definition: multitrack.h:456
LiVESWidget * mm_select
Definition: multitrack.h:241
void on_split_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:16087
ulong spin_start_func
Definition: multitrack.h:585
LiVESWidget * grav_normal
Definition: multitrack.h:246
lives_mt_block_state_t state
Definition: multitrack.h:702
void delete_block_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13901
void mouse_mode_context(lives_mt *)
Definition: multitrack.c:4593
LiVESWidget * eview_label
Definition: multitrack.h:322
ulong * ch_slider_fns
Definition: multitrack.h:677
LiVESWidget * clear_event_list
menuitem
Definition: multitrack.h:283
LiVESWidget * sep_image
Definition: multitrack.h:192
lives_mt * mt
Definition: multitrack.h:679
boolean moving_block
moving block flag
Definition: multitrack.h:524
void remove_markers(weed_plant_t *event_list)
Definition: multitrack.c:21048
void remove_current_from_affected_layouts(lives_mt *)
Definition: multitrack.c:5503
LiVESWidget * fx_blockv
Definition: multitrack.h:223
LiVESPixbuf * frame_pixbuf
Definition: multitrack.h:439
LiVESWidget * hseparator
Definition: multitrack.h:379
ulong tc_func
Definition: multitrack.h:465
LiVESWidget * tl_label
Definition: multitrack.h:347
Definition: main.h:329
void on_frame_preview_clicked(LiVESButton *, livespointer mt)
track_rect * find_block_by_uid(lives_mt *mt, ulong uid)
Definition: multitrack.c:22121
LiVESWidget * aparam_menuitem
Definition: multitrack.h:311
LiVESWidget * fx_region_1a
Definition: multitrack.h:230
Definition: multitrack.h:993
LiVESWidget * msg_area
Definition: multitrack.h:219
int sel_y
Definition: multitrack.h:532
LiVESWidget * btoolbary
Definition: multitrack.h:342
LiVESWidget * select_track
Definition: multitrack.h:249
boolean block_tl_move
set to TRUE to block moving timeline (prevents loops with the node spinbutton)
Definition: multitrack.h:656
weed_plant_t * event_list
Definition: multitrack.h:469
ulong spin_end_func
Definition: multitrack.h:586
int file_selected
actual LiVES file struct number which clip_selected matches
Definition: multitrack.h:482
LiVESWidget * ac_audio_check
Definition: multitrack.h:290
LiVESWidget * rs_to_tc
Definition: multitrack.h:286
track_rect * get_block_from_track_and_time(lives_mt *mt, int track, double time)
get timeline end time of block
Definition: multitrack.c:22208
boolean normalise_audp
normalise audio
Definition: multitrack.h:165
void show_preview(lives_mt *, weed_timecode_t tc)
ulong spin_avel_func
Definition: multitrack.h:445
int user_signed_endian
Definition: multitrack.h:598
LiVESWidget * save_set
Definition: multitrack.h:410
LiVESWidget * eventbox
pointer to eventbox widget which contains this block; we can use its "layer_number" to get the track/...
Definition: multitrack.h:708
Definition: multitrack.h:982
boolean write_backup_layout_numbering(lives_mt *)
Definition: multitrack.c:640
Definition: multitrack.h:107
LiVESWidget * render
Definition: multitrack.h:216
ulong check_avel_rev_func
Definition: multitrack.h:448
boolean end_anchored
Definition: multitrack.h:704
boolean block_node_spin
set to TRUE to block moving node spinner (prevents loops with the timeline)
Definition: multitrack.h:657
LiVESWidget * aload_subs
Definition: multitrack.h:307
boolean undoable
Definition: multitrack.h:555
Definition: multitrack.h:117
void draw_region(lives_mt *mt)
Definition: multitrack.c:17540
ulong ins_normal_func
Definition: multitrack.h:453
ulong mt_get_last_block_uid(lives_mt *mt)
get index of last inserted (wallclock time) block for track
Definition: multitrack.c:22163
lives_mt_block_state_t
Definition: multitrack.h:139
int user_width
Definition: multitrack.h:593
LiVESWidget * nb_label7
Definition: multitrack.h:366
lives_mt * multitrack(weed_plant_t *, int orig_file, double fps)
create and return lives_mt struct
Definition: multitrack.c:6129
int selected_filter
filter selected in poly window tab
Definition: multitrack.h:628
LiVESWidget * hpaned
Definition: multitrack.h:210
LiVESWidget * apply_fx_button
Definition: multitrack.h:320
LiVESWidget * fx_params_label
Definition: multitrack.h:329
ulong spin_in_func
Definition: multitrack.h:443
LiVESWidget * tc_to_re
Definition: multitrack.h:285
void on_seltrack_toggled(LiVESWidget *, livespointer mt)
Definition: multitrack.c:16474
LiVESObject * spinbutton_out_adj
Definition: multitrack.h:423
boolean on_atrack_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
void multitrack_play_sel(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:16881
Definition: multitrack.h:92
void set_mt_play_sizes(lives_mt *mt, int width, int height)
Definition: multitrack.c:5200
LiVESWidget * scrolledwindow
Definition: multitrack.h:189
LiVESWidget * aparam_submenu
Definition: multitrack.h:312
LiVESWidget * spinbutton_end
Definition: multitrack.h:265
Definition: multitrack.h:123
boolean on_save_event_list_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:19180
ulong mute_audio_func
Definition: multitrack.h:460
LiVESWidget * fx_region
Definition: multitrack.h:227
lives_mt_poly_state_t poly_state
state of polymorph window
Definition: multitrack.h:487
void animate_multitrack(lives_mt *)
Definition: multitrack.c:13793
LiVESWidget * hbox
Definition: multitrack.h:176
Definition: multitrack.h:990
double user_fps
Definition: multitrack.h:592
boolean ignore_load_vals
Definition: multitrack.h:590
LiVESWidget * gens_submenu
Definition: multitrack.h:416
ulong check_start_func
Definition: multitrack.h:446
void insert_here_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13846
track_rect * next
Definition: multitrack.h:695
lives_mt_undo_t action
Definition: multitrack.h:666
LiVESWidget * mute_audio
Definition: multitrack.h:203
LiVESWidget * grav_menuitem
Definition: multitrack.h:244
LiVESWidget * capture
Definition: multitrack.h:417
LiVESWidget * split_sel
Definition: multitrack.h:293
ulong sepwin_func
Definition: multitrack.h:459
LiVESWidget * insa_checkbutton
Definition: multitrack.h:419
LiVESWidget * selection_menu
Definition: multitrack.h:387
LiVESWidget * fx_list_vbox
Definition: multitrack.h:300
boolean track_arrow_pressed(LiVESWidget *ahbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:2593
LiVESWidget * nb_label5
Definition: multitrack.h:364
LiVESWidget ** ch_sliders
Definition: multitrack.h:674
LiVESWidget * btoolbar3
Definition: multitrack.h:375
char * name
Definition: multitrack.h:721
LiVESWidget * follow_play
Definition: multitrack.h:323
void amixer_show(LiVESButton *, livespointer mt)
Definition: multitrack.c:21866
LiVESWidget * grav_label
Definition: multitrack.h:245
LiVESWidget * add_audio_track(lives_mt *, int trackno, boolean behind)
Definition: multitrack.c:9911
lives_special_framedraw_rect_t * framedraw
Definition: multitrack.h:568
boolean snap_over
snap to overlap
Definition: multitrack.h:149
LiVESWidget * nb_label2
Definition: multitrack.h:361
lives_mt_insert_mode_t insert_mode
Definition: multitrack.h:152
boolean mt_track_is_video(lives_mt *, int ntrack)
return TRUE if ntrack is a valid video track
Definition: multitrack.c:22151
ulong mouse_mot1
Definition: multitrack.h:534
Definition: multitrack.h:97
Definition: multitrack.h:89
LiVESWidget * checkbutton_end_anchored
Definition: multitrack.h:262
Definition: multitrack.h:113
lives_mt_undo_t
Definition: multitrack.h:80
double mt_get_block_entime(lives_mt *, int ntrack, int iblock)
get timeline start time of block
Definition: multitrack.c:22201
LiVESWidget * recent_menu
Definition: multitrack.h:403
void move_init_in_filter_map(lives_mt *, weed_plant_t *event_list, weed_plant_t *fmap, weed_plant_t *ifrom, weed_plant_t *ito, int track, boolean after)
Definition: multitrack.c:19471
weed_plant_t * pb_start_event
FRAME event from which we start playback.
Definition: multitrack.h:608
boolean on_track_header_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:13520
Definition: multitrack.h:77
LiVESWidget * timeline_table_header
Definition: multitrack.h:193
void insert_at_ctx_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13853
uint8_t * undo_mem
Definition: multitrack.h:548
boolean multitrack_delete(lives_mt *, boolean save)
Definition: multitrack.c:8969
void do_fx_move_context(lives_mt *mt)
Definition: multitrack.c:17982
boolean on_track_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer mt)
Definition: multitrack.c:13705
boolean used_in_current_layout(lives_mt *, int file)
Definition: multitrack.c:8945
uint32_t mt_idle_add(lives_mt *)
Definition: multitrack.c:853
weed_plant_t * get_next_fm(lives_mt *, int current_track, weed_plant_t *frame)
Definition: multitrack.c:18214
void mt_desensitise(lives_mt *)
Definition: multitrack.c:16491
LiVESWidget * avel_box
Definition: multitrack.h:255
boolean resize_timeline(lives_mt *)
Definition: multitrack.c:11436
LiVESList * clip_labels
Definition: multitrack.h:650
double end_secs
max display time of timeline in seconds
Definition: multitrack.h:475
Definition: multitrack.h:136
boolean is_rendering
TRUE if we are in the process of rendering/pre-rendering to a clip, cf. mainw->is_rendering.
Definition: multitrack.h:507
LiVESWidget * sepwin
Definition: multitrack.h:202
stretch first gap to fit block
Definition: multitrack.h:70
weed_plant_t * fm_edit_event
Definition: multitrack.h:579
int play_window_width
Definition: multitrack.h:625
void track_select(lives_mt *)
must call after setting mt->current_track
Definition: multitrack.c:1750
void on_cback_audio_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:15610
LiVESWidget * out_image
Definition: multitrack.h:188
void unselect_all(lives_mt *)
unselect all blocks
Definition: multitrack.c:11344
LiVESWidget * insert
Definition: multitrack.h:205
LiVESWidget * btoolbar2
Definition: multitrack.h:374
LiVESWidget * fx_region_3
Definition: multitrack.h:235
Definition: multitrack.h:104
void rs_to_tc(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13938
LiVESWidget * scrollbar
Definition: multitrack.h:211
LiVESWidget * amixb_eventbox
Definition: multitrack.h:352
ulong seltrack_func
Definition: multitrack.h:463
LiVESWidget * preview_frame
Definition: multitrack.h:339
boolean on_timeline_press(LiVESWidget *, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:18115
lives_mt_mouse_mode_t mouse_mode
Definition: multitrack.h:151
LiVESWidget * help_menu
Definition: multitrack.h:391
boolean on_track_header_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer mt)
Definition: multitrack.c:13714
int play_width
Definition: multitrack.h:621
boolean show_audio
Definition: multitrack.h:153
weed_plant_t * selected_init_event
currently selected in list
Definition: multitrack.h:472
void on_rename_track_activate(LiVESMenuItem *menuitem, livespointer mt)
Definition: multitrack.c:15576
LiVESWidget * clipedit
Definition: multitrack.h:208
boolean on_load_event_list_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:21174
int track_index
Definition: multitrack.h:569
LiVESWidget * avel_scale
Definition: multitrack.h:258
boolean mt_mark_callback(LiVESAccelGroup *group, LiVESObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
Definition: multitrack.c:18266
void set_track_label_string(lives_mt *mt, int track, const char *label)
Definition: multitrack.c:10111
int user_asamps
Definition: multitrack.h:597
void ** mt_get_pchain(void)
Definition: multitrack.c:953
weed_timecode_t tc
Definition: multitrack.h:667
LiVESWidget * playall
Definition: multitrack.h:212
LiVESWidget * inv_checkbutton
Definition: multitrack.h:676
void mt_set_autotrans(int idx)
Definition: multitrack.c:5733
weed_timecode_t insert_start
Definition: multitrack.h:540
ulong spin_out_func
Definition: multitrack.h:444
void add_context_label(lives_mt *, const char *text)
Definition: multitrack.c:11414
lives_lmap_error_t
Definition: multitrack.h:979
int play_height
Definition: multitrack.h:622
Definition: multitrack.h:62
LiVESWidget * ins_menuitem
Definition: multitrack.h:242
Definition: multitrack.h:989
mt_opts opts
Definition: multitrack.h:575
boolean auto_changed
changed since last auto-saved
Definition: multitrack.h:559
void add_markers(lives_mt *, weed_plant_t *event_list, boolean add_block_ids)
Definition: multitrack.c:19066
LiVESWidget * nb_label3
Definition: multitrack.h:362
LiVESWidget * mm_move
Definition: multitrack.h:240
boolean is_ready
Definition: multitrack.h:638
LiVESAccelGroup * accel_group
Definition: multitrack.h:433
overwite existing blocks
Definition: multitrack.h:69
LiVESWidget * fx_base_box
Definition: multitrack.h:267
void close_clip_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13868
size_t undo_buffer_used
Definition: multitrack.h:547
weed_plant_t * load_event_list(lives_mt *, char *eload_file)
Definition: multitrack.c:20846
LiVESWidget * load_event_list
menuitem
Definition: multitrack.h:282
boolean ign_ins_sel
Definition: multitrack.h:155
void add_aparam_menuitems(lives_mt *)
Definition: multitrack.c:4982
LiVESList * layout_frame_is_affected(int clipno, int frame)
Definition: multitrack.c:21379
LiVESList * cb_list
Definition: multitrack.h:441
double fps
fps of this timeline
Definition: multitrack.h:500
int hpaned_pos
Definition: multitrack.h:166
Definition: multitrack.h:119
boolean on_timeline_release(LiVESWidget *, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:17989
LiVESWidget * scroll_label
Definition: multitrack.h:338
void migrate_layouts(const char *old_set_name, const char *new_set_name)
Definition: multitrack.c:21244
void on_node_spin_value_changed(LiVESSpinButton *, livespointer mt)
Definition: multitrack.c:18398
LiVESWidget * delblock
Definition: multitrack.h:207
LiVESWidget * grav_left
Definition: multitrack.h:247
LiVESWidget * fx_region_2a
Definition: multitrack.h:234
int add_video_track_front(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:10275
LiVESList * aparam_view_list
Definition: multitrack.h:168
void mt_zoom_in(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:4094
LiVESWidget * timeline
Definition: multitrack.h:196
void save_layout_map(int *lmap, double *lmap_audio, const char *file, const char *dir)
Definition: multitrack.c:18902
LiVESWidget * grav_submenu
Definition: multitrack.h:354
Definition: multitrack.h:75
boolean pr_audio
TRUE if we are in the process of prerendering audio to a clip.
Definition: multitrack.h:508
LiVESWidget * view_audio
Definition: multitrack.h:317
int user_arate
Definition: multitrack.h:595
LiVESWidget * clip_inner_box
Definition: multitrack.h:181
LiVESWidget * prev_node_button
Definition: multitrack.h:274
void mt_swap_play_pause(lives_mt *, boolean put_pause)
Definition: multitrack.c:16674
LiVESWidget * files_menu
Definition: multitrack.h:382
void selblock_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13908
LiVESWidget * time_label
Definition: multitrack.h:343
LiVESWidget * main_hbox
Definition: multitrack.h:673
LiVESWidget * in_out_box
Definition: multitrack.h:182
void in_anchor_toggled(LiVESToggleButton *, livespointer mt)
Definition: multitrack.c:12298
void delete_audio_track(lives_mt *, LiVESWidget *eventbox, boolean full)
Definition: multitrack.c:8756
void in_out_end_changed(LiVESWidget *, livespointer mt)
Definition: multitrack.c:11825
int clip_selected
clip in clip window
Definition: multitrack.h:481
boolean aud_track_selected
Definition: multitrack.h:640
Definition: multitrack.h:672
boolean pertrack_audio
do we want pertrack audio ?
Definition: multitrack.h:158
LiVESWidget * r_sel_arrow
Definition: multitrack.h:280
LiVESList * audio_draws
list of audio boxes, 0 == backing audio, 1 == track 0 audio, etc.
Definition: multitrack.h:428
void insert_audio_here_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13886
LiVESWidget * tc_to_rs
Definition: multitrack.h:284
LiVESWidget * message_box
Definition: multitrack.h:218
weed_plant_t * add_blank_frames_up_to(weed_plant_t *event_list, weed_plant_t *start_event, weed_timecode_t end_tc, double fps)
Definition: multitrack.c:15271
LiVESWidget * amixer_add_channel_slider(lives_mt *, int i)
Definition: multitrack.c:21802
LiVESWidget * spinbutton_in
Definition: multitrack.h:259
lives_mt_last_fx_type_t
Definition: multitrack.h:127
LiVESWidget * get_eventbox_for_track(lives_mt *mt, int ntrack)
Definition: multitrack.c:22090
double pb_unpaused_start_time
playback start time in seconds. If play is stopped (not paused) we return to here.
Definition: multitrack.h:527
void activate_mt_preview(lives_mt *)
sensitize Show Preview and Apply buttons
Definition: multitrack.c:18630
boolean mt_nextclip(LiVESAccelGroup *, LiVESObject *, uint32_t keyval, LiVESXModifierType mod, livespointer)
Definition: multitrack.c:2885
LiVESWidget * eventbox
Definition: multitrack.h:337
char * handle
Definition: multitrack.h:719
LiVESWidget * show_layout_errors
Definition: multitrack.h:407
ulong check_end_func
Definition: multitrack.h:447
boolean on_render_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:15617
LiVESWidget * mm_menuitem
Definition: multitrack.h:239
LiVESWidget * fx_label
Definition: multitrack.h:270
LiVESWidget * in_hbox
Definition: multitrack.h:183
double ptr_time
stored timeline cursor position before playback
Definition: multitrack.h:496
LiVESWidget * node_spinbutton
Definition: multitrack.h:276
LiVESWidget * param_inner_box
Definition: multitrack.h:271
LiVESWidget * remove_first_gaps
Definition: multitrack.h:292
void on_del_node_clicked(LiVESWidget *, livespointer mt)
Definition: multitrack.c:18477
LiVESObject * spinbutton_in_adj
Definition: multitrack.h:422
LiVESWidget * nb_label1
Definition: multitrack.h:360
insert enough to fill gap (from selection start or end depending on gravity)
Definition: multitrack.h:71
weed_plant_t * init_event
current editable values
Definition: multitrack.h:471
boolean render_audp
render audio
Definition: multitrack.h:164
int exact_preview
Definition: multitrack.h:600
char * get_eload_filename(lives_mt *mt, boolean allow_auto_reload)
Definition: multitrack.c:20776
track_rect * prev
Definition: multitrack.h:696
Definition: multitrack.h:91
LiVESWidget * normalise_aud
Definition: multitrack.h:316
int vpaned_pos
Definition: multitrack.h:167
LiVESWidget * change_vals
Definition: multitrack.h:309
void avel_spin_changed(LiVESSpinButton *, livespointer mt)
Definition: multitrack.c:12165
#define ulong
Definition: main.h:137
boolean was_undo_redo
Definition: multitrack.h:634
void event_list_free_undos(lives_mt *)
Definition: multitrack.c:5479
char * set_values_from_defs(lives_mt *, boolean from_prefs)
Definition: multitrack.c:5419
void polymorph(lives_mt *, lives_mt_poly_state_t poly)
Definition: multitrack.c:12392
ulong grav_normal_func
Definition: multitrack.h:455
LiVESWidget * fx_ibefore_button
Definition: multitrack.h:303
int sel_x
Definition: multitrack.h:531
LiVESWidget * fx_list_scroll
Definition: multitrack.h:299
LiVESWidget * fx_edit
Definition: multitrack.h:226
void unpaint_line(lives_mt *, LiVESWidget *eventbox)
Definition: multitrack.c:13723
LiVESWidget * play_menu
Definition: multitrack.h:384
Definition: multitrack.h:987
Definition: multitrack.h:115
boolean show_ctx
Definition: multitrack.h:154
LiVESWidget * troubleshoot
Definition: multitrack.h:328
LiVESXDisplay * display
Definition: multitrack.h:437
void remove_gaps(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14282
LiVESWidget * submenu_atransfx
Definition: multitrack.h:237
LiVESWidget * nb_label
Definition: multitrack.h:335
LiVESWidget * last_filter_map
Definition: multitrack.h:296
void on_next_node_clicked(LiVESWidget *, livespointer mt)
Definition: multitrack.c:18453
LiVESList * video_draws
list of video timeline eventboxes, in layer order
Definition: multitrack.h:434
void on_prev_node_clicked(LiVESWidget *, livespointer mt)
Definition: multitrack.c:18465
LiVESWidget * adjust_start_end
Definition: multitrack.h:332
int avol_fx
index of audio volume filter, delegated by user from audio volume candidates
Definition: multitrack.h:582
LiVESWidget * ins_gap_cur
Definition: multitrack.h:295
LiVESWidget * fx_region_2v
Definition: multitrack.h:233
LiVESWidget * redo
Definition: multitrack.h:289
lives_mt_grav_mode_t
Definition: multitrack.h:74
Definition: multitrack.h:99
uint32_t idlefunc
autobackup function
Definition: multitrack.h:648
track_rect * putative_block
putative block to move or copy, or NULL
Definition: multitrack.h:494
boolean mt_track_is_audio(lives_mt *, int ntrack)
return TRUE if ntrack is a valid backing audio track
Definition: multitrack.c:22157
void out_anchor_toggled(LiVESToggleButton *, livespointer mt)
Definition: multitrack.c:12344
boolean mt_auto_backup(livespointer mt)
Definition: multitrack.c:824
boolean on_track_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:13564
LiVESWidget * fx_iafter_button
Definition: multitrack.h:304
LiVESWidget * out_hbox
Definition: multitrack.h:184
weed_plant_t * start_event
Definition: multitrack.h:697
Definition: multitrack.h:984
track_rect * block_selected
pointer to current selected block, or NULL
Definition: multitrack.h:493
void mt_show_current_frame(lives_mt *, boolean return_layer)
preview the current frame
Definition: multitrack.c:2984
boolean is_paused
Definition: multitrack.h:618
LiVESWidget * poly_box
Definition: multitrack.h:179
void do_sel_context(lives_mt *)
Definition: multitrack.c:17955
double region_start
start of time region in seconds (or 0.)
Definition: multitrack.h:502
LiVESWidget * nb_label6
Definition: multitrack.h:365
boolean recover_layout(void)
Definition: multitrack.c:928
double mt_get_block_sttime(lives_mt *, int ntrack, int iblock)
return time in seconds of first frame event in block
Definition: multitrack.c:22193
void mt_init_tracks(lives_mt *, boolean set_min_max)
add basic tracks, or set tracks from mt->event_list
Definition: multitrack.c:9427
boolean start_anchored
Definition: multitrack.h:703
LiVESWidget * move_fx
Definition: multitrack.h:238
LiVESList * tl_marks
Definition: multitrack.h:606
LiVESWidget * menubar
Definition: multitrack.h:173
LiVESWidget * tlx_eventbox
Definition: multitrack.h:351
void tc_to_rs(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13924
int preview_layer
Definition: multitrack.h:602
LiVESWidget * nb
Definition: multitrack.h:334
void on_amixer_close_clicked(LiVESButton *, lives_mt *mt)
Definition: multitrack.c:21651
void mt_change_disp_tracks_ok(LiVESButton *, livespointer mt)
Definition: multitrack.c:21444
LiVESWidget * tools_menu
Definition: multitrack.h:388
int render_file
Definition: multitrack.h:489
LiVESWidget * change_max_disp
Definition: multitrack.h:324
int play_window_height
Definition: multitrack.h:626
void show_clipinfo_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13875
LiVESWidget * fx_region_1
Definition: multitrack.h:228
TODO: add scrap_file_offset so we can treat scrapfile like an ordinary clip.
Definition: multitrack.h:692
LiVESWidget * add_vid_behind
Definition: multitrack.h:325
lives_direction_t
Definition: multitrack.h:122
LiVESList * list
Definition: multitrack.h:722
boolean did_backup
Definition: multitrack.h:550
LiVESWidget * clear_marks
Definition: multitrack.h:318
Definition: multitrack.h:142
LiVESWidget * playsel
Definition: multitrack.h:213
boolean add_mt_param_box(lives_mt *)
Definition: multitrack.c:1549
weed_plant_t * moving_fx
Definition: multitrack.h:580
LiVESWidget * tracks_menu
Definition: multitrack.h:386
LiVESWidget * view_sel_events
Definition: multitrack.h:331
void on_next_fm_clicked(LiVESWidget *button, livespointer mt)
Definition: multitrack.c:18322
void multitrack_playall(lives_mt *)
Definition: multitrack.c:16801
LiVESWidget * jumpback
Definition: multitrack.h:215
double tl_max
Definition: multitrack.h:479
ulong loop_cont_func
Definition: multitrack.h:461
int hotspot_y
Definition: multitrack.h:522
void delete_video_track(lives_mt *, int layer, boolean full)
Definition: multitrack.c:9866
LiVESToolItem * sep2
Definition: multitrack.h:369
boolean set_new_set_name(lives_mt *)
Definition: multitrack.c:19132
LiVESWidget * next_filter_map
Definition: multitrack.h:297
boolean layout_set_properties
Definition: multitrack.h:589
LiVESAdjustment * msg_adj
Definition: multitrack.h:221
int back_audio_tracks
number of backing audio tracks (currently 0 or 1)
Definition: multitrack.h:162
double hotspot_x
Definition: multitrack.h:521
boolean mt_prevclip(LiVESAccelGroup *, LiVESObject *, uint32_t keyval, LiVESXModifierType mod, livespointer)
Definition: multitrack.c:2875
LiVESWidget * snapo_checkbutton
Definition: multitrack.h:420
boolean on_multitrack_activate(LiVESMenuItem *menuitem, weed_plant_t *event_list)
menuitem callback
Definition: multitrack.c:10768
weed_timecode_t offset_start
offset in sourcefile of first frame
Definition: multitrack.h:700
LiVESWidget * fx_list_box
Definition: multitrack.h:298
LiVESWidget * prev_fm_button
Definition: multitrack.h:302
Definition: multitrack.h:61
double mt_get_effect_time(lives_mt *)
Definition: multitrack.c:1544
boolean make_backup_space(lives_mt *, size_t space_needed)
Definition: multitrack.c:4835
LiVESWidget * tl_eventbox
Definition: multitrack.h:194
LiVESWidget * mm_label
Definition: multitrack.h:358
Definition: multitrack.h:100
lives_amixer_t * amixer
Definition: multitrack.h:652
LiVESWidget * quit
Definition: multitrack.h:327
boolean playing_sel
are we playing just the time selection ?
Definition: multitrack.h:646
Definition: multitrack.h:60
no event_list
Definition: multitrack.h:83
Definition: multitrack.h:114
lives_mt_poly_state_t
Definition: multitrack.h:111
void mt_sensitise(lives_mt *)
Definition: multitrack.c:16554
LiVESWidget * open_menu
Definition: multitrack.h:393
lives_mt_nb_error_t
Definition: multitrack.h:103
LiVESList * undos
Definition: multitrack.h:546
weed_plant_t * get_prev_fm(lives_mt *, int current_track, weed_plant_t *frame)
Definition: multitrack.c:18160
LiVESWidget * view_in_out
Definition: multitrack.h:253
LiVESWidget * node_scale
Definition: multitrack.h:277
Definition: multitrack.h:981
int inwidth
Definition: multitrack.h:564
LiVESObject * hadjustment
Definition: multitrack.h:425
Definition: multitrack.h:76
LiVESWidget * grav_right
Definition: multitrack.h:248
void stored_event_list_free_all(boolean wiped)
Definition: multitrack.c:5548
LiVESWidget * ins_submenu
Definition: multitrack.h:355
Definition: plugins.h:459
void mt_prepare_for_playback(lives_mt *)
Definition: multitrack.c:16705
int user_achans
Definition: multitrack.h:596
void recover_layout_cancelled(boolean is_startup)
Definition: multitrack.c:872
lives_cursor_t cursor_style
Definition: multitrack.h:616
LiVESWidget * view_menu
Definition: multitrack.h:390
LiVESWidget * checkbutton_avel_reverse
Definition: multitrack.h:256
LiVESWidget * play_box
Definition: multitrack.h:178
boolean tl_selecting
for mouse select mode
Definition: multitrack.h:537
void mt_do_autotransition(lives_mt *, track_rect *block)
call this on a block to apply autotransition on it
Definition: multitrack.c:22228
LiVESWidget * effects_menu
Definition: multitrack.h:385
Definition: multitrack.h:108
void tc_to_re(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13931
LiVESWidget * remove_gaps
Definition: multitrack.h:291
LiVESWidget * ins_label
Definition: multitrack.h:357
LiVESWidget * in_frame
Definition: multitrack.h:185
double context_time
this is set when the user right clicks on a track, otherwise -1.
Definition: multitrack.h:613
double insert_avel
override for avel used during audio insert
Definition: multitrack.h:544
LiVESWidget * prerender_aud
Definition: multitrack.h:217
LiVESList * load_layout_map(void)
Definition: multitrack.c:18772
LiVESWidget * mm_submenu
Definition: multitrack.h:356
lives_rfx_t * current_rfx
Definition: multitrack.h:516
LiVESWidget * msg_scrollbar
Definition: multitrack.h:220
int top_track
top (video) track in scrolled window
Definition: multitrack.h:630
double pb_start_time
playback start time in seconds. If play is stopped (not paused) we return to here.
Definition: multitrack.h:526
double region_end
end of time region in seconds (or 0.)
Definition: multitrack.h:503
LiVESWidget * aparam_separator
Definition: multitrack.h:310
LiVESWidget * spinbutton_out
Definition: multitrack.h:260
void set_mt_colours(lives_mt *)
Definition: multitrack.c:5805
LiVESWidget * overlap_label
Definition: multitrack.h:345
boolean redoable
Definition: multitrack.h:556
Definition: paramspecial.h:15
void remove_first_gaps(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14274
Definition: multitrack.h:105
void avel_reverse_toggled(LiVESToggleButton *, livespointer mt)
Definition: multitrack.c:12118
Definition: multitrack.h:171
ulong sw_func
Definition: multitrack.h:467
uint64_t in
Definition: multitrack.h:713
boolean on_track_between_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:13542
LiVESWidget * rewind
Definition: multitrack.h:201
LiVESWidget * gang_checkbutton
Definition: multitrack.h:675
double tl_fixed_length
length of timeline can be fixed (secs) : TODO
Definition: multitrack.h:498
LiVESWidget * tl_hbox
Definition: multitrack.h:266
LiVESWidget * next_fm_button
Definition: multitrack.h:301
LiVESWidget * xtravbox
Definition: multitrack.h:175
LiVESWidget * spinbutton_start
Definition: multitrack.h:264
LiVESWidget * dumlabel2
Definition: multitrack.h:349
LiVESWidget * nb_label4
Definition: multitrack.h:363
LiVESWidget * dumlabel1
Definition: multitrack.h:348
LiVESWidget * timeline_reg
Definition: multitrack.h:198
void mt_tl_move(lives_mt *, double pos_abs)
Definition: multitrack.c:3231
LiVESWidget * audio_insert
Definition: multitrack.h:206
uint32_t event_list_get_byte_size(lives_mt *, weed_plant_t *event_list, int *num_events)
returns bytes and sets num_events
Definition: multitrack.c:21603
void on_fx_insb_clicked(LiVESWidget *button, livespointer mt)
Definition: multitrack.c:18292
LiVESWidget * view_clips
Definition: multitrack.h:252
LiVESPixbuf * make_thumb(lives_mt *, int file, int width, int height, int frame, boolean noblanks)
Definition: multitrack.c:399
double prev_fx_time
Definition: multitrack.h:654
void on_insgap_sel_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14616
boolean gang_audio
gang layer audio volume levels
Definition: multitrack.h:160
LiVESToolItem * eview_button
Definition: multitrack.h:321
Definition: multitrack.h:85
void scroll_track_by_scrollbar(LiVESScrollbar *sbar, livespointer mt)
Definition: multitrack.c:3335
LiVESWidget * re_to_tc
Definition: multitrack.h:287
boolean on_track_between_release(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:13553
boolean layout_prompt
on occasion, prompt user if they want to correct layout on disk or not
Definition: multitrack.h:588
ulong mm_move_func
Definition: multitrack.h:450
LiVESWidget * infobar
Definition: multitrack.h:199
int outheight
Definition: multitrack.h:567
LiVESWidget * menu_hbox
Definition: multitrack.h:377
Definition: multitrack.h:88
void multitrack_end_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13839
LiVESWidget * insa_label
Definition: multitrack.h:344
Definition: multitrack.h:712
void edit_start_end_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:13861
LiVESWidget * ins_gap_sel
Definition: multitrack.h:294
Definition: multitrack.h:145
void set_poly_tab(lives_mt *mt, uint32_t tab)
Definition: multitrack.c:3634
void mt_zoom_out(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:4104
Definition: multitrack.h:95
boolean mt_frame_preview
Definition: multitrack.h:512
boolean fx_auto_preview
Definition: multitrack.h:148
void unpaint_lines(lives_mt *)
Definition: multitrack.c:13743
ulong mm_select_func
Definition: multitrack.h:451
LiVESWidget * top_vbox
Definition: multitrack.h:174
Definition: multitrack.h:106
weed_plant_t * avol_init_event
Definition: multitrack.h:583
LiVESToolItem * sep3
Definition: multitrack.h:370
int undo_offset
Definition: multitrack.h:549
ulong uid
Definition: multitrack.h:693
Definition: multitrack.h:98
track_rect * move_block(lives_mt *, track_rect *block, double timesecs, int old_track, int new_track)
Definition: multitrack.c:11161
boolean ordered
are frames in sequential order ?
Definition: multitrack.h:705
LiVESWidget * rename_track
Definition: multitrack.h:305
void delete_audio_tracks(lives_mt *, LiVESList *list, boolean full)
Definition: multitrack.c:5637
Definition: multitrack.h:129
LiVESWidget * spinbutton_avel
Definition: multitrack.h:257
void clear_context(lives_mt *)
Definition: multitrack.c:11386
boolean has_audio_file
Definition: multitrack.h:642
LiVESWidget * context_box
Definition: multitrack.h:190
void on_prev_fm_clicked(LiVESWidget *button, livespointer mt)
Definition: multitrack.c:18305
weed_plant_t * end_event
Definition: multitrack.h:698