~ubuntu-branches/ubuntu/vivid/freerdp/vivid

« back to all changes in this revision

Viewing changes to libfreerdp-core/orders.h

  • Committer: Package Import Robot
  • Author(s): Iain Lane
  • Date: 2014-11-11 12:20:50 UTC
  • mfrom: (1.1.9) (9.1.17 sid)
  • Revision ID: package-import@ubuntu.com-20141111122050-wyr8hrnwco9fcmum
Tags: 1.1.0~git20140921.1.440916e+dfsg1-2ubuntu1
* Merge with Debian unstable, remaining changes
  - Disable ffmpeg support
* Disable gstreamer support, this relies on gstreamer 0.10 and we don't want
  to add any more deps on that.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/**
2
 
 * FreeRDP: A Remote Desktop Protocol Client
3
 
 * Drawing Orders
4
 
 *
5
 
 * Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
6
 
 *
7
 
 * Licensed under the Apache License, Version 2.0 (the "License");
8
 
 * you may not use this file except in compliance with the License.
9
 
 * You may obtain a copy of the License at
10
 
 *
11
 
 *     http://www.apache.org/licenses/LICENSE-2.0
12
 
 *
13
 
 * Unless required by applicable law or agreed to in writing, software
14
 
 * distributed under the License is distributed on an "AS IS" BASIS,
15
 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
 
 * See the License for the specific language governing permissions and
17
 
 * limitations under the License.
18
 
 */
19
 
 
20
 
#ifndef __ORDERS_H
21
 
#define __ORDERS_H
22
 
 
23
 
#include "rdp.h"
24
 
#include <freerdp/types.h>
25
 
#include <freerdp/update.h>
26
 
#include <freerdp/utils/stream.h>
27
 
 
28
 
/* Order Control Flags */
29
 
#define ORDER_STANDARD                          0x01
30
 
#define ORDER_SECONDARY                         0x02
31
 
#define ORDER_BOUNDS                            0x04
32
 
#define ORDER_TYPE_CHANGE                       0x08
33
 
#define ORDER_DELTA_COORDINATES                 0x10
34
 
#define ORDER_ZERO_BOUNDS_DELTAS                0x20
35
 
#define ORDER_ZERO_FIELD_BYTE_BIT0              0x40
36
 
#define ORDER_ZERO_FIELD_BYTE_BIT1              0x80
37
 
 
38
 
/* Bound Field Flags */
39
 
#define BOUND_LEFT                              0x01
40
 
#define BOUND_TOP                               0x02
41
 
#define BOUND_RIGHT                             0x04
42
 
#define BOUND_BOTTOM                            0x08
43
 
#define BOUND_DELTA_LEFT                        0x10
44
 
#define BOUND_DELTA_TOP                         0x20
45
 
#define BOUND_DELTA_RIGHT                       0x40
46
 
#define BOUND_DELTA_BOTTOM                      0x80
47
 
 
48
 
/* Field Presence Flags */
49
 
#define ORDER_FIELD_01                          0x000001
50
 
#define ORDER_FIELD_02                          0x000002
51
 
#define ORDER_FIELD_03                          0x000004
52
 
#define ORDER_FIELD_04                          0x000008
53
 
#define ORDER_FIELD_05                          0x000010
54
 
#define ORDER_FIELD_06                          0x000020
55
 
#define ORDER_FIELD_07                          0x000040
56
 
#define ORDER_FIELD_08                          0x000080
57
 
#define ORDER_FIELD_09                          0x000100
58
 
#define ORDER_FIELD_10                          0x000200
59
 
#define ORDER_FIELD_11                          0x000400
60
 
#define ORDER_FIELD_12                          0x000800
61
 
#define ORDER_FIELD_13                          0x001000
62
 
#define ORDER_FIELD_14                          0x002000
63
 
#define ORDER_FIELD_15                          0x004000
64
 
#define ORDER_FIELD_16                          0x008000
65
 
#define ORDER_FIELD_17                          0x010000
66
 
#define ORDER_FIELD_18                          0x020000
67
 
#define ORDER_FIELD_19                          0x040000
68
 
#define ORDER_FIELD_20                          0x080000
69
 
#define ORDER_FIELD_21                          0x100000
70
 
#define ORDER_FIELD_22                          0x200000
71
 
#define ORDER_FIELD_23                          0x400000
72
 
 
73
 
/* Bitmap Cache Flags */
74
 
#define CBR2_8BPP                       0x3
75
 
#define CBR2_16BPP                      0x4
76
 
#define CBR2_24BPP                      0x5
77
 
#define CBR2_32BPP                      0x6
78
 
 
79
 
#define CBR23_8BPP                      0x3
80
 
#define CBR23_16BPP                     0x4
81
 
#define CBR23_24BPP                     0x5
82
 
#define CBR23_32BPP                     0x6
83
 
 
84
 
#define CBR3_IGNORABLE_FLAG             0x08
85
 
#define CBR3_DO_NOT_CACHE               0x10
86
 
 
87
 
/* Primary Drawing Orders */
88
 
#define ORDER_TYPE_DSTBLT                       0x00
89
 
#define ORDER_TYPE_PATBLT                       0x01
90
 
#define ORDER_TYPE_SCRBLT                       0x02
91
 
#define ORDER_TYPE_DRAW_NINE_GRID               0x07
92
 
#define ORDER_TYPE_MULTI_DRAW_NINE_GRID         0x08
93
 
#define ORDER_TYPE_LINE_TO                      0x09
94
 
#define ORDER_TYPE_OPAQUE_RECT                  0x0A
95
 
#define ORDER_TYPE_SAVE_BITMAP                  0x0B
96
 
#define ORDER_TYPE_MEMBLT                       0x0D
97
 
#define ORDER_TYPE_MEM3BLT                      0x0E
98
 
#define ORDER_TYPE_MULTI_DSTBLT                 0x0F
99
 
#define ORDER_TYPE_MULTI_PATBLT                 0x10
100
 
#define ORDER_TYPE_MULTI_SCRBLT                 0x11
101
 
#define ORDER_TYPE_MULTI_OPAQUE_RECT            0x12
102
 
#define ORDER_TYPE_FAST_INDEX                   0x13
103
 
#define ORDER_TYPE_POLYGON_SC                   0x14
104
 
#define ORDER_TYPE_POLYGON_CB                   0x15
105
 
#define ORDER_TYPE_POLYLINE                     0x16
106
 
#define ORDER_TYPE_FAST_GLYPH                   0x18
107
 
#define ORDER_TYPE_ELLIPSE_SC                   0x19
108
 
#define ORDER_TYPE_ELLIPSE_CB                   0x1A
109
 
#define ORDER_TYPE_GLYPH_INDEX                  0x1B
110
 
 
111
 
/* Primary Drawing Orders Fields */
112
 
#define DSTBLT_ORDER_FIELDS                     5
113
 
#define PATBLT_ORDER_FIELDS                     12
114
 
#define SCRBLT_ORDER_FIELDS                     7
115
 
#define DRAW_NINE_GRID_ORDER_FIELDS             5
116
 
#define MULTI_DRAW_NINE_GRID_ORDER_FIELDS       7
117
 
#define LINE_TO_ORDER_FIELDS                    10
118
 
#define OPAQUE_RECT_ORDER_FIELDS                7
119
 
#define SAVE_BITMAP_ORDER_FIELDS                6
120
 
#define MEMBLT_ORDER_FIELDS                     9
121
 
#define MEM3BLT_ORDER_FIELDS                    16
122
 
#define MULTI_DSTBLT_ORDER_FIELDS               7
123
 
#define MULTI_PATBLT_ORDER_FIELDS               14
124
 
#define MULTI_SCRBLT_ORDER_FIELDS               9
125
 
#define MULTI_OPAQUE_RECT_ORDER_FIELDS          9
126
 
#define FAST_INDEX_ORDER_FIELDS                 15
127
 
#define POLYGON_SC_ORDER_FIELDS                 7
128
 
#define POLYGON_CB_ORDER_FIELDS                 13
129
 
#define POLYLINE_ORDER_FIELDS                   7
130
 
#define FAST_GLYPH_ORDER_FIELDS                 15
131
 
#define ELLIPSE_SC_ORDER_FIELDS                 7
132
 
#define ELLIPSE_CB_ORDER_FIELDS                 13
133
 
#define GLYPH_INDEX_ORDER_FIELDS                22
134
 
 
135
 
/* Primary Drawing Orders Field Bytes */
136
 
#define DSTBLT_ORDER_FIELD_BYTES                1
137
 
#define PATBLT_ORDER_FIELD_BYTES                2
138
 
#define SCRBLT_ORDER_FIELD_BYTES                1
139
 
#define DRAW_NINE_GRID_ORDER_FIELD_BYTES        1
140
 
#define MULTI_DRAW_NINE_GRID_ORDER_FIELD_BYTES  1
141
 
#define LINE_TO_ORDER_FIELD_BYTES               2
142
 
#define OPAQUE_RECT_ORDER_FIELD_BYTES           1
143
 
#define SAVE_BITMAP_ORDER_FIELD_BYTES           1
144
 
#define MEMBLT_ORDER_FIELD_BYTES                2
145
 
#define MEM3BLT_ORDER_FIELD_BYTES               3
146
 
#define MULTI_DSTBLT_ORDER_FIELD_BYTES          1
147
 
#define MULTI_PATBLT_ORDER_FIELD_BYTES          2
148
 
#define MULTI_SCRBLT_ORDER_FIELD_BYTES          2
149
 
#define MULTI_OPAQUE_RECT_ORDER_FIELD_BYTES     2
150
 
#define FAST_INDEX_ORDER_FIELD_BYTES            2
151
 
#define POLYGON_SC_ORDER_FIELD_BYTES            1
152
 
#define POLYGON_CB_ORDER_FIELD_BYTES            2
153
 
#define POLYLINE_ORDER_FIELD_BYTES              1
154
 
#define FAST_GLYPH_ORDER_FIELD_BYTES            2
155
 
#define ELLIPSE_SC_ORDER_FIELD_BYTES            1
156
 
#define ELLIPSE_CB_ORDER_FIELD_BYTES            2
157
 
#define GLYPH_INDEX_ORDER_FIELD_BYTES           3
158
 
 
159
 
/* Secondary Drawing Orders */
160
 
#define ORDER_TYPE_BITMAP_UNCOMPRESSED          0x00
161
 
#define ORDER_TYPE_CACHE_COLOR_TABLE            0x01
162
 
#define ORDER_TYPE_CACHE_BITMAP_COMPRESSED      0x02
163
 
#define ORDER_TYPE_CACHE_GLYPH                  0x03
164
 
#define ORDER_TYPE_BITMAP_UNCOMPRESSED_V2       0x04
165
 
#define ORDER_TYPE_BITMAP_COMPRESSED_V2         0x05
166
 
#define ORDER_TYPE_CACHE_BRUSH                  0x07
167
 
#define ORDER_TYPE_BITMAP_COMPRESSED_V3         0x08
168
 
 
169
 
/* Alternate Secondary Drawing Orders */
170
 
#define ORDER_TYPE_SWITCH_SURFACE               0x00
171
 
#define ORDER_TYPE_CREATE_OFFSCREEN_BITMAP      0x01
172
 
#define ORDER_TYPE_STREAM_BITMAP_FIRST          0x02
173
 
#define ORDER_TYPE_STREAM_BITMAP_NEXT           0x03
174
 
#define ORDER_TYPE_CREATE_NINE_GRID_BITMAP      0x04
175
 
#define ORDER_TYPE_GDIPLUS_FIRST                0x05
176
 
#define ORDER_TYPE_GDIPLUS_NEXT                 0x06
177
 
#define ORDER_TYPE_GDIPLUS_END                  0x07
178
 
#define ORDER_TYPE_GDIPLUS_CACHE_FIRST          0x08
179
 
#define ORDER_TYPE_GDIPLUS_CACHE_NEXT           0x09
180
 
#define ORDER_TYPE_GDIPLUS_CACHE_END            0x0A
181
 
#define ORDER_TYPE_WINDOW                       0x0B
182
 
#define ORDER_TYPE_COMPDESK_FIRST               0x0C
183
 
#define ORDER_TYPE_FRAME_MARKER                 0x0D
184
 
 
185
 
#define CG_GLYPH_UNICODE_PRESENT                0x0010
186
 
 
187
 
void update_recv_order(rdpUpdate* update, STREAM* s);
188
 
 
189
 
void update_read_dstblt_order(STREAM* s, ORDER_INFO* orderInfo, DSTBLT_ORDER* dstblt);
190
 
void update_read_patblt_order(STREAM* s, ORDER_INFO* orderInfo, PATBLT_ORDER* patblt);
191
 
void update_read_scrblt_order(STREAM* s, ORDER_INFO* orderInfo, SCRBLT_ORDER* scrblt);
192
 
void update_read_opaque_rect_order(STREAM* s, ORDER_INFO* orderInfo, OPAQUE_RECT_ORDER* opaque_rect);
193
 
void update_read_draw_nine_grid_order(STREAM* s, ORDER_INFO* orderInfo, DRAW_NINE_GRID_ORDER* draw_nine_grid);
194
 
void update_read_multi_dstblt_order(STREAM* s, ORDER_INFO* orderInfo, MULTI_DSTBLT_ORDER* multi_dstblt);
195
 
void update_read_multi_patblt_order(STREAM* s, ORDER_INFO* orderInfo, MULTI_PATBLT_ORDER* multi_patblt);
196
 
void update_read_multi_scrblt_order(STREAM* s, ORDER_INFO* orderInfo, MULTI_SCRBLT_ORDER* multi_scrblt);
197
 
void update_read_multi_opaque_rect_order(STREAM* s, ORDER_INFO* orderInfo, MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect);
198
 
void update_read_multi_draw_nine_grid_order(STREAM* s, ORDER_INFO* orderInfo, MULTI_DRAW_NINE_GRID_ORDER* multi_draw_nine_grid);
199
 
void update_read_line_to_order(STREAM* s, ORDER_INFO* orderInfo, LINE_TO_ORDER* line_to);
200
 
