Atlas - SDL_sysrender.h
Home / ext / SDL2 / src / render Lines: 1 | Size: 7923 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)][FILE BEGIN]1/* 2 Simple DirectMedia Layer 3 Copyright (C) 1997-2018 Sam Lantinga <[email protected]> 4 5 This software is provided 'as-is', without any express or implied 6 warranty. In no event will the authors be held liable for any damages 7 arising from the use of this software. 8 9 Permission is granted to anyone to use this software for any purpose, 10 including commercial applications, and to alter it and redistribute it 11 freely, subject to the following restrictions: 12 13 1. The origin of this software must not be misrepresented; you must not 14 claim that you wrote the original software. If you use this software 15 in a product, an acknowledgment in the product documentation would be 16 appreciated but is not required. 17 2. Altered source versions must be plainly marked as such, and must not be 18 misrepresented as being the original software. 19 3. This notice may not be removed or altered from any source distribution. 20*/ 21#include "../SDL_internal.h" 22 23#ifndef SDL_sysrender_h_ 24#define SDL_sysrender_h_ 25 26#include "SDL_render.h" 27#include "SDL_events.h" 28#include "SDL_mutex.h" 29#include "SDL_yuv_sw_c.h" 30 31/* The SDL 2D rendering system */ 32 33typedef struct SDL_RenderDriver SDL_RenderDriver; 34 35typedef enum 36{ 37 SDL_ScaleModeNearest, 38 SDL_ScaleModeLinear, 39 SDL_ScaleModeBest 40} SDL_ScaleMode; 41 42typedef struct 43{ 44 float x; 45 float y; 46} SDL_FPoint; 47 48typedef struct 49{ 50 float x; 51 float y; 52 float w; 53 float h; 54} SDL_FRect; 55 56/* Define the SDL texture structure */ 57struct SDL_Texture 58{ 59 const void *magic; 60 Uint32 format; /**< The pixel format of the texture */ 61 int access; /**< SDL_TextureAccess */ 62 int w; /**< The width of the texture */ 63 int h; /**< The height of the texture */ 64 int modMode; /**< The texture modulation mode */ 65 SDL_BlendMode blendMode; /**< The texture blend mode */ 66 SDL_ScaleMode scaleMode; /**< The texture scale mode */ 67 Uint8 r, g, b, a; /**< Texture modulation values */ 68 69 SDL_Renderer *renderer; 70 71 /* Support for formats not supported directly by the renderer */ 72 SDL_Texture *native; 73 SDL_SW_YUVTexture *yuv; 74 void *pixels; 75 int pitch; 76 SDL_Rect locked_rect; 77 78 void *driverdata; /**< Driver specific texture representation */ 79 80 SDL_Texture *prev; 81 SDL_Texture *next; 82}; 83 84/* Define the SDL renderer structure */ 85struct SDL_Renderer 86{ 87 const void *magic; 88 89 void (*WindowEvent) (SDL_Renderer * renderer, const SDL_WindowEvent *event); 90 int (*GetOutputSize) (SDL_Renderer * renderer, int *w, int *h); 91 SDL_bool (*SupportsBlendMode)(SDL_Renderer * renderer, SDL_BlendMode blendMode); 92 int (*CreateTexture) (SDL_Renderer * renderer, SDL_Texture * texture); 93 int (*SetTextureColorMod) (SDL_Renderer * renderer, 94 SDL_Texture * texture); 95 int (*SetTextureAlphaMod) (SDL_Renderer * renderer, 96 SDL_Texture * texture); 97 int (*SetTextureBlendMode) (SDL_Renderer * renderer, 98 SDL_Texture * texture); 99 int (*UpdateTexture) (SDL_Renderer * renderer, SDL_Texture * texture, 100 const SDL_Rect * rect, const void *pixels, 101 int pitch); 102 int (*UpdateTextureYUV) (SDL_Renderer * renderer, SDL_Texture * texture, 103 const SDL_Rect * rect, 104 const Uint8 *Yplane, int Ypitch, 105 const Uint8 *Uplane, int Upitch, 106 const Uint8 *Vplane, int Vpitch); 107 int (*LockTexture) (SDL_Renderer * renderer, SDL_Texture * texture, 108 const SDL_Rect * rect, void **pixels, int *pitch); 109 void (*UnlockTexture) (SDL_Renderer * renderer, SDL_Texture * texture); 110 int (*SetRenderTarget) (SDL_Renderer * renderer, SDL_Texture * texture); 111 int (*UpdateViewport) (SDL_Renderer * renderer); 112 int (*UpdateClipRect) (SDL_Renderer * renderer); 113 int (*RenderClear) (SDL_Renderer * renderer); 114 int (*RenderDrawPoints) (SDL_Renderer * renderer, const SDL_FPoint * points, 115 int count); 116 int (*RenderDrawLines) (SDL_Renderer * renderer, const SDL_FPoint * points, 117 int count); 118 int (*RenderFillRects) (SDL_Renderer * renderer, const SDL_FRect * rects, 119 int count); 120 int (*RenderCopy) (SDL_Renderer * renderer, SDL_Texture * texture, 121 const SDL_Rect * srcrect, const SDL_FRect * dstrect); 122 int (*RenderCopyEx) (SDL_Renderer * renderer, SDL_Texture * texture, 123 const SDL_Rect * srcquad, const SDL_FRect * dstrect, 124 const double angle, const SDL_FPoint *center, const SDL_RendererFlip flip); 125 int (*RenderReadPixels) (SDL_Renderer * renderer, const SDL_Rect * rect, 126 Uint32 format, void * pixels, int pitch); 127 void (*RenderPresent) (SDL_Renderer * renderer); 128 void (*DestroyTexture) (SDL_Renderer * renderer, SDL_Texture * texture); 129 130 void (*DestroyRenderer) (SDL_Renderer * renderer); 131 132 int (*GL_BindTexture) (SDL_Renderer * renderer, SDL_Texture *texture, float *texw, float *texh); 133 int (*GL_UnbindTexture) (SDL_Renderer * renderer, SDL_Texture *texture); 134 135 void *(*GetMetalLayer) (SDL_Renderer * renderer); 136 void *(*GetMetalCommandEncoder) (SDL_Renderer * renderer); 137 138 /* The current renderer info */ 139 SDL_RendererInfo info; 140 141 /* The window associated with the renderer */ 142 SDL_Window *window; 143 SDL_bool hidden; 144 145 /* The logical resolution for rendering */ 146 int logical_w; 147 int logical_h; 148 int logical_w_backup; 149 int logical_h_backup; 150 151 /* Whether or not to force the viewport to even integer intervals */ 152 SDL_bool integer_scale; 153 154 /* The drawable area within the window */ 155 SDL_Rect viewport; 156 SDL_Rect viewport_backup; 157 158 /* The clip rectangle within the window */ 159 SDL_Rect clip_rect; 160 SDL_Rect clip_rect_backup; 161 162 /* Wether or not the clipping rectangle is used. */ 163 SDL_bool clipping_enabled; 164 SDL_bool clipping_enabled_backup; 165 166 /* The render output coordinate scale */ 167 SDL_FPoint scale; 168 SDL_FPoint scale_backup; 169 170 /* The pixel to point coordinate scale */ 171 SDL_FPoint dpi_scale; 172 173 /* The list of textures */ 174 SDL_Texture *textures; 175 SDL_Texture *target; 176 SDL_mutex *target_mutex; 177 178 Uint8 r, g, b, a; /**< Color for drawing operations values */ 179 SDL_BlendMode blendMode; /**< The drawing blend mode */ 180 181 void *driverdata; 182}; 183 184/* Define the SDL render driver structure */ 185struct SDL_RenderDriver 186{ 187 SDL_Renderer *(*CreateRenderer) (SDL_Window * window, Uint32 flags); 188 189 /* Info about the renderer capabilities */ 190 SDL_RendererInfo info; 191}; 192 193/* Not all of these are available in a given build. Use #ifdefs, etc. */ 194extern SDL_RenderDriver D3D_RenderDriver; 195extern SDL_RenderDriver D3D11_RenderDriver; 196extern SDL_RenderDriver GL_RenderDriver; 197extern SDL_RenderDriver GLES2_RenderDriver; 198extern SDL_RenderDriver GLES_RenderDriver; 199extern SDL_RenderDriver DirectFB_RenderDriver; 200extern SDL_RenderDriver METAL_RenderDriver; 201extern SDL_RenderDriver PSP_RenderDriver; 202extern SDL_RenderDriver SW_RenderDriver; 203 204/* Blend mode functions */ 205extern SDL_BlendFactor SDL_GetBlendModeSrcColorFactor(SDL_BlendMode blendMode); 206extern SDL_BlendFactor SDL_GetBlendModeDstColorFactor(SDL_BlendMode blendMode); 207extern SDL_BlendOperation SDL_GetBlendModeColorOperation(SDL_BlendMode blendMode); 208extern SDL_BlendFactor SDL_GetBlendModeSrcAlphaFactor(SDL_BlendMode blendMode); 209extern SDL_BlendFactor SDL_GetBlendModeDstAlphaFactor(SDL_BlendMode blendMode); 210extern SDL_BlendOperation SDL_GetBlendModeAlphaOperation(SDL_BlendMode blendMode); 211 212#endif /* SDL_sysrender_h_ */ 213 214/* vi: set ts=4 sw=4 expandtab: */ 215[FILE END](C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.