projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
http://se.aminet.net/pub/Linux/distributions/slackware/slackware-10.1/source/xap...
[xscreensaver]
/
hacks
/
metaballs.c
diff --git
a/hacks/metaballs.c
b/hacks/metaballs.c
index 5d0f63dbc67c237b693023f9605c39dfe25384c2..f867b2906aa0462e7e5946397f42b5d6d98cfc2e 100644
(file)
--- a/
hacks/metaballs.c
+++ b/
hacks/metaballs.c
@@
-56,7
+56,7
@@
typedef struct
short xpos,ypos;
} BLOB;
short xpos,ypos;
} BLOB;
-static unsigned
char
nBlobCount;
+static unsigned
int
nBlobCount;
static unsigned char radius;
static unsigned char delta;
static unsigned char dradius;
static unsigned char radius;
static unsigned char delta;
static unsigned char dradius;
@@
-65,10
+65,13
@@
static unsigned char **blob;
static BLOB *blobs;
static unsigned char **blub;
static BLOB *blobs;
static unsigned char **blub;
+#undef BELLRAND
+#define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3)
+
static void init_blob(BLOB *blob)
{
static void init_blob(BLOB *blob)
{
- blob->xpos =
(iWinWidth>> 1)
- radius;
- blob->ypos =
(iWinHeight >> 1
) - radius;
+ blob->xpos =
iWinWidth/4 + BELLRAND(iWinWidth/2)
- radius;
+ blob->ypos =
iWinHeight/4 + BELLRAND(iWinHeight/2
) - radius;
}
static void Execute( Display *pDisplay,
}
static void Execute( Display *pDisplay,
@@
-225,7
+228,7
@@
static void Initialize( Display *pDisplay, Window Win, GC *pGC, XImage **ppImage
/* Find the preferred bits-per-pixel. (jwz) */
{
/* Find the preferred bits-per-pixel. (jwz) */
{
- int
i,
pfvc = 0;
+ int pfvc = 0;
XPixmapFormatValues *pfv = XListPixmapFormats( pDisplay, &pfvc );
for( i=0; i<pfvc; i++ )
if( pfv[ i ].depth == XWinAttribs.depth )
XPixmapFormatValues *pfv = XListPixmapFormats( pDisplay, &pfvc );
for( i=0; i<pfvc; i++ )
if( pfv[ i ].depth == XWinAttribs.depth )
@@
-265,6
+268,8
@@
static void Initialize( Display *pDisplay, Window Win, GC *pGC, XImage **ppImage
radius = 100;
radius = (radius / 100.0) * (iWinHeight >> 3);
radius = 100;
radius = (radius / 100.0) * (iWinHeight >> 3);
+ if (radius >= 128) /* should use UCHAR_MAX? */
+ radius = 127; /* dradius should fit in u_char */
dradius = radius * 2;
sradius = radius * radius;
dradius = radius * 2;
sradius = radius * radius;