curses颜色操做

curses颜色操做

start_color,程序员

init_pair,ide

init_color,函数

has_colors,指针

can_change_color,code

color_content,视频

pair_content,接口

COLOR_PAIRit

Synopsis

# include <curses.h>
int start_color(void);
int init_pair(short pair, short f, short b);
int init_color(short color, short r, short g, short b);
bool has_colors(void);
bool can_change_color(void);
int color_content(short color, short *r, short *g, short *b);
int pair_content(short pair, short *f, short *b);

概观

curses支持具备该功能的终端上的颜色属性。class

要使用这些例程,必须在initscr以后调用start_color。变量

颜色老是成对使用(称为颜色对)。

颜色对由前景色(用于字符)和背景色(用于显示字符的空白字段)组成。

程序员使用例程init_pair初始化颜色对。

初始化以后,COLOR_PAIR(n)(在<curses.h>中定义的宏)能够用做新的视频属性。

若是终端可以从新定义颜色,程序员能够使用例程init_color来更改颜色的定义。

例程 has_colors和can_change_color返回TRUE或FALSE,具体取决于终端是否具备颜色功能以及程序员是否能够更改颜色。

例程color_content容许程序员以初始化颜色提取红色,绿色和蓝色份量。

例程pair_content容许程序员找出当前如何定义给定颜色对。

常规描述

该start_color程序不须要参数。

若是程序员想要使用颜色,而且在调用任何其余颜色操做例程以前,必须调用它。

在initscr以后当即调用此例程是一种好习惯。

start_color初始化八种基本颜色(黑色,红色,绿色,黄色,蓝色,洋红色,青色和白色)和两个全局变量COLORS和COLOR_PAIRS(分别定义终端能够支持的最大颜色数和颜色对)。

它还将终端上的颜色恢复为刚刚打开终端时的值。

所述init_pair例程改变颜色对的定义中。

它须要三个参数:要更改的颜色对的编号,前景颜色编号和背景颜色编号。

  •  

第一个参数的值必须介于1和COLOR_PAIRS-1之间,除非使用默认颜色,调整上限以容许在前景和/或背景中使用默认颜色的额外对。

  •  

第二个和第三个参数的值必须介于0和COLORS之间。

假设颜色对0在黑色上是白色的,但其实是在初始化颜色以前终端实现的任何东西。

它不能被应用程序修改。

若是先前已初始化颜色对,则刷新屏幕并将全部出现的颜色对更改成新定义。

做为扩展,ncurses的容许用户经过所述设置的颜色对0 assume_default_colors例程,或指定使用的默认颜色(颜色数 -1)若是首先调用use_default_colors例程。

该init_color常规改变颜色的定义。

它须要四个参数:要更改的颜色数,后跟三个RGB值(红色,绿色和蓝色组件的数量)。

第一个参数的值必须介于0和COLORS之间。

最后三个参数中的每个必须是介于0和1000之间的值。

使用init_color时,屏幕上全部出现的颜色都会当即更改成新定义。

该has_colors程序不须要参数。

若是终端能够操做颜色,则返回TRUE ; 不然,它返回FALSE。

该例程有助于编写与终端无关的程序。

例如,程序员能够使用它来决定是使用颜色仍是其余视频属性。

该can_change_color程序不须要参数。

若是终端支持颜色而且能够更改其定义,则返回TRUE ; 另外,它返回FALSE。

该例程有助于编写与终端无关的程序。

该color_content例行为程序员提供了一种方法来找到一个颜色的红,绿,蓝(RGB)份量的强度。

它须要四个参数:颜色编号和short的三个地址,用于存储有关给定颜色中红色,绿色和蓝色份量的信息。

第一个参数的值必须介于0和COLORS之间。

存储在最后三个参数指向的地址处的值介于0(无组件)和1000(组件的最大数量)之间。

该pair_content程序容许程序员找出给定的颜色对包括什么颜色。

它须要三个参数:颜色对数,以及用于存储前景和背景颜色数的两个短地址。

第一个参数的值必须介于1和 COLOR_PAIRS-1之间。

存储在第二个和第三个参数指向的地址处的值介于0和COLORS之间。

颜色

在<curses.h>中定义了如下宏。这些是默认颜色。curses还假设COLOR_BLACK是全部终端的默认背景颜色。
COLOR_BLACK
COLOR_RED
COLOR_GREEN
COLOR_YELLOW
COLOR_BLUE
COLOR_MAGENTA
COLOR_CYAN
COLOR_WHITE

回报价值

例程can_change_color()和has_colors()返回TRUE或FALSE。

全部其余例程在失败时返回整数ERR,而且成功完成后,OK(SVr4仅指定“除ERR以外的整数值”)。

X / Open定义没有错误条件。

此实现将在尝试使用0到COLORS-1范围以外的颜色值时返回ERR(默认颜色扩展名除外),或使用0到COLOR_PAIR-1范围以外的颜色对。

init_color中使用的颜色值必须在0到1000的范围内。

若是终端还没有初始化,则会从全部函数返回错误。

若是未调用start_color,则会从init_pair等辅助函数返回错误。

init_color
若是终端不支持此功能,则返回错误,例如,若是终端描述中不存在initialize_color功能。

start_color
返回错误若是没法分配颜色表。

笔记

在ncurses实现中,每一个屏幕都有一个单独的颜色激活标记,调色板,颜色对表以及相关的COLORS和COLOR_PAIRS计数; 该start_color功能只影响当前屏幕。

SVr4 / XSI接口并无真正考虑到这一点,历史实现可能使用单个共享调色板。

请注意,经过颜色对设置隐式背景颜色仅影响字符写入操做明确触摸的字符单元格。

要更改经过擦除或滚动操做消除窗口部分时使用的背景颜色。

有关VGA兼容图形的386和486机器有几个注意事项:

  •  

COLOR_YELLOW其实是棕色的。要变黄,请使用COLOR_YELLOW并结合A_BOLD属性。

  •  

理论上,A_BLINK属性应该使背景变亮。

这一般没法工做,甚至一些它主要工做的卡(如天堂和兼容机)在你试图设置明亮的“黄色”背景时会作错事(你会获得一个闪烁的黄色前景)。

  •  

颜色RGB值没法设置。

可移植性

此实现知足XSI Curses的COLORS和COLOR_PAIRS的最小最大值。

该init_pair例程接受前景色和背景色,支持的负值use_default_colors扩展名,但只有当程序被调用第一。

能够使用assume_default_colors扩展来修改COLOR_BLACK是全部终端的默认背景颜色的假设。

此实现检查指针,例如,color_content和pair_content返回的值,并在null时将它们视为可选参数。

相关文章
相关标签/搜索