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