Skip to content

Commit

Permalink
Normalize touch events to the render viewport (thanks Sylvain!)
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Oct 12, 2017
1 parent 5bed4ca commit a7c79c5
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions src/render/SDL_render.c
Expand Up @@ -219,7 +219,35 @@ SDL_RendererEventWatch(void *userdata, SDL_Event *event)
event->button.x = (int)(event->button.x / (renderer->scale.x * renderer->dpi_scale.x));
event->button.y = (int)(event->button.y / (renderer->scale.y * renderer->dpi_scale.y));
}
} else if (event->type == SDL_FINGERDOWN ||
event->type == SDL_FINGERUP ||
event->type == SDL_FINGERMOTION) {
if (renderer->logical_w) {
int w = 1;
int h = 1;
SDL_GetRendererOutputSize(renderer, &w, &h);

event->tfinger.x *= (w - 1);
event->tfinger.y *= (h - 1);

event->tfinger.x -= (renderer->viewport.x * renderer->dpi_scale.x);
event->tfinger.y -= (renderer->viewport.y * renderer->dpi_scale.y);
event->tfinger.x = (event->tfinger.x / (renderer->scale.x * renderer->dpi_scale.x));
event->tfinger.y = (event->tfinger.y / (renderer->scale.y * renderer->dpi_scale.y));

if (renderer->logical_w > 1) {
event->tfinger.x = event->tfinger.x / (renderer->logical_w - 1);
} else {
event->tfinger.x = 0.5f;
}
if (renderer->logical_h > 1) {
event->tfinger.y = event->tfinger.y / (renderer->logical_h - 1);
} else {
event->tfinger.y = 0.5f;
}
}
}

return 0;
}

Expand Down

0 comments on commit a7c79c5

Please sign in to comment.