/* This function prints and records the input character. just_record: If just_record is true, the character won't be printed and just recorded in the cache. */ void append_char(uint8_t _char) { int last_line_to_append; //Reached to the end of row if( last_col_cahche >= LCD_WIDTH ) { last_col_cahche = 0; ++cache_size; if( cache_size >= CACHE_LINE_CAP ) { cache_start = (cache_start + 1) % CACHE_LINE_CAP; --cache_size; } if( window_size >= LCD_HEIGTH - 1 ) { window_start = ( window_start + 1 ) % CACHE_LINE_CAP; --window_size; refresh_lcd(); } ++window_size; } if(_char == '\n') { last_col_cahche = LCD_WIDTH + 1; } else { last_line_to_append = window_size; GLCD_DisplayChar ( last_line_to_append, last_col_cahche, FONT_SIZE, _char); chache[last_line()][last_col_cahche] = _char; ++last_col_cahche; chache[last_line()][last_col_cahche] = 0x0; } }
void other_lines(int x, int y) { int j; int k; j = 2; k = 2; if (y > 1) { while (j < y) { ft_putchar('B'); while (k < x) { ft_putchar(' '); k++; } if (x > 1) { ft_putchar('B'); } ft_putchar('\n'); k = 2; j++; } last_line(x); } }
void moveLast( void ) { int a, b, c; if( last_line() != last_window_line() ) { if( cache_size < LCD_HEIGTH ) { window_start = cache_start; } else { a = last_line(); b = window_size; c = (a > b ? a - b : a - b + CACHE_LINE_CAP ) ; window_start = c % CACHE_LINE_CAP; } refresh_lcd(); } }
void moveDown( void ) { if(last_line() != last_window_line() ) { window_start = (window_start + 1) % CACHE_LINE_CAP; if( window_size < LCD_HEIGTH - 1) --window_size; refresh_lcd(); } }