/* Interface definitions for display code.
- Copyright (C) 1985, 1993, 1994, 1997, 1998, 1999, 2000
+ Copyright (C) 1985, 1993, 1994, 1997, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
This file is part of GNU Emacs.
int charpos;
/* Lisp object source of this glyph. Currently either a buffer or
- a string, or 0. */
+ a string, if the glyph was produced from characters which came from
+ a buffer or a string; or 0 if the glyph was inserted by redisplay
+ for its own purposes such as padding. */
Lisp_Object object;
/* Width in pixels. */
padding. */
unsigned padding_p : 1;
- /* 1 means the actual glyph is not available in the current
- system. */
+ /* 1 means the actual glyph is not available, draw a box instead.
+ This can happen when a font couldn't be loaded, or a character
+ doesn't have a glyph in a font. */
unsigned glyph_not_available_p : 1;
/* Face of the glyph. */
char method[512];
#endif
- /* The buffer this matrix displays. Set in redisplay_internal. */
+ /* The buffer this matrix displays. Set in
+ mark_window_display_accurate_1. */
struct buffer *buffer;
- /* Values of BEGV and ZV as of last redisplay. */
+ /* Values of BEGV and ZV as of last redisplay. Set in
+ mark_window_display_accurate_1. */
int begv, zv;
};
int x, y;
/* Width of the row in pixels without taking face extension at the
- end of the row into account. */
+ end of the row into account, and without counting truncation
+ and continuation glyphs at the end of a row on ttys. */
int pixel_width;
/* Logical ascent/height of this line. The value of ascent is zero
LFACE_BOX_INDEX,
LFACE_FONT_INDEX,
LFACE_INHERIT_INDEX,
+ LFACE_AVGWIDTH_INDEX,
LFACE_VECTOR_SIZE
};
font may still be used somewhere else. */
XFontStruct *font;
- /* Background stipple or bitmap used for this face. */
- Pixmap stipple;
+ /* Background stipple or bitmap used for this face. This is
+ an id as returned from load_pixmap. */
+ int stipple;
#else /* not HAVE_WINDOW_SYSTEM */
unsigned int pixmap_w, pixmap_h;
/* Non-zero means characters in this face have a box that thickness
- around them. */
+ around them. If it is negative, the absolute value indicates the
+ thickness, and the horizontal lines of box (top and bottom) are
+ drawn inside of characters glyph area. The vartical lines of box
+ (left and right) are drawn as the same way as the case that this
+ value is positive. */
int box_line_width;
/* Type of box drawn. A value of FACE_NO_BOX means no box is drawn
/* The allocated size, and number of used slots of faces_by_id. */
int size, used;
+
+ /* Flag indicating that attributes of the `menu' face have been
+ changed. */
+ unsigned menu_face_changed_p : 1;
};
/* Vector of glyphs for control character translation. The pointer
dpvec is set to ctl_chars when a control character is translated.
This vector is also used for incomplete multibyte character
- translation (e.g \222\244). Such a character is at most 3 bytes,
- thus we need at most 12 bytes here. */
- Lisp_Object ctl_chars[12];
+ translation (e.g \222\244). Such a character is at most 4 bytes,
+ thus we need at most 16 bytes here. */
+ Lisp_Object ctl_chars[16];
/* Current buffer or string position of the iterator, including
position in overlay strings etc. */
enum glyph_row_area area;
unsigned multibyte_p : 1;
unsigned string_from_display_prop_p : 1;
+ unsigned display_ellipsis_p : 1;
Lisp_Object space_width;
short voffset;
Lisp_Object font_height;
/* Margin around tool-bar buttons in pixels. */
-extern int tool_bar_button_margin;
+extern Lisp_Object Vtool_bar_button_margin;
/* Thickness of relief to draw around tool-bar buttons. */
extern int tool_bar_button_relief;
+/* Default values of the above variables. */
+
+#define DEFAULT_TOOL_BAR_BUTTON_MARGIN 1
+#define DEFAULT_TOOL_BAR_BUTTON_RELIEF 3
+
+/* The height in pixels of the default tool-bar images. */
+
+#define DEFAULT_TOOL_BAR_IMAGE_HEIGHT 24
\f
/***********************************************************************
/* Defined in xdisp.c */
+int string_buffer_position P_ ((struct window *, Lisp_Object, int));
+int line_bottom_y P_ ((struct it *));
int display_prop_intangible_p P_ ((Lisp_Object));
-void resize_echo_area_axactly P_ ((void));
+void resize_echo_area_exactly P_ ((void));
int resize_mini_window P_ ((struct window *, int));
int try_window P_ ((Lisp_Object, struct text_pos));
void window_box P_ ((struct window *, int, int *, int *, int *, int *));
/* Defined in xfaces.c */
-#ifdef USE_X_TOOLKIT
-void x_set_menu_resources_from_menu_face P_ ((struct frame *, Widget));
-#endif
#ifdef HAVE_X_WINDOWS
void x_free_colors P_ ((struct frame *, unsigned long *, int));
#endif
void recompute_basic_faces P_ ((struct frame *));
int face_at_buffer_position P_ ((struct window *, int, int, int, int *,
int, int));
-int face_at_string_position P_ ((struct window *, Lisp_Object,
- int, int, int, int, int *, enum face_id));
+int face_at_string_position P_ ((struct window *, Lisp_Object, int, int, int,
+ int, int *, enum face_id, int));
int compute_char_face P_ ((struct frame *, int, Lisp_Object));
void free_all_realized_faces P_ ((Lisp_Object));
extern Lisp_Object Qforeground_color, Qbackground_color;
extern Window tip_window;
EXFUN (Fx_show_tip, 6);
EXFUN (Fx_hide_tip, 0);
-extern void start_busy_cursor P_ ((void));
-extern void cancel_busy_cursor P_ ((void));
-extern int display_busy_cursor_p;
+extern void start_hourglass P_ ((void));
+extern void cancel_hourglass P_ ((void));
+extern int display_hourglass_p;
#endif /* HAVE_WINDOW_SYSTEM */
/* Defined in dispnew.c */
+extern int inverse_video;
int estimate_mode_line_height P_ ((struct frame *, enum face_id));
Lisp_Object mode_line_string P_ ((struct window *, int, int, int, int *));
extern void redraw_frame P_ ((struct frame *));
int update_frame P_ ((struct frame *, int, int));
void update_single_window P_ ((struct window *, int));
int scrolling P_ ((struct frame *));
-int buffer_posn_from_coords P_ ((struct window *, int *, int *));
+void buffer_posn_from_coords P_ ((struct window *, int *, int *,
+ Lisp_Object *, struct display_pos *));
void do_pending_window_change P_ ((int));
void change_frame_size P_ ((struct frame *, int, int, int, int, int));
void bitch_at_user P_ ((void));