summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-09-14 21:24:39 -0400
committerJesse Luehrs <doy@tozt.net>2014-09-14 21:24:39 -0400
commit10f748a2dfa64e1fe099f86277823ee54597459e (patch)
tree5799002d72b3989d993bdb3badcbeacd42867af0 /src
parent5932a1caefb5b1254ced4d6bc460c14aab5cc3b4 (diff)
downloadlibvt100-10f748a2dfa64e1fe099f86277823ee54597459e.tar.gz
libvt100-10f748a2dfa64e1fe099f86277823ee54597459e.zip
allow specifying a size to resize to
this used to just calculate it manually from the size of the x window, but we don't have that now
Diffstat (limited to 'src')
-rw-r--r--src/screen.c18
-rw-r--r--src/screen.h4
2 files changed, 11 insertions, 11 deletions
diff --git a/src/screen.c b/src/screen.c
index 06292fd..15ca051 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -16,12 +16,13 @@ static int vt100_screen_loc_is_between(
struct vt100_loc start, struct vt100_loc end);
static int vt100_screen_row_max_col(VT100Screen *vt, int row);
-VT100Screen *vt100_screen_new()
+VT100Screen *vt100_screen_new(int rows, int cols)
{
VT100Screen *vt;
vt = calloc(1, sizeof(VT100Screen));
vt100_screen_init(vt);
+ vt100_screen_set_window_size(vt, rows, cols);
return vt;
}
@@ -32,7 +33,7 @@ void vt100_screen_init(VT100Screen *vt)
vt100_parser_yylex_init_extra(vt, &vt->scanner);
}
-void vt100_screen_set_window_size(VT100Screen *vt)
+void vt100_screen_set_window_size(VT100Screen *vt, int rows, int cols)
{
struct vt100_loc old_size;
int i;
@@ -40,11 +41,8 @@ void vt100_screen_set_window_size(VT100Screen *vt)
old_size.row = vt->grid->max.row;
old_size.col = vt->grid->max.col;
- /* vt->grid->max.row = vt->display.ypixel / vt->display.fonty; */
- /* vt->grid->max.col = vt->display.xpixel / vt->display.fontx; */
- // XXX vt100
- vt->grid->max.row = 24;
- vt->grid->max.col = 80;
+ vt->grid->max.row = rows;
+ vt->grid->max.col = cols;
if (vt->grid->max.row == 0) {
vt->grid->max.row = 1;
@@ -656,7 +654,9 @@ void vt100_screen_use_alternate_buffer(VT100Screen *vt)
vt->alternate = vt->grid;
vt->grid = calloc(1, sizeof(struct vt100_grid));
- vt100_screen_set_window_size(vt);
+ vt100_screen_set_window_size(
+ vt, vt->alternate->max.row, vt->alternate->max.col
+ );
vt->dirty = 1;
}
@@ -678,7 +678,7 @@ void vt100_screen_use_normal_buffer(VT100Screen *vt)
vt->grid = vt->alternate;
vt->alternate = NULL;
- vt100_screen_set_window_size(vt);
+ vt100_screen_set_window_size(vt, vt->grid->max.row, vt->grid->max.col);
vt->dirty = 1;
}
diff --git a/src/screen.h b/src/screen.h
index 2fdc60f..37a9ab7 100644
--- a/src/screen.h
+++ b/src/screen.h
@@ -111,9 +111,9 @@ struct vt100_screen {
unsigned char dirty: 1;
};
-VT100Screen *vt100_screen_new();
+VT100Screen *vt100_screen_new(int rows, int cols);
void vt100_screen_init(VT100Screen *vt);
-void vt100_screen_set_window_size(VT100Screen *vt);
+void vt100_screen_set_window_size(VT100Screen *vt, int rows, int cols);
int vt100_screen_process_string(VT100Screen *vt, char *buf, size_t len);
int vt100_screen_loc_is_selected(VT100Screen *vt, struct vt100_loc loc);
void vt100_screen_get_string(