import ctypes from ctypes_enum import CtypesEnum from .CBasicStructs import * from .EveProcessingStatus import * EVE_MAX_HAND_DETECTIONS = 8 EVE_MAX_CUSTOM_STATIC_GESTURES = 20 EVE_MAX_STATIC_GESTURES = 40 EVE_HAND_LANDMARKS_SIZE = 2 EVE_HAND_LANDMARK_SIZE = 11 EVE_STATIC_GESTURE_SIZE = 22 class EveRunHandLandmarks(CtypesEnum): EVE_HAND_LANDMARKS_ALL_HANDS = 0 EVE_HAND_LANDMARKS_MAIN_HAND_ONLY = 1 EVE_HAND_LANDMARKS_SIZE = 2 class EveHandLandmark(CtypesEnum): EVE_WRIST = 0 EVE_THUMB_IP = 1 EVE_THUMB_TIP = 2 EVE_INDEX_MCP = 3 EVE_INDEX_TIP = 4 EVE_MIDDLE_MCP = 5 EVE_MIDDLE_TIP = 6 EVE_RING_MCP = 7 EVE_RING_TIP = 8 EVE_PINKY_MCP = 9 EVE_PINKY_TIP = 10 EVE_HAND_LANDMARK_SIZE = 11 class EveGestureQuality(CtypesEnum): EVE_POOR_QUALITY_LOW_CONFIDENCE = 0 EVE_POOR_QUALITY_HAND_OVER_FACE = 1 EVE_GOOD_QUALITY = 2 class EveStaticGestureType(CtypesEnum): EVE_STATIC_GESTURE_NONE = 0 EVE_OPEN_HAND = 1 EVE_OPEN_HAND_LEFT = 2 EVE_OPEN_HAND_RIGHT = 3 EVE_CLOSED_HAND = 4 EVE_THUMBS_LEFT = 5 EVE_THUMBS_RIGHT = 6 EVE_RESERVED_STATIC_GESTURE_1 = 7 EVE_RESERVED_STATIC_GESTURE_2 = 8 EVE_RESERVED_STATIC_GESTURE_3 = 9 EVE_RESERVED_STATIC_GESTURE_4 = 10 EVE_RESERVED_STATIC_GESTURE_5 = 11 EVE_CUSTOM_STATIC_GESTURE_1 = 12 EVE_CUSTOM_STATIC_GESTURE_2 = 13 EVE_CUSTOM_STATIC_GESTURE_3 = 14 EVE_CUSTOM_STATIC_GESTURE_4 = 15 EVE_CUSTOM_STATIC_GESTURE_5 = 16 EVE_CUSTOM_STATIC_GESTURE_6 = 17 EVE_CUSTOM_STATIC_GESTURE_7 = 18 EVE_CUSTOM_STATIC_GESTURE_8 = 19 EVE_CUSTOM_STATIC_GESTURE_9 = 20 EVE_CUSTOM_STATIC_GESTURE_10 = 21 EVE_STATIC_GESTURE_SIZE = 22 class EveStaticGesture(ctypes.Structure): _fields_ = [ ("handId", ctypes.c_int), ("isMainUserHand", ctypes.c_int), ("type", ctypes.c_int), ("confidence", ctypes.c_float), ("quality", ctypes.c_int), ] class EveStaticGestures(ctypes.Structure): _fields_ = [ ("count", ctypes.c_uint), ("gestures", EveStaticGesture * EVE_MAX_HAND_DETECTIONS), ] class EveStaticGestureDefinition(ctypes.Structure): _fields_ = [ ("gestureType", ctypes.c_int), ("id", ctypes.c_uint), ("landmarksMap", CPoint2f * EVE_HAND_LANDMARK_SIZE), ] class EveSingleHandDetection(ctypes.Structure): _fields_ = [ ("id", ctypes.c_int), ("isHandValid", ctypes.c_int), ("boundingBox", CRect2iWH), ("boundingBoxScore", ctypes.c_float), ("landmarksICS", CPoint2f * EVE_HAND_LANDMARK_SIZE), ("validationScore", ctypes.c_float), ("inPlaneAngle", ctypes.c_float), ("depth", ctypes.c_float), ("isMainUserHand", ctypes.c_int), ] class EveHandDetections(ctypes.Structure): _fields_ = [ ("status", ctypes.c_int), ("hasFaceROI", ctypes.c_int), ("faceROI", CRect2fWH), ("detectedHandCount", ctypes.c_uint), ("hands", EveSingleHandDetection * EVE_MAX_HAND_DETECTIONS), ]