
V dnešní části seriálu o grafických formátech a metaformátech si ukážeme některé způsoby použití NURB křivek a NURB ploch v grafickém formátu X3D. Popíšeme si tvorbu parametrických NURB křivek vytvořených v ploše i prostoru, tvorbu NURB ploch včetně jejich oříznutí a také význam uzlového vektoru.

V dnešní části našeho čtvrtečního seriálu, kde si povídáme o grafických formátech a metaformátech, si řekneme, jakým způsobem je možné v grafickém formátu X3D používat populární a především praktické NURB křivky a plochy, včetně popisu základních vlastností těchto geometrických tvarů.

V dnešní části seriálu o grafických formátech a metaformátech si ukážeme práci se složitějšími prostorovými objekty, které je možné vkládat do vytvářených scén. Konkrétně se bude jednat o povrchy složené z množiny plošek (polygonů), výšková pole (height fields) a o objekty vytvořené pomocí šablonování.

V dnešní části našeho seriálu o grafických formátech a metaformátech se seznámíme se způsobem zápisu plošných i trojrozměrných objektů do scén ukládaných ve formátu X3D. Kromě základních 2D objektů si také ukážeme popis objektů trojrozměrných, tedy základních tvarů popsaných geometrií.

V dnešní části seriálu o grafických formátech a metaformátech si ukážeme základy tvorby souborů uložených podle syntaxe jazyka X3D. Popíšeme si také profily X3D, pomocí kterých se určují vlastnosti ukládaných souborů a také způsob vytváření plošných objektů spolu s nastavením jejích vlastností.

Dalším jazykem určeným pro popis prostorových scén, který si v seriálu o grafických formátech a metaformátech popíšeme, je jazyk nazvaný X3D (Extensible 3D). Jedná se o ideového zástupce již popsaného jazyka VRML (Virtual Reality Modeling Language), který původní ideu VRML v několika směrech rozšiřuje i zpřesňuje.

V dnešní části našeho seriálu o grafických formátech a metaformátech dokončíme část věnovanou deklarativnímu jazyku VRML 97. Budeme se věnovat především způsobu použití senzorů a spoluprací VRML prohlížečů se skripty napsanými v některém podporovaném skriptovacím jazyce, typicky JavaScriptu.

V dnešní části seriálu o grafických formátech a metaformátech si vysvětlíme význam zvukových zdrojů umisťovaných do trojrozměrných scén popsaných jazykem VRML. Dále se seznámíme s takzvanými senzory a jejich nezastupitelnou rolí při tvorbě virtuálních světů, které díky nim získávají interaktivitu.

V dnešní části seriálu o grafických formátech a metaformátech dokončíme téma texturování a uvedeme si tří okomentované demonstrační příklady s tělesy složenými z rovinných plošek. Později si také ukážeme, jakým způsobem je možné ve VRML souborech pracovat s multimédii, především se zdroji zvuku.

Texturování, neboli nanášení obrázků na povrch 3D objektů, tvoří nedílnou součást moderních metod zobrazování 3D scén. Z tohoto důvodu je texturování podporováno i v jazyce VRML, a to dokonce ve více variantách: texturu je možné mít uloženou přímo ve VRML souboru, v externím obrázku nebo jako animaci.

V dnešní části seriálu o grafických formátech a metaformátech se budeme zabývat problematikou šablonování, což je jeden ze způsobů tvorby trojrozměrných těles. Šablonování je ve VRML souborech možné specifikovat v uzlu typu Extrusion, jehož použití si ukážeme na několika demonstračních příkladech.

V dnešní části seriálu o zajímavých grafických formátech a metaformátech si řekneme, jakým způsobem je možné v jazyce VRML 2 nadefinovat tělesa vytvořená pomocí takzvaných výškových polí (height field). Také si ukážeme význam normálových vektorů při specifikaci povrchu tělesa a způsob jejich změny.

Ve VRML je možné kromě základních těles jako krychle, koule, kužel a válec vytvářet i složité objekty pomocí takzvaných množin plošek (face set). Tvůrci VRML nezapomněli ani na podporu plošné vektorové grafiky, drátových modelů a také množin bodů, které lze využít při tvorbě částicových systémů.

