Completes the migration tracked in #3189 by adding the remaining 11
effects plus Lake:
Phase 2 (image-based):
- Wobble (bu.jpg)
- Wormhole (texture.png)
- Dancing (with light)
- Lake (ash.jpg) - reimplemented with direct pixel manipulation so
the mirror/wave effect renders consistently on Linux, where
GC.copyArea on image-backed GCs differed from Win32/Cocoa. Uses
ImageData.transparentPixel for out-of-range reflection rows and a
10 px seam between image and mirror so ash.jpg's near-black edges
don't show as moving dark bands.
Phase 3 (complex):
- RotoZoom (tux256256.png)
- Tunnel (tunnelstonetex.png)
- Voxel (heightmap1.gif + colormap.jpg)
- Sine Scroll (font_classic_16x16.gif, Star as inner class)
- Simple Scroll
- Advanced Scroll
- Star Wars Scroll (row-wise scaling for perspective)
Polish applied across the tabs based on visual review:
- Enlarge small renders via scale-on-draw: Twirl 3x, BlockEffect 3x,
Sky/SineScroll/Ripple 2x. Enlarge Tunnel (640x480) and Voxel
(640x400) render buffers.
- Ripple: seed 6 ripples at startup, drop automatic ripples so the
effect is visible without mouse input, overlay a hint telling the
user to hover.
- BlockEffect: hold the unblocked image for ~40 frames before starting
to blockify again.
- SimpleScroll / StarWarsScroll: credit Laurent Caron in the scrolling
text.
Closes #3189
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>