Lines Matching refs:surface
63 SDL_Surface *surface; in SDL_CreateRGBSurfaceWithFormat() local
76 surface = (SDL_Surface *) SDL_calloc(1, sizeof(*surface)); in SDL_CreateRGBSurfaceWithFormat()
77 if (surface == NULL) { in SDL_CreateRGBSurfaceWithFormat()
82 surface->format = SDL_AllocFormat(format); in SDL_CreateRGBSurfaceWithFormat()
83 if (!surface->format) { in SDL_CreateRGBSurfaceWithFormat()
84 SDL_FreeSurface(surface); in SDL_CreateRGBSurfaceWithFormat()
87 surface->w = width; in SDL_CreateRGBSurfaceWithFormat()
88 surface->h = height; in SDL_CreateRGBSurfaceWithFormat()
89 surface->pitch = (int)pitch; in SDL_CreateRGBSurfaceWithFormat()
90 SDL_SetClipRect(surface, NULL); in SDL_CreateRGBSurfaceWithFormat()
92 if (SDL_ISPIXELFORMAT_INDEXED(surface->format->format)) { in SDL_CreateRGBSurfaceWithFormat()
94 SDL_AllocPalette((1 << surface->format->BitsPerPixel)); in SDL_CreateRGBSurfaceWithFormat()
96 SDL_FreeSurface(surface); in SDL_CreateRGBSurfaceWithFormat()
108 SDL_SetSurfacePalette(surface, palette); in SDL_CreateRGBSurfaceWithFormat()
113 if (surface->w && surface->h) { in SDL_CreateRGBSurfaceWithFormat()
115 Sint64 size = ((Sint64)surface->h * surface->pitch); in SDL_CreateRGBSurfaceWithFormat()
118 SDL_FreeSurface(surface); in SDL_CreateRGBSurfaceWithFormat()
123 surface->pixels = SDL_SIMDAlloc((size_t)size); in SDL_CreateRGBSurfaceWithFormat()
124 if (!surface->pixels) { in SDL_CreateRGBSurfaceWithFormat()
125 SDL_FreeSurface(surface); in SDL_CreateRGBSurfaceWithFormat()
129 surface->flags |= SDL_SIMD_ALIGNED; in SDL_CreateRGBSurfaceWithFormat()
131 SDL_memset(surface->pixels, 0, surface->h * surface->pitch); in SDL_CreateRGBSurfaceWithFormat()
135 surface->map = SDL_AllocBlitMap(); in SDL_CreateRGBSurfaceWithFormat()
136 if (!surface->map) { in SDL_CreateRGBSurfaceWithFormat()
137 SDL_FreeSurface(surface); in SDL_CreateRGBSurfaceWithFormat()
142 if (surface->format->Amask) { in SDL_CreateRGBSurfaceWithFormat()
143 SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND); in SDL_CreateRGBSurfaceWithFormat()
147 surface->refcount = 1; in SDL_CreateRGBSurfaceWithFormat()
148 return surface; in SDL_CreateRGBSurfaceWithFormat()
180 SDL_Surface *surface; in SDL_CreateRGBSurfaceFrom() local
182 surface = SDL_CreateRGBSurface(0, 0, 0, depth, Rmask, Gmask, Bmask, Amask); in SDL_CreateRGBSurfaceFrom()
183 if (surface != NULL) { in SDL_CreateRGBSurfaceFrom()
184 surface->flags |= SDL_PREALLOC; in SDL_CreateRGBSurfaceFrom()
185 surface->pixels = pixels; in SDL_CreateRGBSurfaceFrom()
186 surface->w = width; in SDL_CreateRGBSurfaceFrom()
187 surface->h = height; in SDL_CreateRGBSurfaceFrom()
188 surface->pitch = pitch; in SDL_CreateRGBSurfaceFrom()
189 SDL_SetClipRect(surface, NULL); in SDL_CreateRGBSurfaceFrom()
191 return surface; in SDL_CreateRGBSurfaceFrom()
203 SDL_Surface *surface; in SDL_CreateRGBSurfaceWithFormatFrom() local
205 surface = SDL_CreateRGBSurfaceWithFormat(0, 0, 0, depth, format); in SDL_CreateRGBSurfaceWithFormatFrom()
206 if (surface != NULL) { in SDL_CreateRGBSurfaceWithFormatFrom()
207 surface->flags |= SDL_PREALLOC; in SDL_CreateRGBSurfaceWithFormatFrom()
208 surface->pixels = pixels; in SDL_CreateRGBSurfaceWithFormatFrom()
209 surface->w = width; in SDL_CreateRGBSurfaceWithFormatFrom()
210 surface->h = height; in SDL_CreateRGBSurfaceWithFormatFrom()
211 surface->pitch = pitch; in SDL_CreateRGBSurfaceWithFormatFrom()
212 SDL_SetClipRect(surface, NULL); in SDL_CreateRGBSurfaceWithFormatFrom()
214 return surface; in SDL_CreateRGBSurfaceWithFormatFrom()
218 SDL_SetSurfacePalette(SDL_Surface * surface, SDL_Palette * palette) in SDL_SetSurfacePalette() argument
220 if (!surface) { in SDL_SetSurfacePalette()
223 if (SDL_SetPixelFormatPalette(surface->format, palette) < 0) { in SDL_SetSurfacePalette()
226 SDL_InvalidateMap(surface->map); in SDL_SetSurfacePalette()
232 SDL_SetSurfaceRLE(SDL_Surface * surface, int flag) in SDL_SetSurfaceRLE() argument
236 if (!surface) { in SDL_SetSurfaceRLE()
240 flags = surface->map->info.flags; in SDL_SetSurfaceRLE()
242 surface->map->info.flags |= SDL_COPY_RLE_DESIRED; in SDL_SetSurfaceRLE()
244 surface->map->info.flags &= ~SDL_COPY_RLE_DESIRED; in SDL_SetSurfaceRLE()
246 if (surface->map->info.flags != flags) { in SDL_SetSurfaceRLE()
247 SDL_InvalidateMap(surface->map); in SDL_SetSurfaceRLE()
253 SDL_SetColorKey(SDL_Surface * surface, int flag, Uint32 key) in SDL_SetColorKey() argument
257 if (!surface) { in SDL_SetColorKey()
261 if (surface->format->palette && key >= ((Uint32) surface->format->palette->ncolors)) { in SDL_SetColorKey()
266 SDL_SetSurfaceRLE(surface, 1); in SDL_SetColorKey()
269 flags = surface->map->info.flags; in SDL_SetColorKey()
271 surface->map->info.flags |= SDL_COPY_COLORKEY; in SDL_SetColorKey()
272 surface->map->info.colorkey = key; in SDL_SetColorKey()
274 surface->map->info.flags &= ~SDL_COPY_COLORKEY; in SDL_SetColorKey()
276 if (surface->map->info.flags != flags) { in SDL_SetColorKey()
277 SDL_InvalidateMap(surface->map); in SDL_SetColorKey()
284 SDL_HasColorKey(SDL_Surface * surface) in SDL_HasColorKey() argument
286 if (!surface) { in SDL_HasColorKey()
290 if (!(surface->map->info.flags & SDL_COPY_COLORKEY)) { in SDL_HasColorKey()
298 SDL_GetColorKey(SDL_Surface * surface, Uint32 * key) in SDL_GetColorKey() argument
300 if (!surface) { in SDL_GetColorKey()
304 if (!(surface->map->info.flags & SDL_COPY_COLORKEY)) { in SDL_GetColorKey()
309 *key = surface->map->info.colorkey; in SDL_GetColorKey()
316 SDL_ConvertColorkeyToAlpha(SDL_Surface * surface, SDL_bool ignore_alpha) in SDL_ConvertColorkeyToAlpha() argument
320 if (!surface) { in SDL_ConvertColorkeyToAlpha()
324 if (!(surface->map->info.flags & SDL_COPY_COLORKEY) || in SDL_ConvertColorkeyToAlpha()
325 !surface->format->Amask) { in SDL_ConvertColorkeyToAlpha()
329 SDL_LockSurface(surface); in SDL_ConvertColorkeyToAlpha()
331 switch (surface->format->BytesPerPixel) { in SDL_ConvertColorkeyToAlpha()
335 Uint16 ckey = (Uint16) surface->map->info.colorkey; in SDL_ConvertColorkeyToAlpha()
336 Uint16 mask = (Uint16) (~surface->format->Amask); in SDL_ConvertColorkeyToAlpha()
341 row = (Uint16 *) surface->pixels; in SDL_ConvertColorkeyToAlpha()
342 for (y = surface->h; y--;) { in SDL_ConvertColorkeyToAlpha()
344 for (x = surface->w; x--;) { in SDL_ConvertColorkeyToAlpha()
350 row += surface->pitch / 2; in SDL_ConvertColorkeyToAlpha()
353 row = (Uint16 *) surface->pixels; in SDL_ConvertColorkeyToAlpha()
354 for (y = surface->h; y--;) { in SDL_ConvertColorkeyToAlpha()
356 for (x = surface->w; x--;) { in SDL_ConvertColorkeyToAlpha()
362 row += surface->pitch / 2; in SDL_ConvertColorkeyToAlpha()
373 Uint32 ckey = surface->map->info.colorkey; in SDL_ConvertColorkeyToAlpha()
374 Uint32 mask = ~surface->format->Amask; in SDL_ConvertColorkeyToAlpha()
379 row = (Uint32 *) surface->pixels; in SDL_ConvertColorkeyToAlpha()
380 for (y = surface->h; y--;) { in SDL_ConvertColorkeyToAlpha()
382 for (x = surface->w; x--;) { in SDL_ConvertColorkeyToAlpha()
388 row += surface->pitch / 4; in SDL_ConvertColorkeyToAlpha()
391 row = (Uint32 *) surface->pixels; in SDL_ConvertColorkeyToAlpha()
392 for (y = surface->h; y--;) { in SDL_ConvertColorkeyToAlpha()
394 for (x = surface->w; x--;) { in SDL_ConvertColorkeyToAlpha()
400 row += surface->pitch / 4; in SDL_ConvertColorkeyToAlpha()
407 SDL_UnlockSurface(surface); in SDL_ConvertColorkeyToAlpha()
409 SDL_SetColorKey(surface, 0, 0); in SDL_ConvertColorkeyToAlpha()
410 SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND); in SDL_ConvertColorkeyToAlpha()
414 SDL_SetSurfaceColorMod(SDL_Surface * surface, Uint8 r, Uint8 g, Uint8 b) in SDL_SetSurfaceColorMod() argument
418 if (!surface) { in SDL_SetSurfaceColorMod()
422 surface->map->info.r = r; in SDL_SetSurfaceColorMod()
423 surface->map->info.g = g; in SDL_SetSurfaceColorMod()
424 surface->map->info.b = b; in SDL_SetSurfaceColorMod()
426 flags = surface->map->info.flags; in SDL_SetSurfaceColorMod()
428 surface->map->info.flags |= SDL_COPY_MODULATE_COLOR; in SDL_SetSurfaceColorMod()
430 surface->map->info.flags &= ~SDL_COPY_MODULATE_COLOR; in SDL_SetSurfaceColorMod()
432 if (surface->map->info.flags != flags) { in SDL_SetSurfaceColorMod()
433 SDL_InvalidateMap(surface->map); in SDL_SetSurfaceColorMod()
440 SDL_GetSurfaceColorMod(SDL_Surface * surface, Uint8 * r, Uint8 * g, Uint8 * b) in SDL_GetSurfaceColorMod() argument
442 if (!surface) { in SDL_GetSurfaceColorMod()
447 *r = surface->map->info.r; in SDL_GetSurfaceColorMod()
450 *g = surface->map->info.g; in SDL_GetSurfaceColorMod()
453 *b = surface->map->info.b; in SDL_GetSurfaceColorMod()
459 SDL_SetSurfaceAlphaMod(SDL_Surface * surface, Uint8 alpha) in SDL_SetSurfaceAlphaMod() argument
463 if (!surface) { in SDL_SetSurfaceAlphaMod()
467 surface->map->info.a = alpha; in SDL_SetSurfaceAlphaMod()
469 flags = surface->map->info.flags; in SDL_SetSurfaceAlphaMod()
471 surface->map->info.flags |= SDL_COPY_MODULATE_ALPHA; in SDL_SetSurfaceAlphaMod()
473 surface->map->info.flags &= ~SDL_COPY_MODULATE_ALPHA; in SDL_SetSurfaceAlphaMod()
475 if (surface->map->info.flags != flags) { in SDL_SetSurfaceAlphaMod()
476 SDL_InvalidateMap(surface->map); in SDL_SetSurfaceAlphaMod()
482 SDL_GetSurfaceAlphaMod(SDL_Surface * surface, Uint8 * alpha) in SDL_GetSurfaceAlphaMod() argument
484 if (!surface) { in SDL_GetSurfaceAlphaMod()
489 *alpha = surface->map->info.a; in SDL_GetSurfaceAlphaMod()
495 SDL_SetSurfaceBlendMode(SDL_Surface * surface, SDL_BlendMode blendMode) in SDL_SetSurfaceBlendMode() argument
499 if (!surface) { in SDL_SetSurfaceBlendMode()
504 flags = surface->map->info.flags; in SDL_SetSurfaceBlendMode()
505 surface->map->info.flags &= in SDL_SetSurfaceBlendMode()
511 surface->map->info.flags |= SDL_COPY_BLEND; in SDL_SetSurfaceBlendMode()
514 surface->map->info.flags |= SDL_COPY_ADD; in SDL_SetSurfaceBlendMode()
517 surface->map->info.flags |= SDL_COPY_MOD; in SDL_SetSurfaceBlendMode()
520 surface->map->info.flags |= SDL_COPY_MUL; in SDL_SetSurfaceBlendMode()
527 if (surface->map->info.flags != flags) { in SDL_SetSurfaceBlendMode()
528 SDL_InvalidateMap(surface->map); in SDL_SetSurfaceBlendMode()
535 SDL_GetSurfaceBlendMode(SDL_Surface * surface, SDL_BlendMode *blendMode) in SDL_GetSurfaceBlendMode() argument
537 if (!surface) { in SDL_GetSurfaceBlendMode()
545 switch (surface->map-> in SDL_GetSurfaceBlendMode()
567 SDL_SetClipRect(SDL_Surface * surface, const SDL_Rect * rect) in SDL_SetClipRect() argument
572 if (!surface) { in SDL_SetClipRect()
579 full_rect.w = surface->w; in SDL_SetClipRect()
580 full_rect.h = surface->h; in SDL_SetClipRect()
584 surface->clip_rect = full_rect; in SDL_SetClipRect()
587 return SDL_IntersectRect(rect, &full_rect, &surface->clip_rect); in SDL_SetClipRect()
591 SDL_GetClipRect(SDL_Surface * surface, SDL_Rect * rect) in SDL_GetClipRect() argument
593 if (surface && rect) { in SDL_GetClipRect()
594 *rect = surface->clip_rect; in SDL_GetClipRect()
913 SDL_LockSurface(SDL_Surface * surface) in SDL_LockSurface() argument
915 if (!surface->locked) { in SDL_LockSurface()
918 if (surface->flags & SDL_RLEACCEL) { in SDL_LockSurface()
919 SDL_UnRLESurface(surface, 1); in SDL_LockSurface()
920 surface->flags |= SDL_RLEACCEL; /* save accel'd state */ in SDL_LockSurface()
926 ++surface->locked; in SDL_LockSurface()
936 SDL_UnlockSurface(SDL_Surface * surface) in SDL_UnlockSurface() argument
939 if (!surface->locked || (--surface->locked > 0)) { in SDL_UnlockSurface()
945 if ((surface->flags & SDL_RLEACCEL) == SDL_RLEACCEL) { in SDL_UnlockSurface()
946 surface->flags &= ~SDL_RLEACCEL; /* stop lying */ in SDL_UnlockSurface()
947 SDL_RLESurface(surface); in SDL_UnlockSurface()
956 SDL_DuplicateSurface(SDL_Surface * surface) in SDL_DuplicateSurface() argument
958 return SDL_ConvertSurface(surface, surface->format, surface->flags); in SDL_DuplicateSurface()
965 SDL_ConvertSurface(SDL_Surface * surface, const SDL_PixelFormat * format, in SDL_ConvertSurface() argument
978 if (!surface) { in SDL_ConvertSurface()
1003 convert = SDL_CreateRGBSurface(flags, surface->w, surface->h, in SDL_ConvertSurface()
1020 copy_flags = surface->map->info.flags; in SDL_ConvertSurface()
1021 copy_color.r = surface->map->info.r; in SDL_ConvertSurface()
1022 copy_color.g = surface->map->info.g; in SDL_ConvertSurface()
1023 copy_color.b = surface->map->info.b; in SDL_ConvertSurface()
1024 copy_color.a = surface->map->info.a; in SDL_ConvertSurface()
1025 surface->map->info.r = 0xFF; in SDL_ConvertSurface()
1026 surface->map->info.g = 0xFF; in SDL_ConvertSurface()
1027 surface->map->info.b = 0xFF; in SDL_ConvertSurface()
1028 surface->map->info.a = 0xFF; in SDL_ConvertSurface()
1029 surface->map->info.flags = 0; in SDL_ConvertSurface()
1030 SDL_InvalidateMap(surface->map); in SDL_ConvertSurface()
1035 bounds.w = surface->w; in SDL_ConvertSurface()
1036 bounds.h = surface->h; in SDL_ConvertSurface()
1041 if (surface->format->palette && format->Amask) { in SDL_ConvertSurface()
1045 SDL_DetectPalette(surface->format->palette, &is_opaque, &has_alpha_channel); in SDL_ConvertSurface()
1058 palette_saved_alpha = SDL_stack_alloc(Uint8, surface->format->palette->ncolors); in SDL_ConvertSurface()
1059 for (i = 0; i < surface->format->palette->ncolors; i++) { in SDL_ConvertSurface()
1060 palette_saved_alpha[i] = surface->format->palette->colors[i].a; in SDL_ConvertSurface()
1061 surface->format->palette->colors[i].a = SDL_ALPHA_OPAQUE; in SDL_ConvertSurface()
1068 if (surface->format->palette && !format->palette) { in SDL_ConvertSurface()
1071 palette_ck_value = surface->format->palette->colors[surface->map->info.colorkey].a; in SDL_ConvertSurface()
1072 surface->format->palette->colors[surface->map->info.colorkey].a = SDL_ALPHA_TRANSPARENT; in SDL_ConvertSurface()
1076 ret = SDL_LowerBlit(surface, &bounds, convert, &bounds); in SDL_ConvertSurface()
1080 surface->format->palette->colors[surface->map->info.colorkey].a = palette_ck_value; in SDL_ConvertSurface()
1086 for (i = 0; i < surface->format->palette->ncolors; i++) { in SDL_ConvertSurface()
1087 surface->format->palette->colors[i].a = palette_saved_alpha[i]; in SDL_ConvertSurface()
1102 surface->map->info.r = copy_color.r; in SDL_ConvertSurface()
1103 surface->map->info.g = copy_color.g; in SDL_ConvertSurface()
1104 surface->map->info.b = copy_color.b; in SDL_ConvertSurface()
1105 surface->map->info.a = copy_color.a; in SDL_ConvertSurface()
1106 surface->map->info.flags = copy_flags; in SDL_ConvertSurface()
1107 SDL_InvalidateMap(surface->map); in SDL_ConvertSurface()
1119 if (surface->format->palette) { in SDL_ConvertSurface()
1121 surface->format->palette->ncolors <= format->palette->ncolors && in SDL_ConvertSurface()
1122 (SDL_memcmp(surface->format->palette->colors, format->palette->colors, in SDL_ConvertSurface()
1123 surface->format->palette->ncolors * sizeof(SDL_Color)) == 0)) { in SDL_ConvertSurface()
1125 SDL_SetColorKey(convert, 1, surface->map->info.colorkey); in SDL_ConvertSurface()
1148 surface->format->BitsPerPixel, surface->format->Rmask, in SDL_ConvertSurface()
1149 surface->format->Gmask, surface->format->Bmask, in SDL_ConvertSurface()
1150 surface->format->Amask); in SDL_ConvertSurface()
1153 if (surface->format->palette) { in SDL_ConvertSurface()
1154 SDL_SetSurfacePalette(tmp, surface->format->palette); in SDL_ConvertSurface()
1157 SDL_FillRect(tmp, NULL, surface->map->info.colorkey); in SDL_ConvertSurface()
1179 SDL_SetClipRect(convert, &surface->clip_rect); in SDL_ConvertSurface()
1183 if ((surface->format->Amask && format->Amask) || in SDL_ConvertSurface()
1197 SDL_ConvertSurfaceFormat(SDL_Surface * surface, Uint32 pixel_format, in SDL_ConvertSurfaceFormat() argument
1205 convert = SDL_ConvertSurface(surface, fmt, flags); in SDL_ConvertSurfaceFormat()
1216 void * pixels, int pitch, SDL_Surface * surface, in SDL_CreateSurfaceOnStack() argument
1227 SDL_zerop(surface); in SDL_CreateSurfaceOnStack()
1228 surface->flags = SDL_PREALLOC; in SDL_CreateSurfaceOnStack()
1229 surface->format = format; in SDL_CreateSurfaceOnStack()
1230 surface->pixels = pixels; in SDL_CreateSurfaceOnStack()
1231 surface->w = width; in SDL_CreateSurfaceOnStack()
1232 surface->h = height; in SDL_CreateSurfaceOnStack()
1233 surface->pitch = pitch; in SDL_CreateSurfaceOnStack()
1243 surface->map = blitmap; in SDL_CreateSurfaceOnStack()
1246 surface->refcount = 1; in SDL_CreateSurfaceOnStack()
1321 SDL_FreeSurface(SDL_Surface * surface) in SDL_FreeSurface() argument
1323 if (surface == NULL) { in SDL_FreeSurface()
1326 if (surface->flags & SDL_DONTFREE) { in SDL_FreeSurface()
1329 SDL_InvalidateMap(surface->map); in SDL_FreeSurface()
1331 if (--surface->refcount > 0) { in SDL_FreeSurface()
1334 while (surface->locked > 0) { in SDL_FreeSurface()
1335 SDL_UnlockSurface(surface); in SDL_FreeSurface()
1338 if (surface->flags & SDL_RLEACCEL) { in SDL_FreeSurface()
1339 SDL_UnRLESurface(surface, 0); in SDL_FreeSurface()
1342 if (surface->format) { in SDL_FreeSurface()
1343 SDL_SetSurfacePalette(surface, NULL); in SDL_FreeSurface()
1344 SDL_FreeFormat(surface->format); in SDL_FreeSurface()
1345 surface->format = NULL; in SDL_FreeSurface()
1347 if (surface->flags & SDL_PREALLOC) { in SDL_FreeSurface()
1349 } else if (surface->flags & SDL_SIMD_ALIGNED) { in SDL_FreeSurface()
1351 SDL_SIMDFree(surface->pixels); in SDL_FreeSurface()
1354 SDL_free(surface->pixels); in SDL_FreeSurface()
1356 if (surface->map) { in SDL_FreeSurface()
1357 SDL_FreeBlitMap(surface->map); in SDL_FreeSurface()
1359 SDL_free(surface); in SDL_FreeSurface()