Většina fotografů vám řekne, že vedle kompozice celého snímku je důležité i správné osvětlení. Totéž platí pro trojrozměrné scény vytvářené na počítači. Aby vynikla prostorovost trojrozměrných scén, je nutné je správně nasvítit. Ve VRML je možné použít tři typy světel, které si dnes podrobně popíšeme.

V dnešním článku si na pěti příkladech ukážeme tvorbu trojrozměrné scény v jazyce VRML verze 2. Druhá verze tohoto jazyka přinesla zásadní změny jak v samotném způsobu zápisu objektů, tak i ve skriptování. Pro tvorbu scén si prozatím vystačíme s libovolným textovým editorem a prohlížečem VRML souborů.

V dnešním článku o grafických formátech se začneme zabývat jazykem VRML, což je jazyk určený pro popis trojrozměrných scén i aktivních objektů použitých v aplikacích virtuální reality. VRML se však postupem času stal i formátem často používaným pro přenos trojrozměrných dat mezi různými aplikacemi.

V dnešní části seriálu o grafických formátech a metaformátech si na několika příkladech napsaných v jazyce C ukážeme, jak je možné pracovat s metasoubory typu EMF (Enhanced Windows Metafile). Některé programy pro Linux podporují formát WMF, ale EMF už ne, takže je zde stále prostor pro vylepšování.

V dnešním článku o grafických formátech si popíšeme nástupce WMF, kterým je grafický metaformát nazvaný jednoduše EMF. V tomto formátu, který byl primárně vytvořen pro potřeby třicetidvoubitových operačních systémů MS Windows, je již možné pracovat s cestami a bitmapami nezávislými na zařízení.

V dalším článku si ukážeme, jak načítat data - informace o uloženém obrázku z metaformátu WMF. Při práci v operačním systému MS Windows se o načítání WMF souborů nemusíme starat, protože stačí použít funkci z WinAPI, ovšem na jiných systémech je nutné data ve WMF souborech vhodně analyzovat a zpracovat.

V dnešním článku si popíšeme metaformát WMF a částečně i EMF. Navzdory svému jménu a primárnímu určení se tyto grafické metaformáty rozšířily ze své domovské platformy MS Windows i na další operační systémy, včetně Linuxu. Dokonce i ve formátu EPS lze ukládat obrázky právě ve struktuře shodné s WMF.

V již desátém článku orientovaném na téma SVG si ukážeme použití programových skriptů vytvářených zejména v JavaScriptu na několika praktických příkladech. Zaměříme se především na způsob zpracování událostí, popis atributů objektu event a také o dvou metodách vhodných pro získání referencí na grafické objekty.

V dnešním článku si popíšeme vytváření animací pomocí skriptů (naprogramovaných například v JavaScriptu) a řízení vzhledu dokumentu s využitím DOM. Pomocí těchto technik lze naprogramovat i velmi složité animace, reagovat na akce prováděné uživatelem či dokonce vytvářet celé intranetové aplikace.

V dnešní části seriálu o grafických formátech a metaformátech si ukážeme, jakým způsobem je možné v grafickém vektorovém formátu SVG (Scalable Vector Graphics) vytvářet složitější animace založené na skládání lineárních transformací a také pohybu objektů po zadaných křivkách.

Animace a s ní související podpora skriptování, například s využitím populárního a rozšířeného JavaScriptu, dělají z grafického formátu SVG velmi flexibilní médium pro tvorbu vektorových animací. Ty se vyznačují poměrně malým objemem dat a vysokou vizuální kvalitou. V tomto ohledu se SVG vyrovná i známému Flashi.

Gradientní výplně a grafické objekty reprezentující text tvoří důležitou a nenahraditelnou součást mnoha vektorových obrázků. Proto si v dnešním článku ukážeme, jak je možné v souborech typu SVG použít lineární i radiální gradientní výplně a jak se do SVG obrázků vkládají grafické objekty s textem.

