X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcwindowbase.h;h=e4eb8ba4c812354305d27a2fea44b078b93a94dd;hb=a6b1f3c0c5c17c3a26758abc46bcb46100308c66;hp=6acffd1d5d79afeb44d7b12ecdb7090cd0bbc522;hpb=033efab12586e8086014c814a5360f211d228ac3;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/guicast/bcwindowbase.h b/cinelerra-5.1/guicast/bcwindowbase.h index 6acffd1d..e4eb8ba4 100644 --- a/cinelerra-5.1/guicast/bcwindowbase.h +++ b/cinelerra-5.1/guicast/bcwindowbase.h @@ -105,6 +105,22 @@ //typedef void* GLXContext; #endif +typedef uint32_t wchr_t; + +static inline size_t wstrlen(const wchr_t *s) +{ + size_t len = 0; + while( s[len] ) ++len; + return len; +} + +static inline wchr_t *wstrncpy(wchr_t *dest, const wchr_t *src, size_t n) +{ + for( wchr_t *dp=dest; n>0 && (*dp++=*src++); --n ); + return dest; +} + + class BC_ResizeCall { public: @@ -200,7 +216,9 @@ public: virtual int selection_clear_event() { return 0; } // Only if opengl is enabled virtual int expose_event() { return 0; }; + virtual int handle_ungrab() { return 0; }; virtual int grab_event(XEvent *event) { return 0; }; + virtual void create_objects() { return; }; static void init_resources(float scale); @@ -313,7 +331,7 @@ public: int get_buttonpress(); int get_has_focus(); int get_dragging(); - wchar_t* get_wkeystring(int *length = 0); + wchr_t* get_wkeystring(int *length = 0); int get_keypress(); int get_keysym() { return keysym; } #ifdef X_HAVE_UTF8_STRING @@ -341,7 +359,7 @@ public: int get_text_descent(int font); 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); + int get_text_width(int font, const wchr_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(); @@ -405,12 +423,14 @@ public: void draw_text_line(int x, int y, const char *text, int len, BC_Pixmap *pixmap = 0); void draw_xft_text(int x, int y, const char *text, int len, BC_Pixmap *pixmap = 0, int is_utf8 = 0); - void draw_xft_text(int x, int y, const wchar_t *text, + void draw_xft_text(int x, int y, const wchr_t *text, 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); + int x, int y, const wchr_t *text, int length = -1, BC_Pixmap *pixmap = 0); void draw_center_text(int x, int y, const char *text, int length = -1); + void draw_pix(int x, int y, BC_Pixmap *pixmap = 0); void draw_line(int x1, int y1, int x2, int y2, BC_Pixmap *pixmap = 0); + void draw_bline(int x1, int y1, int x2, int y2, BC_Pixmap *pixmap = 0); void draw_polygon(ArrayList *x, ArrayList *y, BC_Pixmap *pixmap = 0); void fill_polygon(ArrayList *x, ArrayList *y, BC_Pixmap *pixmap = 0); void draw_rectangle(int x, int y, int w, int h); @@ -504,6 +524,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); @@ -527,6 +548,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); @@ -572,7 +594,7 @@ private: Cursor create_grab_cursor(); // Get width of a single line. Used by get_text_width int get_single_text_width(int font, const char *text, int length); - int get_single_text_width(int font, const wchar_t *text, int length); + int get_single_text_width(int font, const wchr_t *text, int length); int allocate_color_table(); int init_gc(); int init_fonts(); @@ -722,7 +744,7 @@ private: // Last key pressed int key_pressed; int wkey_string_length; - wchar_t wkey_string[4]; + wchr_t wkey_string[4]; #ifdef X_HAVE_UTF8_STRING char* key_pressed_utf8; #endif @@ -895,11 +917,9 @@ private: #else Condition *completion_lock; #endif - - + Mutex *grab_lock; int dump_windows(); - BC_WindowEvents *event_thread; int is_deleting; // Hide cursor when video is enabled