R A I N M A T I O N

Version 0.7 Beta

Info:
 
 
 
 
 
 
Rainmation is a Litestep plugin for putting small animations on the desktop. This is mostly an eyecandy with ability to act as simple shortcuts.

You can have any number of animations and animations may be any size. But be careful with large animations as the animation frames are stored in memory in bitmap format, so big animations will take quite much memory.

There are three different methods to use transparency in the animations: fake, real and alpha.

The way fake transparency works is that before the animation is started a copy of the background is taken and used as the animation background. So, if you'll for example have a window over the area where the animation should appear, the window will be part of the animation background and stick with it even when you move the window away. This is unfortunately necessary to keep the CPU-usage low and animation speed high enough. Fake- transparency uses pink-color as transparent color.

Real transparency uses window regions and doesn't have the limitations that the fake transparency has, but takes a lot of CPU-time.

Alpha-transparency is similar to fake-transparency, but uses separate alpha-mask to determine the amount of transparency the bitmaps have. Alpha-masks are gray-color bitmaps where black means full transparency and white full opaque. Alpha-transparency is pre-calculated on the frames so it takes the same amount of CPU-time as the fake-transparent frames (after the precalc). You can use Alpha-transparency only in the frames that need it. This way you can reduce the pre-calculation time. Alpha-transparent frames need a second bitmap with -Alpha-postfix in it's filename which defines the alpha-values for the pixels. The Alpha-bitmaps must be same size as the frame-bitmaps.

Animation can be disabled or removed from the popup-menu you'll get if you press right mouse button over the animation. You can also refresh the animation from there and open the config-dialog.

 
Install:
 
 
 
 
 
 
To install just copy the Rainmation.dll to your Litestep directory (eg. C:\Litestep\), copy the example animation folder to the same folder where you keep all the other Litestep images (eg. C:\Litestep\Images), edit your Step.rc and recycle. Check Step.rc and Config for more info.
 
Step.rc:
 
 
 
 
 
 
The Step.rc file needs some modifications as well. First of all you need to load the plugin by adding the following line to your step.rc:

LoadModule C:\LITESTEP\Rainmation.dll

Then you can define the animations with the these:

RAnimStartDelay [SECS]
Number of seconds that will be waited before the animations are started. This is useful if you are using some random wallpaper which changes a new wallpaper in every boot. This way you can set the animations to start after the new wallpaper is loaded so the animation background will be taken from the new wallpaper. Note that the delay is global for all animations.

RAnimPixmapPath [PATH]
Path where the animations are. If missing Litestep's PixmapPath is used instead.

*RAnim [ANIMNAME]
The name of the animation. AnimName is actually the name of the folder where the pictures are. It's relative to Step.rc's PixmapPath or RAnimPixmapPath and the bitmaps inside the folder must have the same name as the folder with three digit running number (starting from 000) and .bmp at the end. All animation frames must be same size. Remember to use the '*'-char before thr RAnim-command!


Example additions to step.rc:

LoadModule C:\LITESTEP\Rainmation\Rainmation.dll
RAnimPixmapPath "C:\LITESTEP\Rainmation\"
RAnimStartDelay 5
*RAnim LSButton
 
Config:
 
 
 
 
 
 
Configuration of animations is done from a GUI which you open from the popup-menu. Note that some changes are set immediately and for some you need to refresh the animation. The settings are saved in a Rainmation.ini -file in the same folder where the animation pictures are. Here is some info what everything means:

Position
The horizontal and vertical position of the animations relative to top left corner. The XPOS can also be negative in which case the position is relative to right of the screen.

Delay
The amount of milliseconds between the frames. The timing uses normal Windows messaging system, so it's not very accurate. Also you might not be able to set the delay as low as you would like (there won't be any speedup in the animation playrate).

ToolTip
The string that will be shown as ToolTip when mouse stays over the animation.

Use real transparency
Uses real transparency instead of fake one for this animation. A word of warning should go here: using real transparency uses lot of CPU, so it might not be wise to use this for constantly looping animations. Also, alpha-transparency doesn't work with real transparency.

Always on top
Set this animation window to be always on top of other windows. This is only useful with real transparency.

No popup menu
Disable the right mouse button menu for this animation. You can use the !RAnimConfig-bang to reset this value.

Run animation only once
If set the animations are not looped but played only once. The stop frame will stay visible after the playing is complited.

Start animation disabled
The animation is disabled when loaded and won't start playing until it's enabled. The startframe will be shown even when this is selected.

Execute
Command and it's arguments that will be executed when the animation is clicked with left mouse button. This can also be a !bang-command.

Wait click-animation before execution
If set, the click-animation will be played fully before the program is executed. Also note that if you don't define click-animation range the program won't be executed at all.

Mouse On Execute
Command and it's arguments that will be executed when the mouse moves over the animation. This can also be a !bang-command.

Mouse Off Execute
Command and it's arguments that will be executed when the mouse leaves the animation. This can also be a !bang-command.

Mouse over delay
Amount of milliseconds that the mouse must be over the animation before anything is executed.

Normal range
Sets the range of frames that will be played when nothing else is happening. The EndFrame can also be lower than StartFrame in which case the animation is played backwards. 

Mouse on range
Sets the range of frames that will be played when mousepointer goes over the animation. These frames are played only once. The EndFrame can also be lower than StartFrame in which case the animation is played backwards.

Mouse off range
Sets the range of frames that will be played when mousepointer leaves the animation window. These frames are played only once. The EndFrame can also be lower than StartFrame in which case the animation is played backwards.