V dnešním článku si řekneme, jakým způsobem je možné v souborech typu SVG (Scalable Vector Graphics) specifikovat barvu a styl výplně. Kromě toho si ukážeme změnu stylu obrysové čáry a vytváření značek (symbolů) na koncích úseček. Tyto značky je možné použít například při vytváření šipek a podobných objektů.

V dnešním článku si popíšeme způsob změny vizuálních vlastností cest a základních geometrických tvarů uložených v souborech ve formátu SVG. Také si řekneme, jak lze cesty i základní geometrické tvary seskupovat do uzlů a specifikovat vlastnosti pro všechny objekty, které jsou v těchto uzlech seskupené.

Dnes bude popsán zápis informací o základních geometrických tvarech (basic shapes) do souborů typu Scalable Vector Graphics (SVG). Základní geometrické tvary jsou alternativou k minule popsaným cestám, kterou je možné použít při tvorbě animací či při požadavku na zachování informací o nástrojích použitých v editoru.

V dnešní části seriálu o grafických formátech a metaformátech si podrobněji popíšeme způsob zápisu cest ve výkresech uložených ve formátu SVG (Scalable Vector Graphics). Ukážeme si použití kvadratických a kubických Bézierových křivek, úsečkových segmentů i segmentů složených z eliptických oblouků.

V dnešním článku se budeme zabývat dalším známým a k tomu velmi dobře navrženým vektorovým formátem. Jedná se o souborový formát nazvaný Scalable Vector Graphics, neboli SVG, který je založený na značkovacím jazyku XML. Uvidíme, že díky dobře navržené struktuře může být i XML soubor překvapivě malý.

V dnešní části seriálu o grafických formátech a metaformátech dokončíme popis PostScriptu. Budeme se věnovat pokročilejší práci s rastrovými obrázky - ukážeme si jejich zrcadlení, otáčení, změnu velikosti a mimo jiné také ořezání libovolné části rastrového obrázku pomocí nadefinované cesty.

PostScript patří mezi takzvané grafické metaformáty, což znamená, že je v něm možné ukládat jak vektorovou, tak i rastrovou grafiku. V předchozích článcích jsme se zaměřili především na popis způsobů práce s vektorovou grafikou, dnes se podíváme na vkládaní bitmapových obrázků do PostScriptových dokumentů.

V předchozích článcích o jazyce PostScript jsme si řekli, že se při zápisu programů neobejdeme bez použití zásobníku. Ve skutečnosti se v PostScriptu pracuje celkem s pěti zásobníky, jejichž význam si vysvětlíme. Také si povíme, jak pracovat se slovníky, které jsou v jiných jazycích známé pod názvem asociativní pole či hashmapy.

V dnešní části seriálu o grafických formátech a metaformátech si řekneme, jakým způsobem je možné do programů vytvářených v PostScriptu vkládat podmínky a smyčky, které zajišťují opakovaný běh určité části programu. Uvidíme, že možnost tvorby programových smyček může vést k radikálnímu snížení velikosti celého souboru a také k tvorbě obrázků a diagramů, které by se ručně (či pomocí vektorového grafického editoru) vytvářely složitým a zdlouhavým způsobem.

Minule jsme si uvedli základní informace o tom, jakým způsobem je možné v PostScriptu zapisovat jednoduché programy. Dnes si ukážeme způsob definice nových příkazů pomocí operátoru "def", který je použit jak pro vytváření nových procedur/funkcí, tak i pro zkrácení délky výsledného souboru.

PostScript se od všech dříve popisovaných formátů liší především v tom, že je v něm možné psát jednoduché i poměrně složité a rozsáhlé programy (například každé písmeno je v PostScriptovém fontu popsáno jednou procedurou). V dnešním článku si proto zevrubně programovací jazyk PostScriptu popíšeme.

Tentokrát bude popsán význam souřadnicových systémů v PostScriptu, včetně transformační matice, ukážeme si, jak je možné pomocí změny matice tisknout písmo či jiné objekty, a to v různém směru či zvětšení. Také si předvedeme způsob vyplňování cest, včetně změny způsobu výplně.

