This repository has been archived on 2021-11-25. You can view files and clone it, but cannot push or open issues or pull requests.
ConsoleUI/ColorUI.cpp
2017-05-13 22:07:16 +08:00

80 lines
2.2 KiB
C++

#include "ColorUI.h"
#include <windows.h>
namespace _ColorUI_Internal_Namespace
{
class _auto_init_console_info_class
{
public:
_auto_init_console_info_class()
{
hout=GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO tinfo;
GetConsoleScreenBufferInfo(hout,&tInfo);
color=tinfo.wAttributes;
}
HANDLE hout;
WORD color;
}_auto_init_console_info_obj;
void cprint(ConsoleColor FrontColor,ConsoleColor BackColor)
{
int iFront=0;
int iBack=0;
switch(FrontColor)
{
case ConsoleColor::black:
iFront=0;break;
case ConsoleColor::blue:
iFront=FOREGROUND_BLUE;break;
case ConsoleColor::lightblue:
iFront=FOREGROUND_GREEN | FOREGROUND_BLUE;break;
case ConsoleColor::green:
iFront=FOREGROUND_GREEN;break;
case ConsoleColor::purple:
iFront=FOREGROUND_RED |FOREGROUND_BLUE;break;
case ConsoleColor::red:
iFront=FOREGROUND_RED;break;
case ConsoleColor::white:
iFront=FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED; break;
case ConsoleColor::yellow:
iFront=FOREGROUND_RED | FOREGROUND_GREEN;break;
}
switch(BackColor)
{
case ConsoleColor::black:
iBack=0;break;
case ConsoleColor::blue:
iBack=BACKGROUND_BLUE;break;
case ConsoleColor::lightblue:
iBack=BACKGROUND_GREEN | BACKGROUND_BLUE;break;
case ConsoleColor::green:
iFront=BACKGROUND_GREEN;break;
case ConsoleColor::purple:
iBack=BACKGROUND_RED | BACKGROUND_BLUE;break;
case ConsoleColor::red:
iBack=BACKGROUND_RED;break;
case ConsoleColor::white:
iBack=BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED; break;
case ConsoleColor::yellow:
iBack=BACKGROUND_RED | BACKGROUND_GREEN;break;
}
if(iFront!=0) iFront=iFront | FOREGROUND_INTENSITY;
if(iBack!=0) iBack=iBack| BACKGROUND_INTENSITY;
SetConsoleTextAttribute(_auto_init_console_info_obj.hout,iFront | iBack );
}
void cprint()
{
SetConsoleTextAttribute(_auto_init_console_info_obj.hout,_auto_init_console_info_obj.color);
}
}/// End of namespace _ColorUI_Internal_Namespace
ColorSelection::ColorSelection()
{
frontColor=ConsoleColor::white;
backColor=ConsoleColor::black;
}