home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 May / PCWorld_2001-05_cd.bin / Software / Vyzkuste / devc / _SETUP.5 / Group3 / conio.c < prev    next >
C/C++ Source or Header  |  2000-06-26  |  3KB  |  141 lines

  1. #ifndef _CONIO_C_
  2. #define _CONIO_C_
  3.  
  4. /* Please keep all functions alphabetical! */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <unistd.h>
  9. #include <windows.h>
  10. #include "conio.h"
  11.  
  12. int __FOREGROUND = LIGHTGRAY;
  13. int __BACKGROUND = BLACK;
  14.  
  15. void _setcursortype(int _type) {
  16.   CONSOLE_CURSOR_INFO Info;
  17.   Info.bVisible = TRUE;
  18.   if (_type == _NOCURSOR)
  19.      Info.bVisible = FALSE;
  20.   else if (_type == _SOLIDCURSOR)
  21.      Info.dwSize = 100;
  22.   else if (_type == _NORMALCURSOR)
  23.      Info.dwSize = 1;
  24.   SetConsoleCursorInfo (GetStdHandle (STD_OUTPUT_HANDLE), &Info);
  25. }
  26.  
  27. void clreol() {
  28.   /* What does this function do? */
  29. }
  30.  
  31. void clrscr() {
  32.   COORD coord;
  33.   DWORD written;
  34.   CONSOLE_SCREEN_BUFFER_INFO info;
  35.  
  36.   coord.X = 0;
  37.   coord.Y = 0;
  38.   GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info);
  39.   FillConsoleOutputCharacter (GetStdHandle(STD_OUTPUT_HANDLE), ' ',
  40.     info.dwSize.X * info.dwSize.Y, coord, &written);
  41.   gotoxy (1, 1);
  42. }
  43.  
  44. int cputs(const char *_str) {
  45.   printf ("%s\n", _str);
  46.   return 0;
  47. }
  48.  
  49. int getche() {
  50.   int ch;
  51.   ch = getch ();
  52.   printf ("%c\n", ch);
  53.   return ch;
  54. }
  55.  
  56. void gettextinfo(struct text_info *_r) {
  57.   CONSOLE_SCREEN_BUFFER_INFO Info;
  58.   GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE), &Info);
  59.   _r->winleft = Info.srWindow.Left;
  60.   _r->winright = Info.srWindow.Right;
  61.   _r->wintop = Info.srWindow.Top;
  62.   _r->winbottom = Info.srWindow.Bottom;
  63.   _r->attribute = Info.wAttributes;
  64.   _r->normattr = LIGHTGRAY | BLACK;
  65. /*  _r->currmode = ; */ /* What is currmode? */
  66.   _r->screenheight = Info.dwSize.Y;
  67.   _r->screenwidth = Info.dwSize.X;
  68.   _r->curx = wherex ();
  69.   _r->cury = wherey ();
  70. }
  71.  
  72. void gotoxy(int x, int y) {
  73.   COORD c;
  74.   c.X = x - 1;
  75.   c.Y = y - 1;
  76.   SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
  77. }
  78.  
  79. void gppconio_init() {
  80.   /* Do nothing */
  81. }
  82.  
  83. void highvideo() {
  84.   if (__FOREGROUND <= BROWN)
  85.      textcolor (__FOREGROUND + 9);
  86.   if (__BACKGROUND <= BROWN)
  87.      textbackground (__BACKGROUND + 9);
  88. }
  89.  
  90. void insline() {
  91.   printf ("\n");
  92. }
  93.  
  94. int putch(int _c) {
  95.   printf ("%c", _c);
  96.   return _c;
  97. }
  98.  
  99. void textattr(int _attr) {
  100.   SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), _attr);
  101. //  printf ("%d\n", text_info.screenheight);
  102. }
  103.  
  104. void textbackground(int _color) {
  105.   if (_color == BLINK)
  106.      _color = WHITE;
  107.   __BACKGROUND = _color;
  108.   textattr (__FOREGROUND | (_color + 29));
  109. }
  110.  
  111. void textcolor(int _color) {
  112.   if (_color == BLINK)
  113.      _color = WHITE;
  114.   __FOREGROUND = _color;
  115.   textattr(_color | __BACKGROUND);
  116. }
  117.  
  118. int wherex() {
  119.   CONSOLE_SCREEN_BUFFER_INFO info;
  120.   GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info);
  121.   return info.dwCursorPosition.X;
  122. }
  123.  
  124. int wherey() {
  125.   CONSOLE_SCREEN_BUFFER_INFO info;
  126.   GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info);
  127.   return info.dwCursorPosition.Y - 2;
  128. }
  129.  
  130. void window(int _left, int _top, int _right, int _bottom) {
  131.   SMALL_RECT R;
  132.   R.Left = _left;
  133.   R.Top = _top;
  134.   R.Right = _right;
  135.   R.Bottom = _bottom;
  136.   SetConsoleWindowInfo (GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &R);
  137.   gotoxy (_left, _top);
  138. }
  139.  
  140. #endif _CONIO_C_
  141.