add layout_scale preference, scaling cleanup, rework init bc_resources, init tip_info...
[goodguy/cinelerra.git] / cinelerra-5.1 / guicast / bcwindowbase.h
index ca73b39e61c696d37648cf3243243475ece56daa..36add9c76656825749f2cf2851b4fdd95c12ad0d 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;
@@ -173,6 +175,7 @@ public:
        friend class BC_Tumbler;
        friend class BC_Window;
        friend class BC_WindowEvents;
+       friend class Shuttle;
 
 // Main loop
        int run_window();
@@ -200,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();
@@ -236,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);
@@ -250,6 +254,7 @@ public:
        int lock_window(const char *location = 0);
        int unlock_window();
        int get_window_lock();
+       int break_lock();
 
        BC_MenuBar* add_menubar(BC_MenuBar *menu_bar);
        BC_WindowBase* add_subwindow(BC_WindowBase *subwindow);
@@ -310,6 +315,7 @@ public:
        int get_dragging();
        wchar_t* get_wkeystring(int *length = 0);
        int get_keypress();
+       int get_keysym() { return keysym; }
 #ifdef X_HAVE_UTF8_STRING
        char* get_keypress_utf8();
 #endif
@@ -583,7 +589,7 @@ private:
        XFontSet get_fontset(int font);
        XFontSet get_curr_fontset(void);
        void set_fontset(int font);
-       int dispatch_event(XEvent *event);
+       int dispatch_event();
 
        int get_key_masks(unsigned int key_state);
 
@@ -725,7 +731,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.