Cache revision 31.
[rdpsrv] / types.h
1 /*
2    rdesktop: A Remote Desktop Protocol client.
3    Common data types
4    Copyright (C) Matthew Chapman 1999-2002
5    
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2 of the License, or
9    (at your option) any later version.
10    
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15    
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20
21 typedef int BOOL;
22
23 #ifndef True
24 #define True  (1)
25 #define False (0)
26 #endif
27
28 typedef unsigned char uint8;
29 typedef signed char sint8;
30 typedef unsigned short uint16;
31 typedef signed short sint16;
32 typedef unsigned int uint32;
33 typedef signed int sint32;
34
35 typedef void *HBITMAP;
36 typedef void *HGLYPH;
37 typedef void *HCOLOURMAP;
38 typedef void *HCURSOR;
39
40 typedef struct _COLOURENTRY
41 {
42         uint8 red;
43         uint8 green;
44         uint8 blue;
45
46 }
47 COLOURENTRY;
48
49 typedef struct _COLOURMAP
50 {
51         uint16 ncolours;
52         COLOURENTRY *colours;
53
54 }
55 COLOURMAP;
56
57 typedef struct _BOUNDS
58 {
59         sint16 left;
60         sint16 top;
61         sint16 right;
62         sint16 bottom;
63
64 }
65 BOUNDS;
66
67 typedef struct _PEN
68 {
69         uint8 style;
70         uint8 width;
71         uint32 colour;
72
73 }
74 PEN;
75
76 typedef struct _BRUSH
77 {
78         uint8 xorigin;
79         uint8 yorigin;
80         uint8 style;
81         uint8 pattern[8];
82
83 }
84 BRUSH;
85
86 typedef struct _FONTGLYPH
87 {
88         sint16 offset;
89         sint16 baseline;
90         uint16 width;
91         uint16 height;
92         HBITMAP pixmap;
93
94 }
95 FONTGLYPH;
96
97 typedef struct _DATABLOB
98 {
99         void *data;
100         int size;
101
102 }
103 DATABLOB;
104
105 typedef struct _key_translation
106 {
107         uint8 scancode;
108         uint16 modifiers;
109 }
110 key_translation;
111
112 typedef struct _VCHANNEL
113 {
114         uint16 mcs_id;
115         char name[8];
116         uint32 flags;
117         struct stream in;
118         void (*process) (STREAM);
119 }
120 VCHANNEL;
121
122 #define MAX_CBSIZE 256
123
124 /* RDPSND */
125 typedef struct
126 {
127         uint16 wFormatTag;
128         uint16 nChannels;
129         uint32 nSamplesPerSec;
130         uint32 nAvgBytesPerSec;
131         uint16 nBlockAlign;
132         uint16 wBitsPerSample;
133         uint16 cbSize;
134         uint8 cb[MAX_CBSIZE];
135 } WAVEFORMATEX;
136
137 /* RDPDR */
138 typedef uint32 NTSTATUS;
139 typedef uint32 HANDLE;
140
141 typedef struct _DEVICE_FNS
142 {
143         NTSTATUS(*create) (HANDLE * handle);
144         NTSTATUS(*close) (HANDLE handle);
145         NTSTATUS(*read) (HANDLE handle, uint8 * data, uint32 length, uint32 * result);
146         NTSTATUS(*write) (HANDLE handle, uint8 * data, uint32 length, uint32 * result);
147         NTSTATUS(*device_control) (HANDLE handle, uint32 request, STREAM in, STREAM out);
148 }
149 DEVICE_FNS;