mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-02 15:47:31 +08:00
surface: SDL_RotateSurface should update SDL_PROP_SURFACE_ROTATION_FLOAT.
Fixes #14616.
This commit is contained in:
@@ -1027,6 +1027,14 @@ extern SDL_DECLSPEC bool SDLCALL SDL_FlipSurface(SDL_Surface *surface, SDL_FlipM
|
|||||||
* larger than the original, with the background filled in with the colorkey,
|
* larger than the original, with the background filled in with the colorkey,
|
||||||
* if available, or RGBA 255/255/255/0 if not.
|
* if available, or RGBA 255/255/255/0 if not.
|
||||||
*
|
*
|
||||||
|
* If `surface` has the SDL_PROP_SURFACE_ROTATION_FLOAT property set on it,
|
||||||
|
* the new copy will have the adjusted value set: if the rotation property is
|
||||||
|
* 90 and `angle` was 30, the new surface will have a property value of 60
|
||||||
|
* (that is: to be upright vs gravity, this surface needs to rotate 60 more
|
||||||
|
* degrees). However, note that further rotations on the new surface in this
|
||||||
|
* example will produce unexpected results, since the image will have resized
|
||||||
|
* and padded to accommodate the not-90 degree angle.
|
||||||
|
*
|
||||||
* \param surface the surface to rotate.
|
* \param surface the surface to rotate.
|
||||||
* \param angle the rotation angle, in degrees.
|
* \param angle the rotation angle, in degrees.
|
||||||
* \returns a rotated copy of the surface or NULL on failure; call
|
* \returns a rotated copy of the surface or NULL on failure; call
|
||||||
|
|||||||
@@ -2198,6 +2198,14 @@ SDL_Surface *SDL_RotateSurface(SDL_Surface *surface, float angle)
|
|||||||
SDL_DestroySurface(convert);
|
SDL_DestroySurface(convert);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rotated) {
|
||||||
|
if (SDL_HasProperty(surface->props, SDL_PROP_SURFACE_ROTATION_FLOAT)) {
|
||||||
|
const float rotation = (SDL_GetNumberProperty(surface->props, SDL_PROP_SURFACE_ROTATION_FLOAT, 0) - angle);
|
||||||
|
SDL_SetFloatProperty(SDL_GetSurfaceProperties(rotated), SDL_PROP_SURFACE_ROTATION_FLOAT, rotation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return rotated;
|
return rotated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user