Keep SDR white point and HDR headroom defaults in one place

This commit is contained in:
Sam Lantinga
2024-02-22 14:47:58 -08:00
parent aeae202207
commit 1fb5b9672e
3 changed files with 16 additions and 12 deletions

View File

@@ -51,7 +51,9 @@ extern void SDL_FreeBlitMap(SDL_BlitMap *map);
extern void SDL_InvalidateAllBlitMap(SDL_Surface *surface);
/* Surface functions */
extern float SDL_GetDefaultSDRWhitePoint(SDL_Colorspace colorspace);
extern float SDL_GetSurfaceSDRWhitePoint(SDL_Surface *surface, SDL_Colorspace colorspace);
extern float SDL_GetDefaultHDRHeadroom(SDL_Colorspace colorspace);
extern float SDL_GetSurfaceHDRHeadroom(SDL_Surface *surface, SDL_Colorspace colorspace);
/* Miscellaneous functions */

View File

@@ -303,6 +303,11 @@ int SDL_GetSurfaceColorspace(SDL_Surface *surface, SDL_Colorspace *colorspace)
return 0;
}
float SDL_GetDefaultSDRWhitePoint(SDL_Colorspace colorspace)
{
return SDL_GetSurfaceSDRWhitePoint(NULL, colorspace);
}
float SDL_GetSurfaceSDRWhitePoint(SDL_Surface *surface, SDL_Colorspace colorspace)
{
SDL_TransferCharacteristics transfer = SDL_COLORSPACETRANSFER(colorspace);
@@ -312,7 +317,7 @@ float SDL_GetSurfaceSDRWhitePoint(SDL_Surface *surface, SDL_Colorspace colorspac
SDL_PropertiesID props;
float default_value = 1.0f;
if (surface->flags & SDL_SURFACE_USES_PROPERTIES) {
if (surface && surface->flags & SDL_SURFACE_USES_PROPERTIES) {
props = SDL_GetSurfaceProperties(surface);
} else {
props = 0;
@@ -326,6 +331,11 @@ float SDL_GetSurfaceSDRWhitePoint(SDL_Surface *surface, SDL_Colorspace colorspac
return 1.0f;
}
float SDL_GetDefaultHDRHeadroom(SDL_Colorspace colorspace)
{
return SDL_GetSurfaceHDRHeadroom(NULL, colorspace);
}
float SDL_GetSurfaceHDRHeadroom(SDL_Surface *surface, SDL_Colorspace colorspace)
{
SDL_TransferCharacteristics transfer = SDL_COLORSPACETRANSFER(colorspace);
@@ -335,7 +345,7 @@ float SDL_GetSurfaceHDRHeadroom(SDL_Surface *surface, SDL_Colorspace colorspace)
SDL_PropertiesID props;
float default_value = 0.0f;
if (surface->flags & SDL_SURFACE_USES_PROPERTIES) {
if (surface && surface->flags & SDL_SURFACE_USES_PROPERTIES) {
props = SDL_GetSurfaceProperties(surface);
} else {
props = 0;