This is gui.h in view mode; [Download] [Up]
/* vi:set ts=4 sw=4: * * VIM - Vi IMproved by Bram Moolenaar * Motif support by Robert Webb * * Do ":help uganda" in Vim to read copying and usage conditions. * Do ":help credits" in Vim to see a list of people who contributed. */ /* For debugging */ /* #define D(x) printf x; */ #define D(x) #ifdef USE_GUI_MOTIF # define USE_GUI_X11 # include <Xm/Xm.h> #endif #ifdef USE_GUI_ATHENA # define USE_GUI_X11 # include <X11/Intrinsic.h> # include <X11/StringDefs.h> #endif #ifdef USE_GUI_WIN32 # include <windows.h> #endif /* In the GUI we always have the clipboard and the mouse */ #ifndef USE_CLIPBOARD # define USE_CLIPBOARD #endif #ifndef USE_MOUSE # define USE_MOUSE #endif /* * On some systems, when we compile with the GUI, we always use it. On Mac * there is no terminal version, and on Windows we can't figure out how to * fork one off with :gui. */ #if defined(USE_GUI_WIN32) || defined(USE_GUI_MAC) # define ALWAYS_USE_GUI #endif /* * These macros convert between character row/column and pixel coordinates. * TEXT_X - Convert character column into X pixel coord for drawing strings. * TEXT_Y - Convert character row into Y pixel coord for drawing strings. * FILL_X - Convert character column into X pixel coord for filling the area * under the character. * FILL_Y - Convert character row into Y pixel coord for filling the area * under the character. * X_2_COL - Convert X pixel coord into character column. * Y_2_ROW - Convert Y pixel coord into character row. */ #define TEXT_X(col) ((col) * gui.char_width + gui.border_offset) #define TEXT_Y(row) ((row) * gui.char_height + gui.char_ascent \ + gui.border_offset) #define FILL_X(col) ((col) * gui.char_width + gui.border_offset) #define FILL_Y(row) ((row) * gui.char_height + gui.border_offset) #define X_2_COL(x) (((x) - gui.border_offset) / gui.char_width) #define Y_2_ROW(y) (((y) - gui.border_offset) / gui.char_height) /* Menu modes */ #define MENU_NORMAL_MODE 0x01 #define MENU_VISUAL_MODE 0x02 #define MENU_INSERT_MODE 0x04 #define MENU_CMDLINE_MODE 0x08 #define MENU_ALL_MODES 0x0f /* Indices into GuiMenu->strings[] and GuiMenu->noremap[] for each mode */ #define MENU_INDEX_INVALID -1 #define MENU_INDEX_NORMAL 0 #define MENU_INDEX_VISUAL 1 #define MENU_INDEX_INSERT 2 #define MENU_INDEX_CMDLINE 3 /* Indices for arrays of scrollbars */ #define SBAR_NONE -1 #define SBAR_LEFT 0 #define SBAR_RIGHT 1 #define SBAR_BOTTOM 2 /* Orientations for scrollbars */ #define SBAR_VERT 0 #define SBAR_HORIZ 1 /* Default size of scrollbar */ #define SB_DEFAULT_WIDTH 16 /* Default height of the menu bar */ #define MENU_DEFAULT_HEIGHT 32 /* Flags for gui_mch_outstr_nowrap() */ #define GUI_MON_WRAP_CURSOR 0x01 /* wrap cursor at end of line */ #define GUI_MON_IS_CURSOR 0x02 /* drawing cursor */ #define GUI_MON_INVERT 0x04 /* invert the characters */ /* * When we know the cursor is no longer being displayed (eg it has been written * over). */ #define INVALIDATE_CURSOR() (gui.cursor_row = -1) /* #define INVALIDATE_CURSOR() do{printf("Invalidate cursor %d\n", __LINE__); gui.cursor_row = -1;}while(0) */ /* * For checking whether cursor needs redrawing, or whether it doesn't need * undrawing. */ #define IS_CURSOR_VALID() (gui.cursor_row >= 0) typedef struct GuiMenu { int modes; /* Which modes is this menu visible for? */ char_u *name; /* Name shown in menu */ void (*cb)(); /* Call-back routine */ char_u *strings[4]; /* Mapped string for each mode */ int noremap[4]; /* A noremap flag for each mode */ struct GuiMenu *children; /* Children of sub-menu */ struct GuiMenu *next; /* Next item in menu */ #ifdef USE_GUI_X11 Widget id; /* Manage this to enable item */ Widget submenu_id; /* If this is submenu, add children here */ #endif #ifdef USE_GUI_WIN32 UINT id; /* Id of menu item */ HMENU submenu_id; /* If this is submenu, add children here */ #endif } GuiMenu; typedef struct GuiScrollbar { long ident; /* Unique identifier for each scrollbar */ struct window *wp; /* Scrollbar's window, NULL for bottom */ int value; /* Represents top line number visible */ int size; /* Size of scrollbar thumb */ int max; /* Number of lines in buffer */ /* Values measured in characters: */ int top; /* Top of scroll bar (chars from row 0) */ int height; /* Height of scroll bar (num rows) */ int status_height; /* Height of status line */ #ifdef USE_GUI_X11 Widget id; /* Id of real scroll bar */ #endif #ifdef USE_GUI_WIN32 HWND id; /* Id of real scroll bar */ #endif } GuiScrollbar; typedef long_u GuiColor; /* handle for a GUI color */ typedef long_u GuiFont; /* handle for a GUI font */ typedef struct Gui { int in_focus; /* Vim has input focus */ int in_use; /* Is the GUI being used? */ int starting; /* GUI will start in a little while */ int window_created; /* Has the window been created yet? */ int dying; /* Is vim dying? Then output to terminal */ int dofork; /* Use fork() when GUI is starting */ int dragged_sb; /* Which scrollbar being dragged, if any? */ struct window *dragged_wp; /* Which WIN's sb being dragged, if any? */ int col; /* Current cursor column in GUI display */ int row; /* Current cursor row in GUI display */ int cursor_col; /* Physical cursor column in GUI display */ int cursor_row; /* Physical cursor row in GUI display */ int num_cols; /* Number of columns */ int num_rows; /* Number of rows */ int scroll_region_top; /* Top (first) line of scroll region */ int scroll_region_bot; /* Bottom (last) line of scroll region */ long_u highlight_mask; /* Highlight attribute mask */ GuiMenu *root_menu; /* Root of menu hierarchy */ int scrollbar_width; /* Width of vertical scrollbars */ int scrollbar_height; /* Height of horizontal scrollbar */ int left_sbar_x; /* Calculated x coord for left scrollbar */ int right_sbar_x; /* Calculated x coord for right scrollbar */ int menu_height; /* Height of the menu bar */ int menu_width; /* Width of the menu bar */ int menu_is_active; /* TRUE if menu is present */ GuiScrollbar bottom_sbar; /* Bottom scrollbar */ int which_scrollbars[3];/* Which scrollbar boxes are active? */ int prev_wrap; /* For updating the horizontal scrollbar */ int char_width; /* Width of char in pixels */ int char_height; /* Height of char in pixels */ int char_ascent; /* Ascent of char in pixels */ int border_width; /* Width of our border around text area */ int border_offset; /* Total pixel offset for all borders */ GuiFont norm_font; GuiFont bold_font; GuiFont ital_font; GuiFont boldital_font; GuiColor back_pixel; /* Color of background */ GuiColor norm_pixel; /* Color of normal text */ GuiColor bold_pixel; /* Color of bold text */ GuiColor ital_pixel; /* Color of ital text */ GuiColor underline_pixel; /* Color of underlined text */ GuiColor cursor_pixel; /* Color of cursor */ #ifdef USE_GUI_X11 GuiColor menu_fg_pixel; /* Color of menu foregound */ GuiColor menu_bg_pixel; /* Color of menu backgound */ GuiColor scroll_fg_pixel; /* Color of scrollbar foregrnd */ GuiColor scroll_bg_pixel; /* Color of scrollbar backgrnd */ Display *dpy; /* X display */ Window wid; /* Window id of text area */ int visibility; /* Is window partially/fully obscured? */ GC text_gc; GC back_gc; GC invert_gc; /* X Resources */ char_u *dflt_font; /* Resource font, used if 'font' not set */ char_u *dflt_bold_fn; /* Resource bold font */ char_u *dflt_ital_fn; /* Resource italic font */ char_u *dflt_boldital_fn; /* Resource bold-italic font */ char_u *geom; /* Geometry, eg "80x24" */ Bool rev_video; /* Use reverse video? */ #endif #ifdef USE_GUI_WIN32 GuiFont currFont; /* Current font */ GuiColor currFgColor; /* Current foreground text color */ GuiColor currBgColor; /* Current background text color */ /* Windows resources, from vim.ini file */ char dflt_font_name[32]; /* Default font face name */ int dflt_font_height; /* Default font height */ #endif } Gui; extern Gui gui; /* this is defined in gui.c */ extern int force_menu_update; /* this is defined in gui.c */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.