Sophie

Sophie

distrib > Mandriva > 10.0-com > i586 > by-pkgid > bc65b4ce8f85cbc2395fca5de38ca0e1 > files > 9

evolvotron-0.2.2-1mdk.i586.rpm

Proximity to one end or the other of this list does not necessarily
imply it will be done sooner or later than other items!

Animation
---------
- More warp types (rotate time into space etc)
- More control over animation (frames & framerate) from edit/options menu
  (or on a display by display basis ?  Then "big" images could have
  more frames and higher framerates)
- Ability to degrade temporal resolution with spatial resolution 
  at low-res render levels
- Support animation in evolvotron_render 
- Sync animation to xmms beat somehow ?
- Option to sweep z sinusoidally or linearly
- Option to bounce or cycle z
- Make frames, frame-rate, sine vs. linear, loop vs. bounce properties of the image.

Conventional
------------
- Give some sort of control over pixel aspect ratio.  
  A nice circular image in a square display on the screen is 
  squished when rendered to a rectangular image.
  Best solution probably to offer cropped modes e.g "640x480 from 640x640".
  Alternative solution would be 4:3 mode for the whole app where the evaluation
  range is changed.  Harder to explain though.
- Add "Properties" to image, brought up by right-click.
  Careful... what happens if spawn over the image ?  
  Avoid issue by making it modal ?
- [Local] Clean up evolvotron_admin/evolvotron_gallery
- Get rid of heat/cool etc buttons cluttering up status bar and just have (new) autocool tick, and reheat button ?
- Check qmake can be found by configure.
  Check $(QTDIR)/bin first... RH seem to be unusual in copying it to /usr/bin
- evolvotron_render default output (or with filename "-") should be to stdout.
  (The problem is that Qt's image writing libs only support file output).
  Could create a /tmp file behind the scenes, or write something simple like PPM.
- File save dialogs should remember which directory they were last accessing.
  (Maybe a Qt problem)
- Replace FunctionNode::stub() with FunctionRegistry based code
- Create registry of all function node types (done)
  - Use to bring up a panel for setting relative frequencies (check for exploding branching ratios)
    - Button to spawn images with a specific type of top level node (would be great for testing)
  - Allow iterative/allow fractal would then become convenience buttons for quick-setting a whole group of frequencies
  - Classification scheme for function types (basic, smooth, chooser, complex, expensive).
- More types of mutation
  - Substitute a node for a different type, retaining it's settings (expand/cull as necessary)
  - Nodes near top level should have more chance of mutation ?
- evolvotron_mutate standalone exe should provide more control
  (heat/cool/irradiate/shield options, recolour/warp options, animation options).
- Combining/breeding image pairs.
  Use drag-and-drop
  Either:
    Create a new top level node with 2 or more args and add the parents to it.
    Create a new random stub and insert the parents at random points.
    Insert one image at a random point into the other.
    Concatenate (function compose) the 2 images (probably not v. interesting)
  Need to prune too to keep size under control.
- Get rid of silly xyz and matrix dependence on general tuples and templates.
  (Can be well optimised, but only with heavyweight compile options.)
- Profile & optimise.
- Spawn recoloured could be linear, quadratic (or generalised?) versions.
- Locked attribute should be an image property, not a display property.
  (Would play nicer with Undo)
- Undo needs to save more state to work properly (e.g state for respawn)
  Make history know about "MutatableImageHolders" rather than Displays,
  and have last spawned be held in such an object too.
- Have a function type which can suck in random images from directories of images
  (specified by environmental variable ?)
  Filename would need to be retained in node and XML for reproducibility.
- Check spew of tasks from drag-adjust can't get out of order in multithread compute farm and come back in wrong order
  (associate tasks with an original image instance/serial number as well as an originating display ?)
- Optimise drag: just recompute new area (needs image subregions for tasks).
- Option (default on) to automatitcally respawn boring constant images as soon
  as they've been computed to a certain resolution.
- Web front end to commandline tools: an evolvotron web-server.
- Command line option for border around images... indicate locked status.
- Maybe add "view" menu: like warp but just applying to current image (like drag)
  (would need explicit control over amounts: maybe drag approach better ?).
- Last method used should point to an object encapsulating the behaviour
  (so warp spawn method can encapsulate a transform factory).
  Needed for breeding behaviour (so can keep 2 last images).
- Undo needs to restore _last_spawned too (but do above first and keep hisory of spawn methods).
- Command line option to enable/disable fractal and iterative types.
- Replace/augment "Lock" with a "save" or "put-aside" window (could make history/undo simpler).
- "Unlock all" on edit menu
- Reset & Restart: combine and bring up modal "are you sure" dialog box which can also contain check boxes for what to reset:
    mutation parameters
    function freqencies (when implemented)
    locked displays
- Quit should bring up "are you sure" dialog.
- Option to increase number of iterations of certain types of iterative node in an image (i.e "accuracy")
  (probably makes sense for Mandelbrot/Julia or a sampling blur where it just increases the detail, 
  but less useful for repeated function mapping).
- "Move all locked to start" on edit menu
  (or move them to a "safe area", or save them in reloadable form).
- Save whole grid as a single image (from File menu).
- Save whole grid to an XML file.
- Context menu option to bring up info about an image
  (in particular number of nodes and max depth)
- Reference counting for images
  (far too much deepcloning currently; e.g to tasks and history).
  But if it ain't broken don't fix it.
- Use hourglass cursor over displays which haven't got final high resolution yet ?
  (Really need combined hourglass/pointer cursor but Qt doesn't have one built in).
- Computing zero co-ordinate sometimes gives unusual output (black lines across images).
  Avoid by jittering co-ordinate (would break up jaggies), or just avoid exact zero ?
- Why stop at screen resolution ? Antialiasing by supersampling.
- Separate tool (?) to evolve images towards a given image.
  How close would it get and how quickly ?  
  Would the process of getting there be interesting (e.g as an animation) ?
- Compute farms on multiple remote machines.
- Tasks should be a tile of an image
  (multiple compute threads could work on single "Big" images then).
- Menu options to add/remove rows/columns from display grid
- Autocool of mutation parameters
  (probably shouldn't be on by default; control from command line).
- Heat/cool etc should act in proportion to current values
  (probably wanted for autocool).
- Evolve other things
  e.g parameters of celluar automata/reaction diffusion equations/iterated function systems.
- Rationalise MutatableImageNode::stub so more work is done by Node constructors
  (just pass in a MutationParameters).  
- Avoid misleading moire patterns by jittering samples
- No low-res images option for when using remotely via X11 over slow link
  (they take longer to display than compute) (running over compressed ssh helps a lot though).
- Evolvotron_mutate should support -x/-X options.
- Think of more functions:
    Blending counterparts for switching/choosing functions.
    Streaking version of windmill functions.