From c8fc0ad5a772c55a88900d521684cfcf35afe7cb Mon Sep 17 00:00:00 2001 From: Christian Beier Date: Thu, 10 Mar 2011 14:55:09 +0100 Subject: Move zippy.c to examples. --- Makefile.am | 4 +- configure.ac | 1 - contrib/Makefile.am | 7 -- contrib/zippy.c | 179 --------------------------------------------------- examples/Makefile.am | 3 +- examples/zippy.c | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 183 insertions(+), 190 deletions(-) delete mode 100644 contrib/Makefile.am delete mode 100644 contrib/zippy.c create mode 100644 examples/zippy.c diff --git a/Makefile.am b/Makefile.am index 91f85f0..cfc5612 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,8 +2,8 @@ if WITH_X11VNC X11VNC=x11vnc endif -SUBDIRS=libvncserver examples contrib libvncclient vncterm classes client_examples test $(X11VNC) -DIST_SUBDIRS=libvncserver examples contrib libvncclient vncterm classes client_examples test +SUBDIRS=libvncserver examples libvncclient vncterm classes client_examples test $(X11VNC) +DIST_SUBDIRS=libvncserver examples libvncclient vncterm classes client_examples test EXTRA_DIST = CMakeLists.txt bin_SCRIPTS = libvncserver-config diff --git a/configure.ac b/configure.ac index bf760dd..4ae1ac8 100644 --- a/configure.ac +++ b/configure.ac @@ -830,7 +830,6 @@ AC_SUBST(RPMSOURCEDIR) AC_CONFIG_FILES([Makefile libvncserver/Makefile - contrib/Makefile examples/Makefile vncterm/Makefile classes/Makefile diff --git a/contrib/Makefile.am b/contrib/Makefile.am deleted file mode 100644 index 637fea7..0000000 --- a/contrib/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -INCLUDES = -I$(top_srcdir) -LDADD = ../libvncserver/libvncserver.la @WSOCKLIB@ - -noinst_PROGRAMS=zippy - -zippy_SOURCES=zippy.c - diff --git a/contrib/zippy.c b/contrib/zippy.c deleted file mode 100644 index d8a90d7..0000000 --- a/contrib/zippy.c +++ /dev/null @@ -1,179 +0,0 @@ -#include -#include -#include -#include -#include - -static int maxx=400, maxy=400, bpp=4; -/* odd maxx doesn't work (vncviewer bug) */ - -/* Here we create a structure so that every client has it's own pointer */ - -/* turns the framebuffer black */ -void blank_framebuffer(char* frame_buffer, int x1, int y1, int x2, int y2); -/* displays a red bar, a green bar, and a blue bar */ -void draw_primary_colors (char* frame_buffer, int x1, int y1, int x2, int y2); -void linecount (char* frame_buffer); -/* handles mouse events */ -void on_mouse_event (int buttonMask,int x,int y,rfbClientPtr cl); -/* handles keyboard events */ -void on_key_press (rfbBool down,rfbKeySym key,rfbClientPtr cl); - -int main (int argc, char **argv) -{ - rfbScreenInfoPtr server; - - if(!rfbProcessSizeArguments(&maxx,&maxy,&bpp,&argc,argv)) - return 1; - - server = rfbGetScreen (&argc, argv, maxx, maxy, 8, 3, bpp); - server->desktopName = "Zippy das wundersquirrel\'s VNC server"; - server->frameBuffer = (char*)malloc(maxx*maxy*bpp); - server->alwaysShared = TRUE; - server->kbdAddEvent = on_key_press; - server->ptrAddEvent = on_mouse_event; - - rfbInitServer (server); - - blank_framebuffer(server->frameBuffer, 0, 0, maxx, maxy); - rfbRunEventLoop (server, -1, FALSE); - free(server->frameBuffer); - rfbScreenCleanup (server); - return 0; -} - -void blank_framebuffer(char* frame_buffer, int x1, int y1, int x2, int y2) -{ - int i; - for (i=0; i < maxx * maxy * bpp; i++) frame_buffer[i]=(char) 0; -} - -void draw_primary_colors (char* frame_buffer, int x1, int y1, int x2, int y2) -{ - int i, j, current_pixel; - for (i=y1; i < y2; i++){ - for (j=x1; j < x2; j++) { - current_pixel = (i*x2 + j) * bpp; - if (i < y2 ) { - frame_buffer[current_pixel+0] = (char) 128; - frame_buffer[current_pixel+1] = (char) 0; - frame_buffer[current_pixel+2] = (char) 0; - } - if (i < y2/3*2) { - frame_buffer[current_pixel+0] = (char) 0; - frame_buffer[current_pixel+1] = (char) 128; - frame_buffer[current_pixel+2] = (char) 0; - } - if (i < y2/3) { - frame_buffer[current_pixel+0] = (char) 0; - frame_buffer[current_pixel+1] = (char) 0; - frame_buffer[current_pixel+2] = (char) 128; - } - } - } - } - -/* Dscho's versions (slower, but works for bpp != 3 or 4) */ -static void draw_primary_colours_generic(rfbScreenInfoPtr s,int x1,int y1,int x2,int y2) -{ - rfbPixelFormat f=s->serverFormat; - int i,j; - for(j=y1;jserverFormat; - int i,j,y3=(y1*2+y2)/3,y4=(y1+y2*2)/3; - /* draw first pixel */ - rfbDrawPixel(s,x1,y1,f.redMax<frameBuffer+(x)*bpp+(y)*s->paddedWidthInBytes - memcpy(ADDR(i,j+y1),ADDR(x1,y1),bpp); - memcpy(ADDR(i,j+y3),ADDR(x1,y3),bpp); - memcpy(ADDR(i,j+y4),ADDR(x1,y4),bpp); - } -} - -static void draw_primary_colours_generic_ultrafast(rfbScreenInfoPtr s,int x1,int y1,int x2,int y2) -{ - rfbPixelFormat f=s->serverFormat; - int y3=(y1*2+y2)/3,y4=(y1+y2*2)/3; - /* fill rectangles */ - rfbFillRect(s,x1,y1,x2,y3,f.redMax<maxy-20; i-=4) - for (j=0; j<4; j++) for (k=0; k < maxx; k++) { - current_pixel = (i*j*maxx + k) * bpp; - if (i%2 == 0) { - frame_buffer[current_pixel+0] = (char) 0; - frame_buffer[current_pixel+1] = (char) 0; - frame_buffer[current_pixel+2] = (char) 128; - } - - if (i%2 == 1) { - frame_buffer[current_pixel+0] = (char) 128; - frame_buffer[current_pixel+1] = (char) 0; - frame_buffer[current_pixel+2] = (char) 0; - } - } - -} - - -void on_key_press (rfbBool down,rfbKeySym key,rfbClientPtr cl) -{ - if (down) /* or else the action occurs on both the press and depress */ - switch (key) { - - case XK_b: - case XK_B: - blank_framebuffer(cl->screen->frameBuffer, 0, 0, maxx, maxy); - rfbDrawString(cl->screen,&default8x16Font,20,maxy-20,"Hello, World!",0xffffff); - rfbMarkRectAsModified(cl->screen,0, 0,maxx,maxy); - rfbLog("Framebuffer blanked\n"); - break; - case XK_p: - case XK_P: - /* draw_primary_colors (cl->screen->frameBuffer, 0, 0, maxx, maxy); */ - draw_primary_colours_generic_ultrafast (cl->screen, 0, 0, maxx, maxy); - rfbMarkRectAsModified(cl->screen,0, 0,maxx,maxy); - rfbLog("Primary colors displayed\n"); - break; - case XK_Q: - case XK_q: - rfbLog("Exiting now\n"); - exit(0); - case XK_C: - case XK_c: - rfbDrawString(cl->screen,&default8x16Font,20,100,"Hello, World!",0xffffff); - rfbMarkRectAsModified(cl->screen,0, 0,maxx,maxy); - break; - default: - rfbLog("The %c key was pressed\n", (char) key); - } -} - - -void on_mouse_event (int buttonMask,int x,int y,rfbClientPtr cl) -{ - printf("buttonMask: %i\n" - "x: %i\n" "y: %i\n", buttonMask, x, y); -} diff --git a/examples/Makefile.am b/examples/Makefile.am index d08f7c9..92909bf 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -18,5 +18,6 @@ noinst_HEADERS=radon.h rotatetemplate.c noinst_PROGRAMS=example pnmshow regiontest pnmshow24 fontsel \ vncev storepasswd colourmaptest simple simple15 $(MAC) \ - $(FILETRANSFER) backchannel $(BLOOPTEST) camera rotate + $(FILETRANSFER) backchannel $(BLOOPTEST) camera rotate \ + zippy diff --git a/examples/zippy.c b/examples/zippy.c new file mode 100644 index 0000000..d8a90d7 --- /dev/null +++ b/examples/zippy.c @@ -0,0 +1,179 @@ +#include +#include +#include +#include +#include + +static int maxx=400, maxy=400, bpp=4; +/* odd maxx doesn't work (vncviewer bug) */ + +/* Here we create a structure so that every client has it's own pointer */ + +/* turns the framebuffer black */ +void blank_framebuffer(char* frame_buffer, int x1, int y1, int x2, int y2); +/* displays a red bar, a green bar, and a blue bar */ +void draw_primary_colors (char* frame_buffer, int x1, int y1, int x2, int y2); +void linecount (char* frame_buffer); +/* handles mouse events */ +void on_mouse_event (int buttonMask,int x,int y,rfbClientPtr cl); +/* handles keyboard events */ +void on_key_press (rfbBool down,rfbKeySym key,rfbClientPtr cl); + +int main (int argc, char **argv) +{ + rfbScreenInfoPtr server; + + if(!rfbProcessSizeArguments(&maxx,&maxy,&bpp,&argc,argv)) + return 1; + + server = rfbGetScreen (&argc, argv, maxx, maxy, 8, 3, bpp); + server->desktopName = "Zippy das wundersquirrel\'s VNC server"; + server->frameBuffer = (char*)malloc(maxx*maxy*bpp); + server->alwaysShared = TRUE; + server->kbdAddEvent = on_key_press; + server->ptrAddEvent = on_mouse_event; + + rfbInitServer (server); + + blank_framebuffer(server->frameBuffer, 0, 0, maxx, maxy); + rfbRunEventLoop (server, -1, FALSE); + free(server->frameBuffer); + rfbScreenCleanup (server); + return 0; +} + +void blank_framebuffer(char* frame_buffer, int x1, int y1, int x2, int y2) +{ + int i; + for (i=0; i < maxx * maxy * bpp; i++) frame_buffer[i]=(char) 0; +} + +void draw_primary_colors (char* frame_buffer, int x1, int y1, int x2, int y2) +{ + int i, j, current_pixel; + for (i=y1; i < y2; i++){ + for (j=x1; j < x2; j++) { + current_pixel = (i*x2 + j) * bpp; + if (i < y2 ) { + frame_buffer[current_pixel+0] = (char) 128; + frame_buffer[current_pixel+1] = (char) 0; + frame_buffer[current_pixel+2] = (char) 0; + } + if (i < y2/3*2) { + frame_buffer[current_pixel+0] = (char) 0; + frame_buffer[current_pixel+1] = (char) 128; + frame_buffer[current_pixel+2] = (char) 0; + } + if (i < y2/3) { + frame_buffer[current_pixel+0] = (char) 0; + frame_buffer[current_pixel+1] = (char) 0; + frame_buffer[current_pixel+2] = (char) 128; + } + } + } + } + +/* Dscho's versions (slower, but works for bpp != 3 or 4) */ +static void draw_primary_colours_generic(rfbScreenInfoPtr s,int x1,int y1,int x2,int y2) +{ + rfbPixelFormat f=s->serverFormat; + int i,j; + for(j=y1;jserverFormat; + int i,j,y3=(y1*2+y2)/3,y4=(y1+y2*2)/3; + /* draw first pixel */ + rfbDrawPixel(s,x1,y1,f.redMax<frameBuffer+(x)*bpp+(y)*s->paddedWidthInBytes + memcpy(ADDR(i,j+y1),ADDR(x1,y1),bpp); + memcpy(ADDR(i,j+y3),ADDR(x1,y3),bpp); + memcpy(ADDR(i,j+y4),ADDR(x1,y4),bpp); + } +} + +static void draw_primary_colours_generic_ultrafast(rfbScreenInfoPtr s,int x1,int y1,int x2,int y2) +{ + rfbPixelFormat f=s->serverFormat; + int y3=(y1*2+y2)/3,y4=(y1+y2*2)/3; + /* fill rectangles */ + rfbFillRect(s,x1,y1,x2,y3,f.redMax<maxy-20; i-=4) + for (j=0; j<4; j++) for (k=0; k < maxx; k++) { + current_pixel = (i*j*maxx + k) * bpp; + if (i%2 == 0) { + frame_buffer[current_pixel+0] = (char) 0; + frame_buffer[current_pixel+1] = (char) 0; + frame_buffer[current_pixel+2] = (char) 128; + } + + if (i%2 == 1) { + frame_buffer[current_pixel+0] = (char) 128; + frame_buffer[current_pixel+1] = (char) 0; + frame_buffer[current_pixel+2] = (char) 0; + } + } + +} + + +void on_key_press (rfbBool down,rfbKeySym key,rfbClientPtr cl) +{ + if (down) /* or else the action occurs on both the press and depress */ + switch (key) { + + case XK_b: + case XK_B: + blank_framebuffer(cl->screen->frameBuffer, 0, 0, maxx, maxy); + rfbDrawString(cl->screen,&default8x16Font,20,maxy-20,"Hello, World!",0xffffff); + rfbMarkRectAsModified(cl->screen,0, 0,maxx,maxy); + rfbLog("Framebuffer blanked\n"); + break; + case XK_p: + case XK_P: + /* draw_primary_colors (cl->screen->frameBuffer, 0, 0, maxx, maxy); */ + draw_primary_colours_generic_ultrafast (cl->screen, 0, 0, maxx, maxy); + rfbMarkRectAsModified(cl->screen,0, 0,maxx,maxy); + rfbLog("Primary colors displayed\n"); + break; + case XK_Q: + case XK_q: + rfbLog("Exiting now\n"); + exit(0); + case XK_C: + case XK_c: + rfbDrawString(cl->screen,&default8x16Font,20,100,"Hello, World!",0xffffff); + rfbMarkRectAsModified(cl->screen,0, 0,maxx,maxy); + break; + default: + rfbLog("The %c key was pressed\n", (char) key); + } +} + + +void on_mouse_event (int buttonMask,int x,int y,rfbClientPtr cl) +{ + printf("buttonMask: %i\n" + "x: %i\n" "y: %i\n", buttonMask, x, y); +} -- cgit v1.2.1