Image
20.6.2016 0 Comments

Stretnutie s Pascalom II. /7.časť

Späť na úvod >> Späť na programovanie >> Späť na seriál

Teraz, keď už je po prázdninách, môžeme sa zasa naplno venovať našim zlatým objektom. A aby sme pokročili k hlavnému cieľu – ku grafickým objektom a k manipulácii s nimi - vytvoríme si naozajstnú funkčnú a kompletnú knižnicu objektových typov a práce s nimi. Pomenujeme ju MyFigs a jej zdrojový text MYFIGS.PAS.

Jej interfejsová časť je na listingu č.1. Obsahuje ďalšie naše knižnice MYPOINTS a MYMOUSER. MyPoints sme si vytvorili, takže ju máme. MyMouser som doplnil o tri metódy pre kvalitnejšiu prácu s myšou, a tak jej nová verzia spolu s kompletným výpisom zdrojového textu MyFigs vrátane komentárov sa nachádza v redakcii. Nie je možné ich z priestorových dôvodov uverejniť.

Objektový typ Figure v nej bude značne rozšírený. Najdôležitejšie zmeny sú:
a) každému objektu je pridaná jeho farba,
b) pre každý objekt je zavedená expanzia a rotácia,
c) je pridaná metóda Drag, ktorá umožňuje manipulovať s objektmi pomocou klávesnice a myši.

Každú novú vlastnosť a schopnosť obrázku (farba, expanzia, rotácia, posuv) zavedieme už pri objektovom type Figure, aj keď tu práve nemajú zmysel. Je to však nevyhnutné z dôvodu dedenia, ako je nám známe z minulých častí.

Všeobecne sa treba snažiť, aby metód, ktoré treba predefinúvať, bolo čo najmenej a aby sa rovnaký kód neopakoval niekoľkokrát. 

Tak napríklad rotáciu doprava implementujeme pomocou rotácie doľava, ale o opačný uhol a zmenšenie pomocou zväčšenia s inverzným koeficientom mierky.

Tak sa už ďalej v hierarchii nemusíme starať o rotáciu doprava a o zmenšovanie, tieto metódy sa zdedia bez zmien.
Takisto nemusíme nikde predefinúvať metódu Drag (nemýliť s Draw!), lebo je v nej zabudované ovládanie všetkých schopností obrázka - pohyb, rotácia a expanzia.

Hierarchická štruktúra knižnice MyFigs je na obrázku č. 1. Pozrime sa teraz na jednotlivé časti podrobnejšie.

Circle a potomkovia
Prarodičom všetkého je objektový typ Figure, ktorého veľmi dobre poznáme. Aj Point je nám známy. Vetvu guľatín začínajúcu objektovým typom Circle rozširujú typy Arc (oblúk), Nangle (n-uholník), Ellipse (elipsa) a EllipseArc (elips. oblúk). Všimnime si rotácie pri Circle. Je to jediný typ, ktorý zároveň rotuje aj nerotuje (v skutočnosti nerotuje, ale nepoznať to). Jeho potomkovia Arc a NAngle rotujú, avšak Ellipse a EllipseArc nie. Spolu s Notice sú to jedinné nerotujúce objekty v celej hierarchii MyFigs. To preto, lebo pascalovská knižnica Graph tieto rotácie nepodporuje. To, že elipsa a text nerotujú, však nie je vždy na škodu,(uvidíme na príklade "gúľania očami" v programe PANAK).

Line a potomkovia
Máme niekoľko možností, ako túto vetvu vytvoriť. Už úsečku možno implementovať dvoma spôsobmi: buď určíme dva krajné body alebo stačí jeden bod a vektor, ktorý je rozdielom medzi týmito bodmi. Použijeme tento druhý spôsob a celá vetva je reprezentovaná vektorovo, lebo je to vhodné nielen na rotáciu a expanziu, ale aj na posun objektov. Na rozdiel od prvého spôsobu nemusíme totiž predefinúvať nikde MoveTo. Logická nadväznosť jednotlivých objektov je tu zrejmá.

Sprite (zložený obrázok)
Osobitnú pozornosť zasluhuje objektový typ Sprite, ktorý sa trochu líši od ostatných objektov. Jeho prítomnosť je daná tým, že nie všetko možno vyjadriť pomocou elemetárnych objektov. Na tvorbu spritov slúži zvláštny editor spritov a možno ho získať ako shareware alebo freeware rôzne po BBS-kách alebo cédečkách.

