Martin Mareš
Říjen 2003: specifikace, první hrubé rozdělení práce.
Listopad 2003: volba programovacího jazyka, pomocných nástrojů (CVS, Doxygen, ...). Studium grafických formátů, knihovny Guile. Návrhy chování GUI. Návrhy datových struktur kernelu. Volba podporovaných grafických objektů a operací s nimi.
Prosinec 2003: Začátek psaní programového kódu. Volba konvencí pro psaní kódu. Ujasňování představ o grafických objektech a operacích. Hledání vhodných algoritmů pro propagaci změn po transformaci objektu k závislým objektům. Návrh použití kaskádových stylesheetů pro vlastnosti a styl objektů.
Leden 2004: Návrh fungování undo history. Rozhodnutí použít transakční mechanismus pro změny datových struktur kernelu.
Únor - březen 2004: Upřesňování podoby datových struktur kernelu. Volba reprezentace závislostních vztahů mezi grafickými objekty. Ujasňování vzhledu a chování GUI.
Duben - květen 2004: Psaní kódu. Implementace velké části geomlibu, některých datových struktur kernelu, kostry GUI. Návrh vykreslovátka. Propojení schemové knihovny s kernelem, přidání schemové konzole do GUI.
Červen - září 2004: Prázdniny.
Září - říjen 2004: Implementace většiny zbývajících datových struktur v kernelu. Propojení vykreslovacího mechanismu s kernelem a GUI. Implementace RTrees jako pomocné struktury v geomlibu.
Geometrická knihovna je nezávislá na ostatních částech projektu. Je implementován Jenkins-Traubův algoritmus na hledání kořenů polynomů n-tého stupně, operace s racionálními Bézierovými křivkami (počítání průsečíků, hledání nejbližšího bodu na křivce, počítání délky, lineární afinní transformace...) a s posloupnostmi Bézierových křivek. Dále je implementována vyhledávací struktura v rovině R*-tree.
V kernelu je hotová většina základních datových struktur: objekty pro podporované grafické entity, knihovní objekty, dokumenty a knihovny. Základ pro reprezentaci závislostních vztahů. Hashovací tabulka pro uchovávání řetězců. Je implementován transakční mechanismus změn datových struktur a ošetření výjimek, víceúrovňově undo a redo. Mechanismus hooků jako nástroj pro oznámení změn ostatním vrstvám.
Vykresluje všechny grafické objekty, ale zatím jednoduše a bez ohledu na styl. Automaticky se překresluje při změnách objektů v kernelu. Podporuje zoom, afinní transformace (rotace, posun, ...). Udržuje si bounding box označených objektů.
Automaticky se generují bindings pro scheme. Z příkazové řádky programu je možné pracovat s objekty a volat některé funkce kernelu pomocí syntaxe jazyka scheme.
V GUI byla vytvořena základní kostra pro používání dosud implementovaných funkcí kernelu. Vytvořena okna pro zobrazení objektů, universe browser (sloužící k zobrazování obsahu a ovládání datových struktur), undo history. Obecný mechanismus pro vytváření dynamických menu a toolbarů reagujících na aktuální stav datových struktur a označených objektů. Dialog pro výběr barvy.
Geomlib: Práce s oblastmi ohraničenými množinami Bézierových křivek (zejména logické operace), generování obrysu křivky nakreslené nebodovým perem (tzv. outline), aproximace Bézierových křivek pomocí jednodušších objektů, interpolace bodů.
Kernel: Zbývá dokončit implementaci závislostních vztahů mezi objekty a propagace změn a vlastností. Podpora instancí knihovních objektů, složené objekty (množiny cest).
Vykreslovací mechanismus: Vykreslování podle nastavených stylů: barvy, tloušťka čáry, pattern, ... Různé vykreslovací módy (jednoduchý, rozšířený o antialiasing, ...). Napojení na různé vykreslovací systémy (XRender, OpenGL).
Scheme: ovládání GUI ze schemové příkazové řádky, iterakce s GUI.
GUI: zadávací mechanismus, interakce se Scheme, spousta oken.
Dále zbývá implementovat import a export, provázání s TeXem. Program otestovat a odladit, napsat dokumentaci a manuál. Přáním členů projektu je odevzdat projekt na podzim 2005, přičemž asi za půl roku chceme mít program dopsaný a zbytek času věnovat testování, ladění a dokumentaci. Projekt by mohla ohrozit vážná indispozice některého člena týmu.