2015-11-29 20 views
5

Ncurses'ın 256 renge kadar ve 32 k'ye kadar renk çiftini destekleyebileceğini okudum. Tek başına 256 renk ayarlamayı başarabildim, 32k renk çiftlerini nasıl kuracağım hakkında hiçbir bilgi bulamıyorum.ncurses'da 32k renk çiftleri nasıl etkinleştirilir?

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

sonucu

256 - 256 

ve 2 renk ve 2 renk çiftleri sert terminali hayranları için yeterli olabilir, ben çoğu renkleri nasıl bilmek istiyorum kütüphaneden dışarı.

cevap

2

Varsayılan olarak, ncurses6, --enable-ext-colors etkin olarak yapılandırıldı. Ayrıca --enable-widec'a da ihtiyacınız var (aksi halde genişletilmiş renkleri saklayan cchar_t tipi kullanılmaz). genişletilmiş renkler (ve geniş karakterler) ile kütüphane kurdu varsayarsak

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

, maksimum değere (256 renge ve 32767 renk çiftleri kadar kadar görüntüleme yeteneğine geçerli: zaman script bu konuda uyardı İmzalı bir 16 bitlik sayı ile). Bundan sonra, kullandığınız terminal açıklamasına (ve terminal emülatörüne) bağlıdır. X Windows'da çalışan terminal emülatörlerinin çoğu 256 renk görüntüleyebilir. X dışında, çoğunluk olduğu belli değil.

ncurses'in bunların her biri için makul doğru terminali açıklamaları vardır (ve özel tuşları ve diğer özellikleri genellikle xterm'den farklılık beri hayır, TERM=xterm-256color kullanarak, her biri için çözüm değil: SSS Why not just use TERM set to "xterm"? da xterm-256color için geçerlidir).

enter image description here

2

ncurses numaralı bir renk çifti aslında ön plan renginin ve arka plan renginin birleşimidir. Bunları color_pair (manuel sayfa here) ile değiştirebilirsiniz. Ön plan ve arka plan için aynı olan ancak kırmızı + mavi (örneğin) mavi + kırmızı olarak sayılan 256x256/2 = 32,768 kombinasyonun olduğu için 32.768 kombinasyon vardır.

Daha fazla renk üretmek için ön plan + arka plan çiftlerini dama tahtası deseni (ör. ░░░░░░░░░░░░) kullanarak kullanabilirsiniz. Bakınız örn. here.

Yine de sorunuzda var olan bir yanlış anlaşılma olabileceğini düşünüyorum.

Bu [linux] uygulama (varsayılan renkler uzantısı hariç) COLORS-1 aralığındaki 0 dışında renk değerlerini kullanmak çabalarından ERR dönmek veya aralık 0 dışında renk çiftleri kullanacaktır: manuel sayfasından COLOR_PAIR-1.

ne olduğunu söylüyor yalnızca kullanabilirsiniz olmasıdır COLOR_PAIR renk çiftleri seferde (yani init_pair() aracılığıyla kullanıma sunulan) - 256. krediniz var uygulamanıza Hala 32.768 renk çifti var - sadece init_pair() ile aynı anda değil. Her neyse anladığım kadarıyla.

+0

Bu benim hakkında ne sordu değildir:

İşte geniş renkler için (ncurses-examples itibaren) ncurses test programı çalıştıran xterm gösteren bir görüntü var. Renklerin 32k kombinasyonu olduğunu biliyorum, bununla ilgili bir soru değildi. Kaç farklı renk çiftinin desteklendiğini belirten COLOR_PAIRS değişkeni ile ilgili bir soruydu. Varsayılan kızamık 256 ve 32k olarak ayarlanabileceği bir yer okudum ama nasıl olduğunu bilmiyorum. – redspah

+0

@redspah: Bu cevabı tekrar okuyun. –

+0

@LightnessRacesinOrbit Lemme Kendimi tekrar açıklamaya çalışın. Bu, olası renk çiftleri hakkında bir soru değil, init_pair() ile tanımlanan çiftleri içeren arabellek boyutunu artırmakla ilgili. Şu anda, 256'ya ayarlanmış, yani herhangi bir zamanda tanımlanmış sadece 256 renk çifti olabilir ve bunları yeniden tanımlamakta özgürsünüz, siz de 256'dan fazla çift elde edemezsiniz. Ben bu tamponun boyutunu değiştirmek için bir yöntem arıyorum, böylece aynı anda tanımlanması için 32k farklı çiftler için yer olabilir. – redspah