Notice (poznámka - text)
Tento objekt je potrebný, ak chceme akékoľvek nápisy reprezentovať na obrazovke ako objekty. Aby sa tento objekt dal skutočne univerzálne použiť, sú v ňom ako položky definované všetky vlastnosti textu, ktoré jednotka Graph podporuje. V rôznych aplikáciách potrebujeme rôzne fonty aj rôzny stred textu. Rotovať text zatiaľ nemožno, ani v TP 7.0 nie, avšak možno ho mať vertikálne aj horizontálne. Expanzia textu je našťastie možná, avšak len celočíselne, takže sa text nezväčšuje plynule.

Absenciu rotácie a plynulej expanzie môžeme obísť nadefinovaním textu ako jednotlivé inštancie PieChartu po jednotlivých písmenách, ale to vám isto hneď prišlo na um!

PieChart
je prostriedok, ako skladať zložitejší objekt z jednoduchších, alebo doslovne, ako poskladať koláč (-ový nákres) z jednotlivých jeho častí. PieChart je reprezentovaný pomocou relatívnych súradníc jednotlivých komponentov oproti globálnemu stredu, ktorý je rozhodujúci na rotáciu a expanziu. Lepšie sa to ozrejmí na príklade PANAK. Rotácia a expanzia celku je realizovaná tak, že sa aplikuje tak na relatívne súradnice, ako aj na jednotlivé objekty, z ktorých je koláčový nákres (PieChart) zložený. Je dobré uvedomiť si, že PieChart možno skladať tak zo statických, ako aj dynamických častí alebo kombinovane. Väčšinou je dobré urobiť to dynamicky na heapu. Syntax je trochu zložitejšia, ale dá sa na to zvyknúť. Ak chceme napríklad vytvoriť panáka, urobíme to podľa listingu č. 2.

PieChart v panákovi vytvoríme tak, že sa najprv inicializuje ako zoznam obsahujúci nula komponentov a jednotlivé časti sa pridávajú postupne volaním metódy Add.

Za povšimnutie stojí rotácia panáka už pri jeho vytváraní. Je totiž výhodnejšie pridávať vlasy na rovnaké miesto pri priebežnom otáčaní hlavy, než počítať súradnice postranných vlasov pomocou trigonometrických funkcií (fuj...). Pri panákovi pracujeme s PieChartom ako celkom.
Záverom dodajme, že ak chceme mať na obrazovke niekoľko rovnakých PieChartov, napr. panákov, tak je lepšie vytvoriť nový objektový typ, ktorý zdedíme od PieChartu a do jeho konštruktora dáme
všetky príkazy Add. Potom môžeme jednoducho nadeklarovať niekoľko objektov vytvoreného objektového typu.

Takže prepíšte alebo stiahnite z redakcie, preložte a skúšajte. Je to krása!
Pozn: Pri preklade unitu MyFigs treba definovať, či chceme preklad pre celé alebo reálne hodnoty. To nadefinujeme v IDE Turbo Pascalu v položke Option - Compiler - Conditional defines.

 

Zobrazit Galériu

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Tipy a triky: Ako na snímku obrazovky na akomkoľvek počítači s Windows?

02.12.2016 00:13

Ak snímky obrazovky robíte často apotrebujete napríklad funkcie na posun stránok alebo snímanie zobrazenia pri vyššom rozlíšení displeja, zrejme používate nejakú špecializovanú aplikáciu. Väčšina použ ...

Ako na to 1

Tipy a triky: Ako aplikácii prednastaviť spúšťanie s administrátorskými právami?

30.11.2016 00:10

Väčšina aspoň trochu skúsenejších používateľov vie, že aj keď máte na operačnom systéme Windows vytvorený administrátorský účet, aplikácie pre bezpečnosť nefungujú vždy splnými administrátorskými práv ...

Ako na to 2

Tipy a triky: Ako vypnúť uzamykaciu obrazovku vo Windows 10?

29.11.2016 00:10

Rozčuľuje vás, že pred každým prihlásením doúčtu vášho počítača musíte prejsť uzamykacou obrazovkou? Windows 10 na tejto obrazovke ukazuje čas,dátum anejakú zaujímavú fotografiu zrôznych kútov sveta. ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá