X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fmwindow.h;fp=cinelerra-5.0%2Fcinelerra%2Fmwindow.h;h=0000000000000000000000000000000000000000;hb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;hp=3f0802c784aaa52f3e795b133c96af3a252d88b0;hpb=52fcc46226f9df46f9ce9d0566dc568455a7db0b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/mwindow.h b/cinelerra-5.0/cinelerra/mwindow.h deleted file mode 100644 index 3f0802c7..00000000 --- a/cinelerra-5.0/cinelerra/mwindow.h +++ /dev/null @@ -1,647 +0,0 @@ -/* - * CINELERRA - * Copyright (C) 1997-2014 Adam Williams - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#ifndef MWINDOW_H -#define MWINDOW_H - -#include -#include - -#include "arraylist.h" -#include "asset.inc" -#include "assets.inc" -#include "audiodevice.inc" -#include "awindow.inc" -#include "batchrender.inc" -#include "bcwindowbase.inc" -#include "bdcreate.inc" -#include "brender.inc" -#include "cache.inc" -#include "channel.inc" -#include "channeldb.inc" -#include "commercials.inc" -#include "cwindow.inc" -#include "bchash.inc" -#include "devicedvbinput.inc" -#include "devicempeginput.inc" -#include "dvdcreate.inc" -#include "edit.inc" -#include "edl.inc" -#include "filesystem.inc" -#include "filexml.inc" -#include "framecache.inc" -#include "gwindow.inc" -#include "indexable.inc" -#include "keyframegui.inc" -#include "levelwindow.inc" -#include "loadmode.inc" -#include "mainerror.inc" -#include "mainindexes.inc" -#include "mainprogress.inc" -#include "mainsession.inc" -#include "mainundo.inc" -#include "maxchannels.h" -#include "mutex.inc" -#include "mwindow.inc" -#include "mwindowgui.inc" -#include "new.inc" -#include "patchbay.inc" -#include "playback3d.inc" -#include "playbackengine.inc" -#include "plugin.inc" -#include "pluginfclient.inc" -#include "pluginserver.inc" -#include "pluginset.inc" -#include "preferences.inc" -#include "preferencesthread.inc" -#include "record.inc" -#include "recordlabel.inc" -#include "render.inc" -#include "sharedlocation.inc" -#include "sighandler.inc" -#include "splashgui.inc" -#include "theme.inc" -#include "thread.h" -#include "threadloader.inc" -#include "timebar.inc" -#include "timebomb.h" -#include "tipwindow.inc" -#include "track.inc" -#include "tracking.inc" -#include "tracks.inc" -#include "transition.inc" -#include "transportque.inc" -#include "videowindow.inc" -#include "vwindow.inc" -#include "wwindow.inc" -#include "wavecache.inc" - -// All entry points for commands except for window locking should be here. -// This allows scriptability. - -class MWindow : public Thread -{ -public: - MWindow(); - ~MWindow(); - -// ======================================== initialization commands - void create_objects(int want_gui, - int want_new, - char *config_path); - void show_splash(); - void hide_splash(); - void start(); - void run(); - - int run_script(FileXML *script); - int new_project(); - int delete_project(int flash = 1); - void quit(int unlock); - int restart() { return restart_status; } - - int load_defaults(); - int save_defaults(); - int set_filename(const char *filename); -// Total vertical pixels in timeline - int get_tracks_height(); -// Total horizontal pixels in timeline - int get_tracks_width(); -// Show windows - void show_vwindow(); - void show_awindow(); - void show_lwindow(); - void show_cwindow(); - void show_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. -// Takes the drag vectors from MainSession and -// pastes either assets or clips depending on which is full. -// Returns 1 if the vectors were full - int paste_assets(double position, Track *dest_track); - -// Insert the assets at a point in the EDL. Called by menueffects, -// render, and CWindow drop but recording calls paste_edls directly for -// labels. - void load_assets(ArrayList *new_assets, - double position, - int load_mode, - Track *first_track /* = 0 */, - RecordLabels *labels /* = 0 */, - int edit_labels, - int edit_plugins, - int edit_autos); - int paste_edls(ArrayList *new_edls, - int load_mode, - Track *first_track /* = 0 */, - double current_position /* = -1 */, - int edit_labels, - int edit_plugins, - int edit_autos); -// Reset everything for a load - void update_project(int load_mode); -// Fit selected time to horizontal display range - void fit_selection(); -// Fit selected autos to the vertical display range - void fit_autos(); - void expand_autos(); - void shrink_autos(); - void zoom_autos(float min, float max); -// move the window to include the cursor - void find_cursor(); -// Search plugindb and put results in argument - static void search_plugindb(int do_audio, - int do_video, - int is_realtime, - int is_transition, - int is_theme, - ArrayList &results); -// Find the plugin whose title matches title and return it - static PluginServer* scan_plugindb(char *title, - int data_type); - static int plugin_exists(const char *plugin_path, ArrayList &plugins); - static int plugin_exists(char *plugin_path); - void dump_plugindb(FILE *fp); - void stop_playback(int wait=0); - - - - - int load_filenames(ArrayList *filenames, - int load_mode = LOADMODE_REPLACE, -// 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); - - int interrupt_indexes(); // Stop index building - - int redraw_time_dependancies(); // after reconfiguring the time format, sample rate, frame rate - -// =========================================== movement - - void next_time_format(); - void prev_time_format(); - void time_format_common(); - int reposition_timebar(int new_pixel, int new_height); - int expand_sample(); - int zoom_in_sample(); - int zoom_sample(int64_t zoom_sample); - void zoom_amp(int64_t zoom_amp); - void zoom_track(int64_t zoom_track); - int fit_sample(); - int move_left(int64_t distance = 0); - int move_right(int64_t distance = 0); - void move_up(int64_t distance = 0); - void move_down(int64_t distance = 0); - -// seek to labels -// shift_down must be passed by the caller because different windows call -// into this - int next_label(int shift_down); - int prev_label(int shift_down); -// seek to edit handles - int next_edit_handle(int shift_down); - int prev_edit_handle(int shift_down); -// offset is pixels to add to track_start - void trackmovement(int offset, int pane_number); -// view_start is pixels - int samplemovement(int64_t view_start, int pane_number); - void select_all(); - int goto_start(); - int goto_end(); - int goto_position(double position); - int expand_y(); - int zoom_in_y(); - int expand_t(); - int zoom_in_t(); - void split_x(); - void split_y(); - void crop_video(); - void update_plugins(); -// 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_plugins(); - void delete_plugin(PluginServer *plugin); -// Update plugins with configuration changes. -// Called by TrackCanvas::cursor_motion_event. - void update_plugin_guis(int do_keyframe_guis = 1); - void update_plugin_states(); - void update_plugin_titles(); -// Called by Attachmentpoint during playback. -// Searches for matching plugin and renders data in it. - void render_plugin_gui(void *data, Plugin *plugin); - void render_plugin_gui(void *data, int size, Plugin *plugin); - -// Called from PluginVClient::process_buffer -// 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 show_keyframe_gui(Plugin *plugin); - void hide_keyframe_guis(); - void hide_keyframe_gui(Plugin *plugin); - void update_keyframe_guis(); - - -// ============================= editing commands ======================== - -// Map each recordable audio track to the desired pattern - void map_audio(int pattern); - void remap_audio(int pattern); - enum - { - 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 asset_to_all(); - void asset_to_size(); - void asset_to_rate(); -// Entry point for clear operations. - void clear_entry(); -// 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); - void clear_labels(); - int clear_labels(double start, double end); - void concatenate_tracks(); - void copy(); - int copy(double start, double end); - void cut(); - -// 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(); - int feather_edits(int64_t feather_samples, int audio, int video); - int64_t get_feather(int audio, int video); - float get_aspect_ratio(); - void insert(double position, - FileXML *file, - int edit_labels, - int edit_plugins, - int edit_autos, - EDL *parent_edl /* = 0 */); - -// TrackCanvas calls this to insert multiple effects from the drag_pluginservers -// into pluginset_highlighted. - void insert_effects_canvas(double start, - double length); - -// CWindow calls this to insert multiple effects from -// the drag_pluginservers array. - void insert_effects_cwindow(Track *dest_track); - -// Attach new effect to all recordable tracks -// single_standalone - attach 1 standalone on the first track and share it with -// other tracks - void insert_effect(char *title, - SharedLocation *shared_location, - int data_type, - int plugin_type, - int single_standalone); - -// This is called multiple times by the above functions. -// It can't sync parameters. - void insert_effect(char *title, - SharedLocation *shared_location, - Track *track, - PluginSet *plugin_set, - double start, - double length, - int plugin_type); - - void match_output_size(Track *track); -// Move edit to new position - void move_edits(ArrayList *edits, - Track *track, - double position); -// Move effect to position - void move_effect(Plugin *plugin, - PluginSet *plugin_set, - Track *track, - int64_t position); - void move_plugins_up(PluginSet *plugin_set); - void move_plugins_down(PluginSet *plugin_set); - void move_track_down(Track *track); - void move_tracks_down(); - void move_track_up(Track *track); - void move_tracks_up(); - void mute_selection(); - void new_folder(const char *new_folder); - void overwrite(EDL *source); -// 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 paste_silence(); - -// Detach single transition - void detach_transition(Transition *transition); -// Detach all transitions in selection - void detach_transitions(); -// Attach dragged transition - void paste_transition(); -// Attach transition to all edits in selection - void paste_transitions(int track_type, char *title); -// Attach transition dragged onto CWindow - void paste_transition_cwindow(Track *dest_track); -// Attach default transition to single edit - void paste_audio_transition(); - void paste_video_transition(); - void shuffle_edits(); - void reverse_edits(); - void align_edits(); - void set_edit_length(double length); -// Set length of single transition - void set_transition_length(Transition *transition, double length); -// Set length in seconds of all transitions in active range - void set_transition_length(double length); - - void remove_indexfile(Indexable *indexable); - void rebuild_indices(); -// Asset removal from caches - void reset_caches(); - void remove_asset_from_caches(Asset *asset); - void remove_assets_from_project(int push_undo /* = 0 */, - int redraw /* 1 */, - ArrayList *drag_assets /* mwindow->session->drag_assets */, - ArrayList *drag_clips /* mwindow->session->drag_clips */); - void remove_assets_from_disk(); - void resize_track(Track *track, int w, int h); - - void set_automation_mode(int mode); - void set_keyframe_type(int mode); - void set_auto_keyframes(int value, int lock_mwindow, int lock_cwindow); -// Update the editing mode - int set_editing_mode(int new_editing_mode, int lock_mwindow, int lock_cwindow); - void set_inpoint(int is_mwindow); - void set_outpoint(int is_mwindow); - void splice(EDL *source); - 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 to_clip(); - int toggle_label(int is_mwindow); - void undo_entry(BC_WindowBase *calling_window_gui); - void redo_entry(BC_WindowBase *calling_window_gui); - - - int cut_automation(); - int copy_automation(); - int paste_automation(); - void clear_automation(); - int cut_default_keyframe(); - int copy_default_keyframe(); -// Use paste_automation to paste the default keyframe in other position. -// Use paste_default_keyframe to replace the default keyframe with whatever is -// in the clipboard. - int paste_default_keyframe(); - int clear_default_keyframe(); - - int modify_edithandles(); - int modify_pluginhandles(); - void finish_modify_handles(); - - void dump_plugins(FILE *fp=stdout); - void dump_edl(FILE *fp=stdout); - void dump_undo(FILE *fp=stdout); - void dump_exe(FILE *fp=stdout); - static void trap_hook(FILE *fp, void *vp); - - void reset_android_remote(); - -// Send new EDL to caches - void age_caches(); - int optimize_assets(); // delete unused assets from the cache and assets - - void select_point(double position); - int set_loop_boundaries(); // toggle loop playback and set boundaries for loop playback - - - Playback3D *playback_3d; - SplashGUI *splash_window; - -// Main undo stack - MainUndo *undo; - BC_Hash *defaults; - Assets *assets; -// CICaches for drawing timeline only - CICache *audio_cache, *video_cache; -// Frame cache for drawing timeline only. -// Cache drawing doesn't wait for file decoding. - FrameCache *frame_cache; - WaveCache *wave_cache; - Preferences *preferences; - PreferencesThread *preferences_thread; - MainSession *session; - Theme *theme; - MainIndexes *mainindexes; - MainProgress *mainprogress; - BRender *brender; - static Commercials *commercials; - int commercial_active; - int has_commercials(); - -// Menu items - ArrayList colormodels; - - int reset_meters(); - void resync_guis(); - - int select_asset(Asset *asset, int vstream, int astream, int delete_tracks); - int select_asset(int vtrack, int delete_tracks); - -// Channel DB for playback only. Record channel DB's are in record.C - ChannelDB *channeldb_buz; - ChannelDB *channeldb_v4l2jpeg; - -// ====================================== plugins ============================== - -// Contains file descriptors for all the dlopens - static ArrayList *plugindb; -// Currently visible plugins - int64_t plugin_visibility; - ArrayList *plugin_guis; -// GUI Plugins to delete - ArrayList *dead_plugins; -// Keyframe editors - ArrayList *keyframe_threads; - -// Adjust sample position to line up with frames. - int fix_timing(int64_t &samples_out, - int64_t &frames_out, - int64_t samples_in); - - - CreateBD_Thread *create_bd; - CreateDVD_Thread *create_dvd; - BatchRenderThread *batch_render; - Render *render; -// Master edl - EDL *edl; -// Main Window GUI - MWindowGUI *gui; -// Compositor - CWindow *cwindow; -// Viewer - Mutex *vwindows_lock; - ArrayList vwindows; -// Asset manager - AWindow *awindow; -// Automation window - GWindow *gwindow; -// Tip of the day - TipWindow *twindow; -// Warning window - WWindow *wwindow; - void show_warning(int *do_warning, const char *text); -// Levels - LevelWindow *lwindow; -// Lock during creation and destruction of GUI - Mutex *plugin_gui_lock; - Mutex *dead_plugin_lock; - 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(); - -// Initialize channel DB's for playback - void init_channeldb(); - void init_render(); -// These three happen synchronously with each other -// Make sure this is called after synchronizing EDL's. - void init_brender(); -// Restart brender after testing its existence - void restart_brender(); -// Stops brender after testing its existence - void stop_brender(); -// This one happens asynchronously of the others. Used by playback to -// see what frame is background rendered. - int brender_available(int position); - void set_brender_start(); - int put_commercial(); - void activate_commercial() { commercial_active = 1; } - void commit_commercial(); - void undo_commercial(); - void cut_commercials(); - int paste_subtitle_text(char *text, double start, double end); - - void init_error(); - void finit_error(); - static void init_defaults(BC_Hash* &defaults, char *config_path); - void init_edl(); - void init_awindow(); - void init_gwindow(); - void init_tipwindow(); -// Used by MWindow and RenderFarmClient - static void get_plugin_path(char *path, const char *plug_dir, const char *fs_path); - static int init_plugins(MWindow *mwindow, Preferences *preferences); - static int init_ladspa_plugins(MWindow *mwindow, Preferences *preferences); - static int check_plugin_index(ArrayList &plugins, - const char *plug_dir, const char *plug_path); - 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); - 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); - void init_preferences(); - void init_signals(); - void init_theme(); - void init_compositor(); - void init_levelwindow(); -// Called when creating a new viewer to view footage - VWindow* get_viewer(int start_it, int idx=-1); - void init_cache(); - void init_menus(); - void init_indexes(); - void init_gui(); - void init_3d(); - void init_playbackcursor(); - void init_commercials(); - static void add_plugins(ArrayList &plugins); - static void delete_plugins(); -// - void clean_indexes(); -// TimeBomb timebomb; - SigHandler *sighandler; - int restart_status; - int screens; - int in_destructor; -}; - -#endif