diff options
| -rw-r--r-- | gramscii.c | 34 | 
1 files changed, 22 insertions, 12 deletions
| @@ -51,6 +51,8 @@  #define MIN(x,y)  (x) < (y) ? (x) : (y)  #define MAX(x,y)  (x) > (y) ? (x) : (y) +#define DEBUG 1 +  char **screen;  int WIDTH, HEIGHT; @@ -129,6 +131,9 @@ void status_bar(){  		printf(" [%s]", fname );  	else  		printf(" *%s*", fname ); +#ifdef DEBUG +	printf("  '%d'  ", screen[y][x]); +#endif  	printf("\033[0m");  } @@ -168,7 +173,7 @@ void show_cursor(){  	printf("\033[%d;%df", y+1, x+1);  } -void set(char c){ +void set_cur(char c){  	screen[y][x] = c;  } @@ -190,7 +195,8 @@ void update_current(){  void erase_line(char *s){  	while(*s){ -		*s++ = BG; +		*s = BG; +		s++;  	}  } @@ -214,7 +220,6 @@ void erase_screen(){  		erase_line(screen[i]);  } -  void check_bound(){  	if (x<0) x=0;  	else if (x>=WIDTH) x = WIDTH-1; @@ -232,10 +237,8 @@ void reset_styles(){  	line_v = vlines[cur_vl];  	mark_st = st_marks[cur_start];  	mark_end = end_marks[cur_end]; -  } -  void redraw(){  	int i; @@ -302,7 +305,6 @@ void handle_goto(){  	show_cursor();  } -  int move_around(char c){  	switch(c){ @@ -421,12 +423,12 @@ void get_text(){  	redraw();  	while((c=getchar())!=EOF && c != 27){  		if(c=='\n'){ -			set(BG); +			set_cur(BG);  			y += 1;  			x = orig_x;  		}  		else { -			set(c); +			set_cur(c);  			update_current();  			modified = 1;  			x += 1; @@ -735,18 +737,26 @@ void init_screen(){  	struct winsize wsz;  	if (!ioctl(STDIN_FILENO, TIOCGWINSZ, &wsz)){ -		WIDTH=wsz.ws_col; +		WIDTH=wsz.ws_col - 2;  		HEIGHT=wsz.ws_row - 1;  	}  	else { -		WIDTH=8; +		WIDTH=80;  		HEIGHT=24;  	}  	screen = malloc(HEIGHT * sizeof(char *)); +	if (screen == NULL){ +		perror("allocating screen"); +		exit(1); +	}  	for (i=0; i<HEIGHT; i++){  		screen[i] = malloc((WIDTH+1) * sizeof(char)); -		memset(screen[i], 32, WIDTH); -		screen[WIDTH]='\0'; +		if (screen[i] == NULL){ +			perror("allocating screen[i]"); +			exit(1); +		} +		memset(screen[i], ' ', WIDTH * sizeof(char)); +		screen[i][WIDTH]='\0';  	}  	reset_styles();  } | 
