mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-06-02 01:47:41 +00:00
testwm2: Fix video modes menu hit detection when highdpi or logical size used (#4936)
* SDLTest_CommonDrawWindowInfo: log SDL_RenderGetScale, SDL_RenderGetLogicalSize * testwm2: fix video modes menu hit detection in High DPI cases - also when logical size is specified, e.g. `--logical 640x480 --resizable --allow-highdpi` * add function to determine logical coordinates of renderer point when given window point * change since to the targeted milestone * fix typo * rename for consistency * Change logical coordinate type to float, since we can render with floating point precision. * add function to convert logical to window coordinates * testwm2: use new SDL_RenderWindowToLogical * SDL_render.c: alternate SDL_RenderWindowToLogical/SDL_RenderLogicalToWindow Co-authored-by: John Blat <johnblat64@protonmail.com> Co-authored-by: John Blat <47202511+johnblat64@users.noreply.github.com>
This commit is contained in:
parent
27ce914463
commit
0d98793693
6 changed files with 103 additions and 2 deletions
|
@ -979,6 +979,48 @@ extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer,
|
|||
extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer,
|
||||
float *scaleX, float *scaleY);
|
||||
|
||||
/**
|
||||
* Get logical coordinates of point in renderer when given real coordinates of point in window.
|
||||
* Logical coordinates will differ from real coordinates when render is scaled and logical renderer size set
|
||||
*
|
||||
* \param renderer the renderer from which the logical coordinates should be calcualted
|
||||
* \param windowX the real X coordinate in the window
|
||||
* \param windowY the real Y coordinate in the window
|
||||
* \param logicalX the pointer filled with the logical x coordinate
|
||||
* \param logicalY the pointer filled with the logical y coordinate
|
||||
*
|
||||
* \since This function is available since SDL 2.0.20.
|
||||
*
|
||||
* \sa SDL_RenderGetScale
|
||||
* \sa SDL_RenderSetScale
|
||||
* \sa SDL_RenderGetLogicalSize
|
||||
* \sa SDL_RenderSetLogicalSize
|
||||
*/
|
||||
extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer,
|
||||
int windowX, int windowY,
|
||||
float *logicalX, float *logicalY);
|
||||
|
||||
/**
|
||||
* Get real coordinates of point in window when given logical coordinates of point in renderer.
|
||||
* Logical coordinates will differ from real coordinates when render is scaled and logical renderer size set
|
||||
*
|
||||
* \param renderer the renderer from which the window coordinates should be calculated
|
||||
* \param logicalX the logical x coordinate
|
||||
* \param logicalY the logical y coordinate
|
||||
* \param windowX the pointer filled with the real X coordinate in the window
|
||||
* \param windowY the pointer filled with the real Y coordinate in the window
|
||||
|
||||
*
|
||||
* \since This function is available since SDL 2.0.20.
|
||||
*
|
||||
* \sa SDL_RenderGetScale
|
||||
* \sa SDL_RenderSetScale
|
||||
* \sa SDL_RenderGetLogicalSize
|
||||
* \sa SDL_RenderSetLogicalSize
|
||||
*/
|
||||
extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer,
|
||||
float logicalX, float logicalY,
|
||||
int *windowX, int *windowY);
|
||||
/**
|
||||
* Set the color used for drawing operations (Rect, Line and Clear).
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue