2 * FreeRDP: A Remote Desktop Protocol Client
3 * Primary Drawing Orders Interface API
5 * Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
20 #ifndef __UPDATE_PRIMARY_H
21 #define __UPDATE_PRIMARY_H
23 #include <freerdp/types.h>
32 typedef struct rdp_bounds rdpBounds;
45 typedef struct rdp_brush rdpBrush;
52 sint32 deltaBoundLeft;
54 sint32 deltaBoundRight;
55 sint32 deltaBoundBottom;
56 boolean deltaCoordinates;
58 typedef struct _ORDER_INFO ORDER_INFO;
68 typedef struct _DSTBLT_ORDER DSTBLT_ORDER;
81 typedef struct _PATBLT_ORDER PATBLT_ORDER;
93 typedef struct _SCRBLT_ORDER SCRBLT_ORDER;
95 struct _OPAQUE_RECT_ORDER
103 typedef struct _OPAQUE_RECT_ORDER OPAQUE_RECT_ORDER;
105 struct _DRAW_NINE_GRID_ORDER
113 typedef struct _DRAW_NINE_GRID_ORDER DRAW_NINE_GRID_ORDER;
122 typedef struct _DELTA_RECT DELTA_RECT;
124 struct _MULTI_DSTBLT_ORDER
131 uint32 numRectangles;
133 DELTA_RECT rectangles[45];
135 typedef struct _MULTI_DSTBLT_ORDER MULTI_DSTBLT_ORDER;
137 struct _MULTI_PATBLT_ORDER
147 uint32 numRectangles;
149 DELTA_RECT rectangles[45];
151 typedef struct _MULTI_PATBLT_ORDER MULTI_PATBLT_ORDER;
153 struct _MULTI_SCRBLT_ORDER
162 uint32 numRectangles;
164 DELTA_RECT rectangles[45];
166 typedef struct _MULTI_SCRBLT_ORDER MULTI_SCRBLT_ORDER;
168 struct _MULTI_OPAQUE_RECT_ORDER
175 uint32 numRectangles;
177 DELTA_RECT rectangles[45];
179 typedef struct _MULTI_OPAQUE_RECT_ORDER MULTI_OPAQUE_RECT_ORDER;
181 struct _MULTI_DRAW_NINE_GRID_ORDER
188 uint32 nDeltaEntries;
190 uint8* codeDeltaList;
192 typedef struct _MULTI_DRAW_NINE_GRID_ORDER MULTI_DRAW_NINE_GRID_ORDER;
194 struct _LINE_TO_ORDER
207 typedef struct _LINE_TO_ORDER LINE_TO_ORDER;
214 typedef struct _DELTA_POINT DELTA_POINT;
216 struct _POLYLINE_ORDER
226 typedef struct _POLYLINE_ORDER POLYLINE_ORDER;
242 typedef struct _MEMBLT_ORDER MEMBLT_ORDER;
244 struct _MEM3BLT_ORDER
261 typedef struct _MEM3BLT_ORDER MEM3BLT_ORDER;
263 struct _SAVE_BITMAP_ORDER
265 uint32 savedBitmapPosition;
272 typedef struct _SAVE_BITMAP_ORDER SAVE_BITMAP_ORDER;
274 struct _GLYPH_FRAGMENT_INDEX
279 typedef struct _GLYPH_FRAGMENT_INDEX GLYPH_FRAGMENT_INDEX;
281 struct _GLYPH_FRAGMENT
287 GLYPH_FRAGMENT_INDEX* indices;
289 typedef struct _GLYPH_FRAGMENT GLYPH_FRAGMENT;
291 struct _GLYPH_INDEX_ORDER
313 typedef struct _GLYPH_INDEX_ORDER GLYPH_INDEX_ORDER;
315 struct _FAST_INDEX_ORDER
336 typedef struct _FAST_INDEX_ORDER FAST_INDEX_ORDER;
338 struct _FAST_GLYPH_ORDER
359 typedef struct _FAST_GLYPH_ORDER FAST_GLYPH_ORDER;
361 struct _POLYGON_SC_ORDER
368 uint32 nDeltaEntries;
370 uint8* codeDeltaList;
372 typedef struct _POLYGON_SC_ORDER POLYGON_SC_ORDER;
374 struct _POLYGON_CB_ORDER
383 uint32 nDeltaEntries;
385 uint8* codeDeltaList;
387 typedef struct _POLYGON_CB_ORDER POLYGON_CB_ORDER;
389 struct _ELLIPSE_SC_ORDER
399 typedef struct _ELLIPSE_SC_ORDER ELLIPSE_SC_ORDER;
401 struct _ELLIPSE_CB_ORDER
413 typedef struct _ELLIPSE_CB_ORDER ELLIPSE_CB_ORDER;
415 typedef void (*pDstBlt)(rdpContext* context, DSTBLT_ORDER* dstblt);
416 typedef void (*pPatBlt)(rdpContext* context, PATBLT_ORDER* patblt);
417 typedef void (*pScrBlt)(rdpContext* context, SCRBLT_ORDER* scrblt);
418 typedef void (*pOpaqueRect)(rdpContext* context, OPAQUE_RECT_ORDER* opaque_rect);
419 typedef void (*pDrawNineGrid)(rdpContext* context, DRAW_NINE_GRID_ORDER* draw_nine_grid);
420 typedef void (*pMultiDstBlt)(rdpContext* context, MULTI_DSTBLT_ORDER* multi_dstblt);
421 typedef void (*pMultiPatBlt)(rdpContext* context, MULTI_PATBLT_ORDER* multi_patblt);
422 typedef void (*pMultiScrBlt)(rdpContext* context, MULTI_SCRBLT_ORDER* multi_scrblt);
423 typedef void (*pMultiOpaqueRect)(rdpContext* context, MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect);
424 typedef void (*pMultiDrawNineGrid)(rdpContext* context, MULTI_DRAW_NINE_GRID_ORDER* multi_draw_nine_grid);
425 typedef void (*pLineTo)(rdpContext* context, LINE_TO_ORDER* line_to);
426 typedef void (*pPolyline)(rdpContext* context, POLYLINE_ORDER* polyline);
427 typedef void (*pMemBlt)(rdpContext* context, MEMBLT_ORDER* memblt);
428 typedef void (*pMem3Blt)(rdpContext* context, MEM3BLT_ORDER* memblt);
429 typedef void (*pSaveBitmap)(rdpContext* context, SAVE_BITMAP_ORDER* save_bitmap);
430 typedef void (*pGlyphIndex)(rdpContext* context, GLYPH_INDEX_ORDER* glyph_index);
431 typedef void (*pFastIndex)(rdpContext* context, FAST_INDEX_ORDER* fast_index);
432 typedef void (*pFastGlyph)(rdpContext* context, FAST_GLYPH_ORDER* fast_glyph);
433 typedef void (*pPolygonSC)(rdpContext* context, POLYGON_SC_ORDER* polygon_sc);
434 typedef void (*pPolygonCB)(rdpContext* context, POLYGON_CB_ORDER* polygon_cb);
435 typedef void (*pEllipseSC)(rdpContext* context, ELLIPSE_SC_ORDER* ellipse_sc);
436 typedef void (*pEllipseCB)(rdpContext* context, ELLIPSE_CB_ORDER* ellipse_cb);
438 struct rdp_primary_update
440 rdpContext* context; /* 0 */
441 uint32 paddingA[16 - 1]; /* 1 */
443 pDstBlt DstBlt; /* 16 */
444 pPatBlt PatBlt; /* 17 */
445 pScrBlt ScrBlt; /* 18 */
446 pOpaqueRect OpaqueRect; /* 19 */
447 pDrawNineGrid DrawNineGrid; /* 20 */
448 pMultiDstBlt MultiDstBlt; /* 21 */
449 pMultiPatBlt MultiPatBlt; /* 22 */
450 pMultiScrBlt MultiScrBlt; /* 23 */
451 pMultiOpaqueRect MultiOpaqueRect; /* 24 */
452 pMultiDrawNineGrid MultiDrawNineGrid; /* 25 */
453 pLineTo LineTo; /* 26 */
454 pPolyline Polyline; /* 27 */
455 pMemBlt MemBlt; /* 28 */
456 pMem3Blt Mem3Blt; /* 29 */
457 pSaveBitmap SaveBitmap; /* 30 */
458 pGlyphIndex GlyphIndex; /* 31 */
459 pFastIndex FastIndex; /* 32 */
460 pFastGlyph FastGlyph; /* 33 */
461 pPolygonSC PolygonSC; /* 34 */
462 pPolygonCB PolygonCB; /* 35 */
463 pEllipseSC EllipseSC; /* 36 */
464 pEllipseCB EllipseCB; /* 37 */
465 uint32 paddingB[48 - 38]; /* 38 */
469 ORDER_INFO order_info;
473 OPAQUE_RECT_ORDER opaque_rect;
474 DRAW_NINE_GRID_ORDER draw_nine_grid;
475 MULTI_DSTBLT_ORDER multi_dstblt;
476 MULTI_PATBLT_ORDER multi_patblt;
477 MULTI_SCRBLT_ORDER multi_scrblt;
478 MULTI_OPAQUE_RECT_ORDER multi_opaque_rect;
479 MULTI_DRAW_NINE_GRID_ORDER multi_draw_nine_grid;
480 LINE_TO_ORDER line_to;
481 POLYLINE_ORDER polyline;
483 MEM3BLT_ORDER mem3blt;
484 SAVE_BITMAP_ORDER save_bitmap;
485 GLYPH_INDEX_ORDER glyph_index;
486 FAST_INDEX_ORDER fast_index;
487 FAST_GLYPH_ORDER fast_glyph;
488 POLYGON_SC_ORDER polygon_sc;
489 POLYGON_CB_ORDER polygon_cb;
490 ELLIPSE_SC_ORDER ellipse_sc;
491 ELLIPSE_CB_ORDER ellipse_cb;
493 typedef struct rdp_primary_update rdpPrimaryUpdate;
495 #endif /* __UPDATE_PRIMARY_H */