From 5531e51fe26e4c6bbd34dbaa98b12564f8a7f295 Mon Sep 17 00:00:00 2001 From: Nguyễn Thái Ngọc Duy Date: Tue, 14 Sep 2010 16:32:36 +1000 Subject: win32: winansi: implement \033[J --- win32/winansi.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/win32/winansi.c b/win32/winansi.c index e2e7010fb..51bfad67c 100644 --- a/win32/winansi.c +++ b/win32/winansi.c @@ -91,6 +91,24 @@ static void erase_in_line(void) NULL); } +static void erase_till_end_of_screen(void) +{ + CONSOLE_SCREEN_BUFFER_INFO sbi; + COORD pos; + + if (!console) + return; + + GetConsoleScreenBufferInfo(console, &sbi); + FillConsoleOutputCharacterA(console, ' ', + sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition, + NULL); + + pos.X = 0; + for (pos.Y = sbi.dwCursorPosition.Y+1; pos.Y < sbi.dwSize.Y; pos.Y++) + FillConsoleOutputCharacterA(console, ' ', sbi.dwSize.X, + pos, NULL); +} static const char *set_attr(const char *str) { @@ -230,6 +248,9 @@ static const char *set_attr(const char *str) set_console_attr(); break; + case 'J': + erase_till_end_of_screen(); + break; case 'K': erase_in_line(); break; -- cgit v1.2.3-55-g6feb