/* 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;
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
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)
*/
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. */
/* 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. */
#endif /* HAVE_WINDOW_SYSTEM */
};
-/* The current interface for window-based redisplay. */
-
-extern struct redisplay_interface *rif;
-
\f
/***********************************************************************
Images
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 *));
/* 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 */
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 *));
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 *));
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));
/* 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 */