#include "arraylist.h"
#include "bcdialog.h"
+#include "binfolder.inc"
#include "assetpopup.inc"
#include "asset.inc"
#include "assets.inc"
+#include "audiodevice.inc"
#include "awindow.inc"
#include "awindowgui.inc"
#include "clippopup.inc"
#include "labels.h"
#include "indexable.inc"
#include "mwindow.inc"
-#include "newfolder.inc"
+#include "mutex.inc"
#include "pluginserver.inc"
+#include "proxypopup.inc"
+#include "renderengine.inc"
+#include "samples.inc"
#include "vicon.h"
class AssetPicon : public BC_ListBoxItem
AssetPicon(MWindow *mwindow, AWindowGUI *gui, EDL *edl);
AssetPicon(MWindow *mwindow, AWindowGUI *gui, PluginServer *plugin);
AssetPicon(MWindow *mwindow, AWindowGUI *gui, Label *plugin);
- AssetPicon(MWindow *mwindow, AWindowGUI *gui, int folder);
- AssetPicon(MWindow *mwindow, AWindowGUI *gui, const char *folder_name, int folder_num);
+ AssetPicon(MWindow *mwindow, AWindowGUI *gui, int folder, int persist);
+ AssetPicon(MWindow *mwindow, AWindowGUI *gui, int folder, const char *title);
virtual ~AssetPicon();
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);
+ VFrame *get_vicon_frame();
MWindow *mwindow;
AWindowGUI *gui;
BC_Pixmap *icon;
VFrame *icon_vframe;
+ VFrame *vicon_frame;
int foldernum;
// ID of thing pointed to
int id;
EDL *edl;
int in_use;
-
-
int persistent;
+ time_t comments_time;
+ double sort_key;
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 {
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();
void async_update_assets(); // Sends update asset event
void update_effects();
void sort_assets();
+ void sort_folders();
void reposition_objects();
- static int folder_number(const char *name);
// Call back for MWindow entry point
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<BC_ListBoxItem*> *output,
int do_audio,
int do_video,
void start_vicon_drawing();
void stop_vicon_drawing();
void update_picon(Indexable *indexable);
+ int cycle_assetlist_format();
+
+ VFrame *get_picon(const char *name, const char *plugin_icons);
+ VFrame *get_picon(const char *name);
+ void resource_icon(VFrame *&vfrm, BC_Pixmap *&icon, const char *fn, int idx);
+ void theme_icon(VFrame *&vfrm, BC_Pixmap *&icon, const char *fn);
+ void plugin_icon(VFrame *&vfrm, BC_Pixmap *&icon, const char *fn, unsigned char *png);
MWindow *mwindow;
AWindow *awindow;
AWindowAssets *asset_list;
AWindowFolders *folder_list;
AWindowDivider *divider;
+ AWindowSearchText *search_text;
+ Mutex *folder_lock;
// Store data to speed up responses
// Persistant data for listboxes
BC_Hash *defaults;
// Persistent icons
- BC_Pixmap *folder_icon;
- BC_Pixmap *file_icon;
- BC_Pixmap *audio_icon;
- BC_Pixmap *video_icon;
- BC_Pixmap *label_icon;
+ BC_Pixmap *aeffect_folder_icon; VFrame *aeffect_folder_vframe;
+ BC_Pixmap *atransition_folder_icon; VFrame *atransition_folder_vframe;
+ BC_Pixmap *clip_folder_icon; VFrame *clip_folder_vframe;
+ BC_Pixmap *label_folder_icon; VFrame *label_folder_vframe;
+ BC_Pixmap *media_folder_icon; VFrame *media_folder_vframe;
+ BC_Pixmap *proxy_folder_icon; VFrame *proxy_folder_vframe;
+ BC_Pixmap *veffect_folder_icon; VFrame *veffect_folder_vframe;
+ BC_Pixmap *vtransition_folder_icon; VFrame *vtransition_folder_vframe;
+ BC_Pixmap *folder_icons[AWINDOW_FOLDERS];
+
+ BC_Pixmap *folder_icon; VFrame *folder_vframe;
+ BC_Pixmap *file_icon; VFrame *file_vframe;
+ BC_Pixmap *audio_icon; VFrame *audio_vframe;
+ BC_Pixmap *video_icon; VFrame *video_vframe;
+ BC_Pixmap *label_icon; VFrame *label_vframe;
BC_Pixmap *clip_icon; VFrame *clip_vframe;
BC_Pixmap *atransition_icon; VFrame *atransition_vframe;
BC_Pixmap *vtransition_icon; VFrame *vtransition_vframe;
BC_Pixmap *aeffect_icon; VFrame *aeffect_vframe;
+ BC_Pixmap *veffect_icon; VFrame *veffect_vframe;
BC_Pixmap *ladspa_icon; VFrame *ladspa_vframe;
BC_Pixmap *ff_aud_icon; VFrame *ff_aud_vframe;
BC_Pixmap *ff_vid_icon; VFrame *ff_vid_vframe;
- BC_Pixmap *veffect_icon; VFrame *veffect_vframe;
- NewFolderThread *newfolder_thread;
// Popup menus
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;
// Create custom atoms to be used for async messages between windows
int create_custom_xatoms();
-// Function to overload to recieve customly defined atoms
- virtual int recieve_custom_xatoms(xatom_event *event);
+// Function to overload to receive customly defined atoms
+ virtual int receive_custom_xatoms(xatom_event *event);
static const char *folder_names[];
+ NewFolderThread *new_folder_thread;
+ ModifyFolderThread *modify_folder_thread;
private:
void update_folder_list();
int column_resize_event();
int focus_in_event();
int focus_out_event();
+ int cursor_enter_event();
+ int cursor_leave_event();
+ void update_vicon_area();
+ int mouse_over_event(int no);
MWindow *mwindow;
AWindowGUI *gui;
int selection_changed();
int button_press_event();
+ int drag_stop();
MWindow *mwindow;
AWindowGUI *gui;
};
-class AWindowNewFolder : public BC_Button
+class AWindowSearchTextBox : public BC_TextBox
{
public:
- AWindowNewFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y);
+ AWindowSearchTextBox(AWindowSearchText *search_text, int x, int y, int w);
int handle_event();
- MWindow *mwindow;
- AWindowGUI *gui;
- int x, y;
-};
-class AWindowDeleteFolder : public BC_Button
-{
-public:
- AWindowDeleteFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y);
- int handle_event();
- MWindow *mwindow;
- AWindowGUI *gui;
- int x, y;
+ AWindowSearchText *search_text;
};
-class AWindowRenameFolder : public BC_Button
+class AWindowSearchText
{
public:
- AWindowRenameFolder(MWindow *mwindow, AWindowGUI *gui, int x, int y);
+ 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 AWindowDeleteDisk : public BC_Button