repair default keyframe load, tweak init default histogram threshold
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mwindow.h
index 8f26357ecb5d1ef73957295d03bdf596d1944d37..e0f0d4f8c19eab038534474199c58c7490503e79 100644 (file)
@@ -75,6 +75,7 @@
 #include "pluginset.inc"
 #include "preferences.inc"
 #include "preferencesthread.inc"
+#include "proxy.inc"
 #include "record.inc"
 #include "recordlabel.inc"
 #include "render.inc"
@@ -141,15 +142,10 @@ public:
        void hide_gwindow();
        int tile_windows(int window_config);
        char *get_cwindow_display();
-//     void set_titles(int value);
        void set_screens(int value);
        int asset_to_edl(EDL *new_edl,
                Asset *new_asset,
                RecordLabels *labels = 0);
-// Convert nested_edl to a nested EDL in new_edl
-// suitable for pasting in paste_edls
-       int edl_to_nested(EDL *new_edl,
-               EDL *nested_edl);
 
 // Entry point to insert assets and insert edls.  Called by TrackCanvas
 // and AssetPopup when assets are dragged in from AWindow.
@@ -180,6 +176,7 @@ public:
                int overwrite);
 // Reset everything for a load
        void update_project(int load_mode);
+       void update_vwindow();
 // Fit selected time to horizontal display range
        void fit_selection();
 // Fit selected autos to the vertical display range
@@ -199,20 +196,28 @@ public:
 // Find the plugin whose title matches title and return it
        static PluginServer* scan_plugindb(char *title,
                int data_type);
+       static void fix_plugin_title(char *title);
        static int plugin_exists(const char *plugin_path, ArrayList<PluginServer*> &plugins);
        static int plugin_exists(char *plugin_path);
        void dump_plugindb(FILE *fp);
-       void stop_playback(int wait=0);
+       void stop_playback(int wait);
+       void stop_transport();
 
        void queue_mixers(EDL *edl, int command, int wait_tracking,
-               int use_inout, int update_refresh, int toggle_audio);
+               int use_inout, int update_refresh, int toggle_audio, int loop_play);
+       ZWindow *create_mixer(Indexable *indexable);
+       void create_mixers();
+       void refresh_mixers(int dir=1);
        void stop_mixers();
+       void close_mixers(int destroy=1);
+       void open_mixers();
        ZWindow *get_mixer(Mixer *&mixer);
        void del_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 load_filenames(ArrayList<char*> *filenames,
                int load_mode = LOADMODE_REPLACE,
@@ -245,6 +250,9 @@ public:
        int move_right(int64_t distance = 0);
        void move_up(int64_t distance = 0);
        void move_down(int64_t distance = 0);
+       int find_selection(double position, int scroll_display = 0);
+       void toggle_camera_xyz();
+       void toggle_projector_xyz();
 
 // seek to labels
 // shift_down must be passed by the caller because different windows call
@@ -254,6 +262,8 @@ public:
 // seek to edit handles
        int next_edit_handle(int shift_down);
        int prev_edit_handle(int shift_down);
+// seek to keyframes
+       int nearest_plugin_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
@@ -324,29 +334,26 @@ public:
 // Clears active region in EDL.
 // If clear_handle, edit boundaries are cleared if the range is 0.
 // Called by paste, record, menueffects, render, and CWindow drop.
-       void clear(int clear_handle, int deglitch);
+       void clear(int clear_handle);
        void clear_labels();
        int clear_labels(double start, double end);
        void concatenate_tracks();
        void copy();
        int copy(double start, double end);
        void cut();
+       void blade(double position);
        void cut(double start, double end, double new_position=-1);
-// snap off edit from current position to handle/label
-       void snap_left_edit();
-       void snap_right_edit();
-       void snap_left_label();
-       void snap_right_label();
+// cut edit from current position to handle/label
+       void cut_left_edit();
+       void cut_right_edit();
+       void cut_left_label();
+       void cut_right_label();
 
 // Calculate aspect ratio from pixel counts
        static int create_aspect_ratio(float &w, float &h, int width, int height);
 // Calculate defaults path
        static void create_defaults_path(char *string, const char *config_file);
 
-       void delete_folder(char *folder);
-       void delete_inpoint();
-       void delete_outpoint();
-
        void delete_track();
        void delete_track(Track *track);
        void delete_tracks();
@@ -408,25 +415,19 @@ public:
        void move_track_up(Track *track);
        void move_tracks_up();
        void mute_selection();
-       void new_folder(const char *new_folder);
-       void overwrite(EDL *source);
+       void new_folder(const char *new_folder, int is_clips);
+       void delete_folder(char *folder);
 // For clipboard commands
        void paste();
 // For splice and overwrite
-       int paste(double start,
-               double end,
-               FileXML *file,
-               int edit_labels,
-               int edit_plugins,
-               int edit_autos);
-       int paste_output(int64_t startproject,
-                               int64_t endproject,
-                               int64_t startsource_sample,
-                               int64_t endsource_sample,
-                               int64_t startsource_frame,
-                               int64_t endsource_frame,
-                               Asset *asset,
-                               RecordLabels *new_labels);
+       void overwrite(EDL *source, int all);
+       void splice(EDL *source, int all);
+       int paste(double start, double end, FileXML *file,
+               int edit_labels, int edit_plugins, int edit_autos);
+       int paste_output(int64_t startproject, int64_t endproject,
+               int64_t startsource_sample, int64_t endsource_sample,
+               int64_t startsource_frame, int64_t endsource_frame,
+               Asset *asset, RecordLabels *new_labels);
        void paste_silence();
 
 // Detach single transition
@@ -474,18 +475,22 @@ public:
        void toggle_editing_mode();
        void set_inpoint(int is_mwindow);
        void set_outpoint(int is_mwindow);
-       void splice(EDL *source);
+       void unset_inoutpoint(int is_mwindow);
        void toggle_loop_playback();
        void trim_selection();
 // Synchronize EDL settings with all playback engines depending on current
 // operation.  Doesn't redraw anything.
        void sync_parameters(int change_type = CHANGE_PARAMS);
        void save_clip(EDL *new_edl, const char *txt);
-       void to_clip(EDL *edl, const char *txt);
+       void to_clip(EDL *edl, const char *txt, int all);
        int toggle_label(int is_mwindow);
        void undo_entry(BC_WindowBase *calling_window_gui);
        void redo_entry(BC_WindowBase *calling_window_gui);
-
+       void save_undo_data();
+       void load_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);
 
        int cut_automation();
        int copy_automation();
