Color palette defined for 8 colors
This commit is contained in:
parent
607294c71a
commit
0c45d7d8bc
|
@ -1,3 +1,8 @@
|
||||||
|
2017-11-24 Markus Gans <guru.mail@muenster.de>
|
||||||
|
* Detects Linux console font with 512 characters and
|
||||||
|
reduces the number of colors to 8
|
||||||
|
* Color palette defined for 8 colors
|
||||||
|
|
||||||
2017-11-23 Markus Gans <guru.mail@muenster.de>
|
2017-11-23 Markus Gans <guru.mail@muenster.de>
|
||||||
* Remove duplicated code from FOptiAttr::changeAttribute
|
* Remove duplicated code from FOptiAttr::changeAttribute
|
||||||
|
|
||||||
|
|
135
src/fterm.cpp
135
src/fterm.cpp
|
@ -2033,6 +2033,10 @@ int FTerm::setBlinkAsIntensity (bool on)
|
||||||
// Uses blink-bit as background intensity.
|
// Uses blink-bit as background intensity.
|
||||||
// That permits 16 colors for background
|
// That permits 16 colors for background
|
||||||
|
|
||||||
|
// Test if the blink-bit is used by the screen font (512 characters)
|
||||||
|
if ( screen_font.charcount > 256 )
|
||||||
|
return -1;
|
||||||
|
|
||||||
if ( getuid() != 0 ) // Direct hardware access requires root privileges
|
if ( getuid() != 0 ) // Direct hardware access requires root privileges
|
||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
|
@ -2249,6 +2253,7 @@ int FTerm::getScreenFont()
|
||||||
font.width = 32;
|
font.width = 32;
|
||||||
font.height = 32;
|
font.height = 32;
|
||||||
font.charcount = 512;
|
font.charcount = 512;
|
||||||
|
|
||||||
// initialize with 0
|
// initialize with 0
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -2431,11 +2436,21 @@ void FTerm::initLinuxConsole()
|
||||||
|
|
||||||
if ( openConsole() == 0 )
|
if ( openConsole() == 0 )
|
||||||
{
|
{
|
||||||
if ( isLinuxConsole() )
|
linux_terminal = isLinuxConsole();
|
||||||
|
|
||||||
|
if ( linux_terminal )
|
||||||
{
|
{
|
||||||
getUnicodeMap();
|
getUnicodeMap();
|
||||||
getScreenFont();
|
getScreenFont();
|
||||||
|
|
||||||
|
#if defined(__x86_64__) || defined(__i386) || defined(__arm__)
|
||||||
|
// Enable 16 background colors
|
||||||
|
if ( setBlinkAsIntensity(true) == 0 )
|
||||||
|
FTermcap::max_color = 16;
|
||||||
|
else
|
||||||
|
FTermcap::max_color = 8;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
detectTermSize();
|
detectTermSize();
|
||||||
closeConsole();
|
closeConsole();
|
||||||
|
@ -2445,6 +2460,22 @@ void FTerm::initLinuxConsole()
|
||||||
std::cerr << "can not open the console.\n";
|
std::cerr << "can not open the console.\n";
|
||||||
std::abort();
|
std::abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( linux_terminal )
|
||||||
|
{
|
||||||
|
// Underline cursor
|
||||||
|
setLinuxConsoleCursorStyle (fc::underscore_cursor, true);
|
||||||
|
|
||||||
|
// Framebuffer color depth in bits per pixel
|
||||||
|
int bpp = getFramebuffer_bpp();
|
||||||
|
|
||||||
|
if ( bpp >= 4 )
|
||||||
|
FTermcap::max_color = 16;
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
framebuffer_bpp = bpp;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2712,41 +2743,6 @@ void FTerm::detectTerminal()
|
||||||
FTermcap::max_color = 16;
|
FTermcap::max_color = 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize Linux console
|
|
||||||
#if defined(__linux__)
|
|
||||||
#if defined(__x86_64__) || defined(__i386) || defined(__arm__)
|
|
||||||
// Enable 16 background colors
|
|
||||||
if ( linux_terminal && openConsole() == 0 )
|
|
||||||
{
|
|
||||||
if ( isLinuxConsole() )
|
|
||||||
{
|
|
||||||
if ( setBlinkAsIntensity(true) == 0 )
|
|
||||||
FTermcap::max_color = 16;
|
|
||||||
else
|
|
||||||
FTermcap::max_color = 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
closeConsole();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( linux_terminal )
|
|
||||||
{
|
|
||||||
// Underline cursor
|
|
||||||
setLinuxConsoleCursorStyle (fc::underscore_cursor, true);
|
|
||||||
|
|
||||||
// Framebuffer color depth in bits per pixel
|
|
||||||
int bpp = getFramebuffer_bpp();
|
|
||||||
|
|
||||||
if ( bpp >= 4 )
|
|
||||||
FTermcap::max_color = 16;
|
|
||||||
|
|
||||||
#if DEBUG
|
|
||||||
framebuffer_bpp = bpp;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Initialize FreeBSD console cursor
|
// Initialize FreeBSD console cursor
|
||||||
#if defined(__FreeBSD__) || defined(__DragonFly__)
|
#if defined(__FreeBSD__) || defined(__DragonFly__)
|
||||||
setFreeBSDConsoleCursorStyle (fc::destructive_cursor, true);
|
setFreeBSDConsoleCursorStyle (fc::destructive_cursor, true);
|
||||||
|
@ -4021,8 +4017,7 @@ void FTerm::init_encoding()
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FTerm::redefineColorPalette()
|
void FTerm::redefineColorPalette()
|
||||||
{
|
{
|
||||||
if ( FTermcap::max_color >= 16
|
if ( ! cygwin_terminal
|
||||||
&& ! cygwin_terminal
|
|
||||||
&& ! kde_konsole
|
&& ! kde_konsole
|
||||||
&& ! tera_terminal
|
&& ! tera_terminal
|
||||||
&& ! ansi_terminal )
|
&& ! ansi_terminal )
|
||||||
|
@ -4030,37 +4025,55 @@ void FTerm::redefineColorPalette()
|
||||||
resetColorMap();
|
resetColorMap();
|
||||||
saveColorMap();
|
saveColorMap();
|
||||||
|
|
||||||
setPalette (fc::Black, 0x00, 0x00, 0x00);
|
if ( FTermcap::max_color >= 16 )
|
||||||
setPalette (fc::Blue, 0x22, 0x22, 0xb2);
|
{
|
||||||
setPalette (fc::Green, 0x18, 0x78, 0x18);
|
setPalette (fc::Black, 0x00, 0x00, 0x00);
|
||||||
setPalette (fc::Cyan, 0x4a, 0x4a, 0xe4);
|
setPalette (fc::Blue, 0x22, 0x22, 0xb2);
|
||||||
setPalette (fc::Red, 0xb2, 0x18, 0x18);
|
setPalette (fc::Green, 0x18, 0x78, 0x18);
|
||||||
setPalette (fc::Magenta, 0xb2, 0x18, 0xb2);
|
setPalette (fc::Cyan, 0x4a, 0x4a, 0xe4);
|
||||||
setPalette (fc::Brown, 0xe8, 0x87, 0x1f);
|
setPalette (fc::Red, 0xb2, 0x18, 0x18);
|
||||||
setPalette (fc::LightGray, 0xbc, 0xbc, 0xbc);
|
setPalette (fc::Magenta, 0xb2, 0x18, 0xb2);
|
||||||
setPalette (fc::DarkGray, 0x50, 0x50, 0x50);
|
setPalette (fc::Brown, 0xe8, 0x87, 0x1f);
|
||||||
setPalette (fc::LightBlue, 0x80, 0xa4, 0xec);
|
setPalette (fc::LightGray, 0xbc, 0xbc, 0xbc);
|
||||||
setPalette (fc::LightGreen, 0x5e, 0xeb, 0x5c);
|
setPalette (fc::DarkGray, 0x50, 0x50, 0x50);
|
||||||
setPalette (fc::LightCyan, 0x62, 0xbf, 0xf8);
|
setPalette (fc::LightBlue, 0x80, 0xa4, 0xec);
|
||||||
setPalette (fc::LightRed, 0xed, 0x57, 0x31);
|
setPalette (fc::LightGreen, 0x5e, 0xeb, 0x5c);
|
||||||
setPalette (fc::LightMagenta, 0xe9, 0xad, 0xff);
|
setPalette (fc::LightCyan, 0x62, 0xbf, 0xf8);
|
||||||
setPalette (fc::Yellow, 0xfb, 0xe8, 0x67);
|
setPalette (fc::LightRed, 0xed, 0x57, 0x31);
|
||||||
setPalette (fc::White, 0xff, 0xff, 0xff);
|
setPalette (fc::LightMagenta, 0xe9, 0xad, 0xff);
|
||||||
|
setPalette (fc::Yellow, 0xfb, 0xe8, 0x67);
|
||||||
|
setPalette (fc::White, 0xff, 0xff, 0xff);
|
||||||
|
}
|
||||||
|
else // 8 colors
|
||||||
|
{
|
||||||
|
setPalette (fc::Black, 0x00, 0x00, 0x00);
|
||||||
|
setPalette (fc::Blue, 0x22, 0x22, 0xb2);
|
||||||
|
setPalette (fc::Green, 0x18, 0x78, 0x18);
|
||||||
|
setPalette (fc::Cyan, 0x66, 0x66, 0xff);
|
||||||
|
setPalette (fc::Red, 0xb2, 0x18, 0x18);
|
||||||
|
setPalette (fc::Magenta, 0xb2, 0x18, 0xb2);
|
||||||
|
setPalette (fc::Brown, 0xe8, 0x87, 0x1f);
|
||||||
|
setPalette (fc::LightGray, 0xd0, 0xd0, 0xd0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FTerm::restoreColorPalette()
|
void FTerm::restoreColorPalette()
|
||||||
{
|
{
|
||||||
if ( FTermcap::max_color >= 16
|
if ( ! (kde_konsole || tera_terminal || ansi_terminal) )
|
||||||
&& ! (kde_konsole || tera_terminal || ansi_terminal) )
|
|
||||||
{
|
{
|
||||||
// Reset screen settings
|
// Reset screen settings
|
||||||
setPalette (fc::Cyan, 0x18, 0xb2, 0xb2);
|
if ( FTermcap::max_color >= 16 )
|
||||||
setPalette (fc::LightGray, 0xb2, 0xb2, 0xb2);
|
{
|
||||||
setPalette (fc::DarkGray, 0x68, 0x68, 0x68);
|
setPalette (fc::Cyan, 0x18, 0xb2, 0xb2);
|
||||||
setPalette (fc::LightBlue, 0x54, 0x54, 0xff);
|
setPalette (fc::LightGray, 0xb2, 0xb2, 0xb2);
|
||||||
setPalette (fc::LightGreen, 0x54, 0xff, 0x54);
|
setPalette (fc::DarkGray, 0x68, 0x68, 0x68);
|
||||||
|
setPalette (fc::LightBlue, 0x54, 0x54, 0xff);
|
||||||
|
setPalette (fc::LightGreen, 0x54, 0xff, 0x54);
|
||||||
|
}
|
||||||
|
else // 8 colors
|
||||||
|
setPalette (fc::Cyan, 0x18, 0xb2, 0xb2);
|
||||||
|
|
||||||
resetXTermColors();
|
resetXTermColors();
|
||||||
resetColorMap();
|
resetColorMap();
|
||||||
|
|
Loading…
Reference in New Issue