Popis tématu

Bakalářská práce v programu, specializaci Ostatní / Nespecifikováno.

Vývoj knihovny pro interpretaci jazyka PostScript

TODO zadání je třeba kompletně přepracovat

1. Seznamte se s jazykem PostScript.
2. Navrhněte základní knihovnu pro interpretaci jazyka PostScript bez podpory grafiky a případných komplikovanějších prvků.
3. Implementujte navrženou knihovnu.
4. Klíčové části knihovny vhodně pokryjte unit testy.
5. Vytvořené řešení kriticky zhodnoťte.

********
Motivace: Zatímco pro PDF existují v Javě knihovny typu PDFBox, pro PostScript
pravděpodobně neexistuje použitelná knihovna, která by se dala snadno zakomponovat
do sázecího systému a umožnila tak např. konverzi postscriptového dokumentu do
výstupu ve formátech jako AFP, PCL nebo PDF. Cílem této práce je vytvořit základ
pro takovouto knihovnu.

Zásady pro vypracování:

1. Seznamte se s jazykem PostScript, zkuste vytvořit sadu testovacích dokumentů,
naučte se pracovat s postscriptovou tiskárnou a dokumenty vytiskněte. Také zkuste
posbírat příklady postscriptových dokumentů z praxe.

3. Implementujte lexikální analyzátor jazyka PostScript v jazyce Java. Návrh
přizpůsobte předpokládanému způsobu budoucího použití. Přiklady použití jsou
např. vyrenderování grafického výstupu nebo překlad postskriptu do PDF. Pro
implementaci můžete použít nástroje typu JLex, pokud uznáte za vhodné.
- Vstupem bude nejspíš InputStream.
- Výstupem bude vhodný interface na způsob visitor-patternu - inspirace Lexem.

4. Implementujte low-level interpret jazyka PostScript. Tato část by měla správně
pracovat se zásobníkem a stavovými proměnnými. Také by do budoucna měla počitat
s různými možnostmi použití, např. konverze postscriptu do PCL nebo AFP.
- Vstupem bude program - přicházející tokeny
- Výstupem bude nejspíš volání nějakého vhodně nadefinovaného interfacu.

5. Při vývoji nezapomeňte na tvorbu unit-testů. Všechny části kódu by měly být rozumně
pokryté testy.

6. Vytvořte jednoduchý debugger. Ten by měl zobrazovat program (přicházející tokeny),
stav zásobníku a proměnných, dále umožňovat krokování programu (ideálně se i vracet zpět)
a měl by počítat s budoucím zobrazením renderovaného výstupu (toto asi hlavně zohlednit
při návrhu UI, aby to nebyla v budoucnu moc velká změna).

--- Další kroky podle časových možností - neodhadnu dopředu obtížnost ---

7. Implementujte sémantiku provádění jednotlivých příkazů - renderování grafického
výstupu. Výstupem tohoto kroku by mělo být volání interfacu podobného Graphics2D.
Současně implementujte adaptér na Graphics2D a vytvořte integrační test, který prakticky
ověří správnost renderování.

8. Vytvořte jednoduchý prohlížeč postscriptových dokumentů, případně rozšiřte debugger
o zobrazení výstupu.

Použité nástroje:
- Zdrojový kód v GITu
- Buildování pomocí Mavenu
- Jazyk Java, verze 11
- Testovací frameworky JUnit, Mockito
- Pro UI pravděpodobně Swing nebo JavaFX (použití AWT je vhodné)
- Případné další knihovny konzultovat

Téma vypsal: Ing. Richard Lipka, Ph.D. (UN 306)

Externí téma:
  • Firma (kontaktní osoba) je technickým konzultantem,
  • Kontaktní osoba: RNDr. Jaromír Dobrý, Ph.D.,
  • Firma: KadeL,

Vypsáno pro akademický rok 2024/2025 dne: 2024-09-09

Zadáno komu: Vojtěch Brázda (Rezervované)

Aktualizováno 0