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時將它們視爲可選參數。

相關文章
相關標籤/搜索