changeset 3103:7be21a78777e

Added SDL_GetColorKey()
author Sam Lantinga <slouken@libsdl.org>
date Fri, 03 Apr 2009 13:27:33 +0000
parents 73fe1f73a56f
children 86ea6c073d87
files include/SDL_surface.h src/video/SDL_surface.c
diffstat 2 files changed, 30 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/include/SDL_surface.h	Sat Mar 28 06:00:42 2009 +0000
+++ b/include/SDL_surface.h	Fri Apr 03 13:27:33 2009 +0000
@@ -199,6 +199,19 @@
 extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface,
                                             Uint32 flag, Uint32 key);
 
+/*
+ * \fn int SDL_GetColorKey(SDL_Surface *surface, Uint32 *key)
+ *
+ * \brief Sets the color key (transparent pixel) in a blittable surface.
+ *
+ * \param surface The surface to update
+ * \param key A pointer filled in with the transparent pixel in the native surface format
+ *
+ * \return 0 on success, or -1 if the surface is not valid or colorkey is not enabled.
+ */
+extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,
+                                            Uint32 * key);
+
 /**
  * \fn int SDL_SetSurfaceColorMod(SDL_Surface *surface, Uint8 r, Uint8 g, Uint8 b)
  *
--- a/src/video/SDL_surface.c	Sat Mar 28 06:00:42 2009 +0000
+++ b/src/video/SDL_surface.c	Fri Apr 03 13:27:33 2009 +0000
@@ -272,6 +272,23 @@
     return 0;
 }
 
+int
+SDL_GetColorKey(SDL_Surface * surface, Uint32 * key)
+{
+    if (!surface) {
+        return -1;
+    }
+
+    if (!(surface->map->info.flags & SDL_COPY_COLORKEY)) {
+        return -1;
+    }
+
+    if (key) {
+        *key = surface->map->info.colorkey;
+    }
+    return 0;
+}
+
 /* This is a fairly slow function to switch from colorkey to alpha */
 static void
 SDL_ConvertColorkeyToAlpha(SDL_Surface * surface)