#include #include #include #include #include #include #include #include #include #include #include #include #include #include struct Library *BlitzBlankBase; static const char version[]="$VER: BB.Crumble 2.50 (25.12.94)"; char *text[]={"\33c\33uCrumble\33n\n\nModule for BlitzBlank\n\nCopyright 1994\nby\nThomas Börkel", "Sp_eed:", "Da_rk Background:", "_Brightness", "_Delay:" }; struct BB_Object object[]={ {&object[1],BB_VGroup,0,0,0,NULL,NULL}, {&object[2],BB_Slider,1,100,100,NULL,NULL}, {&object[3],BB_Check,0,0,0,NULL,NULL}, {&object[4],BB_Slider,0,100,70,NULL,NULL}, {&object[5],BB_Slider,0,20,1,NULL,NULL}, {NULL,BB_VGroup_End,0,0,0,NULL,NULL} }; struct BB_Message message; struct BB_Screeninfo *screeninfo; int a,*top,*bot; struct RastPort *rp; void setup (void) { int i; a=0; SetAPen (rp,0); Move (rp,0,screeninfo->height-1); Draw (rp,screeninfo->width-1,screeninfo->height-1); Move (rp,0,screeninfo->height-2); Draw (rp,screeninfo->width-1,screeninfo->height-2); for (i=0;iwidth;i++) { top[i]=screeninfo->height-2; bot[i]=screeninfo->height; } } void blank (void) { int i,x,c,b=0; rp=&screeninfo->bbscreen->RastPort; top=calloc (screeninfo->width,sizeof (int)); bot=calloc (screeninfo->width,sizeof (int)); if (top==NULL || bot==NULL) return; if (object[2].set) b=BBL_GetDarkestPen (screeninfo->bbscreen); ScreenToFront (screeninfo->bbscreen); if (!CheckSignal (SIGBREAKF_CTRL_C)) { BBL_ModuleRunning (); if (BBL_FadeDown (screeninfo->bbscreen,object[3].set,object[4].set)) { setup (); do { WaitTOF (); for (i=1;i<=object[1].set;i++) { x=drand48 ()*screeninfo->width; if (top[x]>=0) { do { c=ReadPixel (rp,x,top[x]); top[x]--; } while (c==b && top[x]!=-1); if (top[x]==-1 && c==b) a++; else top[x]++; if (c!=b) { SetAPen (rp,b); WritePixel (rp,x,top[x]); if (drand48 ()*3<1) { bot[x]--; SetAPen (rp,c); WritePixel (rp,x,bot[x]); } } else if (a==screeninfo->width) { BBL_CopyOriginalScreen (screeninfo->bbscreen); setup (); } } } } while (!CheckSignal (SIGBREAKF_CTRL_C)); } } return; } void main(int argc,char **argv) { int i; if (!(BlitzBlankBase=OpenLibrary ("blitzblank.library",BLITZBLANKLIB_VER))) exit (0); message.flags=BBF_CloneScreen; message.first=&object[0]; if (strcmp (argv[1],"BLANK")==0) { StrToLong (argv[3],(long *) &screeninfo); BBL_SendMessage (&message,argv[2]); if (screeninfo->bbscreen) blank (); BBL_BlankDone (); } else { message.infotext=BBL_GetString (230,text[0]); for (i=1;i<=4;i++) object[i].label=BBL_GetString (230+i,text[i]); if (strcmp (argv[1],"CONFIG")==0) { BBL_SendMessage (&message,argv[2]); } else { message.first=NULL; BBL_SendMessage (&message,argv[2]); } } CloseLibrary (BlitzBlankBase); exit (0); }