From d013e5f2801983000a9a7b607c19889e520ebcb8 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbap...@gmail.com>
Date: Mon, 4 Nov 2024 09:42:20 +0000
Subject: [PATCH] header: Add interactioncontext.h

Required for 
https://github.com/aseprite/laf/blob/4618e1d256394f39e67fc0fe898dc77e8a1584fc/os/win/winapi.h#L15

Signed-off-by: Biswapriyo Nath <nathbap...@gmail.com>
---
 .../include/interactioncontext.h              | 312 ++++++++++++++++++
 1 file changed, 312 insertions(+)
 create mode 100644 mingw-w64-headers/include/interactioncontext.h

diff --git a/mingw-w64-headers/include/interactioncontext.h 
b/mingw-w64-headers/include/interactioncontext.h
new file mode 100644
index 0000000..74ca71d
--- /dev/null
+++ b/mingw-w64-headers/include/interactioncontext.h
@@ -0,0 +1,312 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef INTERACTION_CONTEXT_H
+#define INTERACTION_CONTEXT_H
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#include <float.h>
+#include <windows.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#if (NTDDI_VERSION >= NTDDI_WIN8)
+
+typedef enum INTERACTION_ID {
+  INTERACTION_ID_NONE = 0x00000000,
+  INTERACTION_ID_MANIPULATION = 0x00000001,
+  INTERACTION_ID_TAP = 0x00000002,
+  INTERACTION_ID_SECONDARY_TAP = 0x00000003,
+  INTERACTION_ID_HOLD = 0x00000004,
+  INTERACTION_ID_DRAG = 0x00000005,
+  INTERACTION_ID_CROSS_SLIDE = 0x00000006,
+  INTERACTION_ID_MAX = 0xffffffff
+} INTERACTION_ID;
+
+typedef enum INTERACTION_FLAGS {
+  INTERACTION_FLAG_NONE = 0x00000000,
+  INTERACTION_FLAG_BEGIN = 0x00000001,
+  INTERACTION_FLAG_END = 0x00000002,
+  INTERACTION_FLAG_CANCEL = 0x00000004,
+  INTERACTION_FLAG_INERTIA = 0x00000008,
+  INTERACTION_FLAG_MAX = 0xffffffff
+} INTERACTION_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(INTERACTION_FLAGS);
+
+typedef enum INTERACTION_CONFIGURATION_FLAGS {
+  INTERACTION_CONFIGURATION_FLAG_NONE = 0x00000000,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION = 0x00000001,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_TRANSLATION_X = 0x00000002,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_TRANSLATION_Y = 0x00000004,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_ROTATION = 0x00000008,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_SCALING = 0x00000010,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_TRANSLATION_INERTIA = 0x00000020,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_ROTATION_INERTIA = 0x00000040,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_SCALING_INERTIA = 0x00000080,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_RAILS_X = 0x00000100,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_RAILS_Y = 0x00000200,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_EXACT = 0x00000400,
+  INTERACTION_CONFIGURATION_FLAG_MANIPULATION_MULTIPLE_FINGER_PANNING = 
0x00000800,
+  INTERACTION_CONFIGURATION_FLAG_CROSS_SLIDE = 0x00000001,
+  INTERACTION_CONFIGURATION_FLAG_CROSS_SLIDE_HORIZONTAL = 0x00000002,
+  INTERACTION_CONFIGURATION_FLAG_CROSS_SLIDE_SELECT = 0x00000004,
+  INTERACTION_CONFIGURATION_FLAG_CROSS_SLIDE_SPEED_BUMP = 0x00000008,
+  INTERACTION_CONFIGURATION_FLAG_CROSS_SLIDE_REARRANGE = 0x00000010,
+  INTERACTION_CONFIGURATION_FLAG_CROSS_SLIDE_EXACT = 0x00000020,
+  INTERACTION_CONFIGURATION_FLAG_TAP = 0x00000001,
+  INTERACTION_CONFIGURATION_FLAG_TAP_DOUBLE = 0x00000002
+#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
+  ,INTERACTION_CONFIGURATION_FLAG_TAP_MULTIPLE_FINGER = 0x00000004
+#endif
+  ,INTERACTION_CONFIGURATION_FLAG_SECONDARY_TAP = 0x00000001
+  ,INTERACTION_CONFIGURATION_FLAG_HOLD = 0x00000001
+  ,INTERACTION_CONFIGURATION_FLAG_HOLD_MOUSE = 0x00000002
+#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
+  ,INTERACTION_CONFIGURATION_FLAG_HOLD_MULTIPLE_FINGER = 0x00000004
+#endif
+  ,INTERACTION_CONFIGURATION_FLAG_DRAG = 0x00000001
+  ,INTERACTION_CONFIGURATION_FLAG_MAX = 0xffffffff
+} INTERACTION_CONFIGURATION_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(INTERACTION_CONFIGURATION_FLAGS);
+
+typedef enum INERTIA_PARAMETER {
+  INERTIA_PARAMETER_TRANSLATION_DECELERATION = 0x00000001,
+  INERTIA_PARAMETER_TRANSLATION_DISPLACEMENT = 0x00000002,
+  INERTIA_PARAMETER_ROTATION_DECELERATION = 0x00000003,
+  INERTIA_PARAMETER_ROTATION_ANGLE = 0x00000004,
+  INERTIA_PARAMETER_EXPANSION_DECELERATION = 0x00000005,
+  INERTIA_PARAMETER_EXPANSION_EXPANSION = 0x00000006,
+  INERTIA_PARAMETER_MAX = 0xffffffff
+} INERTIA_PARAMETER;
+
+typedef enum INTERACTION_STATE {
+  INTERACTION_STATE_IDLE = 0x00000000,
+  INTERACTION_STATE_IN_INTERACTION = 0x00000001,
+  INTERACTION_STATE_POSSIBLE_DOUBLE_TAP = 0x00000002,
+  INTERACTION_STATE_MAX = 0xffffffff
+} INTERACTION_STATE;
+
+typedef enum INTERACTION_CONTEXT_PROPERTY {
+  INTERACTION_CONTEXT_PROPERTY_MEASUREMENT_UNITS = 0x00000001,
+  INTERACTION_CONTEXT_PROPERTY_INTERACTION_UI_FEEDBACK = 0x00000002,
+  INTERACTION_CONTEXT_PROPERTY_FILTER_POINTERS = 0x00000003,
+  INTERACTION_CONTEXT_PROPERTY_MAX = 0xffffffff
+} INTERACTION_CONTEXT_PROPERTY;
+
+typedef enum CROSS_SLIDE_THRESHOLD {
+  CROSS_SLIDE_THRESHOLD_SELECT_START = 0x00000000,
+  CROSS_SLIDE_THRESHOLD_SPEED_BUMP_START = 0x00000001,
+  CROSS_SLIDE_THRESHOLD_SPEED_BUMP_END = 0x00000002,
+  CROSS_SLIDE_THRESHOLD_REARRANGE_START = 0x00000003,
+  CROSS_SLIDE_THRESHOLD_COUNT = 0x00000004,
+  CROSS_SLIDE_THRESHOLD_MAX = 0xffffffff
+} CROSS_SLIDE_THRESHOLD;
+
+#define CROSS_SLIDE_THRESHOLD_INVALID_VALUE FLT_MAX
+
+typedef enum CROSS_SLIDE_FLAGS {
+  CROSS_SLIDE_FLAGS_NONE = 0x00000000,
+  CROSS_SLIDE_FLAGS_SELECT = 0x00000001,
+  CROSS_SLIDE_FLAGS_SPEED_BUMP = 0x00000002,
+  CROSS_SLIDE_FLAGS_REARRANGE = 0x00000004,
+  CROSS_SLIDE_FLAGS_MAX = 0xffffffff
+} CROSS_SLIDE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(CROSS_SLIDE_FLAGS);
+
+typedef enum MOUSE_WHEEL_PARAMETER {
+  MOUSE_WHEEL_PARAMETER_CHAR_TRANSLATION_X = 0x00000001,
+  MOUSE_WHEEL_PARAMETER_CHAR_TRANSLATION_Y = 0x00000002,
+  MOUSE_WHEEL_PARAMETER_DELTA_SCALE = 0x00000003,
+  MOUSE_WHEEL_PARAMETER_DELTA_ROTATION = 0x00000004,
+  MOUSE_WHEEL_PARAMETER_PAGE_TRANSLATION_X = 0x00000005,
+  MOUSE_WHEEL_PARAMETER_PAGE_TRANSLATION_Y = 0x00000006,
+  MOUSE_WHEEL_PARAMETER_MAX = 0xffffffff
+} MOUSE_WHEEL_PARAMETER;
+
+#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
+typedef enum TAP_PARAMETER {
+  TAP_PARAMETER_MIN_CONTACT_COUNT = 0x00000000,
+  TAP_PARAMETER_MAX_CONTACT_COUNT = 0x00000001,
+  TAP_PARAMETER_MAX = 0xffffffff
+} TAP_PARAMETER;
+
+typedef enum HOLD_PARAMETER {
+  HOLD_PARAMETER_MIN_CONTACT_COUNT = 0x00000000,
+  HOLD_PARAMETER_MAX_CONTACT_COUNT = 0x00000001,
+  HOLD_PARAMETER_THRESHOLD_RADIUS = 0x00000002,
+  HOLD_PARAMETER_THRESHOLD_START_DELAY = 0x00000003,
+  HOLD_PARAMETER_MAX = 0xffffffff
+} HOLD_PARAMETER;
+
+typedef enum TRANSLATION_PARAMETER {
+  TRANSLATION_PARAMETER_MIN_CONTACT_COUNT = 0x00000000,
+  TRANSLATION_PARAMETER_MAX_CONTACT_COUNT = 0x00000001,
+  TRANSLATION_PARAMETER_MAX = 0xffffffff
+} TRANSLATION_PARAMETER;
+#endif
+
+typedef enum MANIPULATION_RAILS_STATE {
+  MANIPULATION_RAILS_STATE_UNDECIDED = 0x00000000,
+  MANIPULATION_RAILS_STATE_FREE = 0x00000001,
+  MANIPULATION_RAILS_STATE_RAILED = 0x00000002,
+  MANIPULATION_RAILS_STATE_MAX = 0xffffffff
+} MANIPULATION_RAILS_STATE;
+
+typedef struct MANIPULATION_TRANSFORM {
+  float translationX;
+  float translationY;
+  float scale;
+  float expansion;
+  float rotation;
+} MANIPULATION_TRANSFORM;
+
+typedef struct MANIPULATION_VELOCITY {
+  float velocityX;
+  float velocityY;
+  float velocityExpansion;
+  float velocityAngular;
+} MANIPULATION_VELOCITY;
+
+typedef struct INTERACTION_ARGUMENTS_MANIPULATION {
+  MANIPULATION_TRANSFORM delta;
+  MANIPULATION_TRANSFORM cumulative;
+  MANIPULATION_VELOCITY velocity;
+  MANIPULATION_RAILS_STATE railsState;
+} INTERACTION_ARGUMENTS_MANIPULATION;
+
+typedef struct INTERACTION_ARGUMENTS_TAP {
+  UINT32 count;
+} INTERACTION_ARGUMENTS_TAP;
+
+typedef struct INTERACTION_ARGUMENTS_CROSS_SLIDE {
+  CROSS_SLIDE_FLAGS flags;
+} INTERACTION_ARGUMENTS_CROSS_SLIDE;
+
+typedef struct INTERACTION_CONTEXT_OUTPUT {
+  INTERACTION_ID interactionId;
+  INTERACTION_FLAGS interactionFlags;
+  POINTER_INPUT_TYPE inputType;
+  float x;
+  float y;
+  union {
+    INTERACTION_ARGUMENTS_MANIPULATION manipulation;
+    INTERACTION_ARGUMENTS_TAP tap;
+    INTERACTION_ARGUMENTS_CROSS_SLIDE crossSlide;
+  } arguments;
+} INTERACTION_CONTEXT_OUTPUT;
+
+#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
+typedef struct INTERACTION_CONTEXT_OUTPUT2 {
+  INTERACTION_ID interactionId;
+  INTERACTION_FLAGS interactionFlags;
+  POINTER_INPUT_TYPE inputType;
+  UINT32 contactCount;
+  UINT32 currentContactCount;
+  float x;
+  float y;
+  union {
+    INTERACTION_ARGUMENTS_MANIPULATION manipulation;
+    INTERACTION_ARGUMENTS_TAP tap;
+    INTERACTION_ARGUMENTS_CROSS_SLIDE crossSlide;
+  } arguments;
+} INTERACTION_CONTEXT_OUTPUT2;
+#endif
+
+typedef struct INTERACTION_CONTEXT_CONFIGURATION {
+  INTERACTION_ID interactionId;
+  INTERACTION_CONFIGURATION_FLAGS enable;
+} INTERACTION_CONTEXT_CONFIGURATION;
+
+typedef struct CROSS_SLIDE_PARAMETER {
+  CROSS_SLIDE_THRESHOLD threshold;
+  float distance;
+} CROSS_SLIDE_PARAMETER;
+
+typedef void(CALLBACK *INTERACTION_CONTEXT_OUTPUT_CALLBACK)(void *clientData, 
const INTERACTION_CONTEXT_OUTPUT *output);
+
+#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
+typedef void(CALLBACK *INTERACTION_CONTEXT_OUTPUT_CALLBACK2)(void *clientData, 
const INTERACTION_CONTEXT_OUTPUT2 *output);
+#endif
+
+DECLARE_HANDLE(HINTERACTIONCONTEXT);
+
+#define INTERACTION_CONTEXT_CONFIGURATION_DEFAULT                         \
+{                                                                         \
+    {INTERACTION_ID_MANIPULATION,                                         \
+        INTERACTION_CONFIGURATION_FLAG_MANIPULATION |                     \
+        INTERACTION_CONFIGURATION_FLAG_MANIPULATION_TRANSLATION_X |       \
+        INTERACTION_CONFIGURATION_FLAG_MANIPULATION_TRANSLATION_Y |       \
+        INTERACTION_CONFIGURATION_FLAG_MANIPULATION_ROTATION |            \
+        INTERACTION_CONFIGURATION_FLAG_MANIPULATION_SCALING |             \
+        INTERACTION_CONFIGURATION_FLAG_MANIPULATION_TRANSLATION_INERTIA | \
+        INTERACTION_CONFIGURATION_FLAG_MANIPULATION_ROTATION_INERTIA |    \
+        INTERACTION_CONFIGURATION_FLAG_MANIPULATION_SCALING_INERTIA},     \
+    {INTERACTION_ID_TAP,                                                  \
+        INTERACTION_CONFIGURATION_FLAG_TAP},                              \
+    {INTERACTION_ID_SECONDARY_TAP,                                        \
+        INTERACTION_CONFIGURATION_FLAG_SECONDARY_TAP},                    \
+    {INTERACTION_ID_HOLD,                                                 \
+        INTERACTION_CONFIGURATION_FLAG_HOLD},                             \
+    {INTERACTION_ID_DRAG,                                                 \
+        INTERACTION_CONFIGURATION_FLAG_NONE},                             \
+    {INTERACTION_ID_CROSS_SLIDE,                                          \
+        INTERACTION_CONFIGURATION_FLAG_NONE}                              \
+}                                                                         \
+
+#define INERTIA_PARAMETER_INVALID_VALUE FLT_MAX
+
+HRESULT WINAPI CreateInteractionContext(HINTERACTIONCONTEXT 
*interactionContext);
+HRESULT WINAPI DestroyInteractionContext(HINTERACTIONCONTEXT 
interactionContext);
+HRESULT WINAPI RegisterOutputCallbackInteractionContext(HINTERACTIONCONTEXT 
interactionContext, INTERACTION_CONTEXT_OUTPUT_CALLBACK outputCallback, void 
*clientData);
+#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
+HRESULT WINAPI RegisterOutputCallbackInteractionContext2(HINTERACTIONCONTEXT 
interactionContext, INTERACTION_CONTEXT_OUTPUT_CALLBACK2 outputCallback, void 
*clientData);
+#endif
+HRESULT WINAPI 
SetInteractionConfigurationInteractionContext(HINTERACTIONCONTEXT 
interactionContext, UINT32 configurationCount, const 
INTERACTION_CONTEXT_CONFIGURATION *configuration);
+HRESULT WINAPI 
GetInteractionConfigurationInteractionContext(HINTERACTIONCONTEXT 
interactionContext, UINT32 configurationCount, 
INTERACTION_CONTEXT_CONFIGURATION *configuration);
+HRESULT WINAPI SetPropertyInteractionContext(HINTERACTIONCONTEXT 
interactionContext, INTERACTION_CONTEXT_PROPERTY contextProperty, UINT32 value);
+HRESULT WINAPI GetPropertyInteractionContext(HINTERACTIONCONTEXT 
interactionContext, INTERACTION_CONTEXT_PROPERTY contextProperty, UINT32 
*value);
+HRESULT WINAPI SetInertiaParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, INERTIA_PARAMETER inertiaParameter, float value);
+HRESULT WINAPI GetInertiaParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, INERTIA_PARAMETER inertiaParameter, float *value);
+HRESULT WINAPI SetCrossSlideParametersInteractionContext(HINTERACTIONCONTEXT 
interactionContext, UINT32 parameterCount, CROSS_SLIDE_PARAMETER 
*crossSlideParameters);
+HRESULT WINAPI GetCrossSlideParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, CROSS_SLIDE_THRESHOLD threshold, float *distance);
+#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
+HRESULT WINAPI SetTapParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, TAP_PARAMETER parameter, float value);
+HRESULT WINAPI GetTapParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, TAP_PARAMETER parameter, float *value);
+HRESULT WINAPI SetHoldParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, HOLD_PARAMETER parameter, float value);
+HRESULT WINAPI GetHoldParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, HOLD_PARAMETER parameter, float *value);
+HRESULT WINAPI SetTranslationParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, TRANSLATION_PARAMETER parameter, float value);
+HRESULT WINAPI GetTranslationParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, TRANSLATION_PARAMETER parameter, float *value);
+#endif
+HRESULT WINAPI SetMouseWheelParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, MOUSE_WHEEL_PARAMETER parameter, float value);
+HRESULT WINAPI GetMouseWheelParameterInteractionContext(HINTERACTIONCONTEXT 
interactionContext, MOUSE_WHEEL_PARAMETER parameter, float *value);
+HRESULT WINAPI ResetInteractionContext(HINTERACTIONCONTEXT interactionContext);
+HRESULT WINAPI GetStateInteractionContext(HINTERACTIONCONTEXT 
interactionContext, const POINTER_INFO *pointerInfo, INTERACTION_STATE *state);
+HRESULT WINAPI AddPointerInteractionContext(HINTERACTIONCONTEXT 
interactionContext, UINT32 pointerId);
+HRESULT WINAPI RemovePointerInteractionContext(HINTERACTIONCONTEXT 
interactionContext, UINT32 pointerId);
+HRESULT WINAPI ProcessPointerFramesInteractionContext(HINTERACTIONCONTEXT 
interactionContext, UINT32 entriesCount, UINT32 pointerCount, const 
POINTER_INFO *pointerInfo);
+HRESULT WINAPI BufferPointerPacketsInteractionContext(HINTERACTIONCONTEXT 
interactionContext, UINT32 entriesCount, const POINTER_INFO *pointerInfo);
+HRESULT WINAPI ProcessBufferedPacketsInteractionContext(HINTERACTIONCONTEXT 
interactionContext);
+HRESULT WINAPI ProcessInertiaInteractionContext(HINTERACTIONCONTEXT 
interactionContext);
+HRESULT WINAPI StopInteractionContext(HINTERACTIONCONTEXT interactionContext);
+HRESULT WINAPI SetPivotInteractionContext(HINTERACTIONCONTEXT 
interactionContext, float x, float y, float radius);
+
+#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
+
+#endif /* INTERACTION_CONTEXT_H */
-- 
2.47.0

_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to