Skip to content

Commit

Permalink
Implement Canvas updating, make Window and Cursor global
Browse files Browse the repository at this point in the history
  • Loading branch information
labseven committed Apr 13, 2019
1 parent 5f762b2 commit 2fede87
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 6 deletions.
35 changes: 30 additions & 5 deletions src/frontend.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,15 @@
#include <signal.h>
#include "frontend.h"
#include "cursor.h"
#include "canvas.c"

int STATUS_HEIGHT = 1; // not including borders

WINDOW *canvas_win, *status_win;
Cursor *cursor;

Canvas *canvas;

/* Layout
* ___________________________________________
* | 0 -- X, COLS | canvas window
Expand Down Expand Up @@ -37,14 +43,19 @@ int main(int argc, char *argv[]) {
setup_colors();
}

WINDOW *canvas_win = create_canvas_win();
WINDOW *status_win = create_status_win();
canvas_win = create_canvas_win();
status_win = create_status_win();

canvas = canvas_new(1000,1000);
for(int i=0; i<1000000; i++){
canvas_schari(canvas, i, ' ');
}

// Enable keyboard mapping
keypad(canvas_win, TRUE);
keypad(status_win, TRUE);

Cursor *cursor = cursor_new();
cursor = cursor_new();

char test_msg[] = "Test mode";
print_status(test_msg, status_win);
Expand All @@ -66,7 +77,7 @@ int main(int argc, char *argv[]) {
last_arrow_direction = ch;
} else {
if (' ' <= ch && ch <= '~') { // check if ch is printable
mvwaddch(canvas_win, cursor_y_to_canvas(cursor), cursor_x_to_canvas(cursor), ch);
frontend_set_char(ch);
cursor_key_to_move(last_arrow_direction, cursor);
} else {
// Print non-print characters to bottom left in status_win bar
Expand Down Expand Up @@ -104,7 +115,20 @@ static void setup_colors() {
init_pair(7, COLOR_BLACK, COLOR_WHITE);
}

void update_screen_size(WINDOW *canvas_win, WINDOW *status_win, Cursor *cursor){
void frontend_set_char(char ch){
canvas_scharyx(canvas, cursor_y_to_canvas(cursor)-1, cursor_x_to_canvas(cursor)-1, ch);
mvwaddch(canvas_win, cursor_y_to_canvas(cursor), cursor_x_to_canvas(cursor), ch);
}

void redraw_canvas_win(){
for(int x=0; x<canvas_max_x; x++){
for(int y=0; y<canvas_max_y; y++){
mvwaddch(canvas_win, y+1, x+1, canvas_gcharyx(canvas, y, x));
}
}
}

void update_screen_size(){
static int window_h_old, window_w_old;

int window_h_new, window_w_new;
Expand Down Expand Up @@ -132,6 +156,7 @@ void update_screen_size(WINDOW *canvas_win, WINDOW *status_win, Cursor *cursor){

// TODO: redraw canvas and status windows
print_status("resized", status_win);
redraw_canvas_win();

// Move cursor inside the canvas
if(cursor->x >= canvas_max_x){
Expand Down
2 changes: 1 addition & 1 deletion src/frontend.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

static void finish(int sig);
static void setup_colors();
void update_screen_size(WINDOW *canvas_win, WINDOW *status_win, Cursor *cursor);
void update_screen_size();
WINDOW *create_canvas_win();
WINDOW *create_status_win();
void destroy_win();
Expand Down

0 comments on commit 2fede87

Please sign in to comment.