$Rev: 281 $
$Date: 2006-06-01 20:55:34 +0200 (čt, 01 VI 2006) $
$Author: pepca $

  TO DO:
  ======
- kdyz se udela chyba v interface, melo by to nahlasit nejakou srozumitelnou hlasku
  (jak se to vubec mohlo stat - jak se podarilo postavit sestavu se spatne
  zadanou zasuvkou?? - asi to editoval rucne)
- do Property prece jenom pridat nejakou informaci o atributech
- nejak vymyslet implicitni zasuvku Property
- inicializace CSG sceny - pryc z konstruktoru jisteho dialog-boxu
- identifikatory Interface by mely byt dovoleny lokalni i globalni (pozor na test rovnosti,
  nacitani z XML, apod.)
- StaticCamera: predelat parametry z Vector na standardni tvar
- Outline window: should appear in some always-visible position
- Piece.getReg() - melo by se nejak zajistit, aby se default registracni objekty
  mohly predefinovat v GUI (regdata.xml musi mit vetsi prioritu)
- ModuleGUIImproved: void miCode_actionPerformed() - udelat spravne cesty ke zdrojakum!
- Worker, Trigger: modalni, synchronni, asynchronni spousteni?
- MULTI_TEMPLATE: je to podezrele!
- RegDatabaseBasic: k cemu to je? Singleton pracujici s registracni databazi?
- InfoPlug: registry* -> register*
- HashMap*: predelat vsechny zbyvajici krome HashMapPlugs
- HashMap*: proc jsou to hasovaci mapy?? Kdo potrebuje ty klice?
  Nedal by se misto nich dat HashSet?
- InfoGroup: if ((superGroup.modules.getModule(ic.plugFrom.owner.key)) == null)
  Udelat z toho procedury!
- InfoPlug.isOpozite - a vubec vsechny "opozite"
- "aktual" -> "actual"
- klic "NEW" je podezrely - aspon z toho udelat konstantu!
- getPlug - pokud vraci InfoPlug, prejmenovat na getInfoPlug
- na takove pristupy: "info.nextInfo != null && info.nextInfo.get("NEW") != null"
  udelat zvlastni metody
- ModuleGUI.setModuleType: proc se tak jmenuje?
- CompositionGUIBasic.replaceModule - vypada to dost divne, zkontrolovat
- ZoomBasic: "pomer" -> "ratio"
- "ODLGUI"?
- GridBagConstraints - nemusi se vsude vytvaret extra instance!
- "GROUP" - udelat z toho konstantu
- pri vsech pristupech do resource pouzivat "getResource()"!
  (umi cist i z JAR archivu!)
- napojeni SVN na zdrojaky - do Javadoc komentaru
- zjistit, jak se da lepe pridat ikonka ke Swing-aplikaci
  (potrebovali bychom nekolik velikosti najednou)
- Undo/Redo - nelibi se mi tam "switch" - to si rika o objekty!!!
- InfoGroup.getCompositionState() - vracet flagy a oznacit to konstantami!
  Podobne i jinde!
- na nekolika mistech se mi zdalo, ze se rozhoduje o tom, ktere je to okno podle
  caption (misto toho nektery z prostredku OOP)!
- interface Worker - nesel by tady pouzit Trigger?
  Je nejaky duvod mit tyto dva ruzne protokoly?

  BUGS:
  =====
- kdyz v sestave menim jen polohu zasuvek, neulozi se!
- oznaceny modul (moduly) by se mel v seznamu sestavy presunout na takove
  misto, aby se prekresloval uplne nahore..
- v options.txt uz muzu rucne zadat polopruhlednou barvu, ale po otevreni
  a zavreni dialogu na barvy se alfa vzdycky prepise na 255..
  ColorModuleSelect
- jsou-li ModuleWidth a ModuleHeight pokazene, nekresli se spravne sestava
  (ta by asi mela byt dobre vzdy)

  LONG TERM (jsou tam i velmi stare nesmysly):
  =========
- ImageFunction pro Ray-tracing - dopsat a odladit
- valec, poloprostor
- textura sachovnice pro barvu, pruhy pro barvu
- textury: oddelit princip vypoctu od mechanismu variace oboru hodnot (tj. zvlast pruhy a zvlast
  modifikace barvy), funkce asi FunctionR2ToR ([u,v]->alpha)
- pro svetelne zdroje implementovat Property (a prip. pro dalsi objekty, ze kterych se
  sestavuje scena)
