/* gui_x11.c */
void gui_x11_key_hit_cb(Widget w, XtPointer dud, XEvent *event, Boolean *dum);
void gui_mch_prepare(int *argc, char **argv);
int gui_mch_init_check(void);
int gui_mch_init(void);
void gui_mch_uninit(void);
void gui_mch_new_colors(void);
int gui_mch_open(void);
void gui_init_tooltip_font(void);
void gui_init_menu_font(void);
void gui_mch_exit(int rc);
int gui_mch_get_winpos(int *x, int *y);
void gui_mch_set_winpos(int x, int y);
void gui_mch_set_shellsize(int width, int height, int min_width, int min_height, int base_width, int base_height, int direction);
void gui_mch_get_screen_dimensions(int *screen_w, int *screen_h);
int gui_mch_init_font(char_u *font_name, int do_fontset);
GuiFont gui_mch_get_font(char_u *name, int giveErrorIfMissing);
char_u *gui_mch_get_fontname(GuiFont font, char_u *name);
int gui_mch_adjust_charheight(void);
void gui_mch_set_font(GuiFont font);
void gui_mch_set_fontset(GuiFontset fontset);
void gui_mch_free_font(GuiFont font);
void gui_mch_free_fontset(GuiFontset fontset);
GuiFontset gui_mch_get_fontset(char_u *name, int giveErrorIfMissing, int fixed_width);
int fontset_height(XFontSet fs);
int fontset_height2(XFontSet fs);
guicolor_T gui_mch_get_color(char_u *name);
void gui_mch_set_fg_color(guicolor_T color);
void gui_mch_set_bg_color(guicolor_T color);
void gui_mch_set_sp_color(guicolor_T color);
void gui_mch_draw_string(int row, int col, char_u *s, int len, int flags);
int gui_mch_haskey(char_u *name);
int gui_get_x11_windis(Window *win, Display **dis);
void gui_mch_beep(void);
void gui_mch_flash(int msec);
void gui_mch_invert_rectangle(int r, int c, int nr, int nc);
void gui_mch_iconify(void);
void gui_mch_set_foreground(void);
void gui_mch_draw_hollow_cursor(guicolor_T color);
void gui_mch_draw_part_cursor(int w, int h, guicolor_T color);
void gui_mch_update(void);
int gui_mch_wait_for_chars(long wtime);
void gui_mch_flush(void);
void gui_mch_clear_block(int row1, int col1, int row2, int col2);
void gui_mch_clear_all(void);
void gui_mch_delete_lines(int row, int num_lines);
void gui_mch_insert_lines(int row, int num_lines);
void clip_mch_lose_selection(VimClipboard *cbd);
int clip_mch_own_selection(VimClipboard *cbd);
void clip_mch_request_selection(VimClipboard *cbd);
void clip_mch_set_selection(VimClipboard *cbd);
void gui_mch_menu_grey(vimmenu_T *menu, int grey);
void gui_mch_menu_hidden(vimmenu_T *menu, int hidden);
void gui_mch_draw_menubar(void);
void gui_x11_menu_cb(Widget w, XtPointer client_data, XtPointer call_data);
int gui_mch_is_blinking(void);
int gui_mch_is_blink_off(void);
void gui_mch_set_blinking(long waittime, long on, long off);
void gui_mch_stop_blink(void);
void gui_mch_start_blink(void);
guicolor_T gui_mch_get_rgb(guicolor_T pixel);
void gui_x11_callbacks(Widget textArea, Widget vimForm);
void gui_mch_getmouse(int *x, int *y);
void gui_mch_setmouse(int x, int y);
XButtonPressedEvent *gui_x11_get_last_mouse_event(void);
void gui_mch_drawsign(int row, int col, int typenr);
void *gui_mch_register_sign(char_u *signfile);
void gui_mch_destroy_sign(void *sign);
void gui_mch_mousehide(int hide);
void mch_set_mouse_shape(int shape);
void gui_mch_menu_set_tip(vimmenu_T *menu);
/* vim: set ft=c : */
