1a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include <stdio.h> 2a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include <rfb/rfb.h> 3a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include <rfb/keysym.h> 4a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 5a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define CONCAT2(a,b) a##b 6a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define CONCAT2E(a,b) CONCAT2(a,b) 7a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define CONCAT3(a,b,c) a##b##c 8a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define CONCAT3E(a,b,c) CONCAT3(a,b,c) 9a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 10a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define FUNCNAME rfbRotate 11a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define FUNC(i, j) (h - 1 - j + i * h) 12a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define SWAPDIMENSIONS 13a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 8 14a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 15a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 16 16a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 17a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 32 18a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 19a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef FUNCNAME 20a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef FUNC 21a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 22a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define FUNCNAME rfbRotateCounterClockwise 23a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define FUNC(i, j) (j + (w - 1 - i) * h) 24a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 8 25a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 26a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 16 27a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 28a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 32 29a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 30a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef FUNCNAME 31a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef FUNC 32a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef SWAPDIMENSIONS 33a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 34a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define FUNCNAME rfbFlipHorizontally 35a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define FUNC(i, j) ((w - 1 - i) + j * w) 36a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 8 37a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 38a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 16 39a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 40a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 32 41a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 42a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef FUNCNAME 43a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef FUNC 44a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 45a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define FUNCNAME rfbFlipVertically 46a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define FUNC(i, j) (i + (h - 1 - j) * w) 47a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 8 48a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 49a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 16 50a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 51a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 32 52a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 53a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef FUNCNAME 54a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef FUNC 55a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 56a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define FUNCNAME rfbRotateHundredAndEighty 57a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define FUNC(i, j) ((w - 1 - i) + (h - 1 - j) * w) 58a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 8 59a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 60a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 16 61a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 62a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define OUTBITS 32 63a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "rotatetemplate.c" 64a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef FUNCNAME 65a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#undef FUNC 66a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 67a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehatstatic void HandleKey(rfbBool down,rfbKeySym key,rfbClientPtr cl) 68a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat{ 69a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat if(down) { 70a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat if (key==XK_Escape || key=='q' || key=='Q') 71a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat rfbCloseClient(cl); 72a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat else if (key == 'r') 73a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat rfbRotate(cl->screen); 74a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat else if (key == 'R') 75a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat rfbRotateCounterClockwise(cl->screen); 76a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat else if (key == 'f') 77a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat rfbFlipHorizontally(cl->screen); 78a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat else if (key == 'F') 79a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat rfbFlipVertically(cl->screen); 80a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat } 81a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat} 82a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 83a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define HAVE_HANDLEKEY 84a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include "pnmshow.c" 85a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat 86