Clock Generator Information

Have you ever wanted to create realistic looking clock animations with the minimum of fuss?
Do you want to save them to .AVI format?
The clock generator is for you!

Background

This program was initially developed in July 2000 at the request of my friend Mark McMillan because we couldn't find another freeware program to generate clock animations easily.
Over the last year it has been developed and is now at a stage where others may find it useful.

Example output in RealVideo format

Example 1: Analogue clock with jitter, 345kBytes, 320*240, 1 minute, no music

Example 2: School Clock count down, 343kBytes, 160*120, 1 minute, with music

Requirements

IBM PC Compatible,
Windows 95/98/ME/NT4.0 or 2000,
Desktop resolution 1024 * 768 in 16bpp minimum,
Visual BASIC 6 runtime,
6Mb disk space for full installation, 2Mb for update installation and examples.

Features

There are now 6 main functions of the Clock Generator:

1. Generate simple analogue clocks,
This can be extremely simple using default values but we can add simple and advanced effects:

1.1 Start time, duration, radius, clock hand width and colours are basic properties,
1.2 We can control the length by which a clock hand is reflected in the opposite side, clock inner circle radius and colour and even inner circle outline width and colour,
1.3 Smooth movement provides realistic subsegment (30 degree) increments depending on start time,
1.4 Jitter provides 2 degree variation at every second hand movement,
1.5 Sweep movement provides realistic subsecond movement,
1.6 Hands can be drawn with rounded or squared ends (as of 1.0),
1.7 Clock hand drawing order can be specified.

2. Generate countdown clocks.
This is called 'erase mode' because the countdown starts at a specific point and the end is erased as each second elapses.
This is used for 'Schools TV Clocks' for example.
The only frame rate that correctly synchronizes the animation in erase mode is 6 frames per second at the moment.

3. Bitmap mode (for clocks with ornate hands).
Simple analogue clocks use lines of a specified width for their hands. For 'fancy' clocks bitmaps can be used for the hands when the 'bitmap mode' check box is ticked. The problem we found is that the normal Windows Graphics Device Interface (GDI) does not have a bitmap rotation function, so we wrote our own.

Note: PlgBlt() was considered, but it only applies to Windows NT 4.0 and higher, and not Windows 9x based operating systems.
Note: Windows 98, 2000 and higher have a TransparentBlt() function built into msimg32.dll. On Windows 98 this function seriously leaks memory.
For safety we use our own transparent blitting function which is slower but does NOT leak memory.

4. Draw digital clocks,
5. Draw analogue clocks with vector hands and combinations of other features,
5.1 Vectoring allows 4 point hands to be drawn optionally with vectored reflection or line reflection,
5.2 Vectoring with a negative high centre value can be triangulated to draw hands that go through the centre of the clock.

6. Combine any of these effects with a background via transparency.

System diagram

Notes

1. The colour used in erase mode is the second hand colour.
2. v0.8+ the colour of a pixel can be displayed by pressing the left mouse button while hovering over the picture. This works unless a positioner is enabled. This feature was introduced in where v0.7 the colour of a pixel could be displayed by pressing the right mouse button while hovering over the picture. This was not very intuitive so it was changed to the left button.
3. To position a clock use the clock positioner tool or absolute positions (0.9+).
4. Toggling the erase button can over write clock position settings, this is not a bug but erase mode is little used and special. Save settings to another .INI if you are using this function.
5. In bitmap mode the clock hands can be smaller than the main background, this cuts own the amount of CPU time to do rotation. The top layer should be the same size as the background, if the background is larger the top layer will be positioned at the top left hand size of the picture.

Back to index.