/* Interface definitions for display code.
-Copyright (C) 1985, 1993-1994, 1997-2011 Free Software Foundation, Inc.
+Copyright (C) 1985, 1993-1994, 1997-2012 Free Software Foundation, Inc.
This file is part of GNU Emacs.
{
/* Metrics of a partial glyph of an image (type == IMAGE_GLYPH). */
struct glyph_slice img;
- /* Start and end indices of glyphs of a graphme cluster of a
+ /* Start and end indices of glyphs of a grapheme cluster of a
composition (type == COMPOSITE_GLYPH). */
struct { int from, to; } cmp;
/* Pixel offsets for upper and lower part of the acronym. */
/* Length of acronym or hexadecimal code string (at most 8). */
unsigned len : 4;
/* Character to display. Actually we need only 22 bits. */
- unsigned ch : 26;
+ unsigned ch : 25;
} glyphless;
/* Used to compare all bit-fields above in one step. */
unsigned padding_p : 1;
/* The GC to use for drawing this glyph string. */
-#if defined(HAVE_X_WINDOWS)
+#if defined (HAVE_X_WINDOWS)
GC gc;
#endif
-#if defined(HAVE_NTGUI)
+#if defined (HAVE_NTGUI)
XGCValues *gc;
HDC hdc;
#endif
struct bidi_saved_info next_for_neutral; /* surrounding characters for... */
struct bidi_saved_info prev_for_neutral; /* ...resolving neutrals */
struct bidi_saved_info next_for_ws; /* character after sequence of ws */
- EMACS_INT next_en_pos; /* position of next EN char for ET */
+ EMACS_INT next_en_pos; /* pos. of next char for determining ET type */
+ bidi_type_t next_en_type; /* type of char at next_en_pos */
EMACS_INT ignore_bn_limit; /* position until which to ignore BNs */
bidi_dir_t sor; /* direction of start-of-run in effect */
int scan_dir; /* direction of text scan, 1: forw, -1: back */
Don't handle some `display' properties in these strings. */
unsigned string_from_display_prop_p : 1;
+ /* 1 means `string' comes from a `line-prefix' or `wrap-prefix'
+ property. */
+ unsigned string_from_prefix_prop_p : 1;
+
/* 1 means we are iterating an object that came from a value of a
`display' property. */
unsigned from_disp_prop_p : 1;
bidi_dir_t paragraph_embedding;
unsigned multibyte_p : 1;
unsigned string_from_display_prop_p : 1;
+ unsigned string_from_prefix_prop_p : 1;
unsigned display_ellipsis_p : 1;
unsigned avoid_cursor_p : 1;
unsigned bidi_p:1;
Lisp_Object font_height;
/* Object and position where the current display element came from.
- Object can be a Lisp string in case the current display element
- comes from an overlay string, or it is buffer. It may also be nil
- during mode-line update. Position is a position in object. */
+ Object is normally the buffer which is being rendered, but it can
+ also be a Lisp string in case the current display element comes
+ from an overlay string or from a display string (before- or
+ after-string). It may also be nil when a C string is being
+ rendered, e.g., during mode-line or header-line update. It can
+ also be a cons cell of the form `(space ...)', when we produce a
+ stretch glyph from a `display' specification. Finally, it can be
+ a zero-valued Lisp integer, but only temporarily, when we are
+ producing special glyphs for display purposes, like truncation
+ and continuation glyphs, or blanks that extend each line to the
+ edge of the window on a TTY.
+
+ Position is the current iterator position in object. */
Lisp_Object object;
struct text_pos position;
void (*flush_display) (struct frame *f);
/* Flush the display of frame F if non-NULL. This is called
- during redisplay, and should be NULL on systems which flushes
+ during redisplay, and should be NULL on systems which flush
automatically before reading input. */
void (*flush_display_optional) (struct frame *f);
- /* Clear the mouse hightlight in window W, if there is any. */
+ /* Clear the mouse highlight in window W, if there is any. */
void (*clear_window_mouse_face) (struct window *w);
/* Set *LEFT and *RIGHT to the left and right overhang of GLYPH on
extern int last_tool_bar_item;
extern void reseat_at_previous_visible_line_start (struct it *);
extern Lisp_Object lookup_glyphless_char_display (int, struct it *);
-extern int calc_pixel_width_or_height (double *, struct it *, Lisp_Object,
- struct font *, int, int *);
extern EMACS_INT compute_display_string_pos (struct text_pos *,
struct bidi_string_data *,
int, int *);
void w32_init_fringe (struct redisplay_interface *);
void w32_reset_fringes (void);
#endif
+
+extern unsigned row_hash (struct glyph_row *);
+
/* Defined in image.c */
#ifdef HAVE_WINDOW_SYSTEM
extern void set_tty_color_mode (struct tty_display_info *, struct frame *);
extern struct terminal *get_named_tty (const char *);
EXFUN (Ftty_type, 1);
+EXFUN (Fcontrolling_tty_p, 1);
extern void create_tty_output (struct frame *);
extern struct terminal *init_tty (const char *, const char *, int);
extern void tty_append_glyph (struct it *);