Dnes si ukážeme, jakým způsobem je možné měnit styly vykreslovaných cest, tj. tloušťku a barvu čar i způsob napojení sousedních čar na sebe, včetně různých stylů ukončení cest. Také si přiblížíme problematiku PostScriptových fontů a vykreslování písma.

V dnešní části seriálu o grafických formátech a metaformátech si řekneme, jak je možné vykreslovat v PostScriptu křivky. Vysvětlíme si význam Bézierových kvadratických a kubických křivek, které jsou použity mimo jiné i v definicích znaků PostScriptových a TrueType fontů.

V předchozím článku jsme si uvedli základní informace o grafickém metaformátu PostScript. Dnes si ukážeme, jak je možné v PostScriptu vykreslovat jednoduché vektorové obrázky. Uvidíme, že se i přes rozsáhlost jazyka nejedná o nic složitého. Výsledné soubory je možné si prohlédnout přímo na obrazovce počítače či vytisknout.

Dnes začneme s popisem známého a velmi úspěšného metaformátu nazvaného PostScript. Ten ve své podstatě není pouhý vektorový a bitmapový formát, ale plnohodnotný programovací jazyk, což nebývalým způsobem rozšiřuje jeho schopnosti nad rámec běžných souborových formátů.

V dnešním článku bude popsán další vektorový souborový formát používaný především v programech typu CAD. Jedná se o velmi jednoduchý a přitom snadno zpracovatelný formát nazvaný SLD (Slide), který - podobně jako dříve popsané formáty DXF a DXB - navrhla firma AutoDesk pro svůj světoznámý produkt AutoCAD.

Dnes si popíšeme binární variantu již popsaného vektorového formátu DXF. Zjednodušená binární varianta DXF se označuje zkratkou DXB, neboli Drawing Binary Interchange File Format, její modernější verze pak jako Binary DXF. Tento souborový formát je používán zejména z důvodu rychlejšího načítání a menšího objemu výsledného souboru.

Dnes se budeme věnovat populárním a často používaným grafickým formátům a dokončíme popis známého vektorového formátu DXF. Na praktickém příkladě si ukážeme způsob načtení a interaktivního zobrazení trojrozměrných modelů uložených v tomto formátu.

V dnešním článku si na praktickém příkladu ukážeme, jak je možné načítat a zobrazovat 2D výkresy (resp. jejich části), které jsou uloženy ve vektorovém formátu DXF. Výsledkem naší snahy bude jednoduchý prohlížeč DXF souborů využívající pro vykreslování všech grafických entit multiplatformní knihovnu OpenGL.

V dnešním článku o grafických formátech si podrobněji vysvětlíme způsob rozdělení souborů typu DXF do jednotlivých sekcí. Také si řekneme, které grafické entity je možné použít v dvourozměrných výkresech i prostorových (trojrozměrných) modelech uložených do tohoto vektorového souborového formátu.

V dnešním článku se budeme zabývat vektorovým formátem nazvaným DXF neboli Drawing Interchange File Format. Tento formát, který byl navržený firmou AutoDesk, je používán zejména při přenášení grafických informací mezi různými systémy typu CAD, vektorovými editory, modelovacími programy a podobně.

V dnešním pokračování seriálu, ve kterém si popisujeme oblíbené a často používané grafické formáty, si na příkladu ukážeme, jak je možné programově zpracovat soubory typu HPGL/PLT, ve kterých bývají uloženy vektorové výkresy. Vytvoříme jednoduchý prohlížeč tohoto formátu využívající pro zobrazení grafickou knihovnu OpenGL.

V dnešním článku se budeme zabývat vektorovým formátem nazvaným HPGL, neboli Hewlett-Packard Graphics Language. Tento formát byl v minulosti určen především pro ovládání perových plotterů, dnes se však stal velmi jednoduchým formátem, který je možné použít při předávání dat mezi různými graficky orientovanými aplikacemi.

V předchozích článcích jsme si popsali nejpopulárnější rastrové formáty, včetně "internetových" formátů GIF, PNG a JPEG/JFIF. Dnešní díl bude pojednávat o další velké skupině grafických formátů, které se nazývají vektorové formáty. Jedná se o soubory, ve kterých je grafická informace popsána pomocí geometrických objektů.