- udelat nejaky jednoduchy anti-aliasing (adaptivni jittering?)
- nejaky testovaci objekt na Brep
- implementovat FunctionR2ToR (nejake pekne vlnky - pro testy plovouciho horizontu)
- implementovat FunctionR2ToR2 (treba otoceni v provine - pro testy warpingu)
- implementovat FaceRender (primitivni jen pro vyplneni flat-shadingem)
- studentske objekty zaradit do sve hierarchie, ale zverejnovat pouze jejich .class a JavaDoc
  (udelat si na to nejake scripty, ktere by to automaticky mazaly z JaGrLib.jar a z exportovaneho
  zdrojakoveho stromu!)
- perzistence: Piece.serialLoad(), .serialSave() - zapis do textoveho streamu, v nem nezalezi
    na poradi jednotlivych objektu, nepouzit XML? Nebo JPython?
  + interface TextSerializable
  + pro I/O pouzivat Writer/Reader
  + jednotlive objekty jsou oznaceny identifikatorem (napr. jmeno tridy a cislo),
  + SerialManager se bude starat o zatim nevyresene odkazy (spoluprace s PieceRegistry)
  + verze, zpetna kompatibilita
  + aktualne zapojene plugy
  + vyvolavani metod objektu jako alternativa serializace (napr. nastaveni matice transformace)
- dodelat VEFDS.roundCoordinates (dokoncit i TrMatrix.planeTransform ?)
- interface pro radiacni metodu
- interface xxx: konfiguracni faktory - odhad (bez viditelnosti), presny vypocet: bod -> 1 plocha,
  bod -> vsechny plochy, plocha -> 1 plocha, plocha -> vsechny plochy
- interface yyy: a-priori deleni sceny na plosky, mezni FF, podle nespojitosti stinu
- interface zzz: hledani podobnych kousku obrazku - hledani v jednom referencnim snimku, ve dvou,
  ve vice? Hledani 1:1, 2:1, jiny pomer?
- interface.html: detaily slozitejsich koncepci v cestine (semantika RasterGraphics, VectorGraphics,
  BitMask, BinaryOperation, AlphaOperation, Brep, GeometrySearch, CSG, RayTracing, apod.)
- template.html: presny popis semantiky jednotlivych (zaregistrovanych) template - vlastne
  je to presnejsi popis k jednotlivycm uloham na zapocet
- klasifikacni objekt pro FloodFill (prebarvovani nebo barveni az k hranici), pro iteraci
  zadavat pres Property rozsah souradnic (nebo to vzit z RasterGraphics)
- prevodnik mezi RasterGraphics a SampleData
- class PieceInstance implements PieceReference: ukazatel na nejaky konkretni Piece
- class PieceLink: neprimy odkaz na Piece (Plug napojeny na tento Piece, na jiny Piece,
  obecne specifikovana cesta grafem, ..)
- z Pascalske unity Transformace prenest rutiny do TrMatrix (ztotozneni souradnych systemu)
- zjistit zbyle Eulerovy operace a napsat je do EulerOperators
- ? nadefinovat BrepTopo ? (bude to jen spojeni Brep a EulerOperators ?)
- metody Mesh: vymenovani Piece v Mesh za kompatibilni, spojovani celeho funkcniho Meshe,
  podivat se jeste jednou na vnejsi zasuvky
- bezici Piece (modalita)
- class Debug: singleton, behove hlasky (daji se vypnout), assert() apod.
- nejaka forma serializace: pouzit vestaveny interface Serializable? keyword: transient,
  writeObject(), defaultWriteObject() [NEBO Externalizable a ridit si to sam...]
- Properties: umi ulozit soubor "key = value" na disk (hierarchicky apod.)
- Piece: metoda pro vyvolani editacni procedury (maska, ktere procedury to umi
  a pak metody, kterymi se to vyvolava)
- klonovatelne Plugy
- JaGrLib/bugs/ skripty s automatickym odpovidanim, JaGrLib/faq.html
- GlyphGenerator: umi nakreslit jedno pismenko - vygenerovat ho ve vektorove reprezentaci
- BitMask s vyuzitim Javovske "BitSet"
- rychlejsi implementace RasterGraphics (vlastni vnitrnosti)

  DONE:
  =====
2.10.-21.10.2000 PE:
  - koncepce JaGrLib: pouzite knihovny (javax.swing, 2D knihovna), obecny datovy objekt,
    rastrovy a vektorovy format, hierarchie stavebnich kamenu (Piece), koncepce plug-inu,
    mereni rychlosti, thready
22.10.2000 PE:
  - doplnena sada prikazu vektoroveho formatu (podle PostScriptu)
  - rozepsany do detailu ruzne interface pro Piece
23.10.2000 PE:
  - detaily napojovani skladacky, Plug, Channel
  - presne zachazeni s interface
24.10.2000 PE:
  - deklarace trid Channel, Plug
  - prvni deklarace tridy Piece, zatim jen nejnutnejsi metody
  - deklarace nejdulezitejsich interface: BitMask, AlphaMask, Render, LineRender,
    LineXRender, CubicCurveRender, CubicCurveXRender
  - vyjimky: JaGrLibException, NotExecutableException, BadInterfaceException
