#include "../../SDL_internal.h"
#ifdef SDL_VIDEO_DRIVER_N3DS
#include <3ds.h>
#include "../../events/SDL_touch_c.h"
#include "SDL_n3dstouch.h"
#define N3DS_TOUCH_ID 0
#define TOUCHSCREEN_SCALE_X 1.0f / GSP_SCREEN_HEIGHT_BOTTOM
#define TOUCHSCREEN_SCALE_Y 1.0f / GSP_SCREEN_WIDTH
void
N3DS_InitTouch(void)
{
SDL_AddTouch(N3DS_TOUCH_ID, SDL_TOUCH_DEVICE_DIRECT, "Touchscreen");
}
void
N3DS_QuitTouch(void)
{
SDL_DelTouch(N3DS_TOUCH_ID);
}
void
N3DS_PollTouch(void)
{
touchPosition touch;
static SDL_bool was_pressed = SDL_FALSE;
SDL_bool pressed;
hidTouchRead(&touch);
pressed = (touch.px != 0 || touch.py != 0);
if (pressed != was_pressed) {
was_pressed = pressed;
SDL_SendTouch(N3DS_TOUCH_ID,
0,
NULL,
pressed,
touch.px * TOUCHSCREEN_SCALE_X,
touch.py * TOUCHSCREEN_SCALE_Y,
pressed ? 1.0f : 0.0f);
} else if (pressed) {
SDL_SendTouchMotion(N3DS_TOUCH_ID,
0,
NULL,
touch.px * TOUCHSCREEN_SCALE_X,
touch.py * TOUCHSCREEN_SCALE_Y,
1.0f);
}
}
#endif