X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/41b7f8bc6c4511ab6fcf7f6b1f9e7fdcd8592821..6baf66d53bbedd85a443e0d69d1f4311a93f0677:/src/dispextern.h diff --git a/src/dispextern.h b/src/dispextern.h index fc7bec97f7..c5ebb808b0 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -46,6 +46,18 @@ typedef struct { #include "msdos.h" #endif +INLINE_HEADER_BEGIN +#ifndef DISPEXTERN_INLINE +# define DISPEXTERN_INLINE INLINE +#endif + +#include +DISPEXTERN_INLINE int +xstrcasecmp (char const *a, char const *b) +{ + return c_strcasecmp (a, b); +} + #ifdef HAVE_X_WINDOWS typedef struct x_display_info Display_Info; typedef XImage * XImagePtr; @@ -68,6 +80,10 @@ typedef Pixmap XImagePtr; typedef XImagePtr XImagePtr_or_DC; #endif +#ifdef HAVE_WINDOW_SYSTEM +# include "systime.h" +#endif + #ifndef HAVE_WINDOW_SYSTEM typedef int Cursor; #define No_Cursor (0) @@ -117,39 +133,21 @@ enum window_part Debugging ***********************************************************************/ -/* If GLYPH_DEBUG is non-zero, additional checks are activated. Turn - it off by defining the macro GLYPH_DEBUG to zero. */ - -#ifndef GLYPH_DEBUG -#define GLYPH_DEBUG 0 -#endif - -/* If XASSERTS is non-zero, additional consistency checks are activated. - Turn it off by defining the macro XASSERTS to zero. */ - -#ifndef XASSERTS -#define XASSERTS 0 -#endif +/* If GLYPH_DEBUG is defined, additional checks are activated. */ -/* Macros to include code only if GLYPH_DEBUG != 0. */ +/* Macros to include code only if GLYPH_DEBUG is defined. */ -#if GLYPH_DEBUG +#ifdef GLYPH_DEBUG #define IF_DEBUG(X) X #else #define IF_DEBUG(X) (void) 0 #endif -#if XASSERTS -#define xassert(X) do {if (!(X)) abort ();} while (0) -#else -#define xassert(X) (void) 0 -#endif - /* Macro for displaying traces of redisplay. If Emacs was compiled - with GLYPH_DEBUG != 0, the variable trace_redisplay_p can be set to + with GLYPH_DEBUG defined, the variable trace_redisplay_p can be set to a non-zero value in debugging sessions to activate traces. */ -#if GLYPH_DEBUG +#ifdef GLYPH_DEBUG extern int trace_redisplay_p EXTERNALLY_VISIBLE; #include @@ -160,11 +158,11 @@ extern int trace_redisplay_p EXTERNALLY_VISIBLE; else \ (void) 0 -#else /* GLYPH_DEBUG == 0 */ +#else /* not GLYPH_DEBUG */ #define TRACE(X) (void) 0 -#endif /* GLYPH_DEBUG == 0 */ +#endif /* GLYPH_DEBUG */ @@ -662,7 +660,7 @@ struct glyph_matrix line. */ unsigned header_line_p : 1; -#if GLYPH_DEBUG +#ifdef GLYPH_DEBUG /* A string identifying the method used to display the matrix. */ char method[512]; #endif @@ -673,14 +671,14 @@ struct glyph_matrix /* Values of BEGV and ZV as of last redisplay. Set in mark_window_display_accurate_1. */ - int begv, zv; + ptrdiff_t begv, zv; }; /* Check that glyph pointers stored in glyph rows of MATRIX are okay. This aborts if any pointer is found twice. */ -#if GLYPH_DEBUG +#ifdef GLYPH_DEBUG void check_matrix_pointer_lossage (struct glyph_matrix *); #define CHECK_MATRIX(MATRIX) check_matrix_pointer_lossage ((MATRIX)) #else @@ -959,10 +957,10 @@ struct glyph_row /* Get a pointer to row number ROW in matrix MATRIX. If GLYPH_DEBUG - is defined to a non-zero value, the function matrix_row checks that - we don't try to access rows that are out of bounds. */ + is defined, the function matrix_row checks that we don't try to + access rows that are out of bounds. */ -#if GLYPH_DEBUG +#ifdef GLYPH_DEBUG struct glyph_row *matrix_row (struct glyph_matrix *, int); #define MATRIX_ROW(MATRIX, ROW) matrix_row ((MATRIX), (ROW)) #else @@ -1128,11 +1126,11 @@ struct glyph_row *matrix_row (struct glyph_matrix *, int); ((ROW)->phys_height - (ROW)->phys_ascent \ > (ROW)->height - (ROW)->ascent) -/* Non-zero means that fonts have been loaded since the last glyph +/* True means that fonts have been loaded since the last glyph matrix adjustments. The function redisplay_internal adjusts glyph - matrices when this flag is non-zero. */ + matrices when this flag is true. */ -extern int fonts_changed_p; +extern bool fonts_changed_p; /* A glyph for a space. */ @@ -1151,7 +1149,7 @@ extern int updated_area; /* Non-zero means last display completed. Zero means it was preempted. */ -extern int display_completed; +extern bool display_completed; @@ -1381,7 +1379,7 @@ struct glyph_string ? current_mode_line_height \ : (MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix) \ ? MATRIX_MODE_LINE_HEIGHT ((W)->current_matrix) \ - : estimate_mode_line_height (XFRAME ((W)->frame), \ + : estimate_mode_line_height (XFRAME (W->frame), \ CURRENT_MODE_LINE_FACE_ID (W)))) /* Return the current height of the header line of window W. If not @@ -1394,7 +1392,7 @@ struct glyph_string ? current_header_line_height \ : (MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix) \ ? MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix) \ - : estimate_mode_line_height (XFRAME ((W)->frame), \ + : estimate_mode_line_height (XFRAME (W->frame),\ HEADER_LINE_FACE_ID))) /* Return the height of the desired mode line of window W. */ @@ -1413,19 +1411,20 @@ struct glyph_string (!MINI_WINDOW_P ((W)) \ && !(W)->pseudo_window_p \ && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME ((W)))) \ - && BUFFERP ((W)->buffer) \ - && !NILP (BVAR (XBUFFER ((W)->buffer), mode_line_format)) \ + && BUFFERP (W->buffer) \ + && !NILP (BVAR (XBUFFER (W->buffer), mode_line_format)) \ && WINDOW_TOTAL_LINES (W) > 1) -/* Value is non-zero if window W wants a header line. */ +/* Value is true if window W wants a header line. */ #define WINDOW_WANTS_HEADER_LINE_P(W) \ (!MINI_WINDOW_P ((W)) \ && !(W)->pseudo_window_p \ && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME ((W)))) \ - && BUFFERP ((W)->buffer) \ - && !NILP (BVAR (XBUFFER ((W)->buffer), header_line_format)) \ - && WINDOW_TOTAL_LINES (W) > 1 + !NILP (BVAR (XBUFFER ((W)->buffer), mode_line_format))) + && BUFFERP (W->buffer) \ + && !NILP (BVAR (XBUFFER (W->buffer), header_line_format)) \ + && WINDOW_TOTAL_LINES (W) > 1 \ + + !NILP (BVAR (XBUFFER (W->buffer), mode_line_format))) /* Return proper value to be used as baseline offset of font that has @@ -1857,7 +1856,6 @@ struct bidi_it { int resolved_level; /* final resolved level of this character */ int invalid_levels; /* how many PDFs to ignore */ int invalid_rl_levels; /* how many PDFs from RLE/RLO to ignore */ - int prev_was_pdf; /* if non-zero, previous char was PDF */ struct bidi_saved_info prev; /* info about previous character */ struct bidi_saved_info last_strong; /* last-seen strong directional char */ struct bidi_saved_info next_for_neutral; /* surrounding characters for... */ @@ -1880,6 +1878,7 @@ struct bidi_it { struct bidi_string_data string; /* string to reorder */ bidi_dir_t paragraph_dir; /* current paragraph direction */ ptrdiff_t separator_limit; /* where paragraph separator should end */ + unsigned prev_was_pdf : 1; /* if non-zero, previous char was PDF */ unsigned first_elt : 1; /* if non-zero, examine current char first */ unsigned new_paragraph : 1; /* if non-zero, we expect a new paragraph */ unsigned frame_window_p : 1; /* non-zero if displaying on a GUI frame */ @@ -2086,10 +2085,10 @@ struct composition_it ptrdiff_t lookback; /* If non-negative, number of glyphs of the glyph-string. */ int nglyphs; - /* Nonzero iff the composition is created while buffer is scanned in + /* True iff the composition is created while buffer is scanned in reverse order, and thus the grapheme clusters must be rendered from the last to the first. */ - int reversed_p; + bool reversed_p; /** The following members contain information about the current grapheme cluster. */ @@ -2139,7 +2138,8 @@ struct it const unsigned char *s; /* Number of characters in the string (s, or it->string) we iterate - over. */ + over. Used only in display_string and its subroutines; never + used for overlay strings and strings from display properties. */ ptrdiff_t string_nchars; /* Start and end of a visible region; -1 if the region is not @@ -2757,16 +2757,20 @@ struct image_type Lisp_Object *type; /* Check that SPEC is a valid image specification for the given - image type. Value is non-zero if SPEC is valid. */ - int (* valid_p) (Lisp_Object spec); + image type. Value is true if SPEC is valid. */ + bool (* valid_p) (Lisp_Object spec); /* Load IMG which is used on frame F from information contained in - IMG->spec. Value is non-zero if successful. */ - int (* load) (struct frame *f, struct image *img); + IMG->spec. Value is true if successful. */ + bool (* load) (struct frame *f, struct image *img); /* Free resources of image IMG which is used on frame F. */ void (* free) (struct frame *f, struct image *img); + /* Initialization function (used for dynamic loading of image + libraries on Windows), or NULL if none. */ + bool (* init) (void); + /* Next in list of all supported image types. */ struct image_type *next; }; @@ -2780,7 +2784,7 @@ struct image { /* The time in seconds at which the image was last displayed. Set in prepare_image_for_display. */ - time_t timestamp; + EMACS_TIME timestamp; /* Pixmaps of the image. */ Pixmap pixmap, mask; @@ -3003,14 +3007,14 @@ enum tool_bar_item_image /* Defined in bidi.c */ -extern void bidi_init_it (ptrdiff_t, ptrdiff_t, int, struct bidi_it *); +extern void bidi_init_it (ptrdiff_t, ptrdiff_t, bool, struct bidi_it *); extern void bidi_move_to_visually_next (struct bidi_it *); -extern void bidi_paragraph_init (bidi_dir_t, struct bidi_it *, int); +extern void bidi_paragraph_init (bidi_dir_t, struct bidi_it *, bool); extern int bidi_mirror_char (int); extern void bidi_push_it (struct bidi_it *); extern void bidi_pop_it (struct bidi_it *); extern void *bidi_shelve_cache (void); -extern void bidi_unshelve_cache (void *, int); +extern void bidi_unshelve_cache (void *, bool); /* Defined in xdisp.c */ @@ -3056,7 +3060,7 @@ void move_it_in_display_line (struct it *it, int in_display_vector_p (struct it *); int frame_mode_line_height (struct frame *); extern Lisp_Object Qtool_bar; -extern int redisplaying_p; +extern bool redisplaying_p; extern int help_echo_showing_p; extern int current_mode_line_height, current_header_line_height; extern Lisp_Object help_echo_string, help_echo_window; @@ -3073,10 +3077,9 @@ extern ptrdiff_t compute_display_string_end (ptrdiff_t, struct bidi_string_data *); extern void produce_stretch_glyph (struct it *); - #ifdef HAVE_WINDOW_SYSTEM -#if GLYPH_DEBUG +#ifdef GLYPH_DEBUG extern void dump_glyph_string (struct glyph_string *) EXTERNALLY_VISIBLE; #endif @@ -3141,7 +3144,7 @@ int draw_window_fringes (struct window *, int); int update_window_fringes (struct window *, int); void compute_fringe_widths (struct frame *, int); -#ifdef WINDOWSNT +#ifdef HAVE_NTGUI void w32_init_fringe (struct redisplay_interface *); void w32_reset_fringes (void); #endif @@ -3154,7 +3157,7 @@ extern unsigned row_hash (struct glyph_row *); extern int x_bitmap_height (struct frame *, ptrdiff_t); extern int x_bitmap_width (struct frame *, ptrdiff_t); -extern int x_bitmap_pixmap (struct frame *, ptrdiff_t); +extern ptrdiff_t x_bitmap_pixmap (struct frame *, ptrdiff_t); extern void x_reference_bitmap (struct frame *, ptrdiff_t); extern ptrdiff_t x_create_bitmap_from_data (struct frame *, char *, unsigned int, unsigned int); @@ -3166,7 +3169,7 @@ extern ptrdiff_t x_create_bitmap_from_xpm_data (struct frame *, const char **); extern void x_destroy_bitmap (struct frame *, ptrdiff_t); #endif extern void x_destroy_all_bitmaps (Display_Info *); -extern int x_create_bitmap_mask (struct frame *, ptrdiff_t); +extern void x_create_bitmap_mask (struct frame *, ptrdiff_t); extern Lisp_Object x_find_image_file (Lisp_Object); void x_kill_gs_process (Pixmap, struct frame *); @@ -3174,7 +3177,7 @@ struct image_cache *make_image_cache (void); void free_image_cache (struct frame *); void clear_image_caches (Lisp_Object); void mark_image_cache (struct image_cache *); -int valid_image_p (Lisp_Object); +bool valid_image_p (Lisp_Object); void prepare_image_for_display (struct frame *, struct image *); ptrdiff_t lookup_image (struct frame *, Lisp_Object); @@ -3195,6 +3198,7 @@ void unrequest_sigio (void); int tabs_safe_p (int); void init_baud_rate (int); void init_sigio (int); +void ignore_sigio (void); /* Defined in xfaces.c */ @@ -3212,7 +3216,6 @@ void unload_color (struct frame *, unsigned long); char *choose_face_font (struct frame *, Lisp_Object *, Lisp_Object, int *); void prepare_face_for_display (struct frame *, struct face *); -int xstrcasecmp (const char *, const char *); int lookup_named_face (struct frame *, Lisp_Object, int); int lookup_basic_face (struct frame *, int); int smaller_face (struct frame *, int, int); @@ -3244,7 +3247,7 @@ extern char unspecified_fg[], unspecified_bg[]; #ifdef HAVE_X_WINDOWS void gamma_correct (struct frame *, XColor *); #endif -#ifdef WINDOWSNT +#ifdef HAVE_NTGUI void gamma_correct (struct frame *, COLORREF *); #endif @@ -3254,10 +3257,12 @@ void x_implicitly_set_name (struct frame *, Lisp_Object, Lisp_Object); extern Lisp_Object tip_frame; extern Window tip_window; -EXFUN (Fx_hide_tip, 0); +extern frame_parm_handler x_frame_parm_handlers[]; + extern void start_hourglass (void); extern void cancel_hourglass (void); extern int hourglass_shown_p; + struct atimer; /* Defined in atimer.h. */ /* If non-null, an asynchronous timer that, when it expires, displays an hourglass cursor on all frames. */ @@ -3308,7 +3313,7 @@ extern Lisp_Object marginal_area_string (struct window *, enum window_part, extern void redraw_frame (struct frame *); extern void cancel_line (int, struct frame *); extern void init_desired_glyphs (struct frame *); -extern int update_frame (struct frame *, int, int); +extern bool update_frame (struct frame *, bool, bool); extern void bitch_at_user (void); void adjust_glyphs (struct frame *); void free_glyphs (struct frame *); @@ -3324,13 +3329,13 @@ void rotate_matrix (struct glyph_matrix *, int, int, int); void increment_matrix_positions (struct glyph_matrix *, int, int, ptrdiff_t, ptrdiff_t); void blank_row (struct window *, struct glyph_row *, int); -void enable_glyph_matrix_rows (struct glyph_matrix *, int, int, int); +void clear_glyph_matrix_rows (struct glyph_matrix *, int, int); void clear_glyph_row (struct glyph_row *); void prepare_desired_row (struct glyph_row *); -void set_window_update_flags (struct window *, int); -void update_single_window (struct window *, int); -void do_pending_window_change (int); -void change_frame_size (struct frame *, int, int, int, int, int); +void set_window_update_flags (struct window *, bool); +void update_single_window (struct window *, bool); +void do_pending_window_change (bool); +void change_frame_size (struct frame *, int, int, bool, bool, bool); void init_display (void); void syms_of_display (void); extern Lisp_Object Qredisplay_dont_pause; @@ -3362,12 +3367,9 @@ extern int string_cost (const char *); extern int per_line_cost (const char *); extern void calculate_costs (struct frame *); extern void produce_glyphs (struct it *); -extern void produce_special_glyphs (struct it *, enum display_element_type); extern int tty_capable_p (struct tty_display_info *, unsigned, unsigned long, unsigned long); 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 *); @@ -3412,4 +3414,6 @@ extern Lisp_Object x_default_parameter (struct frame *, Lisp_Object, #endif /* HAVE_WINDOW_SYSTEM */ +INLINE_HEADER_END + #endif /* not DISPEXTERN_H_INCLUDED */