void update_read_polyline_order(STREAM* s, ORDER_INFO* orderInfo, POLYLINE_ORDER* polyline);
201
 
void update_read_memblt_order(STREAM* s, ORDER_INFO* orderInfo, MEMBLT_ORDER* memblt);
202
 
void update_read_mem3blt_order(STREAM* s, ORDER_INFO* orderInfo, MEM3BLT_ORDER* mem3blt);
203
 
void update_read_save_bitmap_order(STREAM* s, ORDER_INFO* orderInfo, SAVE_BITMAP_ORDER* save_bitmap);
204
 
void update_read_glyph_index_order(STREAM* s, ORDER_INFO* orderInfo, GLYPH_INDEX_ORDER* glyph_index);
205
 
void update_read_fast_index_order(STREAM* s, ORDER_INFO* orderInfo, FAST_INDEX_ORDER* fast_index);
206
 
void update_read_fast_glyph_order(STREAM* s, ORDER_INFO* orderInfo, FAST_GLYPH_ORDER* fast_glyph);
207
 
void update_read_polygon_sc_order(STREAM* s, ORDER_INFO* orderInfo, POLYGON_SC_ORDER* polygon_sc);
208
 
void update_read_polygon_cb_order(STREAM* s, ORDER_INFO* orderInfo, POLYGON_CB_ORDER* polygon_cb);
209
 
void update_read_ellipse_sc_order(STREAM* s, ORDER_INFO* orderInfo, ELLIPSE_SC_ORDER* ellipse_sc);
210
 
void update_read_ellipse_cb_order(STREAM* s, ORDER_INFO* orderInfo, ELLIPSE_CB_ORDER* ellipse_cb);
211
 
 
212
 
void update_read_cache_bitmap_order(STREAM* s, CACHE_BITMAP_ORDER* cache_bitmap_order, boolean compressed, uint16 flags);
213
 
void update_read_cache_bitmap_v2_order(STREAM* s, CACHE_BITMAP_V2_ORDER* cache_bitmap_v2_order, boolean compressed, uint16 flags);
214
 
void update_read_cache_bitmap_v3_order(STREAM* s, CACHE_BITMAP_V3_ORDER* cache_bitmap_v3_order, boolean compressed, uint16 flags);
215
 
void update_read_cache_color_table_order(STREAM* s, CACHE_COLOR_TABLE_ORDER* cache_color_table_order, uint16 flags);
216
 
void update_read_cache_glyph_order(STREAM* s, CACHE_GLYPH_ORDER* cache_glyph_order, uint16 flags);
217
 
void update_read_cache_glyph_v2_order(STREAM* s, CACHE_GLYPH_V2_ORDER* cache_glyph_v2_order, uint16 flags);
218
 
void update_read_cache_brush_order(STREAM* s, CACHE_BRUSH_ORDER* cache_brush_order, uint16 flags);
219
 
 
220
 
void update_read_create_offscreen_bitmap_order(STREAM* s, CREATE_OFFSCREEN_BITMAP_ORDER* create_offscreen_bitmap);
221
 
void update_read_switch_surface_order(STREAM* s, SWITCH_SURFACE_ORDER* switch_surface);
222
 
void update_read_create_nine_grid_bitmap_order(STREAM* s, CREATE_NINE_GRID_BITMAP_ORDER* create_nine_grid_bitmap);
223
 
void update_read_frame_marker_order(STREAM* s, FRAME_MARKER_ORDER* frame_marker);
224
 
void update_read_stream_bitmap_first_order(STREAM* s, STREAM_BITMAP_FIRST_ORDER* stream_bitmap_first);
225
 
void update_read_stream_bitmap_next_order(STREAM* s, STREAM_BITMAP_FIRST_ORDER* stream_bitmap_next);
226
 
void update_read_draw_gdiplus_first_order(STREAM* s, DRAW_GDIPLUS_FIRST_ORDER* draw_gdiplus_first);
227
 
void update_read_draw_gdiplus_next_order(STREAM* s, DRAW_GDIPLUS_NEXT_ORDER* draw_gdiplus_next);
228
 
void update_read_draw_gdiplus_end_order(STREAM* s, DRAW_GDIPLUS_END_ORDER* draw_gdiplus_end);
229
 
void update_read_draw_gdiplus_cache_first_order(STREAM* s, DRAW_GDIPLUS_CACHE_FIRST_ORDER* draw_gdiplus_cache_first);
230
 
void update_read_draw_gdiplus_cache_next_order(STREAM* s, DRAW_GDIPLUS_CACHE_NEXT_ORDER* draw_gdiplus_cache_next);
231
 
void update_read_draw_gdiplus_cache_end_order(STREAM* s, DRAW_GDIPLUS_CACHE_END_ORDER* draw_gdiplus_cache_end);
232
 
 
233
 
#endif /* __ORDERS_H */