Blame test/copyrecttest.c

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
}