Mouse over range
Sets the range of frames that will be played when the mouse is over the animation window. These frames are looped while the mouse is over the window. The EndFrame can also be lower than StartFrame in which case the animation is played backwards.

Mouse click range
Sets the range of frames that will be played when left mouse button has been clicked on the animation window. These frames are played only once and after that the animation goes playing the normal frames (not mouse over frames even if the mouse pointer still is over the animation). The EndFrame can also be lower than StartFrame in which case the animation is played backwards.

 
Bangs:
 
 
 
 
 
 
Animations can be controlled with these !bang-commands:

!RAnimEnable [ANIMNAME]
Enables the animation. If ANIMNAME  is not given all the animations are enabled. Everytime animation is enabled the playing starts form the startframe, so animations which are played only once will be played again with this bang.

!RAnimDisable [ANIMNAME]
Disables the animation. If ANIMNAME  is not given all the animations are disabled.

!RAnimToggle [ANIMNAME]
Toggles the enabled/disabled state of the animation. If ANIMNAME  is not given all the animations are toggled.

!RAnimQuit [ANIMNAME]
Quits the animation. If ANIMNAME  is not given all the animations are quitted.

!RAnimRefresh [ANIMNAME]
Refreshes the animation. If ANIMNAME is not given all the animations are refreshed.

!RAnimConfig [ANIMNAME]
Opens the config-dialog. You must give the ANIMNAME-argument!

!RAnimPlayFrames [ANIMNAME] [STARTFRAME] [STOPFRAME]
Plays the given animation frames. After the frames are played the normal animations frames continue from beginning. If the animation is not looping the the last played frame (STOPFRAME) will stay visible. The STARTFRAME can be higher than STOPFRAME in which case the frames are played in reversed order. You must give all the arguments!

 
Legal:
 
 
 
 
 
 
This program is free software. Like Litestep, it is released under GNU General Public License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Please note that this software is still in beta-state and is most likely to have defects and may not work as it should. Use it at your own risk. The author is not responsible for any damage, direct or indirect, that this software may cause.

 
Contact:
 
 
 
 
 
 
The latest version will be found from my homepage at:

http://www.iki.fi/~rainy/products.html

You may also send comments and bug-reports to author:

rainy@iki.fi

Please put the name of the product (i.e. RAINMATION) in the subject-field of the mail. It may be useful if you write the version of the product also.

 
Future:
 
 
 
 
 
 
Here is some features which may be included in the future:
  • Support for real aniumation formats (like AVI, AnimGIF, ...)
  • Merge it with shortcut.dll so you can have animated shortcuts
  • More control via Bangs
  • Detect desktop wallpaper changes and auto-refresh.
 
History:
 
 
 
 
 
 
9 FEBRUARY 2000 (Version 0.7 ß)
  • MouseOn and MouseOff can now execute commands and !bangs.
  • Redesigned the config-dialog to fit all the new stuff.
  • Added support for ToolTips.
  • Fixed a memory-leak when quitting (or recycling).

21 JANUARY 2000 (Version 0.6 ß)

  • Animations can be played only once.
  • Animations can now be started as disabled.
  • !RAnimEnable starts playing always from the normal starting frame.
  • Added !RAnimPlayFrames-bang which plays the given frames.
8 JANUARY 2000 (Version 0.5 ß)
  • Fixed couple of bugs related to animation playback.
  • Added support for Alpha-transparency. Now animations can have semitransparent frames.

25 DECEMBER 1999 (Version 0.4 ß) [Merry X-mas edition]

  • Changed bangs to take the name of tha anim as argument because the animations aren't numbered anymore.
  • Major modifications in configuration of the animations. This is _NOT_ anymore compatible with the old system.
  • Added !RAnimConfig -bang to popup the config-dialog.
  • Fixed a bug which caused gfx-errors if you had more than 4 animations running.
  • Windows aren't activated when opened.

24 OCTOBER 1999 (Version 0.3 ß)

  • Added bangs: !RAnimEnable, !RAnimDisable, !RAnimToggle, !RAnimQuit, !RAnimRefresh
  • Included LM_GETREVID-message handling for !About
  • Now uses static linking to MFC. A bit larger executable but removes the problems with MFC42.DLL
  • Optimized real transparency's window region switching.
  • RAnimPosY & RAnimPosX now accept negative coordinates as well.
  • RAnimExecute now uses LSExecute, so executing bangs should now work too.

8 OCTOBER 1999 (Version 0.2 ß)

  • Added simple shortcut support: RAnimWaitClickAnim[N] and RAnimExecute[N] [Program] [Arguments]
  • Added several commands to handle animation with various mouse events:
    • RAnimNormalRange[N] [StartFrame] [EndFrame]
    • RAnimMouseOnRange[N] [StartFrame] [EndFrame]
    • RAnimMouseOffRange[N] [StartFrame] [EndFrame]
    • RAnimMouseOverRange[N] [StartFrame] [EndFrame]
    • RAnimMouseClickRange[N] [StartFrame] [EndFrame]
  • Added RAnimRealTransparency which will set the anims to use regions as transparency.
  • Added RAnimAlwaysOnTop which will set the anims be always on top (useful only with real transparency).
  • Added RAnimNoMenu to disable the context menu.
  • Frames start from 000 (not from 001 as before!)
  • Window isn't activated when it's opened.
  • RAnimPixmapPath can be used to determine the animation directory instead of PixmapPath.

8 AUGUST 1999 (Version 0.1 ß)

  • Initial Betarelease