11/30/96

BeSnow 0.82 by Dean Luick (dean@natinst.com)
Based on xsnow 1.40 by Rick Jansen (rick@sara.nl).

BeSnow is a program that attempts to display snow falling in the
background window of your Bebox.  It is available as a program
and as a saver module.

Program Comments
----------------
I say "attempts" because I don't know of any way to access Be's
background window.  So instead I create a window the size of the
screen (minus the dock).  I don't know of any good way to "sink"
a window (see note 1) so you will have to do it by hand -- by
bringing each app to the front.  The window will resist being
activated by a mouse click, but if you select the app in the
browser, the window will be brought forward.  This behavour is
deliberate.

Xsnow, an X-Windows application, allowed snow to pile up on the bottom
and visible windows.  I have disabled snow pileup on the bottom because
of a bad implemention of BRegion -- new rectangles addes don't seem to
be consolidated.  I can't implement snow pileup on windows because I
can't get a list of obsuring rectangles (see note 2).

Hold down the option key when you start and BeSnow will show up
in a non-screen sized window.

Saver Comments
--------------
This is a module for Saver 1.0 by Hiroshi Lockheimer.  It doesn't
have to worry about trying to find obscuring windows like the
program, but the snow-buildup on the bottom is still disabled
(see above).



There are many options available with besnow; number of snowflakes,
santa's size, etc.  None of them are available without changing
the source (this _is_ a version < 1.0!) but I hope to get to that
eventually.

If you have suggestions to work around problems or changes to the
code, please send them to me!

dean
Dean Luick
dean@natinst.com

Notes
1. One incomplete possibility is to send AppActivate messages to
each team.  Even if this really works (I haven't tried it yet), it
will only activate one window of each app.

2. This is possible -- the workspace does it.  Too bad I don't have
access to those secret APIs.  One sneaky possibility is to have the
view invalidate itself, then use clipping region to figure out
rectangles.  Unfortunately, I can't get into the innards of BRegions
without editing the system headers.