1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
Andrew's list:
==============
- Optimize rendering by eliminating lots of DrawRectangle/DrawBitmap calls.
Instead, each layer has a viewport-sized buffer into which we "draw"
and then convert that to a wxBitmap and call DrawBitmap *once*.
Other advantages:
1. We could expose the buffer to scripting commands (setpixel/getpixel)
so that scripts could do fancy stuff like overlay images/text.
2. It should make it easier further down the track if we wanted to avoid
wx's DrawBitmap (which I suspect is not optimal) and use OpenGL or
SDL or SFML. On Mac, use Quartz?
- Revisit universal scripting idea, but use shared memory for IPC
rather than redirecting stdin/out.
- Auto stop script if it creates too many temp files (for undo).
This can happen if a long-running script doesn't call new/open
when it probably should. See my email to Nathaniel with subject
"Re: Golly methuselah search script".
- Change all Python commands to g_* for consistency with Perl commands.
Unfortutely, we can't really keep the old commands in same module
because doing "from golly import *" exposes old and new commands and
so a script like goto.py that calls a non-Golly open command will fail.
We could put old commands in a separate module called "oldgolly".
Maybe best to leave this change for when the scripting API needs
significant changes due to multi-rect selections.
- Avoid any remaining algo assumptions (search *_ALGO):
- Need IsParityShifted() method to avoid QLIFE_ALGO assumption?
- Allow dragging zoom-in cursor to zoom into rect.
- Support toroidal universes (see LifeLab).
- Stop generating if pattern becomes empty, constant or p2 (qlife only)
and display suitable message in status bar. Or maybe just add
Gabriel's oscillation detection as an option (see oscar.py).
- Allow non-rectangular (and disjoint) selections.
- Implement a history bar for hlife (and maybe other algos?).
- Add simple methuselah/spaceship/osc/still-life searches as in LifeLab???
- Fix rotation/reflection of JvN states. Probably need Begin/EndTransform
methods, and maybe GetTransformedState as well for use in transform().
Is there any point doing this given that there are non-symmetric rules
like LifeOnTheEdge where the above approach won't work?
For example:
x = 9, y = 8, rule = LifeOnTheEdge
.CA$BAC$7.A$6.2BA$6.BC$.2A$BAC$.B!
How could we rotate/reflect the spaceship at the top
to get the equivalent spaceships at the right and bottom?
- Fix glitches in the way the algo button works:
- On Mac we want button to look selected before menu appears.
- On Win we want to be able to press-select-release.
- Fix wxMac bug: Set Rule's help win can't regain focus after clicking
in scroll bar (and thus we can't copy text).
- Add case studies to BUILD file: how to add a new menu item, how to add
a new algorithm, etc.
Tom's list:
===========
File I/O
- Have hlifealgo .mc compatible with ghashbase .mc
- Generalized RLE in MC?
Algos
- Unzoom color merging
- Better status reports (% of hashtable full)
Scripting
- Tape construction script for replicator
Samples
- Small JVN examples
Fun
- htreebase
- hgridbase (finite universe; torus, etc.)
- allow (base) x (slow) algorithm "multiplication"
- pluggability of externally-defined algos
- perl/python slowcalc callbacks
- cache of slowcalc
- generational gc
- 32-bit indexed hashlife on 64-bit platforms
Other
- Improve batchmode.
- Fix qlifealgo::lowerRightPixel to prevent off-by-one error when
selecting large pattern like caterpillar.
User suggestions:
=================
Nick Gotts:
- Need a way to copy exact gen/pop counts to clipboard.
[No longer necessary now that a script can get this info?]
Jason Summers:
- For better viewing of patterns that move, have a way to automatically
move the view X cells horizontally and Y cells vertically every Z gens.
[Could be done quite easily via a script that prompts for X,Y,Z.]
- Allow diagonal selection rectangles.
Dave Greene:
- Provide a way to click-and-drag a selection to move it around.
- Make page and arrow scrolling amounts configurable (in Prefs > View).
- Add a getview() script command that returns current viewport rect
and a setview(rect) command to change viewport size and location.
- Make info window a floating window and keep it open (but update
its contents) when user loads another pattern.
H. Koenig:
- Multiple windows. [No real need now that we have multiple layers.]
Gabriel Nivasch:
- Make paste pattern semi-transparent. [Tried it -- somewhat confusing.]
- Add a Default button to each Preferences pane (at bottom left?).
Bill Gosper:
- Modify info window so it can be used to edit and save comments.
- For scales > 1:1 make the pixel color depend on lg(# of ones in it).
Brice Due:
- Provide MCell-like editing capabilities.
- Provide a thumbnail option as an alternative to tiled layers;
ie. the current layer would be displayed in a large "focal" viewport.
All layers would be displayed as small, active thumbnails (at left
or top edge of focal viewport, depending on aspect ratio?).
- Allow mc files to set step base and/or exponent via comment line like
#X stepbase=8 stepexp=3
[No need now that zip files can contain pattern + script?]
Tim Hutton:
- Add a script command to save comments in a pattern file. Add optional
param to existing save() command?
William R. Buckley:
- Provide an option to increase spacing between buttons.
|