X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/fcc38f6dbea421501d78db607628469ce3acb2fb..54a72868e6b4d3001918d57884c8cf74ec8f9b8b:/src/dispextern.h diff --git a/src/dispextern.h b/src/dispextern.h index f07f761301..2dd0d91b11 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 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -1819,6 +1819,8 @@ enum it_method { NUM_IT_METHODS }; +#define IT_STACK_SIZE 4 + struct it { /* The window in which we iterate over current_buffer (or a string). */ @@ -1927,22 +1929,47 @@ struct it from what we previously had. */ struct iterator_stack_entry { - int stop_charpos; - int face_id; Lisp_Object string; - struct display_pos pos; - int end_charpos; int string_nchars; + int end_charpos; + int stop_charpos; + int face_id; + + /* Save values specific to a given method. */ + union { + /* method == GET_FROM_IMAGE */ + struct { + Lisp_Object object; + struct it_slice slice; + int image_id; + } image; + /* method == GET_FROM_COMPOSITION */ + struct { + Lisp_Object object; + int c, len; + int cmp_id, cmp_len; + } comp; + /* method == GET_FROM_STRETCH */ + struct { + Lisp_Object object; + } stretch; + } u; + + /* current text and display positions. */ + struct text_pos position; + struct display_pos current; enum glyph_row_area area; + enum it_method method; unsigned multibyte_p : 1; unsigned string_from_display_prop_p : 1; unsigned display_ellipsis_p : 1; - struct it_slice slice; + + /* properties from display property that are reset by another display property. */ Lisp_Object space_width; - short voffset; Lisp_Object font_height; + short voffset; } - stack[2]; + stack[IT_STACK_SIZE]; /* Stack pointer. */ int sp; @@ -2421,6 +2448,15 @@ struct image #define DEFAULT_IMAGE_WIDTH 30 #define DEFAULT_IMAGE_HEIGHT 30 + /* Top/left and bottom/right corner pixel of actual image data. + Used by four_corners_best to consider the real image data, + rather than looking at the optional image margin. */ + int corners[4]; +#define TOP_CORNER 0 +#define LEFT_CORNER 1 +#define BOT_CORNER 2 +#define RIGHT_CORNER 3 + /* Percent of image height used as ascent. A value of CENTERED_IMAGE_ASCENT means draw the image centered on the line. */ @@ -2623,8 +2659,8 @@ 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 *, - struct glyph_matrix *, int, int, int, int)); +int set_cursor_from_row P_ ((struct window *, struct glyph_row *, + struct glyph_matrix *, int, int, int, int)); void init_iterator P_ ((struct it *, struct window *, int, int, struct glyph_row *, enum face_id)); void init_iterator_to_row_start P_ ((struct it *, struct window *, @@ -2654,7 +2690,9 @@ extern Lisp_Object help_echo_object, previous_help_echo_string; extern int help_echo_pos; extern struct frame *last_mouse_frame; extern int last_tool_bar_item; -extern int mouse_autoselect_window; +extern Lisp_Object Vmouse_autoselect_window; +extern int unibyte_display_via_language_environment; + extern void reseat_at_previous_visible_line_start P_ ((struct it *)); extern int calc_pixel_width_or_height P_ ((double *, struct it *, Lisp_Object, @@ -2682,8 +2720,8 @@ extern void x_fix_overlapping_area P_ ((struct window *, struct glyph_row *, extern void draw_phys_cursor_glyph P_ ((struct window *, struct glyph_row *, enum draw_glyphs_face)); -extern int get_phys_cursor_geometry P_ ((struct window *, struct glyph_row *, - struct glyph *, int *)); +extern void get_phys_cursor_geometry P_ ((struct window *, struct glyph_row *, + struct glyph *, int *, int *, int *)); extern void erase_phys_cursor P_ ((struct window *)); extern void display_and_set_cursor P_ ((struct window *, int, int, int, int, int)); @@ -2731,6 +2769,9 @@ void compute_fringe_widths P_ ((struct frame *, int)); void w32_init_fringe P_ ((void)); void w32_reset_fringes P_ ((void)); #endif +#ifdef MAC_OS +void mac_init_fringe P_ ((void)); +#endif /* Defined in image.c */ @@ -2743,6 +2784,9 @@ extern void x_reference_bitmap P_ ((struct frame *, int)); extern int x_create_bitmap_from_data P_ ((struct frame *, char *, unsigned int, unsigned int)); extern int x_create_bitmap_from_file P_ ((struct frame *, Lisp_Object)); +#if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS) +extern int x_create_bitmap_from_xpm_data P_ ((struct frame *f, char **bits)); +#endif #ifndef x_destroy_bitmap extern void x_destroy_bitmap P_ ((struct frame *, int)); #endif @@ -2927,7 +2971,6 @@ int scrolling P_ ((struct frame *)); void do_pending_window_change P_ ((int)); void change_frame_size P_ ((struct frame *, int, int, int, int, int)); void bitch_at_user P_ ((void)); -Lisp_Object sit_for P_ ((int, int, int, int, int)); void init_display P_ ((void)); void syms_of_display P_ ((void)); extern Lisp_Object Qredisplay_dont_pause;