$Rev: 760 $
$Date: 2008-05-19 04:05:39 +0200 (po, 19 V 2008) $
$Author: pepca $

  URGENT & BUGS:
  ==============
- udelat novy control pro editaci double[] vektoru - pouzit pro barvy nebo pozici kamery, apod.
  i Render3DWorker (kam se koukam)
- MonteCarloFF: early rejection tests in formFactor() => model normals may be wrong..
- VertexInFaceWedgeIterator, WedgeInFaceIterator
- RenderDepthBuffer: opravit perspektivne-korektni interpolace
- GLWindow: pocitani FPS udelat zvlastnim objektem - a pouzit ho i v AWTWindow
- zkontrolovat vsechny objekty s interface Render3D i jejich "postuchovatele":
  AntCity
- GLBrepScene: dala by se tam dat spousta parametru (Stuchl)
- GLBrepScene: mel by umet jak float, tak double souradnice vrcholu..
- Skel: nejaka automaticka registrace modulu?
- opravit geometrii vykreslovani plugu (+-1 pixel)
- ImageKDNode: konstrukce stromu z rastrovych dat (pro mesh-compression),
  ruzne pristupy (Demaret, Kohout, apod.)
- optimalizace pomoci novych formatu pristupovych metod do Brep (vraci vysledk. pole)
- za behu Skel prepinat "-d" (debug)
- Skel: jednoduchy dialog, ktery se vyvolava pri hromadne registraci (ten dnesni je k nicemu)
- sRayTracingHDR.xml: pri ukladani jine velikosti obrazku nez 800x600 -> chyba v HDR?
- do scriptu pridat tag <expr> obsahujici primo vyhodnocovany vyraz (JEP)
- JGL: pridat tag na zadavani uhlu ve stupnich
- prekreslovani RasterImagePreview - blbne ve Windows i v Linuxu
- AnimationWorker: v zapojeni FractalMandelAnim se obcas na zacatku zasekne
  ukladani PNG (write error)
  Zrejme to souvisi s multi-threadingem, na dual-cpu to blbne casteji.
- prepisovani hodnot properties v GUI nezpusobi zmenu composition a jeji ulozeni!
- DefaultLightModel - a dat tam implementaci lightSum()
- pri vybirani hodnot atributu z VEFDS by se nemely concatenovat stringy!
  (udelat zvlastni hash-mapy pro jednotlive kontexty? - asi ano
   alternativa: hashovat podle dvojice stringu)
- udelat si zkusebni K-D-tree (pro porovnavani s tou spoustou P-R-Q-tree)
- list-box mozna neumi velke mnozstvi polozek - kdyz se tam zacne scrollovat??
- opravit preview okenko pro HDRImage
- SimpleNoise by mela mit jemneji zadavanou frekvenci - double misto int
- nepresny vypis float-parametru do GUI policka (uz je mozna opraveno?)

  TO DO:
  ======
- RadiosityEquations by mela umet prepinat ruzne pristupy vypoctu FF (po jednom/po radkach)
- RadiosityEquations: cislo promenne SLE nemusi souhlasit s handle steny v B-rep!
- OpenGL info window invoked from About Box
- LogFile: primo umet logovat cast nejakeho jiz existujiciho obrazku
  (resp. jeho vyrez), pouziti: FractalCompressionQtree
  udelat dalsi variantu createImage() - copy-constructor
- AnimationWorker: nejak by se pro nej mohl vyvolavat podobny progress-indikator, jako pro
  modul AudioReplay)
- pridat do trunk:
  * textury a-la PovRay (loni)
  * fraktaly - Lyapunov, strange-attractor?
  * WarpEnginePetrStepan (ale udelat chytrejsi filtrovani)
  * nejaky K-D-tree (center & ray-pass)
  * Revolution (a la Vitasek)
  * Bezier surface (R-T) - loni?
  * nejaka Wavelet-based komprese (loni nebo letos: Attila Ulman - uloha 33.)
  * hierarch. komprese (jina nez waveletova, letos - uloha 33.)
- "init()" faze compozice - uvnitr kazde faze pouzit paralelni vlakna?
- vubec zauvazovat o paralelismu pri vykonavani workspace
- paralelni SampleRenderWorker (jednotlive dlazdice prideluji worker-threadum)
- AnimationWorker: udelat obecnejsi zadavani parametru? Multi-line
  s pomocnymi promennymi?
