Linux 课程及;Ubuntu终端:退出终端时颜色会改变
当我退出我的终端(Ubuntu终端)并返回时,我的程序的颜色已经改变了。它们不是随机变化的,而是特定的颜色 我的setColor函数,它返回一个无符号整数Linux 课程及;Ubuntu终端:退出终端时颜色会改变,linux,ubuntu,ncurses,Linux,Ubuntu,Ncurses,当我退出我的终端(Ubuntu终端)并返回时,我的程序的颜色已经改变了。它们不是随机变化的,而是特定的颜色 我的setColor函数,它返回一个无符号整数 unsigned int Console::setColor(float r, float g, float b, float r2, float g2, float b2) { bool bkgd = true; if (r2 == -1.f || g2 == -1.f || b2 == -1.f) { b
unsigned int Console::setColor(float r, float g, float b, float r2, float g2, float b2) {
bool bkgd = true;
if (r2 == -1.f || g2 == -1.f || b2 == -1.f) {
bkgd = false;
}
clamp(r);
clamp(g);
clamp(b);
clamp(r2);
clamp(g2);
clamp(b2);
init_color(instance().colorNum * 2, static_cast<int>(r * 1000.f), static_cast<int>(g * 1000.f), static_cast<int>(b * 1000.f));
init_color(instance().colorNum * 2 + 1, static_cast<int>(r2 * 1000.f), static_cast<int>(g2 * 1000.f), static_cast<int>(b2 * 1000.f));
if(bkgd) {
init_pair(instance().colorNum, instance().colorNum * 2, instance().colorNum * 2 + 1);
} else {
init_pair(instance().colorNum, instance().colorNum * 2, -1);
}
return ++instance().colorNum - 1;
}
编辑:看起来它和Ubuntu终端有关。使用xterm,它可以工作。而且,颜色值不会改变,所以可能与Ubuntu终端的紫色有关
void Console::useColor(unsigned int pair) {
wattron(win(), COLOR_PAIR(pair));
}