Mercurial > hg > forks > pwpunix
view pwplib/win32con.c @ 56:5d819ba6891c
More cleanups.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 27 May 2010 22:48:37 +0300 |
parents | 72d1c04c788b |
children |
line wrap: on
line source
#include "config.h" #ifdef DRIVE_WIN32 #include "pwplib.h" #include <stdarg.h> #include <windows.h> /******************** vcsa code ********************/ struct{ HANDLE hstdout; COORD size; CHAR_INFO*buf; } pwp_win32; /********************************************************/ void pwpwrite(char *fmt, ...) { /* fprintf(stderr,"%s\n",z); */ } static void win32con_dump_attr(void) { u8*s=pwplib_buf; CHAR_INFO*d=pwp_win32.buf; int i=80*50; for(;i;i--) { d->Char.AsciiChar=*s++; d->Attributes=*s++; d++; } { const COORD bufsize = {80,50}; const COORD bufcoord = {0,0}; const SMALL_RECT writerect = { 0,0,79,49 }; WriteConsoleOutput(pwp_win32.hstdout,pwp_win32.buf, bufsize,bufcoord,&writerect); } } static int win32con_probe(void) { if(GetStdHandle(STD_OUTPUT_HANDLE) != INVALID_HANDLE_VALUE) return 1; else return 0; } int win32con_init(void) { AllocConsole(); pwp_win32.hstdout = GetStdHandle(STD_OUTPUT_HANDLE); { int ret=-1; const COORD sz = {80,50}; const SMALL_RECT area = { 0,0,79,49 }; ret &= SetConsoleScreenBufferSize(pwp_win32.hstdout,sz); ret &= SetConsoleWindowInfo(pwp_win32.hstdout,1,&area); if(!ret) { FreeConsole(); AllocConsole(); pwp_win32.hstdout = CreateConsoleScreenBuffer( GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CONSOLE_TEXTMODE_BUFFER, NULL); SetConsoleActiveScreenBuffer(pwp_win32.hstdout); SetConsoleScreenBufferSize(pwp_win32.hstdout,sz); SetConsoleWindowInfo(pwp_win32.hstdout,1,&area); } SetConsoleTitle("pwp"); } pwp_win32.buf=malloc(sizeof(CHAR_INFO)*80*50); pwplib.videobuf.width = 80; pwplib.videobuf.height = 100; pwplib.dump_attr=win32con_dump_attr; conv_init(2,0,0); // {int i=0;for(;i<20;i++)pwplib.setup[i]=0;} /* tty_init(); pwplib.setup[SETUP_TRANS] = pwplib.setup[SETUP_COLORS] = pwplib.setup[SETUP_RASTER] = -1; pwplib.setup[SETUP_HALVE]=1; conv_init(2,0,0); */ pwplib.dump_attr=win32con_dump_attr; return 1; } #endif