25.10.2000 PE:
  - nakonfigurovan JMK a vylepsena konfigurace jEdit
  - sjednoceni JavaDoc komentaru, doplneni popisu "package"
  - ulohy na zapocty
  - doplneny konstruktory Plug
  - dodelat plugy do LineBresenham
  - WWW: zapocty.html do /~pepca/lectures/cv/, adresar /JaGrLib/, JaGrLib.jar do /JaGrLib/,
    odkazy z /~pepca/lectures/cv/index.html, hierarchie dokumentace do /JaGrLib/docs/
26.10.2000 PE:
  - ulohy: anti-aliasing pri kresleni tam, kde ho jeste nemam...
  - dodelany interface: CircleRender, CircleXRender, EllipseRender, EllipseXRender,
    EllipticArcRender, EllipticArcXRender, PolygonRender, PolygonFillRender, PolygonHashRender,
    FloodFillRender
27.10.2000 PE:
  - odkazovat se z JavaDoc do stromu zdrojaku (jak presne?)
28.10.2000 PE:
  - VectorCommand, VCommand (subroutine) - inner classes are concrete commands:
    NewPath, MoveTo, LineTo, ArcTo, RArcTo, CubicCurveTo, ClosePath, PushPath, PopPath,
    Stroke, Fill, Clip
  - interface VectorGraphics
  - doplneno Serializable do VectorCommand
  - interface BinaryOperation: konstanty pro setOperation()
  - BitMask: pridat tam setOperation ( XOR, PUT apod. )
29.10.2000 PE:
  - interface ValueTransferFunction
  - RasterGraphics: setOperation, setTransfer (definuje double operaci), setPixel, getPixel,
    putPixel, setHLine, getHLine, putHLine, setRectangle, getRectangle, putRectangle, setColormap,
    getColormap
  - doplneny JavaDoc popisy parametru
  - doplneny funkce get*() u interface BitMask a AlphaMask
  - doplneny funkce bitBlt() do BitMask a RasterGraphics
  - doplnit prikazy do VectorGraphics: setColor(color), setLineWidth(double), setLineStyle(enum),
    setFillStyle(enum), setLineCallback(executable), setFillCallback(executable)
  - interface StrokeCallback, FillCallback
  - pridat vsechny nove prikazy jako inner classes do VCommand
30.10.2000 PE:
  - interface TextRender (jeste na nem provedeny male zmeny), kerning
  - upraveny makefile.jmk
  - VCommand.CreateFont, .FontOrientation, .GetFont, .PutFont, .TextPath, .DrawText
  - ekvivalentni volani do interface VectorGraphics (i ty bez odezvy na vystupu - fontProperties(),
    textExtent(), getKern() apod.)
  - do VectorCommand pridat vyvolavani prikazu na VectorGraphics: execute()
  - 0.02 distribuce (2000/10/30)
31.10.2000 PE:
  - jBuilder 3.5 (pouziva JDK 1.2.2): projekt JaGrLib.jpr
  - soubor sun3.ms.mff.cuni.cz/JaGrLib/index.html doplnen o "Link summary"
  - zdrojaky se daji brouzdat na WWW
  - changes.html, news.html
 1.11.2000 PE:
  - BitMask.begin() a .end(): pro vykreslovani atomickych vystupu (cara, oblouk, glyph, ..)
  - doc.bat: vylepseny index "-splitindex"
  - pack.bat: pakovaci script - vytvori JaGrLib.jar, class.jar, docs.jar
  - class Template - novy predek Piece (zmena pristupovych prav, name, description). Mustr,
    podle ktereho se budou dat hledat kompatibilni Piece
  - Template.isCompatible(Template)
  - Plug.isCompatible(), Template.isCompatible(), Template.findPlug()
 5.11.2000 PE:
  - Piece.newPiece() - abstract Piece-factory routine
 6.11.2000 PE:
  - class TemplateChannel: edge type for Mesh
  - class Mesh (potomek Piece): umi v sobe napojovat nekolik Piece dohromady - je to takovy
    maly graf, kde jsou jednotlive uzly definovany pomoci Template (a tudiz se daji pozdeji
    vymenovat)
  - uz Template implementuje Serializable (ale neukladaji se channels)
  - interface Pen, SolidPen, Brush, SolidBrush
  - RasterImage: zatim jen pro RGB obrazky (BufferedImage)
  - RasterGraphics: mensi zmeny (zatim jsem dal pryc putRectangle, mozna ho pozdeji vratim)
 7.11.2000 PE:
  - interface BitMaskEnumerator (a BitMask.enumerator())
  - class XTransitionList: X-transition list (zatim umi jen XOR) vcetne enumeratoru
  - class SolidColorPen (BitMask, Brush -> RasterGraphics) "vybarvovac"
  - prvni testovaci hlavni program: Main (testuje nahodne usecky kreslene Bresenhamovym
    algoritmem)
  - zapisovani BufferedImage do JPEG souboru (com.sun...)
  - Channel.connect()
  - opraven LineBresenham (spatny update promenne "D")
  - 0.03 distribuce (2000/11/07)
 8.11.2000 PE:
  - jBuilder 4.0 (pouziva JDK 1.3)
  - RasterGraphics.getBufferedImage()
  - opraveny chyby v JavaDoc u com.sun.image.codec.jpeg
  - zaktualizovan makefile.jmk a upraveny doc.bat a pack.bat
  - doplneny zapocty.html
 9.11.2000 PE:
  - rozsiren interface ValueTransferFunction: aby se dal pouzit i pro barevnou kvantizaci
  - interface BitStream, ColormapStore, Order2D, QuadTree
  - jenom kostra interface: EntropyCodec, EntropyHistogram