V dnešním článku dokončíme část věnovanou rastrovým, tj. bitmapovým či pixmapovým grafickým formátům. Popíšeme si strukturu jednoduchých rastrových souborů typu WBMP (Wireless Bitmap), který je používán především na mobilních zařízeních, a také formátu IMG (Image) firmy Alias Research.

V dnešním článku si ukážeme interní strukturu obrazového formátu ICO, ve kterém jsou ukládány ikony primárně používané především v operačních systémech Microsoft Windows. V posledních několika letech se však tento formát rozšířil i na webu ve formě ikon umístěných u bookmarků a titulkových lišt oken (takzvané favicon).

Dnes dokončíme část věnovanou známému grafickému formátu JFIF/JPEG. Řekneme si základní informace o progresivním režimu kódování a dekódování obrázku typu JPEG a také o tom, jakým způsobem mohou být do formátu JFIF/JPEG zahrnuty informace uložené podle EXIF. Řeč bude i o kompromitujících informacích, které se mohou v EXIF objevit.

V dnešním článku si ukážeme, jakým způsobem je možné vyčíst základní informace ze souborů typu JFIF/JPEG. Způsob načítání informací bude ukázán na dvou demonstračních aplikacích napsaných v programovacím jazyku C. První aplikace slouží k výpisu všech značek, druhá aplikace již dokáže načíst a vypsat údaje z hlavičky obrázku a tabulek.

V dnešním článku si ukážeme, jak vypadá vnitřní struktura souborů typu JFIF (JPEG Format Interchange File), které se většinou označují pouze jako soubory typu JPEG. Řekneme si, jakým způsobem je strukturovaná hlavička souborů JFIF/JPEG a jaké nejdůležitější značky (markers) se mohou v souborech tohoto typu vyskytovat.

V dnešní části seriálu, ve kterém se věnujeme popisu populárních souborových formátů, si ukážeme, jakým způsobem jsou v souborech typu JFIF/JPEG zakódovány kvantované DCT složky. Zaměříme se především na Huffmanovo kódování, protože druhý typ kódování (aritmetické) není ve většině aplikací ani obrázků JPEG použit.

Dnešní část seriálu pojednává o tom, jakým způsobem se zpracovávají číselné koeficienty po jejich diskrétní kosinové transformaci (DCT) z časové/prostorové oblasti do oblasti frekvenční. Jedná se o funkční blok, ve kterém se provádí takzvaná kvantizace DCT koeficientů a jejich následná linearizace do proudu bytů.

V dnešním článku ze série věnované popisu známých a v praxi často používaných grafických formátů si prakticky ukážeme způsob výpočtu diskrétní kosinové transformace (DCT), který se provádí při komprimaci obrazových dat podle specifikace JPEG, ale i mnoha dalších formátů, včetně MPEG 1-4.

V dnešním článku si ukážeme, jakým způsobem je možné prakticky provést transformaci barev z barvového prostoru RGB do YCbCr, který je interně používán při komprimaci pomocí standardu JPEG. Také si podrobněji popíšeme způsob podvzorkování barvonosných složek v barvovém prostoru YCbCr a vliv tohoto podvzorkování na vizuální kvalitu výsledného obrázku.

V dnešním článku se budeme zabývat vysvětlením posloupnosti operací, které jsou prováděny s obrazovými daty při ztrátové kompresi JPEG. Jedná se o funkční bloky provádějící transformaci barev, podvzorkování barvonosných složek, diskrétní kosinovou transformaci, kvantování DCT koeficientů a konečně zakódování kvantovaných koeficientů.

V dnešní části seriálu věnovaného známým grafickým formátům se již začneme zabývat další velmi populární a často využívanou skupinou rastrových grafických formátů. Jedná se o formáty využívající ztrátovou komprimaci, mezi něž patří zejména známý formát JPEG (JFIF) a jeho následníci (JPEG 2000, LDF, LWF apod).

Dnešní část seriálu o grafických formátech je věnována čtveřici velmi jednoduchých rastrových formátů, které mají svůj původ na Unixových systémech. Jedná se o formáty PBM, PGM, PPM a PAM. V současnosti se s těmito formáty můžeme setkat v mnoha aplikacích, ve kterých slouží jako prostředek pro úschovu rastrových obrázků.

