X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/cbf21103d9fad16fe87d9affbc955c75cce657e4..51e4f4a88de94846f6b44b3e11496c7b67aa2f5e:/src/dispextern.h diff --git a/src/dispextern.h b/src/dispextern.h index 02b9df08eb..ca91c5b681 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -1,6 +1,6 @@ /* Interface definitions for display code. Copyright (C) 1985, 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008 + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -105,6 +105,8 @@ enum window_part /* Number of bits allocated to store fringe bitmap numbers. */ #define FRINGE_ID_BITS 16 +/* Number of bits allocated to store fringe bitmap height. */ +#define FRINGE_HEIGHT_BITS 8 /*********************************************************************** @@ -173,10 +175,10 @@ extern int trace_redisplay_p; struct text_pos { /* Character position. */ - int charpos; + EMACS_INT charpos; /* Corresponding byte position. */ - int bytepos; + EMACS_INT bytepos; }; /* Access character and byte position of POS in a functional form. */ @@ -311,7 +313,7 @@ struct glyph buffer, this is a position in that buffer. A value of -1 together with a null object means glyph is a truncation glyph at the start of a row. */ - int charpos; + EMACS_INT charpos; /* Lisp object source of this glyph. Currently either a buffer or a string, if the glyph was produced from characters which came from @@ -397,7 +399,7 @@ struct glyph unsigned automatic : 1; /* ID of the composition. */ unsigned id : 23; - /* Start and end indices of glyhs of the composition. */ + /* Start and end indices of glyphs of the composition. */ unsigned from : 4; unsigned to : 4; } cmp; @@ -778,6 +780,12 @@ struct glyph_row /* Face of the right fringe glyph. */ unsigned right_fringe_face_id : FACE_ID_BITS; + /* Vertical offset of the left fringe bitmap. */ + signed left_fringe_offset : FRINGE_HEIGHT_BITS; + + /* Vertical offset of the right fringe bitmap. */ + signed right_fringe_offset : FRINGE_HEIGHT_BITS; + /* 1 means that we must draw the bitmaps of this row. */ unsigned redraw_fringe_bitmaps_p : 1; @@ -1524,13 +1532,6 @@ struct face drawing shadows. */ unsigned use_box_color_for_shadows_p : 1; - /* The Lisp face attributes this face realizes. All attributes - in this vector are non-nil. */ - Lisp_Object lface[LFACE_VECTOR_SIZE]; - - /* The hash value of this face. */ - unsigned hash; - /* Non-zero if text in this face should be underlined, overlined, strike-through or have a box drawn around it. */ unsigned underline_p : 1; @@ -1580,6 +1581,13 @@ struct face unsigned synth_ital : 1; #endif + /* The Lisp face attributes this face realizes. All attributes + in this vector are non-nil. */ + Lisp_Object lface[LFACE_VECTOR_SIZE]; + + /* The hash value of this face. */ + unsigned hash; + /* Next and previous face in hash collision list of face cache. */ struct face *next, *prev; @@ -1686,7 +1694,7 @@ struct face_cache This macro is only meaningful for multibyte character CHAR. */ #define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT) \ - (ASCII_CHAR_P (CHAR) \ + ((ASCII_CHAR_P (CHAR) || CHAR_BYTE8_P (CHAR)) \ ? (FACE)->ascii_face->id \ : face_for_char ((F), (FACE), (CHAR), (POS), (OBJECT))) @@ -1811,7 +1819,6 @@ enum display_element_type enum prop_idx { - AUTO_COMPOSED_PROP_IDX, FONTIFIED_PROP_IDX, FACE_PROP_IDX, INVISIBLE_PROP_IDX, @@ -1866,10 +1873,12 @@ struct composition_it are not iterating over a composition now. */ int id; /* If non-negative, character that triggers the automatic - composition at `stop_pos', and this is an automatic compositoin. - If negative, this is a static composition.. */ + composition at `stop_pos', and this is an automatic composition. + If negative, this is a static composition. This is set to -2 + temporarily if searching of composition reach a limit or a + newline. */ int ch; - /* If this an automatic composition, how many charaters to look back + /* If this an automatic composition, how many characters to look back from the position where a character triggering the composition exists. */ int lookback; @@ -1899,11 +1908,11 @@ struct it /* The next position at which to check for face changes, invisible text, overlay strings, end of text etc., which see. */ - int stop_charpos; + EMACS_INT stop_charpos; /* Maximum string or buffer position + 1. ZV when iterating over current_buffer. */ - int end_charpos; + EMACS_INT end_charpos; /* C string to iterate over. Non-null means get characters from this string, otherwise characters are read from current_buffer @@ -1916,10 +1925,10 @@ struct it /* Start and end of a visible region; -1 if the region is not visible in the window. */ - int region_beg_charpos, region_end_charpos; + EMACS_INT region_beg_charpos, region_end_charpos; /* Position at which redisplay end trigger functions should be run. */ - int redisplay_end_trigger_charpos; + EMACS_INT redisplay_end_trigger_charpos; /* 1 means multibyte characters are enabled. */ unsigned multibyte_p : 1; @@ -2005,8 +2014,8 @@ struct it { Lisp_Object string; int string_nchars; - int end_charpos; - int stop_charpos; + EMACS_INT end_charpos; + EMACS_INT stop_charpos; struct composition_it cmp_it; int face_id; @@ -2038,11 +2047,12 @@ struct it unsigned string_from_display_prop_p : 1; unsigned display_ellipsis_p : 1; unsigned avoid_cursor_p : 1; + enum line_wrap_method line_wrap; /* properties from display property that are reset by another display property. */ + short voffset; Lisp_Object space_width; Lisp_Object font_height; - short voffset; } stack[IT_STACK_SIZE]; @@ -2067,8 +2077,6 @@ struct it where the `^' can be replaced by a display table entry. */ unsigned ctl_arrow_p : 1; - enum line_wrap_method line_wrap; - /* Non-zero means that the current face has a box. */ unsigned face_box_p : 1; @@ -2104,6 +2112,8 @@ struct it descent/ascent (line-height property). Reset after this glyph. */ unsigned constrain_row_ascent_descent_p : 1; + enum line_wrap_method line_wrap; + /* The ID of the default face to use. One of DEFAULT_FACE_ID, MODE_LINE_FACE_ID, etc, depending on what we are displaying. */ int base_face_id; @@ -2121,9 +2131,11 @@ struct it composition. */ struct composition_it cmp_it; - /* The character to display, possibly translated to multibyte - if unibyte_display_via_language_environment is set. This - is set after produce_glyphs has been called. */ + /* The character to display, possibly translated to multibyte if + multibyte_p is zero or unibyte_display_via_language_environment + is set. This is set after get_next_display_element has been + called. If we are setting it->C directly before calling + PRODUCE_GLYPHS, this should be set beforehand too. */ int char_to_display; /* If what == IT_IMAGE, the id of the image to display. */ @@ -2138,6 +2150,9 @@ struct it /* Computed from the value of the `raise' property. */ short voffset; + /* Number of columns per \t. */ + short tab_width; + /* Value of the `height' property, if any; nil if none. */ Lisp_Object font_height; @@ -2148,9 +2163,6 @@ struct it Lisp_Object object; struct text_pos position; - /* Number of columns per \t. */ - short tab_width; - /* Width in pixels of truncation and continuation glyphs. */ short truncation_pixel_width, continuation_pixel_width; @@ -2255,8 +2267,8 @@ struct it && ((IT)->c == '\n' \ || ((IT)->c == '\r' && (IT)->selective))) -/* Call produce_glyphs or produce_glyphs_hook, if set. Shortcut to - avoid the function call overhead. */ +/* Call produce_glyphs or FRAME_RIF->produce_glyphs, if set. Shortcut + to avoid the function call overhead. */ #define PRODUCE_GLYPHS(IT) \ do { \ @@ -2920,7 +2932,7 @@ void recompute_basic_faces P_ ((struct frame *)); int face_at_buffer_position P_ ((struct window *w, EMACS_INT pos, EMACS_INT region_beg, EMACS_INT region_end, EMACS_INT *endptr, EMACS_INT limit, - int mouse)); + int mouse, int base_face_id)); int face_for_overlay_string P_ ((struct window *w, EMACS_INT pos, EMACS_INT region_beg, EMACS_INT region_end, EMACS_INT *endptr, EMACS_INT limit, @@ -3120,7 +3132,8 @@ enum resource_types RES_TYPE_FLOAT, RES_TYPE_BOOLEAN, RES_TYPE_STRING, - RES_TYPE_SYMBOL + RES_TYPE_SYMBOL, + RES_TYPE_BOOLEAN_NUMBER }; extern Lisp_Object x_get_arg P_ ((Display_Info *, Lisp_Object,