3 #include <rfb/keysym.h>
5 static int gcd(int x, int y)
9 return gcd((y % x), x);
12 #define CONCAT2(a,b) a##b
13 #define CONCAT2E(a,b) CONCAT2(a,b)
14 #define CONCAT3(a,b,c) a##b##c
15 #define CONCAT3E(a,b,c) CONCAT3(a,b,c)
17 #define FUNCNAME rfbRotate
18 #define FUNC(i, j) (h - 1 - j + i * h)
19 #define SWAPDIMENSIONS
21 #include "rotatetemplate.c"
23 #include "rotatetemplate.c"
25 #include "rotatetemplate.c"
29 #define FUNCNAME rfbRotateCounterClockwise
30 #define FUNC(i, j) (j + (w - 1 - i) * h)
32 #include "rotatetemplate.c"
34 #include "rotatetemplate.c"
36 #include "rotatetemplate.c"
41 #define FUNCNAME rfbFlipHorizontally
42 #define FUNC(i, j) ((w - 1 - i) + j * w)
44 #include "rotatetemplate.c"
46 #include "rotatetemplate.c"
48 #include "rotatetemplate.c"
52 #define FUNCNAME rfbFlipVertically
53 #define FUNC(i, j) (i + (h - 1 - j) * w)
55 #include "rotatetemplate.c"
57 #include "rotatetemplate.c"
59 #include "rotatetemplate.c"
63 #define FUNCNAME rfbRotateHundredAndEighty
64 #define FUNC(i, j) ((w - 1 - i) + (h - 1 - j) * w)
66 #include "rotatetemplate.c"
68 #include "rotatetemplate.c"
70 #include "rotatetemplate.c"
74 static void HandleKey(rfbBool down,rfbKeySym key,rfbClientPtr cl)
77 if (key==XK_Escape || key=='q' || key=='Q')
80 rfbRotate(cl->screen);
82 rfbRotateCounterClockwise(cl->screen);
84 rfbFlipHorizontally(cl->screen);
86 rfbFlipVertically(cl->screen);
90 #define HAVE_HANDLEKEY