#ifndef INCLUDED_redisplay_h_
#define INCLUDED_redisplay_h_
+#include "character.h"
+
/* Redisplay DASSERT types */
#define DB_DISP_POS 1
#define DB_DISP_TEXT_LAYOUT 2
union /* Information specific to the type of rune */
{
- /* #### GLyphs are rare. Is it really necessary to waste 8 bytes on every
+ /* #### Glyphs are rare. Is it really necessary to waste 8 bytes on every
rune for that?! */
/* DGLYPH */
struct
If this is a rune in the modeline
then this might be nil. */
+ int ascent; /* Ascent of this glyph, in pixels. */
+ int descent; /* Descent of this glyph, in pixels. */
+ int yoffset; /* Offset from line top to reach glyph top */
int xoffset; /* Number of pixels that need to be
chopped off the left of the glyph.
This has the effect of shifting the
} dglyph;
/* CHAR */
- struct
- {
- Emchar ch; /* Character of this rune. */
- } chr;
+ struct Charc cglyph; /* Character of this rune. */
/* HLINE */
struct
/* Nonzero if some device has signaled that it wants to change size. */
extern int asynch_device_change_pending;
+/* Nonzero if some frame has changed the layout of internal elements
+ (gutters or toolbars). */
+extern int frame_layout_changed;
+
/* Nonzero if any toolbar has changed. */
extern int toolbar_changed;
extern int toolbar_changed_set;
(p)->extents_changed = 0; \
(p)->faces_changed = 0; \
(p)->frame_changed = 0; \
+ (p)->frame_layout_changed = 0; \
(p)->icon_changed = 0; \
(p)->menubar_changed = 0; \
(p)->modeline_changed = 0; \
clip_changed = 0; \
extents_changed = 0; \
frame_changed = 0; \
+ frame_layout_changed = 0; \
icon_changed = 0; \
menubar_changed = 0; \
modeline_changed = 0; \
(p)->extents_changed || \
(p)->faces_changed || \
(p)->frame_changed || \
+ (p)->frame_layout_changed || \
(p)->icon_changed || \
(p)->menubar_changed || \
(p)->modeline_changed || \
extents_changed || \
faces_changed || \
frame_changed || \
+ frame_layout_changed || \
icon_changed || \
menubar_changed || \
modeline_changed || \
face_index findex, int cursor_start, int cursor_width,
int cursor_height, int offset_bitmap);
int redisplay_calculate_display_boxes (struct display_line *dl, int xpos,
- int xoffset, int start_pixpos, int width,
- struct display_box* dest,
+ int xoffset, int yoffset, int start_pixpos,
+ int width, struct display_box* dest,
struct display_glyph_area* src);
int redisplay_normalize_glyph_area (struct display_box* dest,
struct display_glyph_area* glyphsrc);
void redisplay_clear_to_window_end (struct window *w, int ypos1, int ypos2);
void redisplay_clear_region (Lisp_Object window, face_index findex, int x,
int y, int width, int height);
+void redisplay_clear_top_of_window (struct window *w);
void redisplay_clear_bottom_of_window (struct window *w,
display_line_dynarr *ddla,
int min_start, int max_end);