Mercurial > hg > forks > pwpunix
view pwplib/win32con.c @ 64:c272f66c5eb8
Add pwplib_end() to public header.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 06 Aug 2011 10:41:08 +0300 |
parents | 5d819ba6891c |
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