- clone/copy module
- Ray-tracing: pridat rozhrani mezi dvema materialy
- Ray-tracing: zmensit pocet dynamicky alokovanych pomocnych promennych?
- jak presne zaradit mlhu do Ray-tracingu?
- JGL pro ray-tracing: zjednodusene sady XML tagu. Nahravaly by se po zavolani
  <include set="ray-tracing" /> Pluginy, apod. Musim si to jeste rozmyslet.
- JGLScript: pridat prikaz <include> a <import> (preference pri hledani trid podle jmena)
- XML: pri ukladani stringu, ktere maji v sobe konec radky (\n),
  je prevadet na URL-encoding (pridat tam parametr)
- vybranou dokumentaci (HOWTO, cookbook, R-T) prelozit do anglictiny
- do options origin hlavniho okna
- Brep: asi by to chtelo pridat nejakou metodu do API zajistujici pred-alokaci poli atributu..??
- dat pryc z VCommand BadInterfaceException?
- co s ValueTransferFunction? (color quantization?)
- hledat System.arraycopy() - nelze-li je nahradit Formula.cloneArray()
- DefaultBitMask pro cteci objecty (a potomkem bude OverwriteClassificator)

------------------------------------------------------------------------------------------
  DONE:
  =====
- prevest konfiguracni soubory na sys-options-orig.txt (ten jediny se verzuje),
  sys-options.txt (ten se zapisuje)
- RasterImage - opravit pozadi obrazku RGBA
  (zkontrolovat formaty BufferedImage proti formatum JaGrLib)
- dodelat workspace pro orezavani s anti-aliasingem (AlphaMask misto BitMask)
- XML soubory - mely by byt lepe formatovane (uzaviraci zavorky pod
  oteviracimi)
- RasterImage: dodelat chybejici graficke mody
- bezeztratove ukladani obrazku (PBM/PGM/PPM) - DataFileFormat, Property -> RasterGraphics, BitStream
- Main: cteni parametru z command-line (LogFile.debugLogs)
- interface Function -> inteface RealFunction (DefaultFunction -> DefaultRealFunction)
  R^D -> R, N^D -> R, explicitne D=1, D=2
  FunctionR2ToR zrusit
- preregistrovat SimpleSynthesizer a zkontrolovat sestavy, ktere ho pouzivaji (Ray-tracing,
  ray-casting)
- CastingWorker -> SampleRenderWorker (stejne je potreba ho preregistrovat)
  Ray-CastingWorker -> SampleRenderWorker
  WorkerForRay-Casting -> WorkerForSampleRendering
- implementace B-spline sumu (do SimpleNoise)
- vlastni kontejnerova trida: hashovani podle integeroveho klice ?
  (aby se nemuselo pouzivat neefektivni hashovani instanci Integer nebo String)
  IntMap < T >
- zaclenit Dynamicke aritmeticke kodovani do JaGrLibu
  (moduly Jana Kadlece)
- kontexty u EntropyCodec oznacovat cisly (IntMap)
- Search2DWorker - jeste pridat nejake oznaceni parametru datove struktury (napr. pres
  read-only Property)
- Search2D - pridat mereni casu
- pomalu se pridava do VEFDS - zvetsena konstanta GRANUL
  (postaveni datove struktury 256 x 256 pro milion objektu trva neumerne dlouho!)
- editace RGB barvy v GUI - bud zakazat jText read/write, nebo to umet parsovat
- RGB barva se neumi precist z XML sestavy (tam je jeste spravne)
- ImageCompare: MAE dava nesmyslne velke hodnoty, RMSE taky (obe dve ve float-variante)
- add @Override annotation to all classes derived from Default*
- command-line parametr (sestava): mozna staci neco nastavit a prekreslit
  javax.swing.SwingUtilities.invokeLater( new Runnable ()
  {
    public void run ()
    {
      applicationInit();
    }
  });