12.11.2000 PE:
  - interface EntropyCodec, EntropyHistogram
20.11.2000 PE:
  - Channel improvements: interface Channel (multi-grafova hrana)
21.11.2000 PE:
  - interface Channel a vsechny souvisejici zmeny (Template, Piece, Plug, konkretni Piece)
22.11.2000 PE:
  - BasicChannel: primitivni Channel (pouziva HashSet pro obe strany)
  - Plug.isOpposite(), ... cely cirkus kolem Piece, Plug, a Channel
23.11.2000 PE:
  - interface Plug a konkretni implementace BasicPlug - vymyslet metody, ktere od plugu potrebuji:
    pri napujovani Channels, pri inicializaci Piece, pri spojovani v Mesh, apod.
  - interface Trigger
24.11.2000 PE:
  - 0.04 distribuce (2000/11/24)
26.11.2000 PE:
  - interface PolygonWindow, RectangleWindow
  - zapocty.html: ulohy o orezavani (24 az 30) nemaji na vstupu zadani orezavaciho okna
 5.12.2000 PE:
  - class TemplateRegistry: databaze Template, indexy pres "name", "category"
  - class PieceRegistry, PieceRegistry$Item: databaze [Piece, Template, plugMap], indexy
    pres "name", "category", "template.name"
  - PieceRegistry: seznam vsech Piece (Map), klicem je Object.getClass().getName()
    save(): ukladaji se jen fully-specified jmena trid, ktere jsou registrovane
  - package cz.cuni.mff.cgg.jagrlib.gui
  - nejake provizorni GUI okenko ukazujici bitmapu (RasterGraphics)
  - interface Property: void set ( String, Object ), Object get ( String )
    a pouzit to u ulohy cislo 22 (FloodFillRender)
  - 0.05 distribuce (2000/12/05)
 6.12.2000 PE:
  - Property.understands ( String )
 5. 1.2001 PE:
  - do Render: nastavovani tloustky usecky a zakonceni usecky (round, square - podle PostScriptu)
  - zmeny v mnoha interface (Property je predkem Render, co jde, predelat na set/get)
  - RasterImage.getPixel() a .setPixel() - oba by mely nasobit MaxGray
 6. 1.2001 PE:
  - male opravy interface BitMask a AlphaMask
  - class AlphaMatrix: jednoducha implemantace AlphaMask
  - XTransitionList: default implementace *Rectangle (pomoci *HLine)
  - interface AlphaOperation: konstanty pro binarni operace s kanalem "alpha"
  - AlphaMask.setAlphaOperation(), RasterGraphics.setAlphaOperation(),
    Pen.setAlphaOperation(), Brush.setAlphaOperation()
  - class SolidColorBrush (jednoduchy jednobarevny brush, umi "alpha")
  - 0.06 distribuce (2001/01/06)
 7. 1.2001 PE:
  - spravne vytvareni BufferedImage v RasterImage.init()
  - AlphaMatrix: default operace s alpha-kanalem je "B over A" (AlphaMatrix.composeAlpha())
  - Property.understands() vraci seznam vsech implementovacnych "properties"
  - do RasterImage dat alpha-operaci "B over A"
  - AlphaGenerator: generator testovacich alpha-obrazku (vycet)
  - 0.07 distribuce (2001/01/07)
25. 2.2001 PE:
  - opraven XTransitionListEnumerator (vynechavaly se posledni polozky)
27. 2.2001 PE:
  - XTransitionList: implementovany ostatni binarni operace (ale pri new=false se to nesmi menit),
    default binaryOp = OR
  - Main: mirne modifikovan hlavni program (kresli se po davkach)
