From c0c5aace2f50f970ee0d4881c57c3b317824d98c Mon Sep 17 00:00:00 2001 From: dscho Date: Wed, 21 Jan 2004 01:19:11 +0000 Subject: add a simple example how to use rfbDoCopyRect --- examples/copyrecttest.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 examples/copyrecttest.c (limited to 'examples/copyrecttest.c') diff --git a/examples/copyrecttest.c b/examples/copyrecttest.c new file mode 100644 index 0000000..8186e8e --- /dev/null +++ b/examples/copyrecttest.c @@ -0,0 +1,50 @@ +#include +#include + +void initBackground(rfbScreenInfoPtr server) +{ + unsigned int i,j; + + for(i=0;iwidth;i++) + for(j=0;jheight;j++) { + server->frameBuffer[(j*server->width+i)*4+0]=i&0xff; + server->frameBuffer[(j*server->width+i)*4+1]=j&0xff; + server->frameBuffer[(j*server->width+i)*4+2]=(i*j)&0xff; + } +} + +int main(int argc,char** argv) +{ + int width=400,height=300,w=20,x,y; + double r,phi; + + rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,width,height,8,3,4); + server->frameBuffer=malloc(width*height*4); + initBackground(server); + server->rfbDeferUpdateTime=0; + rfbInitServer(server); + + r=0; + while(1) { + if(r<=0) { + initBackground(server); + rfbMarkRectAsModified(server,0,0,width,height); + r=0.43; + phi=0; + } else { + r-=0.0001; + phi+=0.02; + if(phi>2*M_PI) + phi-=2*M_PI; + } + x=width*(0.5+cos(phi)*r); + y=height*(0.5+sin(phi)*r); + if(x>=0 && y>=0 && x+w<=width && y+w<=height) { + unsigned int dx=width*0.5*(1-cos(phi)*r)-x, + dy=height*0.5*(1-sin(phi)*r)-y; + rfbDoCopyRect(server,x,y,x+w,y+w,-dx,-dy); + } + rfbProcessEvents(server,50000); + } + return(0); +} -- cgit v1.2.3