- informations
- /JaGrLib/cz/cuni/jagrlib/
- dodelat <code>
- VCommand cosmetics (@see <a href="..., javadoc,
- re-registration: CompressedFormatGray (and the composition!)
- ZigZag: modul pro blokove kodovani kvantovanych koeficientu: 2 kontexty, jeden pro
  pocet nul, druhy pro VLC-kodovana cisla.
- mezi-blokova predikce do ZigZag
- objektove souradnice do SceneNode (+ perestrojka MicroFacet.assert..)
- kopie pracovnich promennych v MicroFacet (aby se neprepisovala barva
  u materialu pro svetelny model)
- priklad textury pouzivajici objCoord (3D spotTexture)
- moc desetinnych mist se vypisuje u chyb (ImageCompressionWorker)
- kde se zaokrouhluji zaporna cisla, pouzit Formula.round() nebo Math.round()
- HDRImage + file-format PFM (trivialni podle PPM)
- jeste format souboru HDR (RGBE, .. definovany v Radiance)
- prace s enum-ama by se dala vylepsit, ale neexistuje univerzalni dobre reseni.
  Par jich je na http://www.roseindia.net/javatutorials/enum_inversion_problem.shtml
  To same na jinem serveru: http://www.javaspecialists.co.za/archive/Issue113.html
- zjistovat obsazeni pameti (java.lang.management.MemoryUsage) a vypisovat do logu
  .. hlavne pro Search2DWorker
  a co takhle jeste nejak vyzpovidat GarbageCollectorMXBean? (aspon pocet kolekci a straveny cas)
  MemoryPoolMXBean
- LogFile: podle OperatingSystemMXBean vypsat 1 informacni radku na zacatku kazdeho logu)
- stejne jako je LogFile pouzivan pro vypis textovych informaci, by mel
  v JaGrLibu existovat objekt, do ktereho by se dala zapisovat ladici 2D grafika
  (typu RasterGraphics)
- hlaska "cannot not parse" - fuj!
- SampleRenderWorker - jeden pruchod (prepinac) a napsat o tom do navodu
- do navodu napsat o sirce a vysce ImageSynthesizer
- pridat typ Property TYPE_LONG
- chyba v prikazu Replace module: neobjevi se properties!
- AnimationWorker: celociselna promenna "frame" cislovana od 0
- AnimationWorker: zjistovat typ promenne pouzite pri formatovani
- ParamText: zvetsit font (ma byt stejny jako u ParamString)
- RGB <-> HSV prevody (Formula)
- RasterImagePreview uz pouziva custom JComponent misto JLabel
- HUD do GraphicsViewer interface - zatim jen mnozina usecek.
- TextRender implementace - vyuzivajici Graphics2D z Javy
- pilotni modul pro testovaci obrazec (libovolne rozliseni, nakresli se tam
  rampa - vignette - pro gamma-korekci a mezi tim nekolik ditherovacich
  vzorku - 25%, 50%, 75%)
- format registracni databaze: <xxx>true</xxx> zmenit na <xxx/>
- ArithmeticCodec: pri registraci se poslednimu neviditelnemu parametru
  (Boolean) prida default hodnota z predchoziho parametru (Integer)
- pri zalozeni noveho modulu do composition nejde posunovat jeho zasuvkama
  driv nez se udela resize..
- vyjimky vyvolane behem behu kompozice by se mely ukazovat jako pop-up
  okenko ve Skelu.. (nejaky obecnejsi mechanismus - bud by se to logovalo
  nebo by to slo do konzole nebo do pop-up oken)
- Cube: odstranit member-variables
- Podobne upravy jako v Sphere.java udelat i v ostatnich telesech (pocatek paprsku
  v nekonecnu)
- MainNoise - kvalita JPEG
- umet nejak sledovat bezici worker-thready ?
- persistence pro Ray-tracing - potom uzavrit verzi 0.25
- dynamicke Huffmanovo kodovani (mozna i staticke?)
- default hodnota ParamColor - nepouzije se pri vytvoreni noveho modulu ve Skelu
- vsechny input-plugs by mohly byt nepovinne!
- LightSource.getIntensity() muze vracet null, kdyz je prispevek 0
- do RayTracing pridat zalomene paprsky
- branch "piece-new" pro kandidaty na zarazeni do oficialni distribuce
- UniformGrid by mela mit moznost maxGrid = 1 (misto "brute-force")
- udelat si zkusebni adaptivni jittering (aby se vyzkouselo, jak funguje castecne vzorkovani
  spolu s RectangleLightSource)
