/* 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.
/* 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
\f
/***********************************************************************
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. */
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
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;
/* 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;
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;
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;
enum prop_idx
{
- AUTO_COMPOSED_PROP_IDX,
FONTIFIED_PROP_IDX,
FACE_PROP_IDX,
INVISIBLE_PROP_IDX,
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;
/* 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
/* 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;
{
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;
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;
&& ((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 { \
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,
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,