X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindow.h;h=30e632bfab7d353bc457a34f36cc630d63e2abe7;hp=b0e7877257dbffe458926bacbc536082340b0715;hb=0fd1b583cf9d14672c35f7369ba88388413be4f7;hpb=0e6cf5b52d1ebce9272270144bcf43df4683507e diff --git a/cinelerra-5.1/cinelerra/mwindow.h b/cinelerra-5.1/cinelerra/mwindow.h index b0e78772..30e632bf 100644 --- a/cinelerra-5.1/cinelerra/mwindow.h +++ b/cinelerra-5.1/cinelerra/mwindow.h @@ -102,9 +102,72 @@ #include "zwindow.inc" #include "wwindow.inc" #include "wavecache.inc" +#include "wintv.inc" +#include "x10tv.inc" #define FONT_SEARCHPATH "fonts" +class StackItem +{ +public: + EDL *edl, *new_edl; + Indexable *idxbl; + Edit *edit; + MainUndo *undo; + int64_t mtime; + double duration; +}; + +class Stack : public ArrayList +{ +public: +}; + + +#define BEEP_SAMPLE_RATE 48000 + +class Beeper : public Thread +{ +public: + typedef int16_t audio_data_t; + Beeper(MWindow *mwindow); + ~Beeper(); + + void run(); + void start(); + void stop(int wait); + void tone(double freq, double secs, double gain); + + MWindow *mwindow; + double freq, secs, gain; + AudioDevice *audio; + int playing_audio, interrupted; + int audio_pos; +}; + + +class DrawTrackMovement : public Thread +{ +public: + DrawTrackMovement(MWindow *mwindow); + ~DrawTrackMovement(); + void run(); + + MWindow *mwindow; +}; + +class ConfirmRefWindow : public BC_Window +{ +public: + ConfirmRefWindow(MWindow *mwindow, char *path, + int px, int py, int cw, int ch); + ~ConfirmRefWindow(); + void create_objects(); + + MWindow *mwindow; + const char *path; +}; + class MWindow : public Thread { @@ -131,12 +194,22 @@ public: int load_defaults(); int save_defaults(); int set_filename(const char *filename); + int set_titlebar(const char *filename); // Total vertical pixels in timeline int get_tracks_height(); // Total horizontal pixels in timeline int get_tracks_width(); +// session stack + void stack_push(EDL *edl, Indexable *idxbl); + void stack_pop(); + int save(EDL *edl, char *filename, int stat); + int save(int save_as); + void show_plugins(); + void clip_to_media(); + void media_to_clip(); + int create_ref(Asset *asset, EDL *ref); // Show windows - void show_vwindow(); + void show_vwindow(int raise); void show_awindow(); void show_lwindow(); void show_cwindow(); @@ -180,6 +253,9 @@ public: int edit_plugins, int edit_autos, int overwrite); + void collect_effects(); + void paste_effects(); + // Reset everything for a load void update_project(int load_mode); void update_preferences(Preferences *prefs); @@ -189,6 +265,7 @@ public: // Fit selected autos to the vertical display range void fit_autos(int all); void change_currentautorange(int autogrouptype, int increment, int changemax); + void update_autorange(int type, int increment, int use_max); void expand_autos(int changeall, int domin, int domax); void shrink_autos(int changeall, int domin, int domax); // move the window to include the cursor @@ -218,27 +295,34 @@ public: void create_mixers(double position = 0); void refresh_mixers(int dir=1); void stop_mixers(); - void close_mixers(int destroy=1); + void close_mixers(int result=1); void open_mixers(); ZWindow *get_mixer(Mixer *&mixer); - void del_mixer(ZWindow *zwindow); + ZWindow *get_mixer(int idx); + void close_mixer(ZWindow *zwindow); int mixer_track_active(Track *track); void update_mixer_tracks(); void start_mixer(); int select_zwindow(ZWindow *zwindow); void tile_mixers(); + int masters_to_mixers(); + void mix_masters(); + void set_gang_tracks(int v); int load_filenames(ArrayList *filenames, int load_mode = LOADMODE_REPLACE, + int edl_mode = LOADMODE_EDL_CLIP, // Cause the project filename on the top of the window to be updated. // Not wanted for loading backups. int update_filename = 1); // Print out plugins which are referenced in the EDL but not loaded. - void test_plugins(EDL *new_edl, char *path); + void test_plugins(EDL *new_edl, const char *path); int interrupt_indexes(); // Stop index building int redraw_time_dependancies(); // after reconfiguring the time format, sample rate, frame rate + void draw_trackmovement(); // after reconfiguring tracks/patchbay guis + DrawTrackMovement *redraw_tracks; // =========================================== movement @@ -251,7 +335,8 @@ public: int zoom_sample(int64_t zoom_sample); void zoom_autos(float min, float max); void zoom_amp(int64_t zoom_amp); - void zoom_track(int64_t zoom_track); + void zoom_atrack(int64_t zoom); + void zoom_vtrack(int64_t zoom); int fit_sample(); int move_left(int64_t distance = 0); int move_right(int64_t distance = 0); @@ -262,6 +347,9 @@ public: void toggle_projector_xyz(); double get_position(); void set_position(double position); + double get_timecode_offset(); + void set_timecode_offset(double offset); + void align_timecodes(); // seek to labels // shift_down must be passed by the caller because different windows call @@ -273,6 +361,7 @@ public: int prev_edit_handle(int shift_down); // seek to keyframes int nearest_plugin_keyframe(int shift_down, int dir); + int nearest_auto_keyframe(int shift_down, int dir); // offset is pixels to add to track_start void trackmovement(int offset, int pane_number); // view_start is pixels @@ -289,11 +378,13 @@ public: void split_y(); void crop_video(int mode); void update_plugins(); + void get_backup_path(char *path, int len); // Call after every edit operation void save_backup(); void load_backup(); void show_plugin(Plugin *plugin); void hide_plugin(Plugin *plugin, int lock); + void hide_plugin(int plugin_id, int lock); void hide_plugins(); void delete_plugin(PluginServer *plugin); // Update plugins with configuration changes. @@ -314,6 +405,7 @@ public: // Returns 1 if a GUI for the plugin is open so OpenGL routines can determine if // they can run. int plugin_gui_open(Plugin *plugin); + void stop_plugin_guis(); void show_keyframe_gui(Plugin *plugin); void hide_keyframe_guis(); @@ -334,13 +426,13 @@ public: AUDIO_5_1_TO_2, AUDIO_1_TO_1 }; - void add_audio_track_entry(int above, Track *dst); - int add_audio_track(int above, Track *dst); void add_clip_to_edl(EDL *edl); - void add_video_track_entry(Track *dst = 0); - int add_video_track(int above, Track *dst); - void add_subttl_track_entry(Track *dst = 0); - int add_subttl_track(int above, Track *dst); + void add_audio_track_entry(int above, Track *dst); + Track *add_audio_track(int above, Track *dst); + void add_video_track_entry(int above, Track *dst); + Track *add_video_track(int above, Track *dst); + void add_subttl_track_entry(int above, Track *dst); + Track *add_subttl_track(int above, Track *dst); void asset_to_all(); void asset_to_size(); @@ -356,6 +448,7 @@ public: void clear_hard_edges(); int clear_hard_edges(double start, double end); void clear_select(); + void select_edits(); void concatenate_tracks(); int copy_flags(int copy_flags=COPY_CLIPBOARD); void copy(); @@ -385,7 +478,7 @@ public: // TrackCanvas calls this to insert multiple effects from the drag_pluginservers // into pluginset_highlighted. - void insert_effects_canvas(double start, double length); + void insert_effects_canvas(Track *dest_track, double start, double length); // CWindow calls this to insert multiple effects from // the drag_pluginservers array. @@ -426,6 +519,10 @@ public: void move_tracks_down(); void move_track_up(Track *track); void move_tracks_up(); + void swap_track_down(Track *track); + void swap_tracks_down(); + void swap_track_up(Track *track); + void swap_tracks_up(); void mute_selection(); void new_folder(const char *new_folder, int is_clips); void delete_folder(char *folder); @@ -469,8 +566,8 @@ public: void remove_indexfile(Indexable *indexable); void rebuild_indices(); // Asset removal from caches - void reset_caches(); - void remove_asset_from_caches(Asset *asset); + void reset_caches(int locked); + void remove_from_caches(Indexable *idxbl); void remove_assets_from_project(int push_undo, int redraw, int delete_indexes, ArrayList *drag_assets /* mwindow->session->drag_assets */, ArrayList *drag_clips /* mwindow->session->drag_clips */); @@ -502,6 +599,7 @@ public: void redo_entry(BC_WindowBase *calling_window_gui); void save_undo_data(); void load_undo_data(); + void remove_undo_data(); int copy_target(const char *path, const char *target); int link_target(const char *real_path, const char *link_path, int relative); void save_project(const char *dir, int save_mode, int overwrite, int reload); @@ -517,6 +615,7 @@ public: // in the clipboard. int paste_default_keyframe(); int clear_default_keyframe(); + void create_keyframes(int mask, int mode); FloatAuto* get_float_auto(PatchGUI *patch,int idx); IntAuto* get_int_auto(PatchGUI *patch,int idx); @@ -525,6 +624,7 @@ public: int modify_edithandles(); int modify_pluginhandles(); + int modify_transnhandles(); void finish_modify_handles(); void rescale_proxy(EDL *clip, int orig_scale, int new_scale); void add_proxy(ArrayList *orig_assets, @@ -534,12 +634,13 @@ public: int enable_proxy(); int disable_proxy(); int to_proxy(Asset *asset, int new_scale, int new_use_scaler); - ProxyBeep *proxy_beep; + Beeper *beeper; void dump_plugins(FILE *fp=stdout); void dump_edl(FILE *fp=stdout); void dump_undo(FILE *fp=stdout); void dump_exe(FILE *fp=stdout); + void dump_caches(FILE *fp=stdout); static void trap_hook(FILE *fp, void *vp); void reset_android_remote(); @@ -549,7 +650,7 @@ public: int optimize_assets(); // delete unused assets from the cache and assets // render edl assets to specified format, then replace in edl void start_convert(Asset *format_asset, const char *suffix, - float beep, int remove_originals); + float beep, int to_proxy, int remove_originals); void finish_convert(int remove_originals); ConvertRender *convert_render; @@ -563,6 +664,8 @@ public: // Main undo stack MainUndo *undo; int undo_command; +// session stack + Stack stack; BC_Hash *defaults; Assets *assets; @@ -722,6 +825,8 @@ public: void init_preferences(); void init_signals(); void init_shuttle(); + void init_wintv(); + void init_x10tv(); void init_theme(); void init_compositor(); void init_levelwindow(); @@ -737,8 +842,10 @@ public: static void add_plugins(ArrayList &plugins); static void delete_plugins(); void speed_before(); - int speed_after(int done); - int normalize_speed(EDL *old_edl, EDL *new_edl); + int speed_after(int done, int edit_speed); + int normalize_speed(EDL *old_edl, EDL *new_edl, int edit_speed); + int get_cpus(int out_w, int out_h); + int get_cpus(); // void clean_indexes(); // TimeBomb timebomb; @@ -747,6 +854,8 @@ public: int screens; int in_destructor; Shuttle *shuttle; + WinTV *wintv; + X10TV *x10tv; }; #endif