mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-23 13:09:11 +00:00
Change default texture scale mode per renderer
* SDL_SetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode scale_mode) * SDL_GetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode *scale_mode)
This commit is contained in:
parent
b0d2a4f355
commit
44bca81fdd
3 changed files with 64 additions and 1 deletions
|
@ -2637,6 +2637,41 @@ extern SDL_DECLSPEC bool SDLCALL SDL_RenderDebugText(SDL_Renderer *renderer, flo
|
||||||
*/
|
*/
|
||||||
extern SDL_DECLSPEC bool SDLCALL SDL_RenderDebugTextFormat(SDL_Renderer *renderer, float x, float y, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(4);
|
extern SDL_DECLSPEC bool SDLCALL SDL_RenderDebugTextFormat(SDL_Renderer *renderer, float x, float y, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(4);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set default scale mode for new textures for given renderer.
|
||||||
|
*
|
||||||
|
* When a renderer is created, scale_mode defaults to SDL_SCALEMODE_LINEAR.
|
||||||
|
*
|
||||||
|
* \param renderer the renderer to update.
|
||||||
|
* \param scale_mode the scale mode to change to for new textures.
|
||||||
|
* \returns true on success or false on failure; call SDL_GetError() for more
|
||||||
|
* information.
|
||||||
|
*
|
||||||
|
* \threadsafety This function should only be called on the main thread.
|
||||||
|
*
|
||||||
|
* \since This function is available since SDL 3.4.0.
|
||||||
|
*
|
||||||
|
* \sa SDL_GetDefaultTextureScaleMode
|
||||||
|
*/
|
||||||
|
extern SDL_DECLSPEC bool SDLCALL SDL_SetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode scale_mode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get default texture scale mode of the given renderer.
|
||||||
|
*
|
||||||
|
* \param renderer the renderer to get data from.
|
||||||
|
* \param scale_mode a SDL_ScaleMode filled with current default scale mode.
|
||||||
|
* See SDL_SetDefaultTextureScaleMode() for the meaning of the value.
|
||||||
|
* \returns true on success or false on failure; call SDL_GetError() for more
|
||||||
|
* information.
|
||||||
|
*
|
||||||
|
* \threadsafety This function should only be called on the main thread.
|
||||||
|
*
|
||||||
|
* \since This function is available since SDL 3.4.0.
|
||||||
|
*
|
||||||
|
* \sa SDL_SetDefaultTextureScaleMode
|
||||||
|
*/
|
||||||
|
extern SDL_DECLSPEC bool SDLCALL SDL_GetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode *scale_mode);
|
||||||
|
|
||||||
/* Ends C function definitions when using C++ */
|
/* Ends C function definitions when using C++ */
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -1081,6 +1081,8 @@ SDL_Renderer *SDL_CreateRendererWithProperties(SDL_PropertiesID props)
|
||||||
renderer->line_method = SDL_GetRenderLineMethod();
|
renderer->line_method = SDL_GetRenderLineMethod();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderer->scale_mode = SDL_SCALEMODE_LINEAR;
|
||||||
|
|
||||||
renderer->SDR_white_point = 1.0f;
|
renderer->SDR_white_point = 1.0f;
|
||||||
renderer->HDR_headroom = 1.0f;
|
renderer->HDR_headroom = 1.0f;
|
||||||
renderer->desired_color_scale = 1.0f;
|
renderer->desired_color_scale = 1.0f;
|
||||||
|
@ -1392,7 +1394,7 @@ SDL_Texture *SDL_CreateTextureWithProperties(SDL_Renderer *renderer, SDL_Propert
|
||||||
texture->color.b = 1.0f;
|
texture->color.b = 1.0f;
|
||||||
texture->color.a = 1.0f;
|
texture->color.a = 1.0f;
|
||||||
texture->blendMode = SDL_ISPIXELFORMAT_ALPHA(format) ? SDL_BLENDMODE_BLEND : SDL_BLENDMODE_NONE;
|
texture->blendMode = SDL_ISPIXELFORMAT_ALPHA(format) ? SDL_BLENDMODE_BLEND : SDL_BLENDMODE_NONE;
|
||||||
texture->scaleMode = SDL_SCALEMODE_LINEAR;
|
texture->scaleMode = renderer->scale_mode;
|
||||||
texture->view.pixel_w = w;
|
texture->view.pixel_w = w;
|
||||||
texture->view.pixel_h = h;
|
texture->view.pixel_h = h;
|
||||||
texture->view.viewport.w = -1;
|
texture->view.viewport.w = -1;
|
||||||
|
@ -5674,3 +5676,26 @@ bool SDL_RenderDebugTextFormat(SDL_Renderer *renderer, float x, float y, SDL_PRI
|
||||||
SDL_free(str);
|
SDL_free(str);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SDL_SetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode scale_mode)
|
||||||
|
{
|
||||||
|
CHECK_RENDERER_MAGIC(renderer, false);
|
||||||
|
|
||||||
|
renderer->scale_mode = scale_mode;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SDL_GetDefaultTextureScaleMode(SDL_Renderer *renderer, SDL_ScaleMode *scale_mode)
|
||||||
|
{
|
||||||
|
if (scale_mode) {
|
||||||
|
*scale_mode = SDL_SCALEMODE_LINEAR;
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK_RENDERER_MAGIC(renderer, false);
|
||||||
|
|
||||||
|
if (scale_mode) {
|
||||||
|
*scale_mode = renderer->scale_mode;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -264,6 +264,9 @@ struct SDL_Renderer
|
||||||
// The method of drawing lines
|
// The method of drawing lines
|
||||||
SDL_RenderLineMethod line_method;
|
SDL_RenderLineMethod line_method;
|
||||||
|
|
||||||
|
// Default scale mode for textures created with this renderer
|
||||||
|
SDL_ScaleMode scale_mode;
|
||||||
|
|
||||||
// The list of textures
|
// The list of textures
|
||||||
SDL_Texture *textures;
|
SDL_Texture *textures;
|
||||||
SDL_Texture *target;
|
SDL_Texture *target;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue