include/SDL_shape.h
author Eli Gottlieb <eligottlieb@gmail.com>
Sun, 18 Jul 2010 22:24:52 -0400
changeset 4801 506a9165491b
parent 4782 b6930aefd008
child 4807 c9eb95f29770
permissions -rw-r--r--
Added #define's for error codes returned from SDL shaped-window API.
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 2010 Eli Gottlieb
     4 
     5     This library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Lesser General Public
     7     License as published by the Free Software Foundation; either
     8     version 2.1 of the License, or (at your option) any later version.
     9 
    10     This library is distributed in the hope that it will be useful,
    11     but WITHOUT ANY WARRANTY; without even the implied warranty of
    12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    13     Lesser General Public License for more details.
    14 
    15     You should have received a copy of the GNU Lesser General Public
    16     License along with this library; if not, write to the Free Software
    17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    18 
    19     Eli Gottlieb
    20     eligottlieb@gmail.com
    21 */
    22 
    23 #ifndef _SDL_shape_h
    24 #define _SDL_shape_h
    25 
    26 #include "SDL_stdinc.h"
    27 #include "SDL_pixels.h"
    28 #include "SDL_rect.h"
    29 #include "SDL_surface.h"
    30 #include "SDL_video.h"
    31 
    32 #include "begin_code.h"
    33 /* Set up for C function definitions, even when using C++ */
    34 #ifdef __cplusplus
    35 /* *INDENT-OFF* */
    36 extern "C" {
    37 /* *INDENT-ON* */
    38 #endif
    39 
    40 /** \file SDL_shape.h
    41  *
    42  * Header file for the shaped window API.
    43  */
    44 
    45 #define SDL_NONSHAPEABLE_WINDOW -1
    46 #define SDL_INVALID_SHAPE_ARGUMENT -2
    47 #define SDL_WINDOW_LACKS_SHAPE -3
    48 
    49 /**
    50  *  \brief Create a window that can be shaped with the specified position, dimensions, and flags.
    51  *  
    52  *  \param title The title of the window, in UTF-8 encoding.
    53  *  \param x     The x position of the window, ::SDL_WINDOWPOS_CENTERED, or 
    54  *               ::SDL_WINDOWPOS_UNDEFINED.
    55  *  \param y     The y position of the window, ::SDL_WINDOWPOS_CENTERED, or 
    56  *               ::SDL_WINDOWPOS_UNDEFINED.
    57  *  \param w     The width of the window.
    58  *  \param h     The height of the window.
    59  *  \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with any of the following: 
    60  *               ::SDL_WINDOW_OPENGL,     ::SDL_WINDOW_INPUT_GRABBED,
    61  *               ::SDL_WINDOW_SHOWN,      ::SDL_WINDOW_RESIZABLE,
    62  *               ::SDL_WINDOW_MAXIMIZED,  ::SDL_WINDOW_MINIMIZED,
    63  *		 ::SDL_WINDOW_BORDERLESS is always set, and ::SDL_WINDOW_FULLSCREEN is always unset.
    64  *  
    65  *  \return The window created, or NULL if window creation failed.
    66  *  
    67  *  \sa SDL_DestroyWindow()
    68  */
    69 extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags);
    70 
    71 /**
    72  * \brief Return whether the given window is a shaped window. 
    73  *
    74  * \param window The window to query for being shaped.
    75  *
    76  * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if the window is unshaped or NULL.
    77  * \sa SDL_CreateShapedWindow
    78  */
    79 extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window);
    80 
    81 /** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */
    82 typedef enum {
    83 	/** \brief The default mode, a binarized alpha cutoff of 1. */
    84 	ShapeModeDefault,
    85 	/** \brief A binarized alpha cutoff with a given integer value. */
    86 	ShapeModeBinarizeAlpha
    87 } WindowShapeMode;
    88 /** \brief A union containing parameters for shaped windows. */
    89 typedef union {
    90 	/** \brief a cutoff alpha value for binarization of the window shape's alpha channel. */
    91 	Uint8 binarizationCutoff;
    92 } SDL_WindowShapeParams;
    93 
    94 /** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */
    95 typedef struct SDL_WindowShapeMode {
    96 	/** \brief The mode of these window-shape parameters. */
    97 	WindowShapeMode mode;
    98 	/** \brief Window-shape parameters. */
    99 	SDL_WindowShapeParams parameters;
   100 } SDL_WindowShapeMode;
   101 
   102 /**
   103  * \brief Set the shape and parameters of a shaped window.
   104  *
   105  * \param window The shaped window whose parameters should be set.
   106  * \param shape A surface encoding the desired shape for the window.
   107  * \param shapeMode The parameters to set for the shaped window.
   108  *
   109  * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on invalid an invalid shape argument, or SDL_NONSHAPEABLE_WINDOW
   110  *           if the SDL_Window* given does not reference a valid shaped window.
   111  *
   112  * \sa SDL_WindowShapeMode
   113  * \sa SDL_GetShapedWindowMode.
   114  */
   115 extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shapeMode);
   116 
   117 /**
   118  * \brief Get the shape parameters of a shaped window.
   119  *
   120  * \param window The shaped window whose parameters should be retrieved.
   121  * \param shapeMode An empty shape-mode structure to fill, or NULL to check whether the window has a shape.
   122  *
   123  * \return 0 if the window has a shape and, provided shapeMode was not NULL, shapeMode has been filled with the mode
   124  *           data, SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped window, or SDL_WINDOW_LACKS_SHAPE if
   125  *           the SDL_Window* given is a shapeable window currently lacking a shape.
   126  *
   127  * \sa SDL_WindowShapeMode
   128  * \sa SDL_SetWindowShape
   129  */
   130 extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shapeMode);
   131 
   132 /* Ends C function definitions when using C++ */
   133 #ifdef __cplusplus
   134 /* *INDENT-OFF* */
   135 }
   136 /* *INDENT-ON* */
   137 #endif
   138 #include "close_code.h"
   139 
   140 #endif /* _SDL_shape_h */