curses顏色操作

2021-09-26 14:38:04 字數 3674 閱讀 2334

start_color,

init_pair,

init_color,

has_colors,

can_change_color,

color_content,

pair_content,

color_pair

# include

intstart_color

(void);

intinit_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);

intcolor_content

(short color,

short

*r,short

*g,short

*b);

intpair_content

(short pair,

short

*f,short

*b);

curses支援具有該功能的終端上的顏色屬性。

要使用這些例程,必須在initscr之後呼叫start_color。

顏色總是成對使用(稱為顏色對)。

顏色對由前景色(用於字元)和背景色(用於顯示字元的空白字段)組成。

程式設計師使用例程init_pair初始化顏色對。

如果終端能夠重新定義顏色,程式設計師可以使用例程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)分量的強度。

第乙個引數的值必須介於0和colors之間。

儲存在最後三個引數指向的位址處的值介於0(無元件)和1000(元件的最大數量)之間。

該pair_content程式允許程式設計師找出給定的顏色對包括什麼顏色。

第乙個引數的值必須介於1和 color_pairs-1之間。

儲存在第二個和第三個引數指向的位址處的值介於0和colors之間。

在中定義了以下巨集。這些是預設顏色。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時將它們視為可選引數。

2 curses庫IO處理 顏色屬性

2.7 顏色屬性 2.7.1 顏色說明 curses庫中使用rgb方法來表示一種顏色 預設的顏色有 顏色 索引號 color black 0 color red 1 color green 2 color yellow 3 color blue 4 color magenta 5 color cya...

Linux中的curses程式設計

記得在選修作業系統課程的時候,有一次不小心翻到教材後面,看到裡面介紹了乙個編寫動畫遊戲的函式庫,叫做curses。感覺很好玩,就跟著上面學了一段時間,還編寫了乙個小遊戲。curses是乙個函式庫,包含許多庫函式,專門用來進行unix終端環境下的螢幕介面處理及i o處理。但是在一般linux環境中不能...

字符集轉化 curses

linux字串轉化使用方法 第一步 iconv open 目標字符集,源字符集 第二步 iconv 實現字符集轉化 第三步 iconv close 關閉iconv 命令 iconv list 顯示系統中支援的字符集 makefile suffixes c o cc gcc srcs mydaemon...