V dnešní části seriálu věnovaného grafickým formátům dokončíme popis struktury souborů typu PCX. Ukážeme si, jakým způsobem je prováděna komprimace pomocí algoritmu RLE, porovnáme účinnost této komprimační metody s dalšími bezeztrátovými metodami a také si předvedeme programové kódy určené pro čtení i zápis obrázků typu PCX.

Dnešní článek je věnován již notně zastaralému, ale stále používanému formátu, který se nazývá PCX. Jedná se o formát využívající jednoduchou bezeztrátovou komprimaci založenou na algoritmu RLE. Na PCX je jasně patrná nekoncepčnost návrhu a závislost prvních verzí tohoto formátu na použitých grafických kartách, resp. jejich videorežimech.

V dnešním článku dokončíme popis grafického formátu TGA. Ukážeme si interní strukturu hlaviček typických souborů typu TGA - černobílých obrázků, obrázků s barvovou paletou, hi-color obrázků a konečně i obrázků plnobarevných. Také si popíšeme jeden z podporovaných způsobů komprimace rastrového obrazu - kódování RLE.

V dnešním článku si popíšeme další oblíbený grafický formát. Jedná se o formát nazývaný Targa (TGA), který je mezi programátory oblíben zejména díky velmi jednoduché a snadno dekódovatelné struktuře. Historicky se také jednalo o jeden z prvních grafických formátů, který i na obyčejná PC přinesl true color grafiku.

V dnešním článku si nejprve uvedeme výpis aplikace, která slouží pro získání základních informací o struktuře souboru typu BMP. Dále si ukážeme, jakým způsobem jsou uložena obrazová data v BMP souborech a předvedeme si strukturu BMP souborů používaných v OS/2 a nové hlavičky BMP začleněné do API Windows 95 a Windows 98.

V dnešním článku o grafických formátech si popíšeme formát, který je sice často používaný, ale mezi programátory i znalými uživateli je hned z několika důvodů neoblíbený. Jedná se formát BMP ve verzi pro Microsoft Windows, přičemž formát s podobnými vlastnostmi existuje i ve variantě pro OS/2.

V závěrečné části našeho krátkého seriálu, ve kterém se zabýváme populárním grafickým formátem PNG, si popíšeme zbývající důležité chunky. Probereme si zejména ty, které se týkají barvových profilů a ukládání textových metainformací o obrázku.

V páté části seriálu, ve kterém popisujeme populární grafický formát PNG, si ukážeme způsob zabezpečení chunků pomocí CRC. Dále si pomocí jednoduché aplikace pro výpis všech chunků v souboru typu PNG vysvětlíme význam chunků bKGD, tIME, pHYs a sCAL.

Ve čtvrté části seriálu, ve kterém popisujeme populární webový grafický formát PNG, si vysvětlíme, jakým způsobem je možné využívat řádkové filtry a jak se pomocí nich dá v některých případech zvýšit účinnost komprimace obrázků.

V dnešním pokračování seriálu o populárních grafických formátech si ukážeme a také podrobněji popíšeme binární strukturu jednoduchých obrázků typu PNG. Bude se jednat o obrázky s barvovou paletou, obrázky uložené ve stupních šedi a konečně i o plnobarevné (truecolor) obrázky bez alfa kanálu i s alfa kanálem.

V dnešním pokračování seriálu o populárních grafických formátech si ukážeme, jak vypadá interní struktura grafického formátu PNG. Popíšeme si hlavičku PNG, formát jednotlivých chunků (neboli pojmenovaných datových bloků) a také to, jak jsou jednotlivé chunky uspořádány ve výsledném souboru typu PNG.

Na četná přání čtenářů dnes navazujeme na krátký seriál věnovaný grafickému formátu GIF a budeme pokračovat v popisu dalších populárních a často používaných grafických formátů. Dnešní část bude věnována pravděpodobně nejpovedenějšímu binárnímu grafickému formátu současnosti, který se nazývá PNG.