Commit 00e7bc8b authored by Eli Gottlieb's avatar Eli Gottlieb

Replaced the model of treating a window's shape as a render target with...

Replaced the model of treating a window's shape as a render target with treating a window's shape as a surface passed into an SDL_SetWindowShape() function.  I'll send this off to Andreas and Sam and start coding.
parent 6cc179de
...@@ -74,26 +74,6 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,un ...@@ -74,26 +74,6 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,un
*/ */
extern DECLSPEC SDL_bool SDLCALL SDL_WindowIsShaped(const SDL_Window *window); extern DECLSPEC SDL_bool SDLCALL SDL_WindowIsShaped(const SDL_Window *window);
/**
* \brief Select the shape of a given window as a rendering target.
*
* \param window The window whose shape should become the current rendering target.
*
* \return 0 on success, -1 if something other than a valid shaped window is passed into \c window.
*
* The shape of the window given in \c window is selected as the new render target, and in the default mode (see
* SDL_WindowShapeParams) the alpha channel of that render target determines which pixels of the window are part of its
* visible shape and which are not according to a cutoff value. All normal SDL rendering functions can be used on it,
* and its own specific parameters can be examined and set with SDL_GetShapeParameters() and SDL_SetShapeParameters().
* The final shape will be computed and the actual appearance of the window changed only upon a call to
* SDL_RenderPresent().
*
* \sa SDL_GetShapeParameters
* \sa SDL_SetShapeParameters
* \sa SDL_RenderPresent
*/
extern DECLSPEC int SDLCALL SDL_SelectShapeRenderer(const SDL_Window *window);
/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */ /** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */
typedef enum {ShapeModeDefault, ShapeModeBinarizeAlpha} WindowShapeMode; typedef enum {ShapeModeDefault, ShapeModeBinarizeAlpha} WindowShapeMode;
/** \brief A union containing parameters for shaped windows. */ /** \brief A union containing parameters for shaped windows. */
...@@ -111,18 +91,19 @@ typedef struct SDL_WindowShapeMode { ...@@ -111,18 +91,19 @@ typedef struct SDL_WindowShapeMode {
} SDL_WindowShapeMode; } SDL_WindowShapeMode;
/** /**
* \brief Set the shape parameters of a shaped window. * \brief Set the shape and parameters of a shaped window.
* *
* \param window The shaped window whose parameters should be set. * \param window The shaped window whose parameters should be set.
* \param shapeMode The parameters to set for the shaped window. * \param shape A surface encoding the desired shape for the window as a bitmap mask.
* \param parameters The parameters to set for the shaped window.
* *
* \return 0 on success, -1 on invalid parameters in the shapeMode argument, or -2 if the SDL_Window given is not a * \return 0 on success, -1 on invalid an invalid shape argument, or -2 if the SDL_Window* given does not reference
* shaped window. * a valid shaped window.
* *
* \sa SDL_WindowShapeMode * \sa SDL_WindowShapeMode
* \sa SDL_GetShapeParameters * \sa SDL_GetShapeParameters.
*/ */
extern DECLSPEC int SDLCALL SDL_SetShapeParameters(SDL_Window *window,SDL_WindowShapeMode shapeMode); extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode parameters);
/** /**
* \brief Set the shape parameters of a shaped window. * \brief Set the shape parameters of a shaped window.
......
...@@ -34,13 +34,11 @@ SDL_bool SDL_WindowIsShaped(const SDL_Window *window) { ...@@ -34,13 +34,11 @@ SDL_bool SDL_WindowIsShaped(const SDL_Window *window) {
return SDL_FALSE; return SDL_FALSE;
} }
int SDL_SelectShapeRenderer(const SDL_Window *window) { int SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode parameters) {
return -1;
}
int SDL_SetShapeParameters(SDL_Window *window,SDL_WindowShapeMode shapeMode) {
if(window == NULL || !SDL_WindowIsShaped(window)) if(window == NULL || !SDL_WindowIsShaped(window))
return -2; return -2;
if(shape == NULL)
return -1;
return -3; return -3;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment