← Zpět na přehled PGA / 01 Úvod

Základy grafických aplikací
a metodika pluginů

BI-PGA · přednáška 01

Webová adaptace GRAFIT · 8. 10. 2026
40 snímků, původní obrázky a čtyři interaktivní doplňky.

Dobové hodnocení a verze nástrojů jsou označené. Ukázky jsou modely v prohlížeči.

Jiří Chludil · podklad 2024/25 · PDF, strana 1 ↗

Co budeme v předmětu řešit

  • Rozšiřování 2D a 3D aplikací pomocí skriptů a zásuvných modulů.
  • Grafické postupy: transformace, konvoluce, osvětlovací modely a textury.
  • Datové struktury, modelování a další grafické algoritmy.

Jiří Chludil · podklad 2024/25 · PDF, strana 2 ↗

Co si vyzkoušíme na cvičeních

Praktický cíl

Naprogramovat rozšíření grafického editoru a zapojit vlastní algoritmus do jeho prostředí.

  • Zásuvný modul do Blenderu.
  • Zásuvný modul do GIMPu; v podkladu je zmíněný také Photoshop.

Jiří Chludil · podklad 2024/25 · PDF, strana 3 ↗

Sylabus: 3D část

  • Základy, historie, motivace a obecná metodika pluginů.
  • Blender: Python, metodika a programování pluginů.
  • Modelovací techniky a práce s prameny.
  • Osvětlování, texturování a realistický vzhled.
  • Datové struktury pro 3D grafiku.

Jiří Chludil · podklad 2024/25 · PDF, strana 4 ↗

Sylabus: 2D část a další témata

  • GIMP: metodika programování pluginů.
  • Výpočetní metody, konvoluce a filtry.
  • Metody zpracování obrazu.
  • AI, LLM a procedurální generování v grafice.
  • Tematická přednáška.

Jiří Chludil · podklad 2024/25 · PDF, strana 5 ↗

Literatura a dokumentace

Pracuj s konkrétní verzí

Aktuální dokumentace může popisovat jiné API než starý příklad. U kódu vždy uveď verzi aplikace.

Jiří Chludil · podklad 2024/25 · PDF, strana 6 ↗

Hodnocení: zápočet ve zdroji

  • Semestrální úlohy: rozšíření 2D i 3D editoru; obtížnost určuje body.
  • Ve zdroji maximálně 70 bodů za úlohy.
  • Prezentace řešení v SAGELab/ggLab: 1 bod.
  • Ve zdroji alespoň 35 bodů za úlohy, alespoň jedna 2D a jedna 3D úloha.
  • Součet alespoň 36 bodů včetně prezentace.

Archiv 2024/25

Tento snímek není závazné hodnocení pro současný semestr. Viz aktuální podmínky Courses ↗.

Jiří Chludil · podklad 2024/25 · PDF, strana 7 ↗

Hodnocení: zkouška ve zdroji

  • Ústní zkouška s písemnou přípravou.
  • Principy rozšiřování grafických aplikací.
  • Přehled algoritmů, postupů a struktur.
  • Ve zdroji nejvýše 30 bodů, nejméně 15 bodů.

Archiv 2024/25

Závazné současné podmínky jsou na Courses ↗.

Jiří Chludil · podklad 2024/25 · PDF, strana 8 ↗

Proč umět tvořit pluginy

  • Rychle naprogramovat něco užitečného v grafice.
  • Zpřístupnit svůj algoritmus ostatním.
  • Lépe využít grafický editor.
  • Využít znalost Pythonu.

Motivace autora

Specializovaná schopnost spojuje grafické algoritmy s reálným pracovním prostředím.

Jiří Chludil · podklad 2024/25 · PDF, strana 9 ↗

Temná strana rozšiřování

  • Dokumentace a nedostatek dobrých příkladů.
  • Rozdíly mezi verzemi Pythonu a aplikace.
  • Změny API při přechodu na novou verzi.
  • Ladění, vývojové nástroje a kompatibilita.

Doplnění k dnešnímu GIMPu

GIMP 3.0 byl vydán 16. 3. 2025. Staré příklady pro řadu 2.x vyžadují kontrolu či portování. Oficiální zpráva ↗

Jiří Chludil · podklad 2024/25 · PDF, strana 10 ↗

Proč v podkladu Blender

  • Autor porovnává Blender s 3ds Max a Mayou.
  • Zmiňuje cenu, dostupnost pro studenty a kvalitu pro výuku.
  • Cycles a Geometry Nodes.
  • Integrovaný editor a nasazování rozšíření.

Dobový autorský pohled

Srovnání a licence se vztahují k podkladu 2024/25; nejsou aktuálním ceníkem nebo univerzálním žebříčkem kvality.

Jiří Chludil · podklad 2024/25 · PDF, strana 11 ↗

Proč v podkladu GIMP

  • Autor porovnává GIMP a Photoshop: dokumentace, příklady, jazyky a nasazování.
  • Otevřený a dostupný editor je vhodný pro experimentování.
  • Podklad zmiňuje rozšíření pro Photoshop jako téma BP.

Dobový kontext

Původní závěry o Pythonu 2, cenách a kvalitě zachovává zdrojový text v Poznámkách. Pro dnešní vývoj ověř oficiální dokumentaci.

Jiří Chludil · podklad 2024/25 · PDF, strana 12 ↗

Teorie zásuvných modulů

Od algoritmu k použitelné funkci

Aplikace musí rozšíření najít, připravit jeho prostředky, předat mu data a bezpečně zpracovat výsledek.

  • Co aplikace dovolí rozšířit?
  • Kdy a jak plugin běží?
  • Kdo vlastní data a paměť?

Jiří Chludil · podklad 2024/25 · PDF, strana 13 ↗

Čtyři způsoby rozšíření

Zvol přístup a porovnej, co je potřeba změnit.

Způsob rozšíření

Makro

Sekvence existujících příkazů vyvolaná jedním příkazem.

Interaktivní doplněk GRAFIT; zjednodušené srovnání v terminologii této přednášky.

Jiří Chludil · podklad 2024/25 · PDF, strana 14 ↗

Makro: sekvence příkazů

Definice ze zdroje

Makroinstrukce představuje sekvenci příkazů jediným příkazem.

  • Výhody: jednoduché použití, urychlení práce, bez nutnosti programování a kompilace aplikace.
  • Omezení: obtížná parametrizace; v tomto modelu pouze skládá existující funkce.

Jiří Chludil · podklad 2024/25 · PDF, strana 15 ↗

Skript: program nad rozhraním

Princip

Program ve skriptovacím jazyce využívá funkce a rozhraní hostitelské aplikace.

  • Výhody: snadné použití, základní programování, bez kompilace aplikace.
  • Omezení ve zdroji: znalost jazyka a API, parametrizace a možnosti ladění.
  • Rozsah rozšíření závisí na tom, co hostitel zpřístupní.

Jiří Chludil · podklad 2024/25 · PDF, strana 16 ↗

Knihovna: integrace do aplikace

  • V pojetí zdroje rozšíření s přístupem ke zdrojovému kódu a kompilací aplikace.
  • Dobrá rozšiřitelnost, ladění a přesně definované rozhraní.
  • Vyžaduje vhodný jazyk/API, vývojové prostředí a znalost hostitele.

Rozlišuj pojmy

Knihovna a plugin se obecně nevylučují. Zde porovnáváme způsob integrace, ne příponu souboru.

Jiří Chludil · podklad 2024/25 · PDF, strana 17 ↗

Plugin: rozšíření bez přestavění hostitele

  • Bez kompilace celé rozšiřované aplikace.
  • Integrace do uživatelského rozhraní.
  • Jazyky a rozsah funkcí určuje dostupné API.
  • Vlastní vývojové prostředí a vyšší znalost programování.
  • Potřeba dobře znát rozhraní a data hostitele.

Jiří Chludil · podklad 2024/25 · PDF, strana 18 ↗

Přístupy lze kombinovat

  • Plugin umožňující skriptování.
  • Plugin implementovaný pomocí skriptovacího jazyka.

Jiří Chludil · podklad 2024/25 · PDF, strana 19 ↗

Jak staré jsou pluginy?

„Kdo je starší: přednášející, nebo zásuvný modul?“

Rozšiřování aplikací má delší historii než dnešní grafické editory.

Jiří Chludil · podklad 2024/25 · PDF, strana 20 ↗

Raná historie podle podkladu

  • Okolo 1970: EDT, textový editor na Unisys/UNIVAC.
  • 1986: SuperPaint pro Mac.

Jiří Chludil · podklad 2024/25 · PDF, strana 21 ↗

HyperCard a QuarkXPress

  • 1987: HyperCard.
  • 1987: QuarkXPress.

Jiří Chludil · podklad 2024/25 · PDF, strana 22 ↗

A co bitmapové editory?

Jiří Chludil · podklad 2024/25 · PDF, strana 23 ↗

Photoshop: chronologie ze zdroje

  • 1990: verze 1.0; zdroj uvádí Mac a pozdější Windows.
  • 1991: zdroj uvádí 2.5 a typy filter, import, export, format.
  • 1994 a 1996: další typy modulů a automatizace podle zdroje.
  • 2002: náhledy a velké formáty.
  • 2024: ve zdroji verze 25.

Převzatá chronologie

Data a číslování jsou reprodukcí historického podkladu; některá přiřazení vyžadují ověření. Nejde o aktuální verzi Photoshopu.

Jiří Chludil · podklad 2024/25 · PDF, strana 24 ↗

GIMP: zdroj a pozdější vývoj

  • Podklad sleduje verze 0.54, 0.99, 1.0, 2.0 a vývojovou řadu 2.99.
  • Ve zdroji 2024/25 je GIMP 3.0 ještě očekávaný.

Ověřený doplněk GRAFIT

GIMP 3.0 byl vydán 16. 3. 2025. Dnešní API tedy ověřuj v dokumentaci pro řadu 3, ne podle dobového „?“ v podkladu. Zdroj ↗

Jiří Chludil · podklad 2024/25 · PDF, strana 25 ↗

Kde jsou hlavní problémy?

Od hotového algoritmu k pluginu

Nestačí jen vypočítat výsledek. Je potřeba zapojit funkci do prostředí jiné aplikace.

  • Registrace a konfigurace.
  • Životní cyklus a předávání dat.
  • Uživatelské rozhraní, paměť a algoritmy.

Jiří Chludil · podklad 2024/25 · PDF, strana 26 ↗

Co je potřeba vyřešit

  • Typ modulu.
  • Konfigurace prostředků.
  • API hostitelské aplikace.
  • Životní cyklus.
  • Uživatelské rozhraní.
  • Management paměti.
  • Matematické a grafické funkce.

Jiří Chludil · podklad 2024/25 · PDF, strana 27 ↗

Typy pluginů bitmapových editorů

  • Filtr.
  • Import.
  • Export.
  • Souborový formát.
  • Výběr.
  • Výběr barvy.
  • Automatizace.

Jiří Chludil · podklad 2024/25 · PDF, strana 28 ↗

Konfigurace a registrace

  • Název, popis a autor.
  • Umístění v menu.
  • Verze a podporované formáty.
  • Parametry, rozsahy a výchozí hodnoty.
  • Režimy zpracování obrazu.
  • Omezení velikosti obrazu.

Jiří Chludil · podklad 2024/25 · PDF, strana 29 ↗

API: data a volání

Strukturální API

Hostitel a plugin si předávají struktury s poli, parametry a případně callbacky.

Funkcionální API

Plugin volá funkce hostitele; parametry mohou opět obsahovat struktury.

V praxi může jít o kombinaci obou přístupů.

Jiří Chludil · podklad 2024/25 · PDF, strana 30 ↗

Příklad struktury: řízení a obraz

Pole / pojemVýznam
abortProcCallback pro dotaz na přerušení.
progressProcCallback pro hlášení průběhu: aktuální index a celkový počet.
parametersHandle parametrů z nastavovacího dialogu.
imageSizeRozměry obrazu nebo výběru.
imageModeRežim obrazu, například RGB nebo CMYK.
filterRectOblast obrazu nebo ohraničení výběru.

Jiří Chludil · podklad 2024/25 · PDF, strana 31 ↗

Příklad struktury: paměť a kanály

Pole / pojemVýznam
maxSpaceKolik bajtů může plugin současně použít.
bufferSpacePlánovaná paměť pro interní buffery a tabulky.
planesPočet kanálů obrazu včetně alfy.
inLoPlane / inHiPlanePrvní a poslední vstupní kanál ke zpracování.
outLoPlane / outHiPlanePrvní a poslední výstupní kanál k zápisu.

Jiří Chludil · podklad 2024/25 · PDF, strana 32 ↗

Životní cyklus: hostitel volá plugin

Původní diagram pěti callbacků filtru a opakovaného zpracování oblastí
Originální schéma: kliknutím zvětši.

Interaktivní doplněk GRAFIT · model tří bloků

  1. Inicializace
  2. Příprava
  3. Start
  4. Pokračuj
  5. Konec
Čeká na hostitele.

Jiří Chludil · podklad 2024/25 · PDF, strana 33 ↗

Uživatelské rozhraní pluginu

  • Srozumitelné parametry a jejich rozsahy.
  • Zpětná vazba: co se změní a kdy se výsledek potvrdí.

Jiří Chludil · podklad 2024/25 · PDF, strana 34 ↗

Události a živý náhled

Model: nový kanál = clamp(původní + hodnota, 0, 255). Neměří vnímaný jas ani nevolá GIMP.

Vstup
Náhled

Náhled je zapnutý.

Původní schémata práce s náhledem

Jiří Chludil · podklad 2024/25 · PDF, strana 35 ↗

Paměť: celý obraz, nebo bloky?

Model: 4096 × 4096 px, RGBA8, dva pracovní buffery.

Celý obraz
128 MiB
Pracovní blok
16 MiB

0 / 8 bloků

Rozpočet nezahrnuje data hostitele, sousední halo, cache nebo paměť knihoven.

Původní ilustrace rozdělení obrazu

Jiří Chludil · podklad 2024/25 · PDF, strana 36 ↗

Odkud vzít grafické funkce

  • Vnitřní knihovny aplikace.
  • Externí knihovny.
  • Vlastní implementace.

Jiří Chludil · podklad 2024/25 · PDF, strana 37 ↗

Co si z přednášky odnést

  • Orientace v organizaci předmětu a jeho zdrojích.
  • Rozdíl mezi makrem, skriptem, knihovnou a pluginem.
  • Historický kontext rozšiřování aplikací.
  • Typ, konfigurace, API, životní cyklus, UI, paměť a algoritmy.

Kontrolní otázka

Kterou část řeší samotný algoritmus a kterou spolupráce s hostitelskou aplikací?

Jiří Chludil · podklad 2024/25 · PDF, strana 38 ↗

FIT výzva ze zdroje

„Chceme být FIT?“

Původní podklad navrhuje přesun na cvičení pěšky po schodišti společně s cvičícím.

Dobová poznámka: THA:1455 a T9:348. Nejde o dnešní rozvrh.

Jiří Chludil · podklad 2024/25 · PDF, strana 39 ↗

Závěrečná výzva ze zdroje

„Chceme být super FIT?“

Původní snímek navrhuje cestu po schodišti do 14. patra.

Konec původní přednášky. Zpět na Výuku · Původní PDF

Jiří Chludil · podklad 2024/25 · PDF, strana 40 ↗

Obsah přednášky

Poznámky

Původní text PDF