- JGLScript: dovolit neuplne identifikatory trid (vyzkousi se v piece, testing, obscure, jagrlib, java.lang)
- uspora v <set key="Ks">
- makro <def id="schlick" type="D">1.0</def>
- RayGenerator: do interface pridat setAspectRatio
  aby se to nemuselo definovat v datech (tam jeste neni ten pomer znam!)
- moduly v "package piece" nazyvat nejak prehledne - napr. pomoci prefixu:
  EffectPixelize.java, EffectBlur.java, ..
- Piece.init( phase ) - inicializacni faze modulu, ktera se zavola pred spustenim
  cele sestavy (Worker.run())
- umet odstrelovat bezici worker-thready
- FractalCompressionQtree: kvantizaci udelat pomoci ScalarQuantizer (novy interface)
- SampleRasterSearch: konstantni plochu umistit na [width,0] misto [-maxBlock,maxBlock]
  hledani rozsirit na block-size na vsechny strany?
- userBreak do FractalCompressionQtree (a do workeru)
- Ray-tracing: konstanta presnosti se nastavuje v MicroFacet (muze to udelat kazde
  teleso individualne)
- AdaptiveJitteringSynthesizer: logovani supersamplingu udelat na prepinac
  (a ne podle LogFile.debugging)
- scripty by mely mit vstup - kolekci objektu <key,value>
  (tim by se mohly udelat side-efektove scripty = nevracejici hodnotu)
- progress-bar v okne u SampleRenderWorker (asi se mude muset udelat mala zmena
  v interface, aby se dalo signalizovat, ze uz je pixel hotovy..)
- CSGNode - pouzit nejakou kolekci (ArrayList)
- void storeFloat ( byte[] array, int index, float f )
  float loadFloat ( byte[] array, int index )
  a pouziti v loadData(), storeData() (DeadZoneQuantizer, LinearQuantizer, ..)
- VEFDS: spatne se nacitaji Property values (TriMeshWarping, 7, 8)
- Plane implements Solid (jednostranna nekonecna rovina "xy")
- nahravani 3D souboru (OBJ format)
- gzip dekomprese do JavaBitStream nebo alternativni stream?
- Peano curve (3^m x 2*3^(m-1))
- sDrawAnim: meni se tloustka cary, kdo za to muze?
- interface KDTree:
  KDNodeInt buildTree( int mode ) (private int constants or enum type?)
  KDNodeInt getRoot()
  void setRoot( KDNodeInt root )
  void utilizeTree( KDNodeInt root )
- MainWindow accelerators
- new MainWindow command: close active composition (Ctrl+W)
- default barva oznaceneho modulu - slabsi cervena
- gamma-korekce do OrderedDither
- break do Lissajous
- IntervalArray: zvetsit konstantu MAX_SYMBOLS,
  ArithmeticCodec: zvetsit rozsah vypocetniho intervalu
- EntropyHistogram: udelat i neco mensiho, bez inkrementace frekvence
  (WheelOfFortune)
- EntropyCodec: zakodovat interval z WheelOfFortune (misto symbolu abecedy)
- zvlastni implementace WheelOfFortune pro jeden symbol K z abecedy 0 .. N-1
- GLBrepWorker prejmenovat na GLWorker
- GLWindow: implementovat pocitani fps
- GLBrepScene: lepe nastavovat barvy na plochach (a pozdeji i ve vrcholech)
- Render3D rozsirit o moznost nastavovani matice projekce po kouskach (a la OpenGL):
  1. glViewport
  2. modelView matrix
  3. projection matrix
- HowTo for OpenGL: installation, JavaDoc pages, samples
  http://download.java.net/media/jogl/builds/nightly/javadoc_public/
  OBJ file: http://cgg.ms.mff.cuni.cz/~pepca/lectures/cv/teapot.obj.gz
- view refactor: dodelat vsude rozklad projekce na modelview - projection - viewport..
- winged-edge: udelat zmeny i u vrcholu a sten (typ atributu ATTR_INTEGER)
- plocha trojuhelnika podle http://en.wikipedia.org/wiki/Triangle
- vzorkovani hemisfery z RandomJames. Je i druhe vzorkovani.
- logovani z modulu Radiosity
- user break pri vypoctech radiosity..
- jedinkrat spocitat transformacni matici tangent space -> world space pro danou plosku..
  (a nepouzivat tam normalu ctenou z modelu!)
