1 #ifndef EL__TERMINAL_SCREEN_H
2 #define EL__TERMINAL_SCREEN_H
9 /** The terminal's screen manages */
10 struct terminal_screen
{
11 /** This is the screen's image, character by character. */
12 struct screen_char
*image
;
14 /** The previous screen's image, used for optimizing actual drawing. */
15 struct screen_char
*last_image
;
17 /** The current and the previous cursor positions. */
21 /** The range of line numbers that are out of sync with the physical
22 * screen. #dirty_from > #dirty_to means not dirty. */
23 int dirty_from
, dirty_to
;
26 /** Mark the screen ready for redrawing. */
28 set_screen_dirty(struct terminal_screen
*screen
, int from
, int to
)
30 int_upper_bound(&screen
->dirty_from
, from
);
31 int_lower_bound(&screen
->dirty_to
, to
);
34 /** Initializes a screen. Returns NULL upon allocation failure. */
35 struct terminal_screen
*init_screen(void);
37 /** Cleans up after the screen. */
38 void done_screen(struct terminal_screen
*screen
);
40 /** Update the size of the previous and the current screen image to
41 * hold @a x time @a y chars. */
42 void resize_screen(struct terminal
*term
, int x
, int y
);
44 /** Updates the terminal screen. */
45 void redraw_screen(struct terminal
*term
);
47 /** Erases the entire screen and moves the cursor to the upper left corner. */
48 void erase_screen(struct terminal
*term
);
51 void beep_terminal(struct terminal
*term
);
53 extern struct module terminal_screen_module
;