Milestone 5: deliver embedded RDP sessions and lifecycle hardening
This commit is contained in:
481
third_party/FreeRDP/include/freerdp/primary.h
vendored
Normal file
481
third_party/FreeRDP/include/freerdp/primary.h
vendored
Normal file
@@ -0,0 +1,481 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Primary Drawing Orders Interface API
|
||||
*
|
||||
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_UPDATE_PRIMARY_H
|
||||
#define FREERDP_UPDATE_PRIMARY_H
|
||||
|
||||
#include <freerdp/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 cacheIndex;
|
||||
INT16 x;
|
||||
INT16 y;
|
||||
UINT32 cx;
|
||||
UINT32 cy;
|
||||
UINT32 cb;
|
||||
BYTE* aj;
|
||||
} GLYPH_DATA;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 cacheIndex;
|
||||
INT32 x;
|
||||
INT32 y;
|
||||
UINT32 cx;
|
||||
UINT32 cy;
|
||||
UINT32 cb;
|
||||
BYTE* aj;
|
||||
} GLYPH_DATA_V2;
|
||||
|
||||
#define BACKMODE_TRANSPARENT 0x0001
|
||||
#define BACKMODE_OPAQUE 0x0002
|
||||
|
||||
struct rdp_bounds
|
||||
{
|
||||
INT32 left;
|
||||
INT32 top;
|
||||
INT32 right;
|
||||
INT32 bottom;
|
||||
};
|
||||
typedef struct rdp_bounds rdpBounds;
|
||||
|
||||
struct rdp_brush
|
||||
{
|
||||
UINT32 x;
|
||||
UINT32 y;
|
||||
UINT32 bpp;
|
||||
UINT32 style;
|
||||
UINT32 hatch;
|
||||
UINT32 index;
|
||||
BYTE* data;
|
||||
BYTE p8x8[8];
|
||||
};
|
||||
typedef struct rdp_brush rdpBrush;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 controlFlags;
|
||||
UINT32 orderType;
|
||||
UINT32 fieldFlags;
|
||||
UINT32 boundsFlags;
|
||||
rdpBounds bounds;
|
||||
BOOL deltaCoordinates;
|
||||
} ORDER_INFO;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nWidth;
|
||||
INT32 nHeight;
|
||||
UINT32 bRop;
|
||||
} DSTBLT_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nWidth;
|
||||
INT32 nHeight;
|
||||
UINT32 bRop;
|
||||
UINT32 backColor;
|
||||
UINT32 foreColor;
|
||||
rdpBrush brush;
|
||||
} PATBLT_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nWidth;
|
||||
INT32 nHeight;
|
||||
UINT32 bRop;
|
||||
INT32 nXSrc;
|
||||
INT32 nYSrc;
|
||||
} SCRBLT_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nWidth;
|
||||
INT32 nHeight;
|
||||
UINT32 color;
|
||||
} OPAQUE_RECT_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 srcLeft;
|
||||
INT32 srcTop;
|
||||
INT32 srcRight;
|
||||
INT32 srcBottom;
|
||||
UINT32 bitmapId;
|
||||
} DRAW_NINE_GRID_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 left;
|
||||
INT32 top;
|
||||
INT32 width;
|
||||
INT32 height;
|
||||
} DELTA_RECT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nWidth;
|
||||
INT32 nHeight;
|
||||
UINT32 bRop;
|
||||
UINT32 numRectangles;
|
||||
UINT32 cbData;
|
||||
DELTA_RECT rectangles[45];
|
||||
} MULTI_DSTBLT_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nWidth;
|
||||
INT32 nHeight;
|
||||
UINT32 bRop;
|
||||
UINT32 backColor;
|
||||
UINT32 foreColor;
|
||||
rdpBrush brush;
|
||||
UINT32 numRectangles;
|
||||
UINT32 cbData;
|
||||
DELTA_RECT rectangles[45];
|
||||
} MULTI_PATBLT_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nWidth;
|
||||
INT32 nHeight;
|
||||
UINT32 bRop;
|
||||
INT32 nXSrc;
|
||||
INT32 nYSrc;
|
||||
UINT32 numRectangles;
|
||||
UINT32 cbData;
|
||||
DELTA_RECT rectangles[45];
|
||||
} MULTI_SCRBLT_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nWidth;
|
||||
INT32 nHeight;
|
||||
UINT32 color;
|
||||
UINT32 numRectangles;
|
||||
UINT32 cbData;
|
||||
DELTA_RECT rectangles[45];
|
||||
} MULTI_OPAQUE_RECT_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 srcLeft;
|
||||
INT32 srcTop;
|
||||
INT32 srcRight;
|
||||
INT32 srcBottom;
|
||||
UINT32 bitmapId;
|
||||
UINT32 nDeltaEntries;
|
||||
UINT32 cbData;
|
||||
DELTA_RECT rectangles[45];
|
||||
} MULTI_DRAW_NINE_GRID_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 backMode;
|
||||
INT32 nXStart;
|
||||
INT32 nYStart;
|
||||
INT32 nXEnd;
|
||||
INT32 nYEnd;
|
||||
UINT32 backColor;
|
||||
UINT32 bRop2;
|
||||
UINT32 penStyle;
|
||||
UINT32 penWidth;
|
||||
UINT32 penColor;
|
||||
} LINE_TO_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 x;
|
||||
INT32 y;
|
||||
} DELTA_POINT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 xStart;
|
||||
INT32 yStart;
|
||||
UINT32 bRop2;
|
||||
UINT32 penColor;
|
||||
UINT32 numDeltaEntries;
|
||||
UINT32 cbData;
|
||||
DELTA_POINT* points;
|
||||
} POLYLINE_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 cacheId;
|
||||
UINT32 colorIndex;
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nWidth;
|
||||
INT32 nHeight;
|
||||
UINT32 bRop;
|
||||
INT32 nXSrc;
|
||||
INT32 nYSrc;
|
||||
UINT32 cacheIndex;
|
||||
rdpBitmap* bitmap;
|
||||
} MEMBLT_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 cacheId;
|
||||
UINT32 colorIndex;
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nWidth;
|
||||
INT32 nHeight;
|
||||
UINT32 bRop;
|
||||
INT32 nXSrc;
|
||||
INT32 nYSrc;
|
||||
UINT32 backColor;
|
||||
UINT32 foreColor;
|
||||
rdpBrush brush;
|
||||
UINT32 cacheIndex;
|
||||
rdpBitmap* bitmap;
|
||||
} MEM3BLT_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 savedBitmapPosition;
|
||||
INT32 nLeftRect;
|
||||
INT32 nTopRect;
|
||||
INT32 nRightRect;
|
||||
INT32 nBottomRect;
|
||||
UINT32 operation;
|
||||
} SAVE_BITMAP_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 index;
|
||||
UINT32 delta;
|
||||
} GLYPH_FRAGMENT_INDEX;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 operation;
|
||||
UINT32 index;
|
||||
UINT32 size;
|
||||
UINT32 nindices;
|
||||
GLYPH_FRAGMENT_INDEX* indices;
|
||||
} GLYPH_FRAGMENT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 cacheId;
|
||||
UINT32 flAccel;
|
||||
UINT32 ulCharInc;
|
||||
UINT32 fOpRedundant;
|
||||
UINT32 backColor;
|
||||
UINT32 foreColor;
|
||||
INT32 bkLeft;
|
||||
INT32 bkTop;
|
||||
INT32 bkRight;
|
||||
INT32 bkBottom;
|
||||
INT32 opLeft;
|
||||
INT32 opTop;
|
||||
INT32 opRight;
|
||||
INT32 opBottom;
|
||||
rdpBrush brush;
|
||||
INT32 x;
|
||||
INT32 y;
|
||||
UINT32 cbData;
|
||||
BYTE data[256];
|
||||
} GLYPH_INDEX_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 cacheId;
|
||||
UINT32 flAccel;
|
||||
UINT32 ulCharInc;
|
||||
UINT32 backColor;
|
||||
UINT32 foreColor;
|
||||
INT32 bkLeft;
|
||||
INT32 bkTop;
|
||||
INT32 bkRight;
|
||||
INT32 bkBottom;
|
||||
INT32 opLeft;
|
||||
INT32 opTop;
|
||||
INT32 opRight;
|
||||
INT32 opBottom;
|
||||
BOOL opaqueRect;
|
||||
INT32 x;
|
||||
INT32 y;
|
||||
UINT32 cbData;
|
||||
BYTE data[256];
|
||||
} FAST_INDEX_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 cacheId;
|
||||
UINT32 flAccel;
|
||||
UINT32 ulCharInc;
|
||||
UINT32 backColor;
|
||||
UINT32 foreColor;
|
||||
INT32 bkLeft;
|
||||
INT32 bkTop;
|
||||
INT32 bkRight;
|
||||
INT32 bkBottom;
|
||||
INT32 opLeft;
|
||||
INT32 opTop;
|
||||
INT32 opRight;
|
||||
INT32 opBottom;
|
||||
INT32 x;
|
||||
INT32 y;
|
||||
UINT32 cbData;
|
||||
BYTE data[256];
|
||||
GLYPH_DATA_V2 glyphData;
|
||||
} FAST_GLYPH_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 xStart;
|
||||
INT32 yStart;
|
||||
UINT32 bRop2;
|
||||
UINT32 fillMode;
|
||||
UINT32 brushColor;
|
||||
UINT32 numPoints;
|
||||
UINT32 cbData;
|
||||
DELTA_POINT* points;
|
||||
} POLYGON_SC_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 xStart;
|
||||
INT32 yStart;
|
||||
UINT32 bRop2;
|
||||
UINT32 backMode;
|
||||
UINT32 fillMode;
|
||||
UINT32 backColor;
|
||||
UINT32 foreColor;
|
||||
rdpBrush brush;
|
||||
UINT32 numPoints;
|
||||
UINT32 cbData;
|
||||
DELTA_POINT* points;
|
||||
} POLYGON_CB_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 leftRect;
|
||||
INT32 topRect;
|
||||
INT32 rightRect;
|
||||
INT32 bottomRect;
|
||||
UINT32 bRop2;
|
||||
UINT32 fillMode;
|
||||
UINT32 color;
|
||||
} ELLIPSE_SC_ORDER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INT32 leftRect;
|
||||
INT32 topRect;
|
||||
INT32 rightRect;
|
||||
INT32 bottomRect;
|
||||
UINT32 bRop2;
|
||||
UINT32 fillMode;
|
||||
UINT32 backColor;
|
||||
UINT32 foreColor;
|
||||
rdpBrush brush;
|
||||
} ELLIPSE_CB_ORDER;
|
||||
|
||||
typedef BOOL (*pDstBlt)(rdpContext* context, const DSTBLT_ORDER* dstblt);
|
||||
typedef BOOL (*pPatBlt)(rdpContext* context, PATBLT_ORDER* patblt);
|
||||
typedef BOOL (*pScrBlt)(rdpContext* context, const SCRBLT_ORDER* scrblt);
|
||||
typedef BOOL (*pOpaqueRect)(rdpContext* context, const OPAQUE_RECT_ORDER* opaque_rect);
|
||||
typedef BOOL (*pDrawNineGrid)(rdpContext* context, const DRAW_NINE_GRID_ORDER* draw_nine_grid);
|
||||
typedef BOOL (*pMultiDstBlt)(rdpContext* context, const MULTI_DSTBLT_ORDER* multi_dstblt);
|
||||
typedef BOOL (*pMultiPatBlt)(rdpContext* context, const MULTI_PATBLT_ORDER* multi_patblt);
|
||||
typedef BOOL (*pMultiScrBlt)(rdpContext* context, const MULTI_SCRBLT_ORDER* multi_scrblt);
|
||||
typedef BOOL (*pMultiOpaqueRect)(rdpContext* context,
|
||||
const MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect);
|
||||
typedef BOOL (*pMultiDrawNineGrid)(rdpContext* context,
|
||||
const MULTI_DRAW_NINE_GRID_ORDER* multi_draw_nine_grid);
|
||||
typedef BOOL (*pLineTo)(rdpContext* context, const LINE_TO_ORDER* line_to);
|
||||
typedef BOOL (*pPolyline)(rdpContext* context, const POLYLINE_ORDER* polyline);
|
||||
typedef BOOL (*pMemBlt)(rdpContext* context, MEMBLT_ORDER* memblt);
|
||||
typedef BOOL (*pMem3Blt)(rdpContext* context, MEM3BLT_ORDER* memblt);
|
||||
typedef BOOL (*pSaveBitmap)(rdpContext* context, const SAVE_BITMAP_ORDER* save_bitmap);
|
||||
typedef BOOL (*pGlyphIndex)(rdpContext* context, GLYPH_INDEX_ORDER* glyph_index);
|
||||
typedef BOOL (*pFastIndex)(rdpContext* context, const FAST_INDEX_ORDER* fast_index);
|
||||
typedef BOOL (*pFastGlyph)(rdpContext* context, const FAST_GLYPH_ORDER* fast_glyph);
|
||||
typedef BOOL (*pPolygonSC)(rdpContext* context, const POLYGON_SC_ORDER* polygon_sc);
|
||||
typedef BOOL (*pPolygonCB)(rdpContext* context, POLYGON_CB_ORDER* polygon_cb);
|
||||
typedef BOOL (*pEllipseSC)(rdpContext* context, const ELLIPSE_SC_ORDER* ellipse_sc);
|
||||
typedef BOOL (*pEllipseCB)(rdpContext* context, const ELLIPSE_CB_ORDER* ellipse_cb);
|
||||
typedef BOOL (*pOrderInfo)(rdpContext* context, const ORDER_INFO* order_info,
|
||||
const char* order_name);
|
||||
|
||||
struct rdp_primary_update
|
||||
{
|
||||
rdpContext* context; /* 0 */
|
||||
UINT32 paddingA[16 - 1]; /* 1 */
|
||||
|
||||
WINPR_ATTR_NODISCARD pDstBlt DstBlt; /* 16 */
|
||||
WINPR_ATTR_NODISCARD pPatBlt PatBlt; /* 17 */
|
||||
WINPR_ATTR_NODISCARD pScrBlt ScrBlt; /* 18 */
|
||||
WINPR_ATTR_NODISCARD pOpaqueRect OpaqueRect; /* 19 */
|
||||
WINPR_ATTR_NODISCARD pDrawNineGrid DrawNineGrid; /* 20 */
|
||||
WINPR_ATTR_NODISCARD pMultiDstBlt MultiDstBlt; /* 21 */
|
||||
WINPR_ATTR_NODISCARD pMultiPatBlt MultiPatBlt; /* 22 */
|
||||
WINPR_ATTR_NODISCARD pMultiScrBlt MultiScrBlt; /* 23 */
|
||||
WINPR_ATTR_NODISCARD pMultiOpaqueRect MultiOpaqueRect; /* 24 */
|
||||
WINPR_ATTR_NODISCARD pMultiDrawNineGrid MultiDrawNineGrid; /* 25 */
|
||||
WINPR_ATTR_NODISCARD pLineTo LineTo; /* 26 */
|
||||
WINPR_ATTR_NODISCARD pPolyline Polyline; /* 27 */
|
||||
WINPR_ATTR_NODISCARD pMemBlt MemBlt; /* 28 */
|
||||
WINPR_ATTR_NODISCARD pMem3Blt Mem3Blt; /* 29 */
|
||||
WINPR_ATTR_NODISCARD pSaveBitmap SaveBitmap; /* 30 */
|
||||
WINPR_ATTR_NODISCARD pGlyphIndex GlyphIndex; /* 31 */
|
||||
WINPR_ATTR_NODISCARD pFastIndex FastIndex; /* 32 */
|
||||
WINPR_ATTR_NODISCARD pFastGlyph FastGlyph; /* 33 */
|
||||
WINPR_ATTR_NODISCARD pPolygonSC PolygonSC; /* 34 */
|
||||
WINPR_ATTR_NODISCARD pPolygonCB PolygonCB; /* 35 */
|
||||
WINPR_ATTR_NODISCARD pEllipseSC EllipseSC; /* 36 */
|
||||
WINPR_ATTR_NODISCARD pEllipseCB EllipseCB; /* 37 */
|
||||
/* Statistics callback */
|
||||
WINPR_ATTR_NODISCARD pOrderInfo OrderInfo; /* 38 */
|
||||
UINT32 paddingB[48 - 39]; /* 39 */
|
||||
};
|
||||
typedef struct rdp_primary_update rdpPrimaryUpdate;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_UPDATE_PRIMARY_H */
|
||||
Reference in New Issue
Block a user