Page principale | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier | Pages associées

SurcoucheConsole.cpp

Aller à la documentation de ce fichier.
00001 /*! \file SurcoucheConsole.cpp
00002     \brief Surcouche pour console.
00003 
00004     Redéfinie tout un tas de fonctions système pour les rendre portables unix et windows.
00005 
00006     \author     aerith (www.aerith.fr)
00007     \version    1.0
00008     \date       01/11/2007
00009 */
00010 
00011 #include    "SurcoucheConsole.h"
00012 
00013 
00014 void    ConsoleClear()
00015 {
00016 #ifdef WIN32
00017     system("CLS");
00018 #else
00019     printf("\033[2J\033[0;0H");
00020 #endif
00021 }
00022 
00023 void    ConsoleSetColor(unsigned int iText, unsigned int iFond)
00024 {
00025 #ifdef WIN32
00026     HANDLE  hconsole = GetStdHandle(STD_OUTPUT_HANDLE);
00027     WORD    color = iText|iFond;
00028     SetConsoleTextAttribute(hconsole, color);
00029 #else
00030     printf("\033[0;%d;%dm", iText, iFond);
00031 #endif
00032 }
00033 
00034 void    ConsoleColor(unsigned int iText, unsigned int iFond, unsigned int iX, unsigned int iY, unsigned int iL, unsigned int iH)
00035 {
00036     unsigned int    i;
00037 #ifdef WIN32
00038     unsigned int    c;
00039     HANDLE  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
00040     COORD   Pos;
00041     WORD    *Data;
00042 
00043     Pos.X = iX;
00044     Pos.Y = iY;
00045 
00046     Data = (WORD *)malloc(sizeof(WORD) * iL);
00047     for(i = 0; i < iL; Data[i++] = iText|iFond);
00048 
00049     for(i = iY; i < (iY + iH); i++)
00050     {
00051         Pos.Y = i;
00052         WriteConsoleOutputAttribute(hConsole, Data, iL, Pos, (LPDWORD)c);
00053     }
00054 #else
00055     char    *Data;
00056 
00057     Data = (char *)malloc(sizeof(char) * iL + 1);
00058     for(i = 0; i < iL; Data[i++] = ' ');
00059     Data[i] = '\0';
00060 
00061     for(i = iY; i < (iY + iH); i++)
00062     {
00063         printf("\033[%d;%dH", iX, i);
00064         printf("\033[0;%d;%dm%s\033[0m", iText, iFond, Data);
00065     }
00066 #endif
00067     free(Data);
00068 }
00069 
00070 void    ConsoleWrite(char *pData, unsigned int iX, unsigned int iY, unsigned int iL, unsigned int iH)
00071 {
00072     unsigned int    i, j;
00073     char    *Data;
00074     char    *ptr;
00075 #ifdef WIN32
00076     unsigned int    c;
00077     HANDLE  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
00078     COORD   Pos;
00079 
00080     Pos.X = iX;
00081     Pos.Y = iY;
00082 #endif
00083     if(!iL)
00084         iL = strlen(pData);
00085 
00086     Data = (char *)malloc(sizeof(char) * iL + 1);
00087     ptr = pData;
00088 
00089     for(i = iY; (i < (iY + iH)) && ptr; i++)
00090     {
00091         for(j = 0; (j < iL) && ptr; Data[j++] = *ptr++);
00092         Data[j] = '\0';
00093 #ifdef WIN32
00094         Pos.Y = i;
00095         WriteConsoleOutputCharacter(hConsole, pData, iL, Pos, (LPDWORD)c);
00096 #else
00097         printf("\033[%d;%dH%s", iX, i, Data);
00098 #endif
00099     }
00100     free(Data);
00101 }

Généré le Thu Jun 12 09:12:30 2008 pour A.I.F. par  doxygen 1.3.9.1