@@ -160,7 +160,9 @@ VTerm *vterm_new_with_allocator(int rows, int cols, VTermAllocatorFunctions *fun
160160/* Free and cleanup a terminal and all its data. */
161161void vterm_free (VTerm * vt );
162162
163+ /* Get the current size of the terminal and store in "rowsp" and "colsp". */
163164void vterm_get_size (const VTerm * vt , int * rowsp , int * colsp );
165+
164166void vterm_set_size (VTerm * vt , int rows , int cols );
165167
166168int vterm_get_utf8 (const VTerm * vt );
@@ -195,14 +197,14 @@ void vterm_mouse_button(VTerm *vt, int button, bool pressed, VTermModifier mod);
195197 *
196198 * Don't confuse this with the final byte of the CSI escape; 'a' in this case.
197199 */
198- #define CSI_ARG_FLAG_MORE (1<<31 )
199- #define CSI_ARG_MASK (~(1<<31 ))
200+ #define CSI_ARG_FLAG_MORE (1<<30 )
201+ #define CSI_ARG_MASK (~(1<<30 ))
200202
201203#define CSI_ARG_HAS_MORE (a ) ((a) & CSI_ARG_FLAG_MORE)
202204#define CSI_ARG (a ) ((a) & CSI_ARG_MASK)
203205
204206/* Can't use -1 to indicate a missing argument; use this instead */
205- #define CSI_ARG_MISSING ((1UL<<31 )-1)
207+ #define CSI_ARG_MISSING ((1<<30 )-1)
206208
207209#define CSI_ARG_IS_MISSING (a ) (CSI_ARG(a) == CSI_ARG_MISSING)
208210#define CSI_ARG_OR (a ,def ) (CSI_ARG(a) == CSI_ARG_MISSING ? (def) : CSI_ARG(a))
@@ -248,7 +250,9 @@ void *vterm_state_get_cbdata(VTermState *state);
248250void vterm_state_set_unrecognised_fallbacks (VTermState * state , const VTermParserCallbacks * fallbacks , void * user );
249251void * vterm_state_get_unrecognised_fbdata (VTermState * state );
250252
253+ /* Initialize the state. */
251254void vterm_state_reset (VTermState * state , int hard );
255+
252256void vterm_state_get_cursorpos (const VTermState * state , VTermPos * cursorpos );
253257void vterm_state_get_default_colors (const VTermState * state , VTermColor * default_fg , VTermColor * default_bg );
254258void vterm_state_get_palette_color (const VTermState * state , int index , VTermColor * col );
@@ -295,6 +299,7 @@ typedef struct {
295299 int (* sb_popline )(int cols , VTermScreenCell * cells , void * user );
296300} VTermScreenCallbacks ;
297301
302+ /* Return the screen of the vterm. */
298303VTermScreen * vterm_obtain_screen (VTerm * vt );
299304
300305/*
@@ -317,9 +322,15 @@ typedef enum {
317322 VTERM_DAMAGE_SCROLL /* entire screen + scrollrect */
318323} VTermDamageSize ;
319324
325+ /* Invoke the relevant callbacks to update the screen. */
320326void vterm_screen_flush_damage (VTermScreen * screen );
327+
321328void vterm_screen_set_damage_merge (VTermScreen * screen , VTermDamageSize size );
322329
330+ /*
331+ * Reset the screen. Also invokes vterm_state_reset().
332+ * Must be called before the terminal can be used.
333+ */
323334void vterm_screen_reset (VTermScreen * screen , int hard );
324335
325336/* Neither of these functions NUL-terminate the buffer */
0 commit comments