include/SDL_shape.h
author Eli Gottlieb <eligottlieb@gmail.com>
Thu, 10 Jun 2010 17:37:19 -0400
changeset 4778 9838d3525a1b
parent 4776 29dcad9c58b3
child 4779 bb179250fcb3
permissions -rw-r--r--
Stubbed out the new get/set parameter functions, added the start of the enum, union, and struct for those parameters themselves, and added doxygen comments throughout the SDL_shape.h header.
     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 /**
    41  *  \brief Create a shaped window with the specified position, dimensions, and flags.
    42  *  
    43  *  \param title The title of the window, in UTF-8 encoding.
    44  *  \param x     The x position of the window, ::SDL_WINDOWPOS_CENTERED, or 
    45  *               ::SDL_WINDOWPOS_UNDEFINED.
    46  *  \param y     The y position of the window, ::SDL_WINDOWPOS_CENTERED, or 
    47  *               ::SDL_WINDOWPOS_UNDEFINED.
    48  *  \param w     The width of the window.
    49  *  \param h     The height of the window.
    50  *  \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with any of the following: 
    51  *               ::SDL_WINDOW_OPENGL,     ::SDL_WINDOW_INPUT_GRABBED,
    52  *               ::SDL_WINDOW_SHOWN,      ::SDL_WINDOW_RESIZABLE,
    53  *               ::SDL_WINDOW_MAXIMIZED,  ::SDL_WINDOW_MINIMIZED,
    54  *		 ::SDL_WINDOW_BORDERLESS is always set, and ::SDL_WINDOW_FULLSCREEN is always unset.
    55  *  
    56  *  \return The id of the window created, or zero if window creation failed.
    57  *  
    58  *  \sa SDL_DestroyWindow()
    59  */
    60 extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags);
    61 
    62 /**
    63  * \brief Return whether the given window is a shaped window. 
    64  *
    65  * \param window The window to query for being shaped.
    66  *
    67  * \return SDL_TRUE if the window is a shaped window and SDL_FALSE otherwise.
    68  * \sa SDL_CreateShapedWindow
    69  */
    70 extern DECLSPEC SDL_bool SDLCALL SDL_WindowIsShaped(const SDL_Window *window);
    71 
    72 /**
    73  * \brief Select the shape of a given window as a rendering target.
    74  *
    75  * \param window The window whose shape should become the current rendering target.
    76  *
    77  * \return 0 on success, -1 if something other than a valid shaped window is passed into \c window.
    78  *
    79  * The shape of the window given in \c window is selected as the new render target, and in the default mode (see
    80  * SDL_WindowShapeParams) the alpha channel of that render target determines which pixels of the window are part of its
    81  * visible shape and which are not according to a cutoff value.  All normal SDL rendering functions can be used on it,
    82  * and its own specific parameters can be examined and set with SDL_GetShapeParameters() and SDL_SetShapeParameters().
    83  * The final shape will be computed and the actual appearance of the window changed only upon a call to
    84  * SDL_RenderPresent().
    85  *
    86  * \sa SDL_GetShapeParameters
    87  * \sa SDL_SetShapeParameters
    88  * \sa SDL_RenderPresent
    89  */
    90 extern DECLSPEC int SDLCALL SDL_SelectShapeRenderer(const SDL_Window *window);
    91 
    92 /** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */
    93 typedef enum {ShapeModeDefault, ShapeModeBinarizeAlpha} WindowShapeMode;
    94 /** \brief A union containing parameters for shaped windows. */
    95 typedef union {
    96 	/** \brief a cutoff alpha value for binarization of the window shape's alpha channel. */
    97 	Uint8 binarizationCutoff;
    98 } SDL_WindowShapeParams;
    99 
   100 /** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */
   101 typedef struct SDL_WindowShapeMode {
   102 	WindowShapeMode mode;
   103 	SDL_WindowShapeParams parameters;
   104 } SDL_WindowShapeMode;
   105 
   106 /**
   107  * \brief Set the shape parameters of a shaped window.
   108  *
   109  * \param window The shaped window whose parameters should be set.
   110  * \param shapeMode The parameters to set for the shaped window.
   111  *
   112  * \return 0 on success, -1 on invalid parameters in the shapeMode argument, or -2 if the SDL_Window given is not a
   113  *         shaped window.
   114  *
   115  * \sa SDL_WindowShapeMode
   116  * \sa SDL_GetShapeParameters
   117  */
   118 extern DECLSPEC int SDLCALL SDL_SetShapeParameters(SDL_Window *window,SDL_WindowShapeMode shapeMode);
   119 
   120 /**
   121  * \brief Set the shape parameters of a shaped window.
   122  *
   123  * \param window The shaped window whose parameters should be retrieved.
   124  * \param shapeMode An empty shape-parameters structure to fill.
   125  *
   126  * \return 0 on success, -1 on a null shapeMode, or -2 if the SDL_Window given is not a shaped window.
   127  *
   128  * \sa SDL_WindowShapeMode
   129  * \sa SDL_SetShapeParameters
   130  */
   131 extern DECLSPEC int SDLCALL SDL_GetShapeParameters(SDL_Window *window,SDL_WindowShapeMode *shapeMode);
   132 
   133 /* Ends C function definitions when using C++ */
   134 #ifdef __cplusplus
   135 /* *INDENT-OFF* */
   136 }
   137 /* *INDENT-ON* */
   138 #endif
   139 #include "close_code.h"
   140 
   141 #endif /* _SDL_shape_h */