annotate src/mouse.c @ 3172:d1b367fc08bc tests-returncode

Use a return code of 1 when the tests fail.
author Thomas Kluyver <takowl@gmail.com>
date Wed, 09 Jan 2013 10:13:57 +0000
parents 0d661c00c1aa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
1 /*
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
2 pygame - Python Game Library
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
3 Copyright (C) 2000-2001 Pete Shinners
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
4
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
5 This library is free software; you can redistribute it and/or
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
6 modify it under the terms of the GNU Library General Public
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
7 License as published by the Free Software Foundation; either
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
8 version 2 of the License, or (at your option) any later version.
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
9
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
10 This library is distributed in the hope that it will be useful,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
13 Library General Public License for more details.
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
14
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
15 You should have received a copy of the GNU Library General Public
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
16 License along with this library; if not, write to the Free
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
18
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
19 Pete Shinners
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
20 pete@shinners.org
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
21 */
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
22
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
23 /*
29
ae12316035a9 default font added, all color args changed to RGBA
pygame
parents: 21
diff changeset
24 * pygame mouse module
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
25 */
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
26 #include "pygame.h"
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
27 #include "pgcompat.h"
1937
0d661c00c1aa Merged FreeType branch into trunk.
tanoku
parents: 1553
diff changeset
28 #include "doc/mouse_doc.h"
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
29
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
30 /* mouse module functions */
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
31 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
32 mouse_set_pos (PyObject* self, PyObject* args)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
33 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
34 int x, y;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
35
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
36 if (!TwoIntsFromObj (args, &x, &y))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
37 return RAISE (PyExc_TypeError, "invalid position argument for set_pos");
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
38
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
39 VIDEO_INIT_CHECK ();
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
40
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
41 SDL_WarpMouse ((Uint16)x, (Uint16)y);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
42 Py_RETURN_NONE;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
43 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
44
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
45 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
46 mouse_get_pos (PyObject* self)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
47 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
48 int x, y;
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
49
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
50 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
51 SDL_GetMouseState (&x, &y);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
52 return Py_BuildValue ("(ii)", x, y);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
53 }
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
54
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
55
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
56 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
57 mouse_get_rel (PyObject* self)
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
58 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
59 int x, y;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
60
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
61 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
62
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
63 SDL_GetRelativeMouseState (&x, &y);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
64 return Py_BuildValue ("(ii)", x, y);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
65 }
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
66
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
67 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
68 mouse_get_pressed (PyObject* self)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
69 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
70 PyObject* tuple;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
71 int state;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
72
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
73 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
74
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
75 state = SDL_GetMouseState (NULL, NULL);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
76 if (!(tuple = PyTuple_New (3)))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
77 return NULL;
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
78
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
79 PyTuple_SET_ITEM (tuple, 0, PyInt_FromLong ((state & SDL_BUTTON (1)) != 0));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
80 PyTuple_SET_ITEM (tuple, 1, PyInt_FromLong ((state & SDL_BUTTON (2)) != 0));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
81 PyTuple_SET_ITEM (tuple, 2, PyInt_FromLong ((state & SDL_BUTTON (3)) != 0));
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
82
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
83 return tuple;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
84 }
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
85
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
86 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
87 mouse_set_visible (PyObject* self, PyObject* args)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
88 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
89 int toggle;
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
90
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
91 if (!PyArg_ParseTuple (args, "i", &toggle))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
92 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
93 VIDEO_INIT_CHECK ();
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
94
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
95 toggle = SDL_ShowCursor (toggle);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
96 return PyInt_FromLong (toggle);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
97 }
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
98
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
99 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
100 mouse_get_focused (PyObject* self)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
101 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
102 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
103 return PyInt_FromLong ((SDL_GetAppState () & SDL_APPMOUSEFOCUS) != 0);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
104 }
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
105
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
106 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
107 mouse_set_cursor (PyObject* self, PyObject* args)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
108 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
109 int w, h, spotx, spoty;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
110 PyObject *xormask, *andmask;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
111 Uint8 *xordata=NULL, *anddata=NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
112 int xorsize, andsize, loop;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
113 int val;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
114 SDL_Cursor *lastcursor, *cursor = NULL;
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
115
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
116 if (!PyArg_ParseTuple (args, "(ii)(ii)OO", &w, &h, &spotx, &spoty,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
117 &xormask, &andmask))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
118 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
119
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
120 VIDEO_INIT_CHECK ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
121
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
122 if (!PySequence_Check (xormask) || !PySequence_Check (andmask))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
123 return RAISE (PyExc_TypeError, "xormask and andmask must be sequences");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
124
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
125 if (w % 8)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
126 return RAISE (PyExc_ValueError, "Cursor width must be divisible by 8.");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
127
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
128 xorsize = PySequence_Length (xormask);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
129 andsize = PySequence_Length (andmask);
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
130
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
131 if (xorsize != w * h / 8 || andsize != w * h / 8)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
132 return RAISE (PyExc_ValueError,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
133 "bitmasks must be sized width*height/8");
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
134
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
135 xordata = (Uint8*) malloc (xorsize);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
136 anddata = (Uint8*) malloc (andsize);
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
137
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
138 for (loop = 0; loop < xorsize; ++loop)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
139 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
140 if (!IntFromObjIndex (xormask, loop, &val))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
141 goto interror;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
142 xordata[loop] = (Uint8)val;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
143 if (!IntFromObjIndex (andmask, loop, &val))
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
144 goto interror;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
145 anddata[loop] = (Uint8)val;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
146 }
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
147
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
148 cursor = SDL_CreateCursor (xordata, anddata, w, h, spotx, spoty);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
149 free (xordata);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
150 free (anddata);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
151 xordata = NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
152 anddata = NULL;
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
153
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
154 if (!cursor)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
155 return RAISE (PyExc_SDLError, SDL_GetError ());
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
156
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
157 lastcursor = SDL_GetCursor ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
158 SDL_SetCursor (cursor);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
159 SDL_FreeCursor (lastcursor);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
160
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
161 Py_RETURN_NONE;
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
162
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
163 interror:
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
164 if (xordata)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
165 free (xordata);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
166 if (anddata)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
167 free (anddata);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
168 return RAISE (PyExc_TypeError, "Invalid number in mask array");
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
169 }
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
170
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
171 static PyObject*
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
172 mouse_get_cursor (PyObject* self)
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
173 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
174 SDL_Cursor *cursor = NULL;
1340
021525f5770f Memory leak patch from Campbell Barton
Nirav Patel <nrp@eclecti.cc>
parents: 1321
diff changeset
175 PyObject* xordata, *anddata;
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
176 int size, loop, w, h, spotx, spoty;
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
177
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
178 VIDEO_INIT_CHECK ();
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
179
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
180 cursor = SDL_GetCursor ();
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
181 if (!cursor)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
182 return RAISE (PyExc_SDLError, SDL_GetError ());
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
183
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
184 w = cursor->area.w;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
185 h = cursor->area.h;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
186 spotx = cursor->hot_x;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
187 spoty = cursor->hot_y;
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
188
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
189 size = cursor->area.w * cursor->area.h / 8;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
190 xordata = PyTuple_New(size);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
191 if (!xordata)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
192 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
193 anddata = PyTuple_New (size);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
194 if (!anddata)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
195 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
196 Py_DECREF (anddata);
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
197 return NULL;
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
198 }
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
199
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
200 for (loop = 0; loop < size; ++loop)
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
201 {
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
202 PyTuple_SET_ITEM (xordata, loop, PyInt_FromLong (cursor->data[loop]));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
203 PyTuple_SET_ITEM (anddata, loop, PyInt_FromLong (cursor->mask[loop]));
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
204 }
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
205
1340
021525f5770f Memory leak patch from Campbell Barton
Nirav Patel <nrp@eclecti.cc>
parents: 1321
diff changeset
206 return Py_BuildValue ("((ii)(ii)NN)", w, h, spotx, spoty, xordata, anddata);
21
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
207 }
fb3855c0fd7e lots of new stuff and a few breaking changes
pygame
parents: 10
diff changeset
208
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
209 static PyMethodDef _mouse_methods[] =
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
210 {
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
211 { "set_pos", mouse_set_pos, METH_VARARGS, DOC_PYGAMEMOUSESETPOS },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
212 { "get_pos", (PyCFunction) mouse_get_pos, METH_VARARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
213 DOC_PYGAMEMOUSEGETPOS },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
214 { "get_rel", (PyCFunction) mouse_get_rel, METH_VARARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
215 DOC_PYGAMEMOUSEGETREL },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
216 { "get_pressed", (PyCFunction) mouse_get_pressed, METH_VARARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
217 DOC_PYGAMEMOUSEGETPRESSED },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
218 { "set_visible", mouse_set_visible, METH_VARARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
219 DOC_PYGAMEMOUSESETVISIBLE },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
220 { "get_focused", (PyCFunction) mouse_get_focused, METH_VARARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
221 DOC_PYGAMEMOUSEGETFOCUSED },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
222 { "set_cursor", mouse_set_cursor, METH_VARARGS, DOC_PYGAMEMOUSESETCURSOR },
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
223 { "get_cursor", (PyCFunction) mouse_get_cursor, METH_VARARGS,
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
224 DOC_PYGAMEMOUSEGETCURSOR },
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
225
831
8749d7c235f8 Changes from Marcus for ref counting bug fixes and
Rene Dudfield <renesd@gmail.com>
parents: 798
diff changeset
226 { NULL, NULL, 0, NULL }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
227 };
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
228
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
229
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
230 MODINIT_DEFINE (mouse)
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
231 {
1499
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 1340
diff changeset
232 PyObject *module;
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 1340
diff changeset
233
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
234 #if PY3
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
235 static struct PyModuleDef _module = {
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
236 PyModuleDef_HEAD_INIT,
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
237 "mouse",
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
238 DOC_PYGAMEMOUSE,
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
239 -1,
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
240 _mouse_methods,
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
241 NULL, NULL, NULL, NULL
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
242 };
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
243 #endif
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
244
1499
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 1340
diff changeset
245 /* imported needed apis; Do this first so if there is an error
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 1340
diff changeset
246 the module is not loaded.
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 1340
diff changeset
247 */
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 1340
diff changeset
248 import_pygame_base ();
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 1340
diff changeset
249 if (PyErr_Occurred ()) {
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
250 MODINIT_ERROR;
1499
65e001d30448 bug fix - required modules not raising error when failing to import.
Lenard Lindstrom <len-l@telus.net>
parents: 1340
diff changeset
251 }
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
252
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
253 /* create the module */
1553
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
254 #if PY3
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
255 module = PyModule_Create (&_module);
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
256 #else
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
257 module = Py_InitModule3 ("mouse", _mouse_methods, DOC_PYGAMEMOUSE);
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
258 #endif
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
259 if (module == NULL) {
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
260 MODINIT_ERROR;
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
261 }
ebd545641c8b merging with python3 branch r 2048
Lenard Lindstrom <len-l@telus.net>
parents: 1499
diff changeset
262 MODINIT_RETURN (module);
7
99d32cc487b7 Initial revision
ahvezda
parents:
diff changeset
263 }