28. 2.2001 PE:
  - class BinaryOperation
  - BinaryOperation.boolOp() a .stationaryOp()
  - mirne opraveno XTransitionList.setList(): uz to ve vysledku neopakuje shodne zaznamy
  - implementovano XTransitionList.setList(l,y,x1,x2), a tim i .clearPixel() .putPixel()
  - 0.08 distribuce (2001/02/28)
 1. 3.2001 PE:
  - JavaDoc: prejmenovany parametry BinaryOperation.boolOp()
  - RasterImage.setOperation(): pouzito BinaryOperation.stationaryOp()
 4. 3.2001 PE:
  - z BitMask dat pryc clear* (staci mnozinove operace!)
  - to same v XTransitionList
  - ulohy na zapocet: prvni rozvrzeni prace (co udelam ja a co necham na zapocet)
 5. 3.2001 PE:
  - opraveny zapocty.html a index.html, zalozena kucharka.html
 6. 3.2001 PE:
  - zapocty.html: parametricke krivky a plochy, generovani B-rep modelu
  - zapocty.html: interpolacni a aproximacni ulohy, interpolace kvaternionu
  - zapocty.html: radiosita vcetne vsech pomocnych uloh
  - zapocty.html: prvni cast pokrocile 2D grafiky - az po datove struktury, chybi komprese
 8. 3.2001 PE:
  - zapocty.html: komprese obrazu a videa
12. 3.2001 PE:
  - kucharka.html: prvni verze
14. 3.2001 PE:
  - XTransitionList.setHLine(), .putHLine(), .getHLine()
  - XTransitionList.assertY(), rozsirovani mnoziny podle potreby
  - XTransitionList, BitMask, AlphaMask: zruseny vsechny poznamky o ignorovani mimo-plosneho
    pristupu
  - kucharka.html: jmeno autora, e-mail, jak psat cislo verze
  - AlphaMatrix: opraveno rozsirovani bitmapy, zruseny metody clear*()
15. 3.2001 PE:
  - class TrMatrix: deklarace, transformace, rovinna transformace se zaokrouhlenim
  - interface Brep: obecna povrchova reprezentace (V, E, F, S, Division), kontexty, atributy,
    identifikator atributu - jenom jedno cislo (je v tom where, context i attr)
  - interface FunctionR2ToR
  - interface FaceRender: polygon, maska, cislo atributu
    fillInside ( int face, int attr ) - vyplni oznacene pixely
    fillOutside ( int face, int attr ) - vyplni neoznacene pixely a oznaci je
  - zapocty.html: doplneny nektere interface (Brep, FaceRender, apod.)
  - 0.09 distribuce (2001/03/15)
18. 3.2001 PE:
  - kucharka.html a zapocty.html dat do /JaGrLib/doc/
19. 3.2001 PE:
  - Brep: dodelany pristupove metody, dopsany JavaDoc komentare
  - interface EulerOperators: editace 3D sceny pomoci Eulerovych operatoru
    V - E + F - Hf = 2 * (S - Hs)
    V = vertices, E = edges, F = faces, Hf = holes in faces, S = solids, Hs = holes in solids
    prvni verze (mSFEVV, kSFEVV, mEV, kEV, mEF, kEF)
20. 3.2001 PE:
  - zmena v FaceRender: predava se i Brep context
  - AlphaOperation: pridany vsechny binarni i unarni operace
  - FunctionR2ToR: getDomain() je nepovinna fce, pridany parcialni derivace
  - interface FunctionR2ToR2: zobrazeni R2 -> R2 vcetne getDomain(), getRange(), inverzniho
    zobrazeni a parcialnich derivaci
  - interface Interpolation1D: front-end pro 1D interpolace a aproximace
  - interface Interpolation2D: front-end pro 2D interpolace a aproximace
  - interface GeometrySearch: uchovavani 0D (bod), 1D (usecka, krivka), 2D (obalovy obdelnik), 3D
    (obalovy kvadr) objektu. Obecne schema pro vyhledavani, pruchod od stredu / sweep.
  - interface SampleData: obecna data ulozena v polich (int, long, double, mapovani hodnot,
    libovolny rozmer poli, geometrie vzorku)
21. 3.2001 PE:
  - zapocty.html: aktualizace (uz je skoro cela 2D p.g.)
  - 0.10 distribuce (2001/03/21)
