Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Informace
Quartz Composer: co je to "patch"
15. června 2005, 00.00 | Na patche Quartz Composeru se můžeme dívat jako na – trochu složitější – obdobu akcí Automatoru: patch může mít definovaný datový vstup; patch může mít definovaný datový výstup; vlastní činnost patche je určena kódem (napsaným ve vhodném programovacím jazyce).
V minulém dílu našeho miniseriálku věnovanému systému Quartz Composer jsme si ukázali v hrubých rysech jak můžeme skládat grafické animace z jednotlivých patchů; dnes se budeme patchi zabývat podrobněji a popíšeme si přesněji, o co vlastně jde.
Něco jako "akce"...
Již několikrát jsme se zmínili o určité podobnosti mezi Automatorem a Quartz Composerem: skutečně, na patche Quartz Composeru se můžeme dívat jako na – trochu složitější – obdobu akcí Automatoru:
- patch může mít definovaný datový vstup. Podobně jako akce Automatoru, patch může být také bez excplicitního vstupu (pokud například sám generuje nějaké hodnoty, příkladem může být patch, s nímž jsme se seznámili minule, a který generuje systémový čas);
- patch může mít definovaný datový výstup;
- vlastní činnost patche je určena kódem (napsaným ve vhodném programovacím jazyce), který přijme vstup (je-li jaký), vhodným způsobem jej zpracuje, a výsledek předá prostřednictvím výstupu nebo přímo na obrazovku.
Podobně jako spojujeme akce v Automatoru do pracovních postupů prostřednictvím jejich vstupů a výstupů, spojujeme patche v Quartz Composeru prostřednictvím jejich vstupů a výstupů do animací. A podobně, jako v Automatoru můžeme do jediného pracovního postupu vložit více akcí, jejichž vstup a výstup vzájemně nepropojíme, umožňuje Quartz Composer složit animaci z několika "samostatných" – tedy explicitně nepropojených patchů.
Vstup a výstup
První a nejzřejmější rozdíl mezi patchi a akcemi spočívá v tom, že zatímco akce Automatoru jsou omezeny na jediný vstup a jediný výstup, patche Quartz Composeru mohou nabízet vstupů i výstupů libovolně mnoho. Graficky je každý patch representován obdélníčkem, jenž má tři základní části:
- nahoře je v barevném titulku uveden název patche (a u patchů, jež přímo generují výstupní grafiku, také jejich pořadové číslo – tím se budeme zabývat později);
- při levém okraji je seznam vstupů;
- při pravém okraji je seznam výstupů.
Vstupy i výstupy patchů jsou representovány malými kroužky – těm se v Composeru říká porty –, a u každého z nich je uveden název daného vstupu či výstupu:
Na obrázku vidíme, že patch "System Time" má jen výstup; patch "Sprite" má pouze řadu vstupů, a patch "Image With String" má vstupy i výstupy.
Zatímco u Automatoru bylo propojení vstupů a výstupů pevně dáno návazností akcí, v Composeru máme daleko větší volnost. Předně, u libovolného vstupu se můžeme rozhodnout, že jeho hodnotu přímo určíme jako konstantu (buď prostřednictvím Inspektoru, jak jsme si ukázali minule, nebo prostě poklepáním na odpovídající port). Pokud se naopak rozhodneme hodnotu přebrat od jiného patche, máme na vybranou – téměř libovolný výstup libovolného patche můžeme propojit "trubkou" s téměř libovolným vstupem téměř libovolného patche.
Proč jen "téměř"? Inu, předně, porty jsou různých typů – může jít o číslo, textový řetězec, obrázek, barvu či komplexnější strukturu; Composer dovolí samozřejmě propojit dva porty téhož typu i porty, jejichž hodnoty lze rozumně vzájemně převádět (např. číslo na řetězec), nedovolí nám ale propojit porty, jejichž hodnoty vzájemně převést nelze (třeba obrázek na číslo). Dalším omezením je to, že nesmíme vytvořit cyklus: připojíme-li např. výstup "Display Width" patche "Image With String" na vstup "Image Width" jiného patche téhož typu, je to v pořádku; pokud bychom se však nyní pokusili propojit výstup druhého patche na vstup prvého, již to nepůjde.
Vlastní propojení je triviální: stačí prostě myší táhnout od vybraného výstupu k vybranému vstupu. Za myší se automaticky táhne "trubka", a jakmile jsme nad vhodným vstupem, zabarví se: žlutá barva indikuje, že vstup je téhož typu jako výstup, nad nímž jsme tažení zahájili; oranžová barva indikuje že typy jsou odlišné, avšak lze je vzájemně převést. Zůstane-li "trubka" bílá, jsou typy nekompatibilní (nebo bychom uzavřeli cyklus), a propojení nelze provést.
Quartz Composer nabízí řadu šikovných triků: předně, chceme-li zjistit typ a hodnotu některého portu (vstupního čí výstupního), stačí nad něj umístit kursor a chvilku počkat; požadované údaje, včetně orientačního popisu, se zobrazí v tooltipu:
Mimochodem, budete-li to zkoušet, uvidíte, že hodnotu mají pouze ty patche, jež jsou skutečně zapojeny a využity; nevyužité patche mají výstupní hodnoty prázdné, i když jsou prostřednictvím Inspektoru nastaveny správně. To je proto, že Quartz Composer patche "vyhodnocuje" jen tehdy, když to je skutečně zapotřebí: znamená to, že přidáme-li do komposice nepoužitý patch, Composer se jím nebude "zdržovat".
Další příjemná finta spočívá v tom, že z jediného výstupu můžeme natáhnout "trubek" na různé vstupy libovolně mnoho.
Příště si ukážeme různé typy patchů a řekneme si trochu více o jejich zpracování.
Obsah seriálu (více o seriálu):
- Mac OS X Tiger - Vývojářské aplikace nejen pro vývojáře!
- Quartz Composer: základy
- Quartz Composer: co je to "patch"
- Quartz Composer: typy patchů
- Makra Quartz Composeru
- Speciální služby Quartz Composeru
- Quartz Composer pro programátory