Merged in changes from CVS HEAD
[bpt/emacs.git] / src / dispextern.h
index 0d127ba..b93bbd1 100644 (file)
@@ -321,6 +321,9 @@ struct glyph
   /* Width in pixels.  */
   short pixel_width;
 
+  /* Ascent and descent in pixels.  */
+  short ascent, descent;
+
   /* Vertical offset.  If < 0, the glyph is displayed raised, if > 0
      the glyph is displayed lowered.  */
   short voffset;
@@ -359,8 +362,10 @@ struct glyph
      doesn't have a glyph in a font.  */
   unsigned glyph_not_available_p : 1;
 
+#define FACE_ID_BITS   21
+
   /* Face of the glyph.  */
-  unsigned face_id : 21;
+  unsigned face_id : FACE_ID_BITS;
 
   /* Type of font used to display the character glyph.  May be used to
      determine which set of functions to use to obtain font metrics
@@ -1244,7 +1249,7 @@ struct glyph_string
        DESCENT = FONT->descent
        HEIGHT = FONT_HEIGHT (FONT)
        F_DESCENT = (FRAME_FONT (F)->descent
-                    - F->output_data.x->baseline_offset)
+                    - F->device->output_data.x->baseline_offset)
        F_HEIGHT = FRAME_LINE_HEIGHT (F)
 */
 
@@ -1493,6 +1498,7 @@ enum face_id
   BASIC_FACE_ID_SENTINEL
 };
 
+#define MAX_FACE_ID  ((1 << FACE_ID_BITS) - 1)
 
 /* A cache of realized faces.  Each frame has its own cache because
    Emacs allows different frame-local face definitions.  */
@@ -2005,16 +2011,16 @@ struct it
 /* Call produce_glyphs or produce_glyphs_hook, if set.  Shortcut to
    avoid the function call overhead.  */
 
-#define PRODUCE_GLYPHS(IT)                     \
-     do {                                      \
-       extern int inhibit_free_realized_faces; \
-       if (rif != NULL)                                \
-        rif->produce_glyphs ((IT));            \
-       else                                    \
-        produce_glyphs ((IT));                 \
-       if ((IT)->glyph_row != NULL)            \
-        inhibit_free_realized_faces = 1;       \
-     } while (0)
+#define PRODUCE_GLYPHS(IT)                              \
+  do {                                                  \
+    extern int inhibit_free_realized_faces;             \
+    if (FRAME_RIF ((IT)->f) != NULL)                    \
+      FRAME_RIF ((IT)->f)->produce_glyphs ((IT));       \
+    else                                                \
+      produce_glyphs ((IT));                            \
+    if ((IT)->glyph_row != NULL)                        \
+      inhibit_free_realized_faces = 1;                  \
+  } while (0)
 
 /* Bit-flags indicating what operation move_it_to should perform.  */
 
@@ -2183,10 +2189,6 @@ struct redisplay_interface
 #endif /* HAVE_WINDOW_SYSTEM */
 };
 
-/* The current interface for window-based redisplay.  */
-
-extern struct redisplay_interface *rif;
-
 \f
 /***********************************************************************
                                Images
@@ -2536,6 +2538,7 @@ extern void x_draw_vertical_border P_ ((struct window *w));
 extern void frame_to_window_pixel_xy P_ ((struct window *, int *, int *));
 extern void get_glyph_string_clip_rect P_ ((struct glyph_string *,
                                            NativeRectangle *nr));
+extern Lisp_Object find_hot_spot P_ ((Lisp_Object, int, int));
 extern void note_mouse_highlight P_ ((struct frame *, int, int));
 extern void x_clear_window_mouse_face P_ ((struct window *));
 extern void cancel_mouse_face P_ ((struct frame *));
@@ -2555,11 +2558,11 @@ extern int x_intersect_rectangles P_ ((XRectangle *, XRectangle *,
 
 /* Defined in sysdep.c */
 
-void get_tty_size P_ ((struct tty_output *, int *, int *));
+void get_tty_size P_ ((int, int *, int *));
 void request_sigio P_ ((void));
 void unrequest_sigio P_ ((void));
-int tabs_safe_p P_ ((void));
-void init_baud_rate P_ ((void));
+int tabs_safe_p P_ ((int));
+void init_baud_rate P_ ((int));
 void init_sigio P_ ((int));
 
 /* Defined in xfaces.c */
@@ -2575,6 +2578,7 @@ void clear_face_cache P_ ((int));
 unsigned long load_color P_ ((struct frame *, struct face *, Lisp_Object,
                              enum lface_attribute_index));
 void unload_color P_ ((struct frame *, unsigned long));
+int face_font_available_p P_ ((struct frame *, Lisp_Object));
 int ascii_face_of_lisp_face P_ ((struct frame *, int));
 void prepare_face_for_display P_ ((struct frame *, struct face *));
 int xstricmp P_ ((const unsigned char *, const unsigned char *));
@@ -2664,12 +2668,19 @@ int popup_activated P_ ((void));
 extern int inverse_video;
 extern int required_matrix_width P_ ((struct window *));
 extern int required_matrix_height P_ ((struct window *));
-extern Lisp_Object mode_line_string P_ ((struct window *, int *, int *,
-                                        int *, int *,
-                                        enum window_part, int *));
-extern Lisp_Object marginal_area_string P_ ((struct window *, int *, int *,
-                                            int *, int *,
-                                            enum window_part, int *));
+extern Lisp_Object buffer_posn_from_coords P_ ((struct window *,
+                                               int *, int *,
+                                               struct display_pos *,
+                                               Lisp_Object *, 
+                                               int *, int *, int *, int *));
+extern Lisp_Object mode_line_string P_ ((struct window *, enum window_part,
+                                        int *, int *, int *,
+                                        Lisp_Object *,
+                                        int *, int *, int *, int *));
+extern Lisp_Object marginal_area_string P_ ((struct window *, enum window_part,
+                                            int *, int *, int *,
+                                            Lisp_Object *,
+                                            int *, int *, int *, int *));
 extern void redraw_frame P_ ((struct frame *));
 extern void redraw_garbaged_frames P_ ((void));
 extern void cancel_line P_ ((int, struct frame *));
@@ -2710,9 +2721,6 @@ int direct_output_forward_char P_ ((int));
 int update_frame P_ ((struct frame *, int, int));
 void update_single_window P_ ((struct window *, int));
 int scrolling P_ ((struct frame *));
-void buffer_posn_from_coords P_ ((struct window *, int *, int *,
-                                 int *, int *,
-                                 Lisp_Object *, struct display_pos *));
 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));
@@ -2724,30 +2732,30 @@ extern Lisp_Object Qredisplay_dont_pause;
 /* Defined in term.c */
 
 extern void ring_bell P_ ((void));
-extern void set_terminal_modes P_ ((struct tty_output *));
-extern void reset_terminal_modes P_ ((struct tty_output *));
 extern void update_begin P_ ((struct frame *));
 extern void update_end P_ ((struct frame *));
 extern void set_terminal_window P_ ((int));
 extern void set_scroll_region P_ ((int, int));
-extern void turn_off_insert P_ ((void));
-extern void turn_off_highlight P_ ((void));
-extern void background_highlight P_ ((void));
+extern void turn_off_insert P_ ((struct tty_display_info *));
+extern void turn_off_highlight P_ ((struct tty_display_info *));
+extern void background_highlight P_ ((struct tty_display_info *));
 extern void clear_frame P_ ((void));
 extern void clear_end_of_line P_ ((int));
 extern void clear_end_of_line_raw P_ ((int));
+extern void tty_clear_end_of_line P_ ((int));
 extern void delete_glyphs P_ ((int));
 extern void ins_del_lines P_ ((int, int));
 extern int string_cost P_ ((char *));
 extern int per_line_cost P_ ((char *));
 extern void calculate_costs P_ ((struct frame *));
 extern void set_tty_color_mode P_ ((struct frame *, Lisp_Object));
-extern void tty_setup_colors P_ ((int));
-extern struct tty_output *term_init P_ ((char *, char *));
-extern struct tty_output *term_dummy_init P_ ((void));
+extern void tty_setup_colors P_ ((struct tty_display_info *, int));
+extern struct display *get_named_tty_display P_ ((char *));
+extern struct display *init_initial_display P_ ((void));
+extern struct display *term_init P_ ((char *, char *, int));
 extern void fatal P_ ((/* char *, ... */));
-void cursor_to P_ ((int, int));
-extern int tty_capable_p P_ ((struct frame *, unsigned, unsigned long, unsigned long));
+extern void cursor_to P_ ((int, int));
+extern int tty_capable_p P_ ((struct tty_display_info *, unsigned, unsigned long, unsigned long));
 
 /* Defined in scroll.c */