X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/011ba6eaacfa50cc9871d0cfea34e8f0a7a5bc43..a8d3cbf75d219d7a249fc0623219511179e959da:/src/dispextern.h diff --git a/src/dispextern.h b/src/dispextern.h index 9cefea27e1..c7652504de 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -1,6 +1,6 @@ /* 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. @@ -405,7 +405,7 @@ struct glyph { /* 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. */ @@ -454,7 +454,7 @@ struct glyph /* 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. */ @@ -1283,10 +1283,10 @@ struct glyph_string 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 @@ -1856,13 +1856,15 @@ struct bidi_it { 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 */ EMACS_INT disp_pos; /* position of display string after ch */ - int disp_prop_p; /* if non-zero, there really is a - `display' property/string at disp_pos */ + int disp_prop; /* if non-zero, there really is a + `display' property/string at disp_pos; + if 2, the property is a `space' spec */ int stack_idx; /* index of current data on the stack */ /* Note: Everything from here on is not copied/saved when the bidi iterator state is saved, pushed, or popped. So only put here @@ -2150,6 +2152,10 @@ struct it 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; @@ -2270,6 +2276,7 @@ struct it 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; @@ -2397,9 +2404,19 @@ struct it 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; @@ -2637,11 +2654,11 @@ struct redisplay_interface 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 @@ -3035,13 +3052,13 @@ extern struct frame *last_mouse_frame; 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 *); extern EMACS_INT compute_display_string_end (EMACS_INT, struct bidi_string_data *); +extern void produce_stretch_glyph (struct it *); + #ifdef HAVE_WINDOW_SYSTEM @@ -3114,6 +3131,9 @@ void compute_fringe_widths (struct frame *, 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 @@ -3223,7 +3243,6 @@ extern Window tip_window; EXFUN (Fx_hide_tip, 0); extern void start_hourglass (void); extern void cancel_hourglass (void); -extern int hourglass_started (void); extern int hourglass_shown_p; struct atimer; /* Defined in atimer.h. */ /* If non-null, an asynchronous timer that, when it expires, displays @@ -3334,8 +3353,10 @@ extern int tty_capable_p (struct tty_display_info *, unsigned, unsigned long, un 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 *); /* Defined in scroll.c */