[U-Boot] [PATCH v2 04/11] cfb_console: Add function console_clear and console_clear_line
Marek Vasut
marex at denx.de
Sun Apr 29 00:17:26 CEST 2012
Dear Pali Rohár,
> * console_clear - clear full console framebuffer output
> * console_clear_line - clear part of specified line (or full)
>
> Signed-off-by: Pali Rohár <pali.rohar at gmail.com>
> ---
> Changes since original version:
> - Fixed commit message
>
> drivers/video/cfb_console.c | 64
> +++++++++++++++++++++++++++++++++++-------- 1 file changed, 52
> insertions(+), 12 deletions(-)
>
> diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
> index 51ea167..0d1e6b2 100644
> --- a/drivers/video/cfb_console.c
> +++ b/drivers/video/cfb_console.c
> @@ -683,6 +683,57 @@ static void memcpyl(int *d, int *s, int c)
> }
> #endif
>
> +static void console_clear(void)
> +{
> +#ifdef VIDEO_HW_RECTFILL
> + video_hw_rectfill(VIDEO_PIXEL_SIZE, /* bytes per pixel */
> + 0, /* dest pos x */
> + video_logo_height, /* dest pos y */
> + VIDEO_VISIBLE_COLS, /* frame width */
> + VIDEO_VISIBLE_ROWS, /* frame height */
> + bgx /* fill color */
> + );
> +#else
> + memsetl(CONSOLE_ROW_FIRST, CONSOLE_SIZE, bgx);
> +#endif
> +}
> +
> +static void console_clear_line(int line, int begin, int end)
> +{
> +#ifdef VIDEO_HW_RECTFILL
> + video_hw_rectfill(VIDEO_PIXEL_SIZE, /* bytes per pixel */
> + /* FIXME: correct? */
> + VIDEO_FONT_WIDTH * begin, /* dest pos x */
Maybe you want to prepare these parameters into some variables at the begining
of this function? Also, your comments make no sense.
> + /* FIXME: correct? */
> + video_logo_height +
> + CONSOLE_ROW_SIZE * line, /* dest pos y */
> + /* FIXME: correct? */
Uh ... fixme ;-)
> + VIDEO_FONT_WIDTH * (end - begin), /* frame width */
> + VIDEO_FONT_HEIGHT, /* frame height */
> + bgx /* fill color */
> + );
> +#else
> + int i;
> + if (begin == 0 && end == CONSOLE_COLS)
> + memsetl(CONSOLE_ROW_FIRST +
> + CONSOLE_ROW_SIZE * line, /* offset of row */
> + CONSOLE_ROW_SIZE >> 2, /* length of row */
> + bgx /* fill color */
> + );
> + else
> + for (i = 0; i < VIDEO_FONT_HEIGHT; ++i)
> + memsetl(CONSOLE_ROW_FIRST +
> + CONSOLE_ROW_SIZE * line + /* offset of row */
> + VIDEO_FONT_WIDTH *
> + VIDEO_PIXEL_SIZE * begin + /* offset of col */
> + i * VIDEO_LINE_LEN, /* col offset of i line */
> + (VIDEO_FONT_WIDTH * VIDEO_PIXEL_SIZE *
> + (end - begin + 1)) >> 2, /* length to end */
> + bgx /* fill color */
> + );
> +#endif
> +}
> +
> static void console_scrollup(void)
> {
> /* copy up rows ignoring the first one */
> @@ -705,18 +756,7 @@ static void console_scrollup(void)
> #endif
>
> /* clear the last one */
> -#ifdef VIDEO_HW_RECTFILL
> - video_hw_rectfill(VIDEO_PIXEL_SIZE, /* bytes per pixel */
> - 0, /* dest pos x */
> - VIDEO_VISIBLE_ROWS
> - - VIDEO_FONT_HEIGHT, /* dest pos y */
> - VIDEO_VISIBLE_COLS, /* frame width */
> - VIDEO_FONT_HEIGHT, /* frame height */
> - CONSOLE_BG_COL /* fill color */
> - );
> -#else
> - memsetl(CONSOLE_ROW_LAST, CONSOLE_ROW_SIZE >> 2, CONSOLE_BG_COL);
> -#endif
> + console_clear_line(CONSOLE_ROWS-1, 0, CONSOLE_COLS);
> }
>
> static void console_back(void)
More information about the U-Boot
mailing list