add view thumbnail size pref, rework vicon view popup, add view popup zoom scale
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / awindowgui.h
index 41dd0491a4204db18f5874377ab0f01bbdc7c49c..99db0753ceaa9e0f7eec56c016a9c73e68b574d3 100644 (file)
 #include "samples.inc"
 #include "vicon.h"
 
-#define SELECT_USED 0
-#define SELECT_UNUSED 1
+#define SELECT_ALL 0
+#define SELECT_USED 1
+#define SELECT_UNUSED 2
+#define SELECT_NONE 3
+
+// in percent view_h
+#define VIEW_POPUP_BAR_H 15
+
+#define ASSET_DRAW_IMAGE 0
+#define ASSET_DRAW_MEDIA_MAP 1
 
 class AWindowFolderItem : public BC_ListBoxItem
 {
@@ -80,7 +88,12 @@ public:
        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);
+               int base_color, int line_color, int x, int y, int w, int h);
+       static void draw_wave(VFrame *frame, double *dp, int len,
+               int base_color, int line_color, int x=0, int y=0) {
+         draw_wave(frame, dp, len, base_color, line_color,
+               x,y,frame->get_w(),frame->get_h());
+       }
        void open_render_engine(EDL *edl, int is_audio);
        void close_render_engine();
        void render_video(int64_t pos, VFrame *vfrm);
@@ -152,6 +165,37 @@ public:
        ~AssetVIcon();
 };
 
+class AssetViewPopup : public ViewPopup
+{
+public:
+       AssetViewPopup(VIconThread *vt, int draw_mode,
+               VFrame *frame, int x, int y, int w, int h);
+       ~AssetViewPopup();
+
+       int button_press_event();
+       int button_release_event();
+       int cursor_motion_event();
+
+       void draw_vframe(VFrame *frame);
+
+       int bar_h;
+       int draw_mode;
+       int dragging;
+};
+
+class AssetVIconThread : public VIconThread
+{
+public:
+       AssetVIconThread(AWindowAssets *asset_list);
+       ~AssetVIconThread();
+
+       void set_view_popup(AssetVIcon *vicon, int draw_mode=-1);
+       ViewPopup *new_view_window(VFrame *frame);
+
+       int draw_mode;
+};
+
+
 class AWindowRemovePlugin;
 
 class AWindowRemovePluginGUI : public BC_Window {
@@ -297,14 +341,15 @@ public:
        AddTools *add_tools;
 // Temporary for reading picons from files
        VFrame *temp_picon;
-       VIconThread *vicon_thread;
+       AssetVIconThread *vicon_thread;
        AssetVIconAudio *vicon_audio;
 
        int64_t plugin_visibility;
        AWindowRemovePlugin *remove_plugin;
 
        AVIconDrawing *avicon_drawing;
-       int avicon_w, avicon_h, vicon_drawing;
+       int avicon_w, avicon_h;
+       int vicon_drawing;
        int allow_iconlisting;
 
 // Create custom atoms to be used for async messages between windows
@@ -340,8 +385,6 @@ public:
        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);