예제 #1
0
/*
	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;
	}
}
예제 #2
0
파일: colle04.c 프로젝트: ItsJimi/42
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);
	}
}
예제 #3
0
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();
	}

}
예제 #4
0
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();
	}

}