#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; }