#include "../SDL_internal.h"
#ifndef SDL_pen_c_h_
#define SDL_pen_c_h_
#include "SDL_mouse_c.h"
typedef Uint32 SDL_PenCapabilityFlags;
#define SDL_PEN_CAPABILITY_PRESSURE (1u << 0)
#define SDL_PEN_CAPABILITY_XTILT (1u << 1)
#define SDL_PEN_CAPABILITY_YTILT (1u << 2)
#define SDL_PEN_CAPABILITY_DISTANCE (1u << 3)
#define SDL_PEN_CAPABILITY_ROTATION (1u << 4)
#define SDL_PEN_CAPABILITY_SLIDER (1u << 5)
#define SDL_PEN_CAPABILITY_TANGENTIAL_PRESSURE (1u << 6)
#define SDL_PEN_CAPABILITY_ERASER (1u << 7)
typedef enum SDL_PenSubtype
{
SDL_PEN_TYPE_UNKNOWN,
SDL_PEN_TYPE_ERASER,
SDL_PEN_TYPE_PEN,
SDL_PEN_TYPE_PENCIL,
SDL_PEN_TYPE_BRUSH,
SDL_PEN_TYPE_AIRBRUSH
} SDL_PenSubtype;
typedef struct SDL_PenInfo
{
SDL_PenCapabilityFlags capabilities;
float max_tilt;
Uint32 wacom_id;
int num_buttons;
SDL_PenSubtype subtype;
SDL_PenDeviceType device_type;
} SDL_PenInfo;
extern SDL_PenID SDL_AddPenDevice(Uint64 timestamp, const char *name, SDL_Window *window, const SDL_PenInfo *info, void *handle, bool in_proximity);
extern void SDL_RemovePenDevice(Uint64 timestamp, SDL_Window *window, SDL_PenID instance_id);
extern void SDL_RemoveAllPenDevices(void (*callback)(SDL_PenID instance_id, void *handle, void *userdata), void *userdata);
extern void SDL_SendPenTouch(Uint64 timestamp, SDL_PenID instance_id, SDL_Window *window, bool eraser, bool down);
extern void SDL_SendPenMotion(Uint64 timestamp, SDL_PenID instance_id, SDL_Window *window, float x, float y);
extern void SDL_SendPenAxis(Uint64 timestamp, SDL_PenID instance_id, SDL_Window *window, SDL_PenAxis axis, float value);
extern void SDL_SendPenButton(Uint64 timestamp, SDL_PenID instance_id, SDL_Window *window, Uint8 button, bool down);
extern void SDL_SendPenProximity(Uint64 timestamp, SDL_PenID instance_id, SDL_Window *window, bool in, bool immediate);
extern void SDL_SendPendingPenProximity(void);
extern SDL_PenID SDL_FindPenByHandle(void *handle);
extern SDL_PenID SDL_FindPenByCallback(bool (*callback)(void *handle, void *userdata), void *userdata);
SDL_PenInputFlags SDL_GetPenStatus(SDL_PenID instance_id, float *axes, int num_axes);
SDL_PenCapabilityFlags SDL_GetPenCapabilityFromAxis(SDL_PenAxis axis);
extern bool SDL_InitPen(void);
extern void SDL_QuitPen(void);
#endif