22. 3.2001 PE:
  - IOL/index.html apod (adresar ./doc/ se jen kopiruje)
  - interface PieceReference: odkaz na instanci Piece, pres 0 - 2 indexy (0D az 2D pole Piece)
 5. 4.2001 PE:
  - class MicroFacet: vsechny udaje o jednom bodu na povrchu telesa - maska platnosti dat, [x,y,z],
    [Nx,Ny,Nz], [u,v], [R,G,B], BRDFParams, horni a spodni strana (odkazy na telesa), ktere teleso
    pocita prusecik (a definuje atributy), ...
  - class NotImplementedException
  - interface SceneNode: atributy (Object), ktere se nastavuji a adresuji pres stringy
    obecne K potomku, matice transformace potomku, i-ty potomek, matice i-teho potomka,
    predek. Pristupove metody k atributum: nejblizsi atribut, vsechny atributy (od nejblizsich
    k nejvzdalenejsim)
  - class CSGCommonNode implements SceneNode: atributy, predek, zadni potomci
  - class CSGNode extends CSGCommonNode: navic tam je implicitne mnozinova operace a pole potomku
  - class CSGLeaf: odkaz na Solid
  - interface BoundingBox: existence pruseciku, parametr pruseciku, zasahuje do dane bunky prostoru?
    lezi dany bod uvnitr BB?
  - interface Solid: prunik paprsku s telesem, vypocet normaly, [u,v] souradnic, test bod x
    teleso, rozklad na mnohosten, definice obaloveho telesa (koule, kvadr, rovnobeznosten)
  - interface Intersectable: vypocet pruseciku 3D sceny s paprskem - vraci MicroFacet
  - interface RTScene: potomek Intersectable, navic umi vratit seznam svetelnych zdroju,
    seznam zdroju, ktere sviti na dany bod, polohu kamery, ma zvlastni atribut cas, apod.
  - interface RayGenerator: pro 2D souradnice [double u, double v] vygeneruje 3D paprsek -
    pocatek P0 a smer P1
  - interface LightSource: zda sviti na dany bod, jakou intenzitou a odkud na ten bod sviti
  - interface LightModel: vstupem je MicroFacet, N-tice svetelnych zdroju a smer pozorovani,
    vystupem je barevny prispevek. Druha pristupova metoda: BRDF (radiance -> radiance)
  - iterface ImageFunction: objekt, ktery vraci barvu v zadanych [double,double] souradnicich. Na
    pozadani vraci i dalsi signaturu (pro anti-aliasing). Pro stratified-sampling by se mely nejak
    predavat (a nastavovat) parametry pro dalsi dimenze vzorkovani
  - interface ImageSynthesizer: spusti syntezu obrazu do dane bitmapy - v podstate se zde implementuje
    vzorkovani v prumetne, distribuovany vypocet (dalsi vzorkovani) a stratified-sampling. Nejak by
    to jeste chtelo osetrit cas..
 8. 4.2001 PE:
  - JavaDoc komentare do: SceneNode, CSGCommonNode, CSGNode, Solid, BoundingBox, RayGenerator,
    LightSource, LightModel, ImageFunction, ImageSynthesizer (nekde provedeny mensi zmeny interface)
10. 4.2001 PE:
  - do vzorkovani pridat i nejake poradi vzorku
  - interface Texture
  - do MicroFacet pridan seznam textur
  - zacatek class VEFDS
  - upraveno changes.html
14. 4.2001 PE:
  - class VEFDS
  - male zmeny v interface Brep
16. 4.2001 PE:
  - class VEFDS
  - male zmeny v interface Brep
17. 4.2001 PE:
  - class VEFDS
  - doplneny metody TrMatrix pocitajici s daty uprostred velkych poli a pracujici
    s int[] souradnicemi
  - class IteratorData: rozsirena o dalsi polozky "scalar" a "array"
18. 4.2001 PE:
  - class VEFDS
  - 0.11 distribuce (2001/04/18)
23. 4.2001 PE:
  - class Sphere (vsechny povinne metody)
  - zmeny v MicroFacet, Solid, ...
  - TrMatrix.EPSILON: pouzit vsude, kde se ted testuje double proti nule!
  - TrMatrix.vectorProduct() a .getPerpendiculars()
24. 4.2001 PE:
  - do LightModel pridat normalove vektory
  - class Geometry: z TrMatrix presunuty ciste geometricke postupy (ktere nesouvisi s maticemi)
26. 4.2001 PE:
  - Sphere: predelana inverzni transformace (Math.atan2)
  - SceneNode: pridany inverzni matice transformace
  - TrMatrix: inverzni transformace, zretezeni matic, dalsi konstruktory a prirazovaci metody
  - static MicroFacet.booleanOp()
  - StaticCSGScene implements RTScene - naprogramovat prusecik paprsku s CSG scenou (a pripadne
    trochu predelat CSG* objeckty)
29. 4.2001 PE:
  - Geometry.SCENE_EPSILON
