WinLock
Updated 08/31/2004
Installation
Download/uncompress the zipped file
and run the setup program.
Change Log
Version 0.50 to 0.51
- Added C Curve mode
- Added then 'Random Screen Saver' from/to time to the setup screen
- Changed setup program to better handle upgrades
The random screen saver uses a random value from within a range to determine
when to change the current running mode. This value was hard coded
to be between 10 and 30 seconds. These parameters have now been exposed
on the advanced tab on the setup screen.
Version 0.xx to 0.50
I finally got around to uploading the rewrite of WinLock. It works
in a much more modular fashion (similar to xscreensaver) than the original
monolithic one. Each mode is a separate program that is controlled by
the master screen saver. The master program spawns a separate process
for each screen in the display. Note, multi-screen support is similar
to the original version of WinLock, i.e. separate video cards are treated
as separate screens while multi-out cards are treated as a single screen.
The three modes of operation are:
- Random Screen Saver - A random mode is picked from the checked items
in the list of available modes.
- Selected Screen Saver - The highlighted mode from the list of
availabel modes is used.
- Blank Screen - Blanks the screen. Boring. Included for
sake of completeness.
Since the architecture change, several new modes have been added
- BSOD
- Circuit
- Engine
- Flying Toasters
- IFS
- Squiral
- Starfish
- Triangle
Another benifit of the change is that each mode can now be run windowed
separately from the main screen saver. This makes for great distractions
while you are trying to get something else done.
Known problems
Options for each individual modes (pulled from the corresponding XML file)
are still are not complete. Hopefully I will get to those sometime
in the near future.
I have had problems with the OpenGL modes on some systems.
I don't know if this is due to my flakey code, or flakey GL
drivers.
I have also had problems with modes that do a BitBlt of the desktop
window on displays that are running at a high resolution (3200x1280
in my test case). Once again, I don't know if this is bad
code on my part or simply Windows being its usual brain dead self.
Notes
Just like xlock(more) and xscreensaver and unlike other Window's screen
savers, WinLock does not stop when just moving the mouse. A key press
or mouse button press are required for this.
Winlock should handle multi-screen displays, and even allow
for different modes or different options on each display.
Dual output video cards don't count as multi-screen since
Windows reports it as only one monitor.
History and Other Stuff
I first came across xlock on a RS/6000 box while in school. At the time
the swarm mode was my favorite. Fast forward to a couple of years
ago. When I first started picking up Delphi I looked for a 'simple'
project to play around with. This is the result. It is a rewrite
of several of the modes available in xlock (and now xscreensaver) in Delphi
for the Windows platform. Like WinEyes, I wrote this simply because it
was 'fun' and I missed these programs whenever I had to use a Windows
box. To me, the screensavers available under X were always so much more
interesting than those that I usually find on Windows. A person can only
take so many dancing babies or photo slide shows. (Update
08/27/04: Ironically enough, after we had our first baby, I did write a slide
show based screen saver and now use it as
my default. Go figure.)
This is not a port of xlock or xscreensaver. It is a complete rewrite
that implements the same algorithms. I based these off of the original
source where I could (I even kept some of the comments!). Where possible
I have tried to give credit to whoever wrote the original version.
There is a direct port
of xlockmore available for Windows. It is much truer to
the original than mine.
Since this program has been played with off and on over the past few years, it
now stands as a good example of "How not to write software". I am pleased
with a few of the modes, but when I look back at the some of the others, I
think "What could I possibly have been thinking?"
Note for those complain about Xlib. The complexity of some of these modes
increased quite a bit when trying to get Win32 to do something that
is usually quite simple in Xlib.
Modes
Here is a list of the available modes:
|
Attraction
Simulation of a pair of quasi-gravitational fields
Based on attraction.c by Jamie Zawinski
|
|
Ball
Shows bouncing balls
Based on ball.c by Heath Rice
|
|
Block Tube
A shifting tunnel of reflective blocks
Based on blocktube.c by Lars Damerow
Requires OpenGL
|
|
BSOD
Blue Screen of Death: the finest in personal computer emulation
Based on bsod.c by Jamie Zawinski
|
|
Cage
Shows the Impossible Cage, an Escher-like GL scene
Based on cage.c by Marcelo F. Vianna
Requires OpenGL
|
|
C Curve
Draws self-similar linear fractals including the classic
"C Curve"
Based on ccurve.c by Rick Campbell
|
|
Circuit
Random electronic components floating around
Based on circuit.c by Ben Buxton
Requires OpenGL
|
|
Daisy
Shows a meadow of daisies
Based on daisy.c by David Bagley
|
|
Decay Screen
Takes an image and makes it melt
Based on decayscreen.c by Jamie Zawinski
|
|
Deco
Shows art as ugly as sin
Based on deco.c by Jamie Zawinski
|
|
Discrete
Shows various discrete maps
Based on discrete.c by Tim Auckland
|
|
Endgame
Replays brilliant chess game endings.
Based on endgame.c by Blair Tennessy
Requires OpenGL
|
|
Engine
GL representation of a N stroke engine
Based on engine.c by Ben Buxton
Requires OpenGL
|
|
Euler-2D
Sumulates 2D incompressible inviscid fluid flow.
Based on euler2d.c by Stephen Montgomery-Smith
|
|
Fadeplot
Shows a fading plot of sine squared
Based on fadeplot.c by Bas Van Gaalen
|
|
Flipflop
Shows flipping colored blocks
Based on flipflop.c by Kevin Ogden
Requires OpenGL
|
|
Flow
Shows dynamic strange attractors
Based on flow.c by Tim Auckland
|
|
Flying Toasters
raws 3D flying toasters, and toast
Based on flyingtoasters.c by Jamie Zawinski
Requires OpenGL
|
|
Forest (1)
Shows binary trees of a fractal forest
Based on forest.c (xlock) by John Heidemann
|
|
Forest (2)
Shows more fractal trees
Based on forest.c (xscreensaver) by Peter Baumung
|
|
Galaxy
Shows spinning galaxies
Based on galaxy.c by Uli Siegmund, Harald Backert and Hubert Feyrer
|
|
Gears
Shows 3D gear wheels
Based on gears.c by Danny Sung
Requires OpenGL
|
|
Grav
Simulation of a planetary system
Based on grav.c by Greg Bowering
|
|
Halftone
Draws the gravitational force in each point on the
screen seen through a halftone dot pattern
Based on halftone.c by Peter Jaric
|
|
Hanoi
Solves the Towers of Hanoi
By Paul Burdette
|
|
Helix
Shows string art
Based on helix.c by Jamie Zawinski
|
|
Hopalong
Shows real plane iterated fractals
Based on hop.c by Patrick J. Naughton
|
|
Hyper Cube
Shows a 2D projection of 3D objects which are projects
of the 4D analog to the cube
Based on hypercube.c by Jamie Zawinski
|
|
IFS
Shows a modified iterated function system
Based on ifs.c by Massimino Pascal
|
|
Kaleidescope
Another clone of an ancient meme, consisting largely
of frenetic rotational motion of colored lines
Based on kaleidescope.c by Ron Tapia
|
|
Kumppa
Spiraling, spinning, and very, very fast splashes of color
rush towards the screen
Based on kumppa.c by Teemu Suutari
|
|
Laser
Shows spinning lasers
Based on laser.c by Pascal Pensa
|
|
Lisa
Shows animated lisajous loops
Based on lisa.c by Caleb Cullen
|
|
Lissie
Shows lissajous worms
Based on lissie.c by Alexander Jolk
|
|
Lyapunov
Shows lyapunov space
Based on lyapunov.c by ????????
|
|
Matrix
Shows the Matrix
Based on matrix.c by Erik O'Shaughnessy
|
|
Maze
Shows a random maze and a depth first search solution
Based on maze.c (xlock) by Sun Microsystems, Inc.
|
|
Moebius
Shows Moebius Strip II, an Escher-like GL scene with ants
Based on moebius.c by Marcelo F. Vianna
Requires OpenGL
|
|
Moire
Shows circular interference patterns
Based on moire.c by Jamie Zawinski
|
|
Mountain
Shows Papo's mountain range
Based on mountain.c by Pascal Pensa
|
|
Petal
Shows various GCD flowers
Based on petal.c (xlock) by Carniegie Mellon University
|
|
Pong
Plays Pong
Based on pong.c by Jeremy English
|
|
Pop Squares
Draws a pop-artish looking grid of pulsing colors
Based on popsquares.c by Levi Burton
|
|
Pulsar
Shows a number of rotating, pulsing rectangles
Based on pulsar.c by David Konerding
Requires OpenGL
|
|
Qix
Shows spinning lines a'la Qix(tm)
Based on qix.c by Patrick J. Naughton
|
|
Queens
Solves N-Queens problem
Based on queens.c by Blair Tennessy
Requires OpenGL
|
|
Roll
Shows a rolling ball
Based on roll.c by Charles Vidal
|
|
Rorschach
Shows Rorschach Patterns
Based on rorschach.c by Jamie Zawinski
|
|
Rotor
Shows Tom's Roto-Rooter
Based on rotor.c by Patrick J. Naughton
|
|
Rotzoomer
Creates a collage of rotated and scaled portions of the screen
Based on rotzoomer.c by Claudio Matsuoka
|
|
Rubik
Shows an auto-solving Rubik's Cube
Based on rubik.c by Marcelo F. Vianna
Requires OpenGL
|
|
Shape
Shows overlapping rectangles, ellipses and triangles
Based on shape.c by Jamie Zawinski
|
|
Sierpinski
Shows Sierpinski's Triangle Fractal
Based on sierpinski.c by Desmond Daignault
|
|
Slidescreen
Takes the desktop image and turns it into a slide puzzle
Based on slidescreen.c by Jamie Zawinski
|
|
Slip
Shows slipping blits
Based on slip.c by Scott Draves
|
|
Sphere
Shows a bunch of shaded spheres
Based on sphere.c by Sun Microsystems, Inc.
|
|
Spiral
Shows a helical locus of points
Based on spiral.c by Darrick Brown
|
|
Spirograph
The Spiral Generator
Based on xspirograph.c by Rohit Singh
|
|
Squiral
Show square spirals
Based on squiral.c by Jeff Epler
|
|
Stairs
Shows Infinite Stairs - an Escher-like GL scene
Based on stairs.c by Marcelo F. Vianna
Requires OpenGL
|
|
Starfish
Radially-symmetric throbbing colormap-hacking graphics demo
Based on starfish.c by Jamie Zawinski
|
|
Super Quadrics
Shows 3D mathematical shapes
Based on superquadrics.c by Ed Mackey
Requires OpenGL
|
|
Swarm
Shows a swarm of bees following a wasp
Based on swarm.c (xlock) by Patrick J. Naughton
|
|
Thornbird
Shows an animated Bird in a Thorn Bush fractal map
Based on thornbird.c by Tim Aukland
|
|
Tik Tak
Shows rotating polygons
Based on tiktak.c by Jouk Jansen
|
|
Triangle
Shows random mountains using iterative subdivision of triangles
Based on triangle.c by Tobias Gloth
|
|
Tube
Shows an animated tube
Based on tube.c by Dan Stromberg
|
|
Vines
Another geometric pattern generator
Based on vines.c by Tracy Camp
|
|
Worm
Shows wiggly worms
Based on worm.c by Patrick J. Naughton
|
|
Zoom
Zooms in on part of the screen and then moves around
Based on zoom.c by James Macnicol
|