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.