/* Interface definitions for display code.
- Copyright (C) 1985,93,94,97,98,99, 2000,01,02,03, 2004, 2005
- Free Software Foundation, Inc.
+ Copyright (C) 1985, 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002,
+ 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Emacs.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
/* New redisplay written by Gerd Moellmann <gerd@gnu.org>. */
#define FACE_ID_BITS 21
- /* Face of the glyph. */
+ /* Face of the glyph. This is a realized face ID,
+ an index in the face cache of the frame. */
unsigned face_id : FACE_ID_BITS;
/* Type of font used to display the character glyph. May be used to
position of the next row. */
struct display_pos end;
+ /* Non-zero means the overlay arrow bitmap is on this line.
+ -1 means use default overlay arrow bitmap, else
+ it specifies actual fringe bitmap number. */
+ int overlay_arrow_bitmap;
+
/* Left fringe bitmap number (enum fringe_bitmap_type). */
unsigned left_user_fringe_bitmap : FRINGE_ID_BITS;
unsigned truncated_on_left_p : 1;
unsigned truncated_on_right_p : 1;
- /* 1 means the overlay arrow is on this line. */
- unsigned overlay_arrow_p : 1;
-
/* 1 means that this row displays a continued line, i.e. it has a
continuation mark at the right side. */
unsigned continued_p : 1;
stipple pattern. */
unsigned stippled_p : 1;
- /* 1 means only the foreground of this glyph string must be drawn,
- and we should use the physical height of the line this glyph
- string appears in as clip rect. */
- unsigned for_overlaps_p : 1;
+#define OVERLAPS_PRED (1 << 0)
+#define OVERLAPS_SUCC (1 << 1)
+#define OVERLAPS_BOTH (OVERLAPS_PRED | OVERLAPS_SUCC)
+#define OVERLAPS_ERASED_CURSOR (1 << 2)
+ /* Non-zero means only the foreground of this glyph string must be
+ drawn, and we should use the physical height of the line this
+ glyph string appears in as clip rect. If the value is
+ OVERLAPS_ERASED_CURSOR, the clip rect is restricted to the rect
+ of the erased cursor. OVERLAPS_PRED and OVERLAPS_SUCC mean we
+ draw overlaps with the preceding and the succeeding rows,
+ respectively. */
+ unsigned for_overlaps : 3;
/* The GC to use for drawing this glyph string. */
#if defined(HAVE_X_WINDOWS) || defined(MAC_OS)
CURSOR_FACE_ID,
MOUSE_FACE_ID,
MENU_FACE_ID,
+ VERTICAL_BORDER_FACE_ID,
BASIC_FACE_ID_SENTINEL
};
This function is called from redraw_overlapping_rows after
desired rows have been made current. */
void (*fix_overlapping_area) P_ ((struct window *w, struct glyph_row *row,
- enum glyph_row_area area));
+ enum glyph_row_area area, int));
#ifdef HAVE_WINDOW_SYSTEM
int display_prop_intangible_p P_ ((Lisp_Object));
void resize_echo_area_exactly P_ ((void));
int resize_mini_window P_ ((struct window *, int));
-int try_window P_ ((Lisp_Object, struct text_pos));
+int try_window P_ ((Lisp_Object, struct text_pos, int));
void window_box P_ ((struct window *, int, int *, int *, int *, int *));
int window_box_height P_ ((struct window *));
int window_text_bottom_y P_ ((struct window *));
void pixel_to_glyph_coords P_ ((struct frame *, int, int, int *, int *,
NativeRectangle *, int));
int glyph_to_pixel_coords P_ ((struct window *, int, int, int *, int *));
+void remember_mouse_glyph P_ ((struct frame *, int, int, NativeRectangle *));
+
void mark_window_display_accurate P_ ((Lisp_Object, int));
void redisplay_preserve_echo_area P_ ((int));
void set_cursor_from_row P_ ((struct window *, struct glyph_row *,
extern struct cursor_pos output_cursor;
extern void x_fix_overlapping_area P_ ((struct window *, struct glyph_row *,
- enum glyph_row_area));
+ enum glyph_row_area, int));
extern void draw_phys_cursor_glyph P_ ((struct window *,
struct glyph_row *,
enum draw_glyphs_face));
extern void x_draw_vertical_border P_ ((struct window *w));
extern void frame_to_window_pixel_xy P_ ((struct window *, int *, int *));
+extern int get_glyph_string_clip_rects P_ ((struct glyph_string *,
+ NativeRectangle *, int));
extern void get_glyph_string_clip_rect P_ ((struct glyph_string *,
NativeRectangle *nr));
extern Lisp_Object find_hot_spot P_ ((Lisp_Object, int, int));
int lookup_named_face P_ ((struct frame *, Lisp_Object, int, int));
int smaller_face P_ ((struct frame *, int, int));
int face_with_height P_ ((struct frame *, int, int));
-int lookup_derived_face P_ ((struct frame *, Lisp_Object, int, int));
+int lookup_derived_face P_ ((struct frame *, Lisp_Object, int, int, int));
void init_frame_faces P_ ((struct frame *));
void free_frame_faces P_ ((struct frame *));
void recompute_basic_faces P_ ((struct frame *));
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 Lisp_Object Qframe_set_background_mode;
extern char unspecified_fg[], unspecified_bg[];
void free_realized_multibyte_face P_ ((struct frame *, int));
EXFUN (Fx_hide_tip, 0);
extern void start_hourglass P_ ((void));
extern void cancel_hourglass P_ ((void));
+extern int hourglass_started P_ ((void));
extern int display_hourglass_p;
/* Returns the background color of IMG, calculating one heuristically if
void init_display P_ ((void));
void syms_of_display P_ ((void));
extern Lisp_Object Qredisplay_dont_pause;
+GLYPH spec_glyph_lookup_face P_ ((struct window *, GLYPH));
/* Defined in term.c */
extern void set_tty_color_mode P_ ((struct frame *, Lisp_Object));
extern void tty_setup_colors P_ ((int));
extern void term_init P_ ((char *));
-extern void fatal P_ ((/* char *, ... */));
void cursor_to P_ ((int, int));
extern int tty_capable_p P_ ((struct frame *, unsigned, unsigned long, unsigned long));