drag+drop group highlight changes, fileref tweaks + warn, tweak awdw for ref/edl...
[goodguy/cinelerra.git] / cinelerra-5.1 / guicast / bcwindowbase.h
index cd4dcd08bb766d5c5862531be2272fe074e47089..7e36cd67131e341a69715b2b7cb856db12c0102e 100644 (file)
@@ -97,7 +97,9 @@
 #include <GL/glx.h>
 #endif
 
-
+// scaled x,y unit
+#define xS(v) (BC_WindowBase::get_resources()->x_scale*(v))
+#define yS(v) (BC_WindowBase::get_resources()->y_scale*(v))
 
 #ifdef HAVE_GL
 //typedef void* GLXContext;
@@ -201,6 +203,8 @@ public:
        virtual int grab_event(XEvent *event) { return 0; };
        virtual void create_objects() { return; };
 
+       static void init_resources(float scale);
+       static void finit_resources();
        int get_window_type() { return window_type; }
 // Wait until event loop is running
        void init_wait();
@@ -237,10 +241,9 @@ public:
        void disable_opengl();
        void flip_opengl();
 
-// Calls the BC_Synchronous version of the function with the window_id.
-// Not run in OpenGL thread because it has its own lock.
-       unsigned int get_shader(char *title, int *got_it);
-       void put_shader(unsigned int handle, char *title);
+// Calls the BC_Synchronous version of the function
+       int get_shader(unsigned int *handle, const char *vert, const char *frag);
+       void put_shader(unsigned int handle, const char *vert, const char *frag);
        int get_opengl_server_version();
 
        int flash(int x, int y, int w, int h, int flush = 1);
@@ -339,6 +342,8 @@ public:
        int get_text_height(int font, const char *text = 0);
        int get_text_width(int font, const char *text, int length = -1);
        int get_text_width(int font, const wchar_t *text, int length = -1);
+// truncate the text with ... & return a new string
+       char *get_truncated_text(int font, const char *text, int max_w);
        BC_Clipboard* get_clipboard();
        void set_dragging(int value);
        int set_w(int w);
@@ -404,8 +409,6 @@ public:
                int length, BC_Pixmap *pixmap);
        int draw_single_text(int draw, int font,
                int x, int y, const wchar_t *text, int length = -1, BC_Pixmap *pixmap = 0);
-// truncate the text to a ... version that fits in the width, using the current_font
-       void truncate_text(char *result, const char *text, int w);
        void draw_center_text(int x, int y, const char *text, int length = -1);
        void draw_line(int x1, int y1, int x2, int y2, BC_Pixmap *pixmap = 0);
        void draw_polygon(ArrayList<int> *x, ArrayList<int> *y, BC_Pixmap *pixmap = 0);
@@ -501,6 +504,7 @@ public:
        void slide_down(int distance);
        void flicker(int n=3, int ms=66);
        void focus();
+       int wait_viewable(int ms);
 
        int cycle_textboxes(int amount);
 
@@ -524,6 +528,7 @@ public:
        int show_tooltip(int w=-1, int h=-1) { return show_tooltip(0, -1, -1, w, h); }
        int hide_tooltip();
        int set_icon(VFrame *data);
+       void set_net_icon(VFrame *data);
        int load_defaults(BC_Hash *defaults);
        int save_defaults(BC_Hash *defaults);
 
@@ -573,6 +578,7 @@ private:
        int allocate_color_table();
        int init_gc();
        int init_fonts();
+       void init_glyphs();
        void init_xft();
        void init_im();
        void finit_im();
@@ -728,7 +734,7 @@ private:
 // Whether the window has the focus
        int has_focus;
 
-       static BC_Resources resources;
+       static BC_Resources *resources;
 
 #ifndef SINGLE_THREAD
 // Array of repeaters for multiple repeating objects.