add libvncserver
[presencevnc] / libvnc / examples / rotate.c
1 #include <stdio.h>
2 #include <rfb/rfb.h>
3 #include <rfb/keysym.h>
4
5 static int gcd(int x, int y)
6 {
7         if (x == 0)
8                 return y;
9         return gcd((y % x), x);
10 }
11
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)
16
17 #define FUNCNAME rfbRotate
18 #define FUNC(i, j) (h - 1 - j + i * h)
19 #define SWAPDIMENSIONS
20 #define OUT 8
21 #include "rotatetemplate.c"
22 #define OUT 16
23 #include "rotatetemplate.c"
24 #define OUT 32
25 #include "rotatetemplate.c"
26 #undef FUNCNAME
27 #undef FUNC
28
29 #define FUNCNAME rfbRotateCounterClockwise
30 #define FUNC(i, j) (j + (w - 1 - i) * h)
31 #define OUT 8
32 #include "rotatetemplate.c"
33 #define OUT 16
34 #include "rotatetemplate.c"
35 #define OUT 32
36 #include "rotatetemplate.c"
37 #undef FUNCNAME
38 #undef FUNC
39 #undef SWAPDIMENSIONS
40
41 #define FUNCNAME rfbFlipHorizontally
42 #define FUNC(i, j) ((w - 1 - i) + j * w)
43 #define OUT 8
44 #include "rotatetemplate.c"
45 #define OUT 16
46 #include "rotatetemplate.c"
47 #define OUT 32
48 #include "rotatetemplate.c"
49 #undef FUNCNAME
50 #undef FUNC
51
52 #define FUNCNAME rfbFlipVertically
53 #define FUNC(i, j) (i + (h - 1 - j) * w)
54 #define OUT 8
55 #include "rotatetemplate.c"
56 #define OUT 16
57 #include "rotatetemplate.c"
58 #define OUT 32
59 #include "rotatetemplate.c"
60 #undef FUNCNAME
61 #undef FUNC
62
63 #define FUNCNAME rfbRotateHundredAndEighty
64 #define FUNC(i, j) ((w - 1 - i) + (h - 1 - j) * w)
65 #define OUT 8
66 #include "rotatetemplate.c"
67 #define OUT 16
68 #include "rotatetemplate.c"
69 #define OUT 32
70 #include "rotatetemplate.c"
71 #undef FUNCNAME
72 #undef FUNC
73
74 static void HandleKey(rfbBool down,rfbKeySym key,rfbClientPtr cl)
75 {
76         if(down) {
77                 if (key==XK_Escape || key=='q' || key=='Q')
78                         rfbCloseClient(cl);
79                 else if (key == 'r')
80                         rfbRotate(cl->screen);
81                 else if (key == 'R')
82                         rfbRotateCounterClockwise(cl->screen);
83                 else if (key == 'f')
84                         rfbFlipHorizontally(cl->screen);
85                 else if (key == 'F')
86                         rfbFlipVertically(cl->screen);
87         }
88 }
89
90 #define HAVE_HANDLEKEY
91 #include "pnmshow.c"
92