30. 4.2001 PE:
  - interface TimeDependent
  - class StaticCamera
  - Geometry.toCartesian*(), .normalize3D(*), .vector(), .distance(), .power()
  - class StaticPointLightSource
  - class AmbientLightSource
  - LightModel: pridana prace s barvami /getColor() a setColor()/
  - class PhongModel
  - class SimpleSynthesizer
 1. 5.2001 PE:
  - class RayCasting
  - CSGLeaf: osetreno dosazeni MicroFacet.SceneNode
  - SceneNode.ATTR_*
  - MicroFacet.assertAttributes(): doplneno dopocitavani dalsich atributu (vcetne
    svetelneho modelu a jeho parametru, barvy, apod.)
  - interni pomocne tridy zmeneny na "static"
  - LightModel.createMaterial() - zmena i v PhongModel
  - objekt reprezentujici materialova data implementuje Property (pro snadne vytvareni
    materialovych instanci)
  - Main02: ray-casting (2 ruznobarevne koule, 1 bodovy zdroj)
  - Template: vsechny klice pro Plugy zacinaji PL_ (vcetne PL_INPUT apod.)
 2. 5.2001 PE:
  - SceneNode.setParent(), .getParent(), .setOrder(), .getOrder()
  - MicroFacet.normalFromTangent(): normalizovat normalovy vektor, transformovat tecne vektory
  - MicroFacet.toWorld: TrMatrix
  - RasterImage.setHLine(int,int,int,double[]) potrebuje prevadet barvu z [0.0,1.0] na
    [0,255], zatim jsem to tam dal natvrdo
  - CSGNode: cache na inverzni matice (kdyz nejakou spocitam, uz si ji zapamatuju)
  - opraveny chyby v invertovani matice
  - prepsan prusecik paprsku s kouli - pro geometricke reseni by musel byt |P1|==1.0 !
  - 0.12 distribuce (2001/05/02)
 3. 5.2001 PE:
  - BinaryOperation: pridany nektere mnemotechnicke nazvy operaci (subtract)
  - predelan system vypoctu atributu MicroFacet - castecne presunuto do Solid, vetsina do
    SceneNode (aktualne CSGCommonNode)
  - SceneNode.assertIntersectionAttributes() - i CSGCommonNode
  - prejmenovano nekolik clenu MicroFacet, odstraneny nektere masky (povinne vyplnene cleny),
    prejmenovan SceneNode.ATTR_MATERIAL
  - MicroFacet.enter, .normalFromTangent() odrazi normalu
  - implicitne se pousti Main02 (manifest file)
 4. 5.2001 PE:
  - RasterImage: udelat poradek v barvach zadavanych jako double[] - WritableRaster to asi chce mit
    naskalovane na [0.0,255.0]
 5. 5.2001 PE:
  - TrMatrix: translate3D(), rotateAxis3D(*), rotate3D(), transpose(), moveToZAxis(), scaleAxes3D(),
    scale3D(*)
 6. 5.2001 PE:
  - interface GraphicsViewer: GUI prohlizec grafickeho vystupu
  - Template.CAT_* jsou vsechny bez tecek a prejmenovany na C_* !
  - class RasterImagePreview
  - class Main03: pouziva RasterImagePreview
 7. 5.2001 PE:
  - class Semaphore: obecny semafor pro synchronizaci ("producer-consumer" schema)
  - GraphicsViewer.addSemaphore(Semaphore), .removeSemaphore(Semaphore) pro oznameni konce prohlizeni
    obrazku. Budu tam mit seznam a po zavreni okenka na vsechny semafory zavolam semSignal(1)
  - SimpleSynthesizer - na vystupu by mel mit dalsi plug Trigger (spoustel by se po dokresleni
    kazde faze)
  - stary hlavni program zatim v Main02, novy se predelava v Main03
  - BitStream muze pracovat i pres InputStream nebo OutputStream
  - Template.newOptInputPlug(), .newOptOutputPlug()
  - class JavaBitStream
  - interface BitStream: MSB zmeneno na LSB, long skip()
 8. 5.2001 PE:
  - interface DataFileFormat
  - class JFIFFileFormat
  - RasterGraphics.setBufferedImage(), i v RasterImage
  - JFIFFileFormat: pouzit ve vsech hlavnich programech
  - pro vsechny hlavni programy: pouzit RasterImagePreview a vypocet ve "worker" threadu
  - prejmenovat Main.java na Main00.java
  - Template.preparePlugs(Template,int) - doplneno ve vsech potomcich Piece!
  - class RayTracing extends RayCasting
22.11.2003 PE:
  - cteni Options: FileReader, ale nad nim jeste postavit BufferedReader
  - zapis Options - podobne.
  - colorToHexString - predelat
  - InfoChannelGUI.colorAktiveModule
  - Options: rozdelit GUI cast a skladiste dat (GlobalOptions)
  - options.txt nedavat do SVN, vsechny options dat jako default do
    sys-options.txt. V options.txt udrzovat jenom ty options, ktere modifikuje
    uzivatel..
  - options: ModuleSelect apod. -> ColorModuleSelect
  - log.txt: zarovnat cas do pevneho formatu
