Introduction
Introduction Statistics Contact Development Disclaimer Help
fix bug in screen init - gramscii - A simple editor for ASCII box-and-arrow cha…
Log
Files
Refs
Tags
README
LICENSE
---
commit a64ca9d14f8c197398badad39148b794757742b2
parent c9a6b0faecb76984eb51754f6d188a87be025e8f
Author: KatolaZ <[email protected]>
Date: Mon, 22 Jul 2019 18:14:51 +0100
fix bug in screen init
Diffstat:
M gramscii.c | 34 ++++++++++++++++++++---------…
1 file changed, 22 insertions(+), 12 deletions(-)
---
diff --git a/gramscii.c b/gramscii.c
@@ -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();
}
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.