Changeset 632 for libcaca/trunk
- Timestamp:
- Mar 16, 2006, 5:59:57 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca/driver_win32.c
r612 r632 25 25 26 26 #include <stdlib.h> 27 #include <stdio.h> 27 28 28 29 #include "caca.h" … … 77 78 struct driver_private 78 79 { 79 HANDLE hin, hout; 80 HANDLE front, back; 80 HANDLE hin, hout, screen; 81 81 CHAR_INFO *buffer; 82 82 CONSOLE_CURSOR_INFO cci; … … 86 86 { 87 87 CONSOLE_SCREEN_BUFFER_INFO csbi; 88 SMALL_RECT rect; 88 89 COORD size; 89 90 … … 106 107 SetConsoleMode(kk->drv.p->hout, ENABLE_MOUSE_INPUT); 107 108 108 kk->drv.p-> front=109 kk->drv.p->screen = 109 110 CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 110 111 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL); 111 if(!kk->drv.p-> front || kk->drv.p->front== INVALID_HANDLE_VALUE)112 if(!kk->drv.p->screen || kk->drv.p->screen == INVALID_HANDLE_VALUE) 112 113 return -1; 113 114 114 kk->drv.p->back = 115 CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 116 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL); 117 if(!kk->drv.p->back || kk->drv.p->back == INVALID_HANDLE_VALUE) 115 /* Set the new console size */ 116 size.X = kk->qq->width; 117 size.Y = kk->qq->height; 118 SetConsoleScreenBufferSize(kk->drv.p->screen, size); 119 120 rect.Left = rect.Top = 0; 121 rect.Right = kk->qq->width - 1; 122 rect.Bottom = kk->qq->height - 1; 123 SetConsoleWindowInfo(kk->drv.p->screen, TRUE, &rect); 124 125 /* Report our new size to libcucul */ 126 if(!GetConsoleScreenBufferInfo(kk->drv.p->screen, &csbi)) 118 127 return -1; 119 128 120 if(!GetConsoleScreenBufferInfo(kk->drv.p->hout, &csbi))121 return -1;122 123 /* Sample code to get the biggest possible window */124 //size = GetLargestConsoleWindowSize(kk->drv.p->hout);125 129 _cucul_set_size(kk->qq, csbi.srWindow.Right - csbi.srWindow.Left + 1, 126 130 csbi.srWindow.Bottom - csbi.srWindow.Top + 1); 127 size.X = kk->qq->width; 128 size.Y = kk->qq->height; 129 SetConsoleScreenBufferSize(kk->drv.p->front, size); 130 SetConsoleScreenBufferSize(kk->drv.p->back, size); 131 132 SetConsoleMode(kk->drv.p->front, 0); 133 SetConsoleMode(kk->drv.p->back, 0); 134 135 GetConsoleCursorInfo(kk->drv.p->front, &kk->drv.p->cci); 131 132 SetConsoleMode(kk->drv.p->screen, 0); 133 134 GetConsoleCursorInfo(kk->drv.p->screen, &kk->drv.p->cci); 136 135 kk->drv.p->cci.dwSize = 0; 137 136 kk->drv.p->cci.bVisible = FALSE; 138 SetConsoleCursorInfo(kk->drv.p->front, &kk->drv.p->cci); 139 SetConsoleCursorInfo(kk->drv.p->back, &kk->drv.p->cci); 140 141 SetConsoleActiveScreenBuffer(kk->drv.p->front); 137 SetConsoleCursorInfo(kk->drv.p->screen, &kk->drv.p->cci); 138 139 SetConsoleActiveScreenBuffer(kk->drv.p->screen); 142 140 143 141 kk->drv.p->buffer = malloc(kk->qq->width * kk->qq->height … … 152 150 { 153 151 SetConsoleActiveScreenBuffer(kk->drv.p->hout); 154 CloseHandle(kk->drv.p->back); 155 CloseHandle(kk->drv.p->front); 152 CloseHandle(kk->drv.p->screen); 156 153 157 154 SetConsoleTextAttribute(kk->drv.p->hout, FOREGROUND_INTENSITY … … 196 193 unsigned int i; 197 194 198 /* Render everything to our backbuffer */195 /* Render everything to our screen buffer */ 199 196 for(i = 0; i < kk->qq->width * kk->qq->height; i++) 200 197 { … … 218 215 } 219 216 220 /* Blit the back buffer to the frontbuffer */217 /* Blit the screen buffer */ 221 218 size.X = kk->qq->width; 222 219 size.Y = kk->qq->height; … … 226 223 rect.Bottom = kk->qq->height - 1; 227 224 #if 0 228 WriteConsoleOutput(kk->drv.p-> front, kk->drv.p->buffer, size, pos, &rect);225 WriteConsoleOutput(kk->drv.p->screen, kk->drv.p->buffer, size, pos, &rect); 229 226 #else 230 WriteConsoleOutputW(kk->drv.p-> front, kk->drv.p->buffer, size, pos, &rect);227 WriteConsoleOutputW(kk->drv.p->screen, kk->drv.p->buffer, size, pos, &rect); 231 228 #endif 232 229 }
Note: See TracChangeset
for help on using the changeset viewer.