|
Packit Service |
b05338 |
#ifdef __STRICT_ANSI__
|
|
Packit Service |
b05338 |
#define _BSD_SOURCE
|
|
Packit Service |
b05338 |
#endif
|
|
Packit Service |
b05338 |
#include <rfb/rfb.h>
|
|
Packit Service |
b05338 |
#include <math.h>
|
|
Packit Service |
b05338 |
|
|
Packit Service |
b05338 |
static void initBackground(rfbScreenInfoPtr server)
|
|
Packit Service |
b05338 |
{
|
|
Packit Service |
b05338 |
unsigned int i,j;
|
|
Packit Service |
b05338 |
|
|
Packit Service |
b05338 |
for(i=0;i<server->width;i++)
|
|
Packit Service |
b05338 |
for(j=0;j<server->height;j++) {
|
|
Packit Service |
b05338 |
server->frameBuffer[(j*server->width+i)*4+0]=i&0xff;
|
|
Packit Service |
b05338 |
server->frameBuffer[(j*server->width+i)*4+1]=j&0xff;
|
|
Packit Service |
b05338 |
server->frameBuffer[(j*server->width+i)*4+2]=(i*j)&0xff;
|
|
Packit Service |
b05338 |
}
|
|
Packit Service |
b05338 |
}
|
|
Packit Service |
b05338 |
|
|
Packit Service |
b05338 |
int main(int argc,char** argv)
|
|
Packit Service |
b05338 |
{
|
|
Packit Service |
b05338 |
int width=400,height=300,w=20,x,y;
|
|
Packit Service |
b05338 |
double r,phi=0;
|
|
Packit Service |
b05338 |
|
|
Packit Service |
b05338 |
rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,width,height,8,3,4);
|
|
Packit Service |
b05338 |
if(!server)
|
|
Packit Service |
b05338 |
return 0;
|
|
Packit Service |
b05338 |
server->frameBuffer=(char*)malloc(width*height*4);
|
|
Packit Service |
b05338 |
initBackground(server);
|
|
Packit Service |
b05338 |
server->deferUpdateTime=0;
|
|
Packit Service |
b05338 |
rfbInitServer(server);
|
|
Packit Service |
b05338 |
|
|
Packit Service |
b05338 |
r=0;
|
|
Packit Service |
b05338 |
while(1) {
|
|
Packit Service |
b05338 |
if(r<=0) {
|
|
Packit Service |
b05338 |
initBackground(server);
|
|
Packit Service |
b05338 |
rfbMarkRectAsModified(server,0,0,width,height);
|
|
Packit Service |
b05338 |
r=0.43;
|
|
Packit Service |
b05338 |
phi=0;
|
|
Packit Service |
b05338 |
} else {
|
|
Packit Service |
b05338 |
r-=0.0001;
|
|
Packit Service |
b05338 |
phi+=0.02;
|
|
Packit Service |
b05338 |
if(phi>2*M_PI)
|
|
Packit Service |
b05338 |
phi-=2*M_PI;
|
|
Packit Service |
b05338 |
}
|
|
Packit Service |
b05338 |
x=width*(0.5+cos(phi)*r);
|
|
Packit Service |
b05338 |
y=height*(0.5+sin(phi)*r);
|
|
Packit Service |
b05338 |
if(x>=0 && y>=0 && x+w<=width && y+w<=height) {
|
|
Packit Service |
b05338 |
unsigned int dx=width*0.5*(1-cos(phi)*r)-x,
|
|
Packit Service |
b05338 |
dy=height*0.5*(1-sin(phi)*r)-y;
|
|
Packit Service |
b05338 |
rfbDoCopyRect(server,x,y,x+w,y+w,-dx,-dy);
|
|
Packit Service |
b05338 |
}
|
|
Packit Service |
b05338 |
rfbProcessEvents(server,50000);
|
|
Packit Service |
b05338 |
}
|
|
Packit Service |
b05338 |
return(0);
|
|
Packit Service |
b05338 |
}
|