@@ -507,13 +512,16 @@ public:
        int modify_edithandles();
        int modify_pluginhandles();
        void finish_modify_handles();
-       void set_proxy(int use_scaler, int new_scale, int auto_scale,
-               ArrayList<Indexable*> *orig_assets,
-               ArrayList<Indexable*> *proxy_assets);
+       void rescale_proxy(EDL *clip, int orig_scale, int new_scale);
        void add_proxy(int use_scaler,
                ArrayList<Indexable*> *orig_assets,
                ArrayList<Indexable*> *proxy_assets);
-       void render_proxy(ArrayList<Indexable *> &new_idxbls);
+       int render_proxy(ArrayList<Indexable *> &new_idxbls);
+       void beep(double freq, double secs, double gain);
+       int enable_proxy();
+       int disable_proxy();
+       int to_proxy(Asset *asset, int new_scale, int new_use_scaler);
+       ProxyBeep *proxy_beep;
 
        void dump_plugins(FILE *fp=stdout);
        void dump_edl(FILE *fp=stdout);
@@ -557,6 +565,8 @@ public:
        static Commercials *commercials;
        int commercial_active;
        int has_commercials();
+// copy of edl created in speed_before, used in speed_after to normalize_speed
+       EDL *speed_edl;
 
 // Menu items
        ArrayList<ColormodelItem*> colormodels;
@@ -631,10 +641,8 @@ public:
        Mutex *keyframe_gui_lock;
 // Lock during creation and destruction of brender so playback doesn't use it.
        Mutex *brender_lock;
-
 // Initialize shared memory
-       void init_shm();
-
+       void init_shm(const char *pfn, int64_t min);
 // Initialize channel DB's for playback
        void init_channeldb();
        void init_render();
@@ -655,6 +663,7 @@ public:
        void commit_commercial();
        void undo_commercial();
        void cut_commercials();
+       void update_gui(int changed_edl);
        int paste_subtitle_text(char *text, double start, double end);
 
        void init_error();
@@ -678,14 +687,17 @@ public:
        static void init_plugin_index(MWindow *mwindow, Preferences *preferences,
                FILE *fp, const char *plugin_dir);
        static int init_ladspa_index(MWindow *mwindow, Preferences *preferences,
-               const char *index_path, const char *plugin_dir);
+               FILE *fp, const char *plugin_dir);
        static void scan_plugin_index(MWindow *mwindow, Preferences *preferences,
                FILE *fp, const char *plug_dir, const char *plug_path, int &idx);
        static void init_ffmpeg();
        static void init_ffmpeg_index(MWindow *mwindow, Preferences *preferences, FILE *fp);
-       static int load_plugin_index(MWindow *mwindow, const char *index_path,
-               const char *plugin_dir);
-       static PluginServer* new_ffmpeg_server(MWindow *mwindow, const char *name);
+       static int load_plugin_index(MWindow *mwindow, FILE *fp, const char *plugin_dir);
+       static PluginServer *new_ffmpeg_server(MWindow *mwindow, const char *name);
+       static int init_lv2_index(MWindow *mwindow, Preferences *preferences, FILE *fp);
+       static PluginServer *new_lv2_server(MWindow *mwindow, const char *name);
+       static void remove_plugin_index();
+
        void init_preferences();
        void init_signals();
        void init_theme();
@@ -702,6 +714,9 @@ public:
        void init_commercials();
        static void add_plugins(ArrayList<PluginServer*> &plugins);
        static void delete_plugins();
+       void speed_before();
+       int speed_after(int done);
+       int normalize_speed(EDL *old_edl, EDL *new_edl);
 //
        void clean_indexes();
 //     TimeBomb timebomb;