summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordscho <dscho>2004-01-21 01:19:11 +0000
committerdscho <dscho>2004-01-21 01:19:11 +0000
commitc0c5aace2f50f970ee0d4881c57c3b317824d98c (patch)
tree96d93960d30befae60c2b2b7b058cc4fcd9c1245
parentd58d3af1ce091dfeba4d6ed3a2ad5e629678ead5 (diff)
downloadlibtdevnc-c0c5aace.tar.gz
libtdevnc-c0c5aace.zip
add a simple example how to use rfbDoCopyRect
-rw-r--r--examples/Makefile.am7
-rw-r--r--examples/copyrecttest.c50
2 files changed, 55 insertions, 2 deletions
diff --git a/examples/Makefile.am b/examples/Makefile.am
index c2be9b8..8f19836 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -1,4 +1,5 @@
CFLAGS=-I.. -g -Wall
+LDADD = ../libvncserver.a
if HAVE_LIBPTHREAD
BACKGROUND_TEST=blooptest
@@ -9,10 +10,12 @@ MAC=mac
mac_LDFLAGS=-framework ApplicationServices -framework Carbon -framework IOKit
endif
+copyrecttest_LDADD=$(LDADD) -lm
+
noinst_HEADERS=radon.h
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
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 <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);
+}