Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
148 lines (129 loc) · 5.52 KB

SDL_shape.h

File metadata and controls

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