diff options
author | dscho <dscho> | 2003-02-07 11:53:43 +0000 |
---|---|---|
committer | dscho <dscho> | 2003-02-07 11:53:43 +0000 |
commit | 6b7cdeb9ef9ffb149d8dc38b17a55ebe503e31e7 (patch) | |
tree | 2d267e28a9a373a98afb9b4e09e4ae53f9a6e37e /pnmshow.c | |
parent | 357844447caa9af50f78fb3cc17309621ee90e76 (diff) | |
download | libtdevnc-6b7cdeb9ef9ffb149d8dc38b17a55ebe503e31e7.tar.gz libtdevnc-6b7cdeb9ef9ffb149d8dc38b17a55ebe503e31e7.zip |
moved files to contrib/ and examples/
Diffstat (limited to 'pnmshow.c')
-rw-r--r-- | pnmshow.c | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/pnmshow.c b/pnmshow.c deleted file mode 100644 index 0a5f47b..0000000 --- a/pnmshow.c +++ /dev/null @@ -1,81 +0,0 @@ -#include <stdio.h> -#include "rfb.h" -#include "keysym.h" - -void HandleKey(Bool down,KeySym key,rfbClientPtr cl) -{ - if(down && (key==XK_Escape || key=='q' || key=='Q')) - rfbCloseClient(cl); -} - -int main(int argc,char** argv) -{ - FILE* in=stdin; - int i,j,k,width,height,paddedWidth; - char buffer[1024]; - rfbScreenInfoPtr rfbScreen; - - if(argc>1) { - in=fopen(argv[1],"rb"); - if(!in) { - printf("Couldn't find file %s.\n",argv[1]); - exit(1); - } - } - - fgets(buffer,1024,in); - if(strncmp(buffer,"P6",2)) { - printf("Not a ppm.\n"); - exit(2); - } - - /* skip comments */ - do { - fgets(buffer,1024,in); - } while(buffer[0]=='#'); - - /* get width & height */ - sscanf(buffer,"%d %d",&width,&height); - fprintf(stderr,"Got width %d and height %d.\n",width,height); - fgets(buffer,1024,in); - - /* vncviewers have problems with widths which are no multiple of 4. */ - paddedWidth = width; - if(width&3) - paddedWidth+=4-(width&3); - - /* initialize data for vnc server */ - rfbScreen = rfbGetScreen(&argc,argv,paddedWidth,height,8,3,4); - if(argc>1) - rfbScreen->desktopName = argv[1]; - else - rfbScreen->desktopName = "Picture"; - rfbScreen->rfbAlwaysShared = TRUE; - rfbScreen->kbdAddEvent = HandleKey; - - /* enable http */ - rfbScreen->httpDir = "./classes"; - - /* allocate picture and read it */ - rfbScreen->frameBuffer = (char*)malloc(paddedWidth*4*height); - fread(rfbScreen->frameBuffer,width*3,height,in); - fclose(in); - - /* correct the format to 4 bytes instead of 3 (and pad to paddedWidth) */ - for(j=height-1;j>=0;j--) { - for(i=width-1;i>=0;i--) - for(k=2;k>=0;k--) - rfbScreen->frameBuffer[(j*paddedWidth+i)*4+k]= - rfbScreen->frameBuffer[(j*width+i)*3+k]; - for(i=width*4;i<paddedWidth*4;i++) - rfbScreen->frameBuffer[j*paddedWidth*4+i]=0; - } - - /* initialize server */ - rfbInitServer(rfbScreen); - - /* run event loop */ - rfbRunEventLoop(rfbScreen,40000,FALSE); - - return(0); -} |