add a simple example how to use rfbDoCopyRect

pull/1/head
dscho 21 years ago
parent d58d3af1ce
commit c0c5aace2f

@ -1,4 +1,5 @@
CFLAGS=-I.. -g -Wall CFLAGS=-I.. -g -Wall
LDADD = ../libvncserver.a
if HAVE_LIBPTHREAD if HAVE_LIBPTHREAD
BACKGROUND_TEST=blooptest BACKGROUND_TEST=blooptest
@ -9,10 +10,12 @@ MAC=mac
mac_LDFLAGS=-framework ApplicationServices -framework Carbon -framework IOKit mac_LDFLAGS=-framework ApplicationServices -framework Carbon -framework IOKit
endif endif
copyrecttest_LDADD=$(LDADD) -lm
noinst_HEADERS=radon.h noinst_HEADERS=radon.h
noinst_PROGRAMS=example pnmshow regiontest pnmshow24 fontsel \ noinst_PROGRAMS=example pnmshow regiontest pnmshow24 fontsel \
vncev storepasswd colourmaptest simple simple15 $(BACKGROUND_TEST) $(MAC) vncev storepasswd colourmaptest simple simple15 copyrecttest \
$(BACKGROUND_TEST) $(MAC)
LDADD = ../libvncserver.a

@ -0,0 +1,50 @@
#include <rfb/rfb.h>
#include <math.h>
void initBackground(rfbScreenInfoPtr server)
{
unsigned int i,j;
for(i=0;i<server->width;i++)
for(j=0;j<server->height;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);
}
Loading…
Cancel
Save