X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fawindowgui.h;h=440b4019c41df7bf804b2a891c8a15f1db741fd6;hb=efb3600851fd27b13d3053ffbdb6434535580bfd;hp=e8bd76f542c52623a5beb977be8aedf719974d45;hpb=3ac72077bee819333ea9e8c3c3307b529ecf3647;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/awindowgui.h b/cinelerra-5.1/cinelerra/awindowgui.h index e8bd76f5..440b4019 100644 --- a/cinelerra-5.1/cinelerra/awindowgui.h +++ b/cinelerra-5.1/cinelerra/awindowgui.h @@ -27,6 +27,7 @@ #include "assetpopup.inc" #include "asset.inc" #include "assets.inc" +#include "audiodevice.inc" #include "awindow.inc" #include "awindowgui.inc" #include "clippopup.inc" @@ -41,6 +42,9 @@ #include "mwindow.inc" #include "newfolder.inc" #include "pluginserver.inc" +#include "proxypopup.inc" +#include "renderengine.inc" +#include "samples.inc" #include "vicon.h" class AssetPicon : public BC_ListBoxItem @@ -55,6 +59,13 @@ public: void create_objects(); void reset(); + static void draw_hue_bar(VFrame *frame, double t); + static void draw_wave(VFrame *frame, double *dp, int len, + int base_color, int line_color); + void open_render_engine(EDL *edl, int is_audio); + void close_render_engine(); + void render_video(int64_t pos, VFrame *vfrm); + void render_audio(int64_t pos, Samples **samples, int len); MWindow *mwindow; AWindowGUI *gui; @@ -71,12 +82,32 @@ public: EDL *edl; int in_use; - + time_t mtime; int persistent; PluginServer *plugin; Label *label; VIcon *vicon; + RenderEngine *render_engine; +}; + +typedef int16_t vicon_audio_t; + +class AssetVIconAudio : public Thread +{ +public: + AssetVIconAudio(AWindowGUI *gui); + ~AssetVIconAudio(); + + void run(); + void start(AssetVIcon *vicon); + void stop(int wait); + + AWindowGUI *gui; + AudioDevice *audio; + AssetVIcon *vicon; + int interrupted; + int audio_pos; }; class AssetVIcon : public VIcon { @@ -89,6 +120,9 @@ public: int64_t set_seq_no(int64_t no); int get_vx(); int get_vy(); + void load_audio(); + void start_audio(); + void stop_audio(); AssetVIcon(AssetPicon *picon, int w, int h, double framerate, int64_t length); ~AssetVIcon(); @@ -138,7 +172,7 @@ public: int keypress_event(); void async_update_assets(); // Sends update asset event void update_effects(); - void sort_assets(); + void sort_assets(int use_mtime); void sort_folders(); void reposition_objects(); static int folder_number(const char *name); @@ -146,7 +180,8 @@ public: int drag_motion(); int drag_stop(); // Collect items into the drag vectors of MainSession - void collect_assets(); + void collect_assets(int proxy=0); + EDL *collect_proxy(Indexable *indexable); void create_persistent_folder(ArrayList *output, int do_audio, int do_video, @@ -155,7 +190,7 @@ public: void create_label_folder(); void copy_picons(ArrayList *dst, ArrayList *src, int folder); - void sort_picons(ArrayList *src); + void sort_picons(ArrayList *src, int use_mtime=0); // Return the selected asset in asset_list Indexable* selected_asset(); PluginServer* selected_plugin(); @@ -179,6 +214,7 @@ public: AWindowAssets *asset_list; AWindowFolders *folder_list; AWindowDivider *divider; + AWindowSearchText *search_text; // Store data to speed up responses // Persistant data for listboxes @@ -229,15 +265,18 @@ public: AssetPopup *asset_menu; ClipPopup *clip_menu; LabelPopup *label_menu; + ProxyPopup *proxy_menu; EffectListMenu *effectlist_menu; AssetListMenu *assetlist_menu; ClipListMenu *cliplist_menu; LabelListMenu *labellist_menu; + ProxyListMenu *proxylist_menu; FolderListMenu *folderlist_menu; AddTools *add_tools; // Temporary for reading picons from files VFrame *temp_picon; VIconThread *vicon_thread; + AssetVIconAudio *vicon_audio; int64_t plugin_visibility; AWindowRemovePlugin *remove_plugin; @@ -309,6 +348,35 @@ public: AWindowGUI *gui; }; +class AWindowSearchTextBox : public BC_TextBox +{ +public: + AWindowSearchTextBox(AWindowSearchText *search_text, int x, int y, int w); + int handle_event(); + + AWindowSearchText *search_text; +}; + +class AWindowSearchText +{ +public: + AWindowSearchText(MWindow *mwindow, AWindowGUI *gui, int x, int y); + + int handle_event(); + void create_objects(); + int get_w(); + int get_h(); + void reposition_window(int x, int y, int w); + const char *get_text(); + void clear(); + + MWindow *mwindow; + AWindowGUI *gui; + int x, y; + BC_Title *text_title; + BC_TextBox *text_box; +}; + class AWindowNewFolder : public BC_Button { public: