diff --git a/include/freerdp/settings_types.h b/include/freerdp/settings_types.h index 8c5947c92..3e5984546 100644 --- a/include/freerdp/settings_types.h +++ b/include/freerdp/settings_types.h @@ -233,39 +233,42 @@ extern "C" /* General capability set */ #define TS_CAPS_PROTOCOLVERSION 0x200 /** @since version 3.6.0 */ -/* Order Support */ -#define NEG_DSTBLT_INDEX 0x00 -#define NEG_PATBLT_INDEX 0x01 -#define NEG_SCRBLT_INDEX 0x02 -#define NEG_MEMBLT_INDEX 0x03 -#define NEG_MEM3BLT_INDEX 0x04 -#define NEG_ATEXTOUT_INDEX 0x05 -#define NEG_AEXTTEXTOUT_INDEX 0x06 /* Must be ignored */ -#define NEG_DRAWNINEGRID_INDEX 0x07 /* Must be ignored */ -#define NEG_LINETO_INDEX 0x08 -#define NEG_MULTI_DRAWNINEGRID_INDEX 0x09 -#define NEG_OPAQUE_RECT_INDEX 0x0A /* Must be ignored */ -#define NEG_SAVEBITMAP_INDEX 0x0B -#define NEG_WTEXTOUT_INDEX 0x0C /* Must be ignored */ -#define NEG_MEMBLT_V2_INDEX 0x0D /* Must be ignored */ -#define NEG_MEM3BLT_V2_INDEX 0x0E /* Must be ignored */ -#define NEG_MULTIDSTBLT_INDEX 0x0F -#define NEG_MULTIPATBLT_INDEX 0x10 -#define NEG_MULTISCRBLT_INDEX 0x11 -#define NEG_MULTIOPAQUERECT_INDEX 0x12 -#define NEG_FAST_INDEX_INDEX 0x13 -#define NEG_POLYGON_SC_INDEX 0x14 -#define NEG_POLYGON_CB_INDEX 0x15 -#define NEG_POLYLINE_INDEX 0x16 -#define NEG_UNUSED23_INDEX 0x17 /* Must be ignored */ -#define NEG_FAST_GLYPH_INDEX 0x18 -#define NEG_ELLIPSE_SC_INDEX 0x19 -#define NEG_ELLIPSE_CB_INDEX 0x1A -#define NEG_GLYPH_INDEX_INDEX 0x1B -#define NEG_GLYPH_WEXTTEXTOUT_INDEX 0x1C /* Must be ignored */ -#define NEG_GLYPH_WLONGTEXTOUT_INDEX 0x1D /* Must be ignored */ -#define NEG_GLYPH_WLONGEXTTEXTOUT_INDEX 0x1E /* Must be ignored */ -#define NEG_UNUSED31_INDEX 0x1F /* Must be ignored */ + /* Order Support */ + typedef enum + { + NEG_DSTBLT_INDEX = 0x00, + NEG_PATBLT_INDEX = 0x01, + NEG_SCRBLT_INDEX = 0x02, + NEG_MEMBLT_INDEX = 0x03, + NEG_MEM3BLT_INDEX = 0x04, + NEG_ATEXTOUT_INDEX = 0x05, + NEG_AEXTTEXTOUT_INDEX = 0x06, /* Must be ignored */ + NEG_DRAWNINEGRID_INDEX = 0x07, /* Must be ignored */ + NEG_LINETO_INDEX = 0x08, + NEG_MULTI_DRAWNINEGRID_INDEX = 0x09, + NEG_OPAQUE_RECT_INDEX = 0x0A, /* Must be ignored */ + NEG_SAVEBITMAP_INDEX = 0x0B, + NEG_WTEXTOUT_INDEX = 0x0C, /* Must be ignored */ + NEG_MEMBLT_V2_INDEX = 0x0D, /* Must be ignored */ + NEG_MEM3BLT_V2_INDEX = 0x0E, /* Must be ignored */ + NEG_MULTIDSTBLT_INDEX = 0x0F, + NEG_MULTIPATBLT_INDEX = 0x10, + NEG_MULTISCRBLT_INDEX = 0x11, + NEG_MULTIOPAQUERECT_INDEX = 0x12, + NEG_FAST_INDEX_INDEX = 0x13, + NEG_POLYGON_SC_INDEX = 0x14, + NEG_POLYGON_CB_INDEX = 0x15, + NEG_POLYLINE_INDEX = 0x16, + NEG_UNUSED23_INDEX = 0x17, /* Must be ignored */ + NEG_FAST_GLYPH_INDEX = 0x18, + NEG_ELLIPSE_SC_INDEX = 0x19, + NEG_ELLIPSE_CB_INDEX = 0x1A, + NEG_GLYPH_INDEX_INDEX = 0x1B, + NEG_GLYPH_WEXTTEXTOUT_INDEX = 0x1C, /* Must be ignored */ + NEG_GLYPH_WLONGTEXTOUT_INDEX = 0x1D, /* Must be ignored */ + NEG_GLYPH_WLONGEXTTEXTOUT_INDEX = 0x1E, /* Must be ignored */ + NEG_UNUSED31_INDEX = 0x1F /* Must be ignored */ + } FreeRDP_OrderSupportFlagConstants; /* Glyph Support Level */ #define GLYPH_SUPPORT_NONE 0x0000 diff --git a/include/freerdp/utils/string.h b/include/freerdp/utils/string.h index 690e51021..7ca4551ed 100644 --- a/include/freerdp/utils/string.h +++ b/include/freerdp/utils/string.h @@ -66,6 +66,15 @@ extern "C" */ FREERDP_API WINPR_ATTR_NODISCARD const char* freerdp_input_touch_state_string(DWORD flags); + /** @brief Convert a single \ref FreeRDP_OrderSupportFlags to string + * + * @param type The value to convert + * @return A constant string representation of \ref type or the string \b + * UNKNOWN for an invalid value + * @since verstion 3.22.0 + */ + FREERDP_API WINPR_ATTR_NODISCARD const char* freerdp_order_support_flags_string(UINT8 type); + #ifdef __cplusplus } #endif diff --git a/libfreerdp/utils/string.c b/libfreerdp/utils/string.c index 49a22d58b..06f08355e 100644 --- a/libfreerdp/utils/string.c +++ b/libfreerdp/utils/string.c @@ -171,3 +171,48 @@ const char* freerdp_input_touch_state_string(DWORD flags) #endif } +const char* freerdp_order_support_flags_string(UINT8 type) +{ +#define ENTRY(x) \ + case x: \ + return #x + + switch (type) + { + ENTRY(NEG_DSTBLT_INDEX); + ENTRY(NEG_PATBLT_INDEX); + ENTRY(NEG_SCRBLT_INDEX); + ENTRY(NEG_MEMBLT_INDEX); + ENTRY(NEG_MEM3BLT_INDEX); + ENTRY(NEG_ATEXTOUT_INDEX); + ENTRY(NEG_AEXTTEXTOUT_INDEX); + ENTRY(NEG_DRAWNINEGRID_INDEX); + ENTRY(NEG_LINETO_INDEX); + ENTRY(NEG_MULTI_DRAWNINEGRID_INDEX); + ENTRY(NEG_OPAQUE_RECT_INDEX); + ENTRY(NEG_SAVEBITMAP_INDEX); + ENTRY(NEG_WTEXTOUT_INDEX); + ENTRY(NEG_MEMBLT_V2_INDEX); + ENTRY(NEG_MEM3BLT_V2_INDEX); + ENTRY(NEG_MULTIDSTBLT_INDEX); + ENTRY(NEG_MULTIPATBLT_INDEX); + ENTRY(NEG_MULTISCRBLT_INDEX); + ENTRY(NEG_MULTIOPAQUERECT_INDEX); + ENTRY(NEG_FAST_INDEX_INDEX); + ENTRY(NEG_POLYGON_SC_INDEX); + ENTRY(NEG_POLYGON_CB_INDEX); + ENTRY(NEG_POLYLINE_INDEX); + ENTRY(NEG_UNUSED23_INDEX); + ENTRY(NEG_FAST_GLYPH_INDEX); + ENTRY(NEG_ELLIPSE_SC_INDEX); + ENTRY(NEG_ELLIPSE_CB_INDEX); + ENTRY(NEG_GLYPH_INDEX_INDEX); + ENTRY(NEG_GLYPH_WEXTTEXTOUT_INDEX); + ENTRY(NEG_GLYPH_WLONGTEXTOUT_INDEX); + ENTRY(NEG_GLYPH_WLONGEXTTEXTOUT_INDEX); + ENTRY(NEG_UNUSED31_INDEX); + default: + return "UNKNOWN"; + } +#undef ENTRY +}