[core,settings] define OrderSupport flags and stringify

* Define OrderSupportFlags as enum
* Add public API stringify function
This commit is contained in:
akallabeth
2026-01-25 08:15:56 +01:00
parent 6673e8a86f
commit 09ae30a0f9
3 changed files with 90 additions and 33 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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
}