1 /* -*- c-basic-offset:2; tab-width:2; indent-tabs-mode:nil -*- */
2 
3 #ifndef __VT_MODEL_H__
4 #define __VT_MODEL_H__
5 
6 #include <pobl/bl_types.h>
7 
8 #include "vt_str.h"
9 #include "vt_line.h"
10 
11 typedef struct vt_model {
12   /* private */
13   vt_line_t *lines;
14 
15   /* public(readonly) */
16   u_int16_t num_cols; /* 0 - 65536 */
17   u_int16_t num_rows; /* 0 - 65536 */
18 
19   /* private */
20   int beg_row; /* used for scrolling */
21 
22 } vt_model_t;
23 
24 int vt_model_init(vt_model_t *model, u_int num_cols, u_int num_rows);
25 
26 void vt_model_final(vt_model_t *model);
27 
28 void vt_model_reset(vt_model_t *model);
29 
30 int vt_model_resize(vt_model_t *model, u_int num_cols, u_int num_rows, u_int slide);
31 
32 u_int vt_model_get_num_filled_rows(vt_model_t *model);
33 
34 int vt_model_end_row(vt_model_t *model);
35 
36 vt_line_t *vt_model_get_line(vt_model_t *model, int row);
37 
38 void vt_model_scroll_upward(vt_model_t *model, u_int size);
39 
40 void vt_model_scroll_downward(vt_model_t *model, u_int size);
41 
42 #ifdef DEBUG
43 
44 void vt_model_dump(vt_model_t *model);
45 
46 #endif
47 
48 #endif
49