#include <xstep.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

XSPixmap *pixmap;

char *pixmapname="../pictures/bani.xpm.gz";

void w1onchange(XSWidget *wid) {

	static int x=100,y=100,incx=3,incy=3;

	XCopyArea(wid->display,
		pixmap->pixmap,wid->window,wid->gc,
		0,0,
		pixmap->width,pixmap->height,
		x,y);

	x+=incx;
	y+=incy;
	
	if(x+pixmap->width>wid->width)   incx=-rand()%6;
	if(y+pixmap->height>wid->height) incy=-rand()%6;	

	if(x<=0) incx=rand()%6;
	if(y<=0) incy=rand()%6;
}

void w1oncreate(XSWidget *wid) {
	
	XSWidgetCreate(wid);
	
	if(!(pixmap=XSPixmapCreateXPMF(wid,pixmapname))) {
	
		fprintf(stderr,"failed to open [%s], exiting...\n\n",
			pixmapname);
			
		exit(-1);
	}
}

int main(int argc,char **argv) {

	XSWidget *d1,*w1;

	if(argc==2) pixmapname=argv[1];

	d1=XSDesktop(getenv("DISPLAY"),argv,argc);
	w1=XSWindow(d1,0,0,640,480,"pixmap");
           XSButton(w1,-8,-8,72,24,"Close",XSWindowClose);

	w1->on.create=w1oncreate;
	w1->on.change=w1onchange;
	
	while(XSCheckEvent(d1,!XS_BLOCK)) usleep(1);

	return 0;
}