23.11.2003 PE:
  - private cleny "isRegistered" dat pryc
  - co s tridami PieceRegister a TemplateRegister? Zruseno, i v MainNN
  - JavaDoc chyby a varovani byly odstraneny
  - todo.txt soubor do SVN
  - mensi upravy scriptu compile.bat a doc.bat
  - Date, Rev a Author pokusy
  - Version.java soubor: udaje o posledni modifikaci - bude se tam psat
    log
  - LogFile presunut do package jagrlib
  - AboutDialog: icon, layout, SVN attribute digest
  - SVN atributy svn:keywords aplikovany na vsechny relevantni soubory
23.12.2003 PE:
  - HashMapPlugs: zjednoduseno
  - getKeysArray - vetsinou se pouziva nesikovne k iteraci pres mnozinu
    (proc?), nahrazeno iteratorem
  - InfoState: konstanty pro kontrolu sestavy (napojeni zasuvek)
  - Piece.newPiece() - odstraneno
  - spousta veci k dalsimu predelani - viz TODO
 5.-6. 3.2004 PE:
  - udelat neco s checked-exceptions (udelat z nich runtime-exceptions)
    Pryc ze vsech interface! JaGrLibCause, JaGrLibException je potomkem
    RuntimeException
  - dalsi kosmeticke upravy
 7. 3.2004 PE:
  - RegTables zmenen z abstraktni tridy na interface
  - RegTables a RegTablesXML: zmena nekterych navratovych hodnot (AbstractTableModel)
  - RegTables a RegTablesXML: registry* -> register*
  - poradek v internich datech - objektech
  - Rev.63
  - commit.bat: revertuje sys-options.txt
12.-14. 3.2004 PE:
  - RegPiece: jen registracni udaje o modulu, odstraneny z InfoModule
  - odstraneny name, description, category z Piece
  - Template je ted interface, metody presunuty do Piece
  - setRegStrings()
  - predelani vsech potomku Piece (i Worker)
14.-21. 3.2004 PE:
  - spatne se hlasi cas vyvolani vyjimky (vypada to na cas od otevreni log-file)
  - predelan system registrace modulu (setTemplate(), reg, reg[], getReg(), ..)
  - Piece.execute() pryc
  - LogFile.debug(), debugLogs (ladici vypisy), navaznost v Main
  - pridana diagnostika do Piece (ladeni)
  - Rev.65
  - odstranen interface ParamPiece
  - zredukovan interface Property
  - Piece standardne implementuje Property
  - initPiece dat pryc ze vsech modulu, nahrazen "set(Map)"
  - StaticCSGScene.SCENE
  - oprava vsech potomku Piece
  - Rev.66
22.-23. 3.2004 PE:
  - registrace property (drive Params)
  - zatim napojeno na info.params a predelan jen LineBresenham
  - Rev.67
28. 3.2004 PE:
  - Cloneable pro HashMapPlugs i InfoPlug (deep-copy)
  - RegPiece kopiruje plugy do kazde instance InfoModule
  - interface ma pouzivat jen lokalni identifikatory (normalizeInterfaceName()
    helper)
  - indexOf, lastIndexOf: misto jednoznakovych stringu pouzivat znaky!
  - Rev.68
30. 3.2004 PE:
  - Worker extends Runnable (progress() method added)
  - all Worker descendants updated (progress, error messages)
  - understands() method removed from Piece descendants
  - LogFile.exception(s,ex)
  - Template.propManipulator(String) for user-defined manipulators
  - Template.propBounds implemented
  - Rev.69
  - kucharka.html
  - opraveno par JavaDoc chyb
  - Rev.70
  - kucharka.html
  - Mesh, TemplateChannel: remove
31. 3.- 3. 4.2004 PE:
  - index.html
  - zapocty.html
  - public tag 0.23, version number changed to 0.24
 5. 4.2004 PE:
  - 0.23 version published on the WWW (list.cgi sctripts repaired)
  - "Bad default type (should be String)" - hlasi to pri pouhem otevreni reg. databaze
    (nekde nebyly default hodnoty)
  - Piece: improved diagnostics
  - pack.bat updated
  - index.html (new2.gif)
10.-12. 4.2004 PE:
  - package private -> obscure
  - zapocty.html: small fixes
  - uloha 74: hloubka ostrosti kamery
  - RayGenerator interface: added hidden-sampling support
  - pending change: StaticCamera
  - Crc32: module adopted from other project
  - RandomJames: module adopted from jbench project
  - obscure.Enigma: text scrambling class, can hide Java source file
  - scripts: compile-obscure, ..
  - svn attributes: svn:ignore, file "ignored", svn:eol-style "native"
  - encryption/decryption scripts
  - Enigma class - 1st encrypted source into SVN
