2015-11-29 8 views
5

मैंने पढ़ा है कि ncurses 256 रंगों तक और 32k रंग जोड़े तक का समर्थन कर सकते हैं। जबकि मैं अपने आप से 256 रंग स्थापित करने में कामयाब रहा, मुझे 32k रंग जोड़े को सेट अप करने के बारे में कोई जानकारी नहीं मिली।ncurses में 32k रंग जोड़े कैसे सक्षम करें?

printf("%d - %d\n", COLORS, COLOR_PAIRS); 

का परिणाम

256 - 256 

है और 2 रंग और 2 रंग जोड़े के कट्टर टर्मिनल के प्रशंसकों के लिए पर्याप्त हो सकता है, मैं कैसे सबसे रंग पाने के लिए जानना चाहते हैं पुस्तकालय से बाहर।

उत्तर

2

डिफ़ॉल्ट रूप से, ncurses6 --enable-ext-colors सक्षम के साथ कॉन्फ़िगर करता है। आपको --enable-widec की आवश्यकता है (अन्यथा, cchar_t प्रकार जो विस्तारित रंगों का संग्रह नहीं करता है)।

checking if you want to use extended colors... yes 
configure: WARNING: This option applies only to wide-character library 

मान लिया जाये कि आप विस्तारित रंग (और चौड़ाई वाले वर्णों) के साथ पुस्तकालय का निर्माण किया है कि, यह 256 रंग के लिए और 32767 रंग जोड़े के लिए ऊपर (अधिकतम मूल्य को प्रदर्शित करने में सक्षम है: कॉन्फ़िगर स्क्रिप्ट इस बारे में चेतावनी दी है एक हस्ताक्षरित 16-बिट संख्या में)। उसके बाद, यह उस टर्मिनल विवरण पर निर्भर करता है जिसका आप उपयोग कर रहे हैं (और टर्मिनल एमुलेटर)। एक्स विंडोज़ में चल रहे टर्मिनल अनुकरणकर्ताओं में से अधिकांश 256 रंग प्रदर्शित कर सकते हैं। एक्स के बाहर, यह स्पष्ट नहीं है कि बहुमत है।

ncurses इनमें से प्रत्येक के लिए यथोचित सही टर्मिनल वर्णन है (और कोई, TERM=xterm-256color का उपयोग नहीं कर प्रत्येक के लिए जवाब है, के बाद से विशेष कुंजियों और अन्य विशेषताओं के आम तौर पर टर्म से अलग है: पूछे जाने वाले प्रश्न Why not just use TERM set to "xterm"? भी xterm-256color पर लागू होता है)।

enter image description here

2

ncurses में एक रंग जोड़ी वास्तव में एक अग्रभूमि रंग और पृष्ठभूमि रंग का संयोजन है। आप color_pair (मैनुअल पेज here) के साथ उन्हें कुशल बना सकते हैं। 32,768 संयोजन हैं क्योंकि अग्रभूमि के लिए 256 संयोजन हैं और पृष्ठभूमि के लिए समान हैं, लेकिन लाल + नीले (उदाहरण के लिए) को नीले + लाल के रूप में गिनते हुए, 256x256/2 = 32,768 संयोजन होते हैं।

फिर आप अधिक रंगों के उत्पादन के लिए चेकरबोर्ड पैटर्न (उदा। ░░░░░░░░░░░░) के साथ अग्रभूमि + पृष्ठभूमि जोड़े का उपयोग कर सकते हैं। उदाहरण देखें here

मुझे लगता है कि आपके प्रश्न में अंतर्निहित गलतफहमी हो सकती है।

यह [Linux] कार्यान्वयन रंग मान (डिफ़ॉल्ट रंग विस्तार के लिए छोड़कर) COLORS-1 को सीमा 0 बाहर का उपयोग करने के प्रयासों पर ERR वापस आ जाएगी, या सीमा 0 बाहर रंग जोड़े का उपयोग करें: मैनुअल पृष्ठ से COLOR_PAIR-1.

करने के लिए क्या है कि कह रहा है कि आप केवल उपयोग कर सकते है COLOR_PAIR रंग जोड़े एक ही बार में (यानी init_pair() के माध्यम से उपयोग करने के लिए उपलब्ध है) - अपने कार्यान्वयन है कि 256 बू पर टी अभी भी 32,768 रंग जोड़े उपलब्ध हैं - बस एक बार init_pair() के माध्यम से नहीं। वैसे भी मैं इसे समझता हूं।

+0

यह है कि मैं क्या के बारे में पूछा नहीं है:

यहाँ xtermncurses परीक्षण कार्यक्रम (ncurses-examples से) विस्तृत रंग के लिए चल रहा है दिखाने वाले स्क्रीनशॉट है। मुझे पता है कि रंगों के 32k संयोजन हैं, यह इसके बारे में सवाल नहीं था। यह COLOR_PAIRS चर के बारे में एक प्रश्न था, जो निर्दिष्ट करता है कि कितने अलग रंग जोड़े समर्थित हैं। डिफ़ॉल्ट माप 256 है, और मैंने कहीं पढ़ा है कि इसे 32k पर सेट किया जा सकता है, लेकिन मुझे नहीं पता कि कैसे। – redspah

+0

@redspah: इस उत्तर को फिर से पढ़ें। –

+0

@ लाइटनेसरेसेसिन ऑर्बिट लेमे खुद को फिर से समझाने की कोशिश करें। यह संभावित रंग जोड़े के बारे में कोई प्रश्न नहीं है, यह बफर के आकार को बढ़ाने के बारे में है जिसमें init_pair() के साथ परिभाषित जोड़े हैं। अभी, यह 256 पर सेट है, जिसका अर्थ है कि किसी भी समय केवल 256 रंग जोड़े परिभाषित किए जा सकते हैं, और जब आप उन्हें फिर से परिभाषित करने के लिए स्वतंत्र होते हैं, तो आपको 256 से अधिक जोड़े नहीं मिलेंगे। मैं उस बफर के आकार को बदलने के लिए एक विधि की तलाश में हूं, ताकि एक ही समय में 32k अलग-अलग जोड़े को परिभाषित किया जा सके। – redspah

संबंधित मुद्दे