Bingo. Ačkoliv je reklama důležitá, potřeba spánku ji jasně
rompuje. Takže už asi moc nenapíšu (tohle je třetí článek a
jazyk mám na vestě... jak to děláš, H.H.? :)). Článek to má
být propagační a jeho námětem...
Knihovna pro Borland Pascal.
CiA 1.00
Pascal, ač na ústupu, ještě trochu žije. CiA mu doufám
pomáhá, protože obsahuje funkce, které žádná jiná knihovna
nemá (tj. ani pro Céčko). Abych opět planě netlachal, zkusím
tak nějak srovnat se známým Allegrem pro DJGPP (Céčko).
Bohužel už jsem dlouho neviděl novou verzi. Ale snad nebudu
moc kecat.
Allegro je jednoduché a přehledné. Programátor musí vědět,
jak to uvnitř počítačů běhá a pokud existují nějaké
nepříjemnosti dané hardwarem a operačním systémem (jako že
existují), musí je snášet. Namátkou klávesnice vracející
odjakživa jakési zoufalé kódy. Všichni mazáci už jsou na to
zvyklí a nováčci ať si tím taky projdou. Allegro tak vlastně
pouze zprostředkovává hardware a služby operačního systému
se všemi jejich chybami. Samozřejmě má spoustu dalších
skvělých vlastností, tohle byl jen příklad pro pochopení
principu. Funkce jsou jednoduché a někdy bohužel umí jen to,
co umí někdo jiný, se všemi neduhy.
CiA je knihovna uvnitř tak složitá, že se v ní většinou
nevyznají ani autoři. Ale svou složitostí vytváří nové
funkce a navenek - v interface - je už zas jednoduchá. Asi
největší hroudou kódu je scrollovací engine běhající na
všech možných i nemožně zabugovaných kartách ve všech
rozlišeních a barevných hloubkách. Uvnitř děs a utrpení,
navenek naprostá pohoda, žádná starost, v jakém jsem
rozlišení nebo barevné hloubce, na jaké kartě, jestli to
není obyčejná VGA, jestli nezůstanu v polích v odpojeném
vagónu... Jako maličkost vypadá klávesnice, ale při její
nesmírné chaotičnosti dalo velkou práci vše sjednotit, aby
se třeba při stiscích šipky doleva s různými předřazovači
generovaly víceméně různé eventy, ale vždy s kódem kLeft, a
až do puštění klávesy byla nastavená proměnná
kPressed[kLeft]. Práce s myší je pak slast, protože generuje
stejné eventy. V 16bitovém pascalu, kde klasický GetMem
alokuje maximálně 64KB, nabízí CiA vlastní GetMem, který
zvládá libovolně dlouhý kus paměti. Práce s INI soubory má
řadu featur a hlavně je optimální... už jsem totiž viděl
knihovnu, která při každém požadavku na zjištění/změnu
hodnoty proměnné pracovala s diskem. Operace s disky a
soubory myslí na nečekané situace. Pokud třeba uprostřed
kopírování adresáře vyvstane potřeba přepsat nějaký soubor a
není flagem řečeno, že se to smí, funkce nahodí dialog a
zeptá se uživatele co teď, případně vždy. Vše je samozřejmě
nezávislé na módu a funguje v textu i grafice, na statické i
na scrollovací obrazovce. Systém loaderů a writerů bitmap
z/do různých formátů je zcela nezávislý na tom,které formáty
jsou momentálně podporovány. Množina požadovaných loaderů
není pevná, ani se nepíše do nějakého pole, ale jednoduše do
uses programu a kdykoliv jde měnit. Od té chvíle se při
požadavku na čtení bitmapy vybírá příslušný loader, pokud je
k dispozici; při ukládání se vybírá z dostupných a pro danou
bitmapu použitelných writerů ten nejvhodnější.
Tak to byla asi nejdelší reklama jakou jsem kdy psal... Ať
vám slouží, jak bylo záměrem.
CiA je ke stažení na adrese
http://www.ms.mff.cuni.cz/shrb5163/#cia
Uvedené featury platí od verze 1.00.
za všechny autory
Dement / Downtown
výheň