Barvy na monitoru počítače
Vhodná
volba barev má pozitivní vliv na výkonnost uživatele a patří neodmyslitelně
k vytváření uživatelského komfortu. FoxPro má hezké, vyladěné soupravy
barev. Jejich časté používání však působí fádním dojmem a programátor
se velice brzy rozhodne vytvářet nové soupravy nebo alespoň původní
soupravu modifikovat. Barevná schémata se rychle ladí pomocí speciálního nástroje
COLOR v menu WINDOW. Pro pochopení práce s barvami nutno definovat několik
pojmů.
Párování barev
Pár
barev (Color Pair) je dvojice barev, oddělená lomítkem. První barva je
barvou písma (popředí), druhá barvou pozadí. Barvy se určují pomocí prvního
písmena názvu základní barvy: B(Blue), G(Green), R(Red). Zbývající barvy
se tvoří kombinacemi základních barev. Kombinace jsou aditivní. Bílou
barvu by bylo možné získat sloučením všech tří základních barev, v předepsaném
poměru. To je obtížné pro vyjadřování a proto se pro bílou barvu zvolil
znak W (white).
Barvy:
černá - N purpurová - RB
modrá - B tyrkysová - BG
zelená - G bílá - W
červená - R žádná - X
hnědá - GR žlutá - GR+
Poznámky:
Znaku
X je vhodné použít pro zápis hesla (náhodný divák ho nevidí). Kromě
toho lze předepsat znak + pro zvýšení jasu (světlejší písmo) a znak *
pro mrkání (používat pouze pro důrazná varování). Znak + zvyšuje
intenzitu písma, ať je uveden před nebo za lomítkem. Podobně znak blikání.
Rozdíl intenzit je tak velký, že se běžně programují dvojice W+/W. Při
zadávání dvojic barev lze též použít znaku I pro inversní zobrazení.
Pořadí
znaků barev lze přehodit, např. RG (hnědá), RG+ (žlutá), GB (tyrkysová),
BR (purpurová) a lze použít i kombinací WB, RW, atd. Písmena U (underline)
se používá při požadavku podtrženého písma (vhodné pro monochromní
obrazovky).
Seznamy párů barev
Seznam párů barev (Color
Pair List) je tvořen jedním nebo více páry, oddělenými čárkou.
Například:W+/B,W+/BG,GR+/B,GR+/B,R+/B,W+/GR
Podle pořadí v seznamu jsou
páry barev vztaženy ke:
1.
zobrazovanému textu, nepřístupným prvkům, SAY (normal)
2.
přístupným prvkům, GET, editačním prostorům (enhanced)
3.
rámečkům (borders, box)
4.
názvům, titulkům aktivních oken, menu (titles)
5.
hlášením, titulkům ostatních oken (messages)
6.
zvýrazněným prvkům (selected)
7.
hodinám, aktivačním znakům (hot keys)
8.
stínům (shadows)
9.
přístupným ovladačům (enabled control)
10.
nepřístupným ovlad. (disabled contr.)
Uvedené rozložení vztahů
je obecné. V konkrétních schématech mohou dvojice barev mít specifický význam.
Přehled je uveden na konci přednášky.
Schémy barev
Schéma
barev (Color Scheme) je seznam deseti barevných párů, který u osmého prvku
může mít místo barevného páru - (mínus, beze stínu, významné u
monochromatických monitorů). Za desátým párem může být znaménko + ve významu
"se stínem" nebo - ve významu "bez stínu". Schémata
barev se vztahují k jednotlivým zobrazovaným objektům (okno, menu, dialog,
apod.). Proto příkazy pro definování objektů dovolují volbu barevného schématu.
Schémata barev lze zadávat v konfiguračním souboru CONFIG.FP. (Color Of
Scheme <výrazN> = <seznam párů barev>). Schémata se číslují
(v rámci jedné soupravy barev 1 až 24). Schéma se od seznamu odlišuje tím,
že obsahuje právě deset dvojic.
Prvních 12 má standardní použití, z nichž programově jsou zajímavé:
scheme 1 - uživatelská okna scheme 3 - menu bar
scheme 2 - uživatelská menu scheme 4 - menu popup
Soupravy barev
Souprava barev (Color Set) je
tvořena 24 barevnými schématy. Systém může obsahovat více souprav barev.
Soupravy se odlišují pojmenováním. Aktuální stav každé soupravy barev se
automaticky pamatuje v souborech FOXUSER.DBF a FOXUSER.FPT (viz příkazy SET
RESOURCE). Prvních 12 schémat je barevně sladěno a doporučeno. Nejsou
pojmenovaná, ale číslovaná. Nedejte se oklamat programovacími pomůckami.
Tam je kvůli srozumitelnosti použito označení (zkrácené použití). Zbývající
schémata jsou určena uživatelům k tvůrčím pokusům.
V programu Označení Použití
────────────────────────────────────────────────────────────
schéma 1 User Wind uživatelsky definovaná okna
schéma 2 User Menus uživatelsky definovaná menu
schéma 3 Menu Bar řádková menu
schéma 4 Menu Pops popup menu
schéma 5 Dialogs dialogy
schéma 6 Dlog Pops popup v dialozích
schéma 7 Alert výstrahy
schéma 8 Windows systémová okna
schéma 9 Wind Pops popup v systémových oknech
schéma 10 Browse okno Browse
schéma 11 Report okno generátoru sestav
schéma 12 Alert Pops popup ve výstrahách
Je
nutné programově předcházet fatálním situacím, kdy některé informace
nejsou vidět (například červené písmo s modrým pozadím je neviditelné
na monochromatických monitorech).
V
programátorské praxi se často postupuje tak, že se vyladěná schémata
barev uloží pomocí funkce SCHEME() do uživatelského konfiguračního
souboru CONFIG.FP nebo přímo do programu. Vyladění schématu, ve složitějších
úlohách, nestačí. Nutno barevně sladit navzájem veškerá použitá schémata
- vyladit soupravu. K tomu se používá specializovaného nástroje, který je
dosažitelný přes menu WINDOWS, volba COLOR. Umožňuje postupné vyladění
schémat. Jeho obsluha je velice jednoduchá. Pokud nechceme pracovat se
standardní soupravou, pak jako první si zvolíme nějakou výchozí soupravu
barev pomocí tlačítka <LOAD>. V pravém horním rohu je překrývané
okno se seznamem schémat. V něm zvolíme schéma, které chceme vidět nebo
upravovat. Barvy vidíme v oknech levé horní čtvrtiny obrazovky. Tato okna
slouží pouze jako vzor. Pomocí výběrového menu (rádiové knoflíky) zvolíme
dvojici barev, kterou chceme modifikovat. Mezerníkem se na paletě barev, umístěné
ve spodní části obrazovky oživíme značku » « (tím umožníme její přesouvání).
Značka ukazuje aktuální dvojici barev. Posouváním značky volíme jinou
dvojici a důsledky svého počínání pozorujeme na vzorových oknech.
Potvrzování, jako vždy, se provádí klávesou ENTER. Po ukončení práce
nutno soupravu zapsat, i když jen dočasně, do souboru FOXUSER. Zápis se
aktivuje tlačítkem <SAVE> a provede po pojmenování soupravy.
Soupravu barev lze, podle
aktuálního nastavení, vytvořit též pomocí příkazu
CREATE COLOR SET <sada barev>
který všechna aktuální
schémata uloží do sady barev pojmenované <sada barev> (max. 10 znaků).
Sada barev je uložena ve zdrojovém souboru FoxPro (resource file - FOXUSER).
Použití soupravy uložené
v souboru FOXUSER se programuje příkazem:
SET COLOR SET TO [<jméno soupravy barev>]
Příkaz zavede dříve
definované soupravy barev.
Toto
je ve firemní literatuře doporučovaný postup. V praxi se však neosvědčil.
Není zcela bezpečný. Hodí se pouze pro fázi vývoje programů. FOXUSER je uživatelský
soubor a nelze spoléhat, že každý z uživatelů ho bude mít ve stejném
stavu jako programátor. Vhodnější, i když komplikovanější postup, je získat
ze soupravy používaná schémata funkcí:
SCHEME(<expN1> [, <expN2>])
Funkce vrátí dvojici barev
nebo seznam dvojic barev ze schématu barev. <výrazN1> určuje pořadové
číslo schématu barev. <výrazN2> určuje pozici páru barev. Není-li
pozice uvedena, je vráceno celé schéma. Schémata je vhodné uložit do
souboru úlohy nebo přímo do programu. Zde nejde u ukládání dat do
programu. Barvy jsou součástí programu!
?scheme(13)
W+/B,W+/BG,GR+/R,GR+/B,R+/B,W+/GR,GR+/RB,N+/N,GR+/G,R+/B
?scheme(13,3)
GR+/B
Příklad úschovy schématu
číslo 18 a jeho využití
sh18=sche(18)
&& Úschova
set color to &sch18
Použití barev
V předchozím
příkladě bylo použito příkazu, který předá požadované nastavení
barev grafické kartě. Je to příkaz:
SET COLOR TO <seznam párů barev>
Příkaz nastaví barvy podle
prvních tří prvků seznamu.
Nastavení barev se převážně
programuje jako makrosubstituce. Dříve to byl často se vyskytující příkaz.
V nových programech se vyskytuje jen sporadicky, jelikož takřka všechny příkazy
výstupu na monitor umožňují přímé zadání barev.
color1='W+/B,W+/BG,GR+/B'
mono1='W+/N,N/W,W+/W'
...
set color to &color1
...
set color to &mono1
Samozřejmě lze programovat
malé změny barev i přímo
SET COLOR TO W/N,W+/w
Soupravy barev a monitor
Programy
musí být nezávislé na typu monitoru. Tím se zajistí jejich snadná přenositelnost.
Podle typu monitoru se automatizovaně rozhoduje o způsobu použití barev či
odstínů šedi. Test barvy monitoru se programuje funkcí:
ISCOLOR()
Funkce vrátí .T., pokud je
připojen barevný monitor. Jestliže je monitor monochromatický, vrátí.F.
Příklad automatického přizpůsobení
programu podle typu monitoru. Soupravy barev nutno předem připravit.
IF ISCOLOR()
SET COLOR SET TO color
&& Nastavení barevné soupravy
ELSE
SET COLOR SET TO mono
&& Nastavení soupravy odstínů šedi
ENDIF
Výše uvedený postup je
vhodný při vývoji programu. Je-li nutno změnit schéma v průběhu programu,
pak se doporučuje použít příkazu:
SET COLOR OF SCHEME <výrazN1> TO [<seznam_párů_barev>]
TO [SCHEME <výrazN2>]
Příkaz slouží k úpravám
barev ve schématu barev nebo překopíruje jedno schéma do druhého. Nezměněné
páry barev se v seznamu nemusejí uvádět, stačí zapsat oddělovač. <výrazN1>
hodnoty 1 až 10 nebo 17 až 24. <seznam> až 10 párů barev.
Změna barvy rámů (3. pár)
ve schématu číslo 1:
SET COLOR OF SCHEME 1 TO ,,W/N+
Nastavení schématu barev
podle standardní hodnoty nebo podle hodnoty zadané v CONFIG.FP se programuje
bez uvedení vzoru, například:
SET COLOR OF SCHEME 3 TO
Analogický je i příkaz,
který nepožaduje znalost umístění význačných (nejčastěji modifikovaných)
dvojic barev a určuje ji popisem:
SET COLOR OF NORMAL | MESSAGES | TITLES | BOX | HIGHLIGHT
|
INFORMATION | FIELDS TO [<dvojice
barev>]
Určí barvy pro prvky uživatelských
oken a menu.
NORMAL
- standardní texty,
MESSAGES
- zprávy, (nápověď),
TITLES
- názvy oken nebo menu,
BOX
- rámečky,
HIGHLIGHT
- zvýrazněné texty,...
Speciální způsoby zobrazování
Při
speciálních způsobech zobrazování potřebujeme v programem zjistit nejen
barevnost monitoru, ale i typ grafické karty. V tomto případě použijeme
funkce:
SYS(2006)
Funkce vrátí typ grafické
karty a monitoru. Všimnete si tvar vráceného řetězce.
?sys(2006)
VGA/Mono
Naopak, nastavení zobrazovacího
modu u monitorů, které nastavení povolují se programuje příkazem
SET DISPLAY TO CGA │ COLOR │ EGA25 │
EGA43 │ MONO
│ MONO43 │ VGA25 │
VGA50
Příkaz slouží k nastavení
zobrazovacích modů u monitorů, které podporují více zobrazovacích modů.
Pozor, při nastavení VGA50 ( dvojnásobný počet řádků než VGA25)
nefunguje čeština řízená programem VGACS.
Tlumení obrazovky - Mrkání
a intenzivní jas obrazovky jsou velice nepříjemné. Může se stát, při ladění,
že úloha havaruje v okamžiku nastavení zvýšeného jasu nebo mrkání. Na
dobu odstranění závady lze tlumit původní funkci obrazovky příkazy:
SET BLINK ON │OFF
Když je nastaven na ON,
mohou zobrazované prvky (rámečky, stíny, texty, apod.) mrkat.
SET INTENSITY ON │OFF
Příkaz zapíná nebo vypíná
atribut zvýšeného jasu obrazovky pro vkládání do pole.