Sfoglia il codice sorgente

Added SDL_FLIP_HORIZONTAL_AND_VERTICAL

Closes https://github.com/libsdl-org/SDL/pull/13788
Sam Lantinga 3 settimane fa
parent
commit
66ab91a314
2 ha cambiato i file con 16 aggiunte e 6 eliminazioni
  1. 4 3
      include/SDL3/SDL_surface.h
  2. 12 3
      src/video/SDL_surface.c

+ 4 - 3
include/SDL3/SDL_surface.h

@@ -96,9 +96,10 @@ typedef enum SDL_ScaleMode
  */
 typedef enum SDL_FlipMode
 {
-    SDL_FLIP_NONE,          /**< Do not flip */
-    SDL_FLIP_HORIZONTAL,    /**< flip horizontally */
-    SDL_FLIP_VERTICAL       /**< flip vertically */
+    SDL_FLIP_NONE,                      /**< Do not flip */
+    SDL_FLIP_HORIZONTAL,                /**< flip horizontally */
+    SDL_FLIP_VERTICAL,                  /**< flip vertically */
+    SDL_FLIP_HORIZONTAL_AND_VERTICAL,   /**< flip horizontally and vertically (not a diagonal flip) */
 } SDL_FlipMode;
 
 #ifndef SDL_INTERNAL

+ 12 - 3
src/video/SDL_surface.c

@@ -1874,14 +1874,23 @@ bool SDL_FlipSurface(SDL_Surface *surface, SDL_FlipMode flip)
         return true;
     }
 
+    bool result = true;
     switch (flip) {
     case SDL_FLIP_HORIZONTAL:
-        return SDL_FlipSurfaceHorizontal(surface);
+        result = SDL_FlipSurfaceHorizontal(surface);
+        break;
     case SDL_FLIP_VERTICAL:
-        return SDL_FlipSurfaceVertical(surface);
+        result = SDL_FlipSurfaceVertical(surface);
+        break;
+    case SDL_FLIP_HORIZONTAL_AND_VERTICAL:
+        result &= SDL_FlipSurfaceHorizontal(surface);
+        result &= SDL_FlipSurfaceVertical(surface);
+        break;
     default:
-        return SDL_InvalidParamError("flip");
+        result = SDL_InvalidParamError("flip");
+        break;
     }
+    return result;
 }
 
 SDL_Surface *SDL_ConvertSurfaceAndColorspace(SDL_Surface *surface, SDL_PixelFormat format, SDL_Palette *palette, SDL_Colorspace colorspace, SDL_PropertiesID props)