* Began supporting python3

* Code clean-up


git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/trunk@1021 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
remi-k 2009-02-25 10:40:38 +00:00
parent 60ebaa84d1
commit 79bf5c6252
31 changed files with 572 additions and 644 deletions

View File

@ -30,11 +30,7 @@ def main():
Texture = glGenTextures(1) # instead of glGenTextures(1, &Texture);
glBindTexture(GL_TEXTURE_2D, Texture)
# It is almost the same line there, except in C++, the last argument was Image.GetPixelsPtr().
# With GetPixelsPtr, PySFML returns a PyCObject: "an opaque value, useful for C extension
# modules who need to pass an opaque value (as a void* pointer) through Python code to other C code".
# However, gluBuild2DMipmaps' python version takes a string as last argument (which is normally a
# pointer to pixels data). This is why Image.GetPixelsPtr is replaced by Image.GetPixelsString.
# This function (that doesn't exist in C++ SFML) returns a string that contains the pixels data.
# In python, GetPixels simply returns a string.
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, Image.GetWidth(), Image.GetHeight(), GL_RGBA, GL_UNSIGNED_BYTE, Image.GetPixels())
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR)
@ -73,7 +69,7 @@ def main():
# Adjust the viewport when the window is resized
if Event.Type == sf.Event.Resized:
glViewport(0, 0, Event.Size.Width, Event.Size.Height);
glViewport(0, 0, Event.Size.Width, Event.Size.Height)
# Draw background
App.Draw(Background)
@ -81,7 +77,7 @@ def main():
# Clear depth buffer
glClear(GL_DEPTH_BUFFER_BIT)
# Apply some transf.ormations
# Apply some transformations
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glTranslatef(0, 0, -200)

View File

@ -24,24 +24,14 @@
#include "Clock.hpp"
typedef struct {
PyObject_HEAD
sf::Clock *obj;
} PySfClock;
static PyMemberDef PySfClock_members[] = {
{NULL} /* Sentinel */
};
#include "compat.hpp"
static void
PySfClock_dealloc(PySfClock *self)
{
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static PyObject *
@ -86,8 +76,7 @@ static PyMethodDef PySfClock_methods[] = {
};
PyTypeObject PySfClockType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Clock", /*tp_name*/
sizeof(PySfClock), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -95,7 +84,7 @@ PyTypeObject PySfClockType = {
0, /*tp_print*/
0, /*tp_getattr*/
0, /*tp_setattr*/
0, /*tp_compare*/
0, /*tp_compare (tp_reserved in py3k)*/
0, /*tp_repr*/
0, /*tp_as_number*/
0, /*tp_as_sequence*/
@ -115,7 +104,7 @@ PyTypeObject PySfClockType = {
0, /* tp_iter */
0, /* tp_iternext */
PySfClock_methods, /* tp_methods */
PySfClock_members, /* tp_members */
0, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */

View File

@ -25,11 +25,13 @@
#ifndef __PYCLOCK_HPP
#define __PYCLOCK_HPP
#include <Python.h>
#include <SFML/System/Clock.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
typedef struct {
PyObject_HEAD
sf::Clock *obj;
} PySfClock;
#endif

View File

@ -24,6 +24,9 @@
#include "Color.hpp"
#include "offsetof.hpp"
#include "compat.hpp"
static PyMemberDef PySfColor_members[] = {
{(char *)"r", T_UBYTE, offsetof(PySfColor, r), 0, (char *)"Red component."},
{(char *)"g", T_UBYTE, offsetof(PySfColor, g), 0, (char *)"Green component."},
@ -38,7 +41,7 @@ static void
PySfColor_dealloc(PySfColor *self)
{
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
void
@ -101,8 +104,7 @@ static PyMethodDef PySfColor_methods[] = {
PyTypeObject PySfColorType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Color", /*tp_name*/
sizeof(PySfColor), /*tp_basicsize*/
0, /*tp_itemsize*/

View File

@ -25,13 +25,10 @@
#ifndef __PYCOLOR_HPP
#define __PYCOLOR_HPP
#include <SFML/Graphics/Color.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
#include "offsetof.hpp"
#include <SFML/Graphics/Color.hpp>
typedef struct {

View File

@ -23,6 +23,13 @@
////////////////////////////////////////////////////////////
#include "Drawable.hpp"
#include "Color.hpp"
#include "compat.hpp"
extern PyTypeObject PySfColorType;
void CustomDrawable::Render (sf::RenderTarget& Target) const
{
@ -30,20 +37,11 @@ void CustomDrawable::Render (sf::RenderTarget& Target) const
PyObject_CallFunction(RenderFunction, (char *)"O", RenderWindow);
}
extern PyTypeObject PySfColorType;
static PyMemberDef PySfDrawable_members[] = {
{NULL} /* Sentinel */
};
static void
PySfDrawable_dealloc(PySfDrawable *self)
{
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static PyObject *
@ -261,8 +259,7 @@ Transform a point from local coordinates into global coordinates (ie it applies
};
PyTypeObject PySfDrawableType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Drawable", /*tp_name*/
sizeof(PySfDrawable), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -290,7 +287,7 @@ PyTypeObject PySfDrawableType = {
0, /* tp_iter */
0, /* tp_iternext */
PySfDrawable_methods, /* tp_methods */
PySfDrawable_members, /* tp_members */
0, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */

View File

@ -25,13 +25,10 @@
#ifndef __PYDRAWABLE_H
#define __PYDRAWABLE_H
#include <SFML/Graphics/Drawable.hpp>
#include <SFML/Graphics/RenderWindow.hpp>
#include <Python.h>
#include <structmember.h>
#include "Color.hpp"
#include <SFML/Graphics/Drawable.hpp>
#include "RenderWindow.hpp"

View File

@ -24,13 +24,16 @@
#include "Event.hpp"
#include <structmember.h>
#include "compat.hpp"
////////////////////////////////
// Text Events Parameters
////////////////////////////////
PyMemberDef PySfEventText_members[] = {
{(char *)"Unicode", T_USHORT, offsetof(PySfEventText, Unicode), RO, (char *)""},
{(char *)"Unicode", T_USHORT, offsetof(PySfEventText, Unicode), READONLY, (char *)""},
{NULL} /* Sentinel */
};
@ -57,12 +60,11 @@ PySfEventText_init(PySfEventText *self, PyObject *args, PyObject *kwds)
void
PySfEventText_dealloc(PySfEventText* self)
{
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
PyTypeObject PySfEventTextType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Event.Text", /*tp_name*/
sizeof(PySfEventText), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -136,20 +138,19 @@ PySfEventKey_init(PySfEventKey *self, PyObject *args, PyObject *kwds)
void
PySfEventKey_dealloc(PySfEventKey* self)
{
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
PyMemberDef PySfEventKey_members[] = {
{(char *)"Alt", T_OBJECT, offsetof(PySfEventKey, Alt), RO, (char *)""},
{(char *)"Control", T_OBJECT, offsetof(PySfEventKey, Control), RO, (char *)""},
{(char *)"Shift", T_OBJECT, offsetof(PySfEventKey, Shift), RO, (char *)""},
{(char *)"Code", T_UINT, offsetof(PySfEventKey, Code), RO, (char *)""},
{(char *)"Alt", T_OBJECT, offsetof(PySfEventKey, Alt), READONLY, (char *)""},
{(char *)"Control", T_OBJECT, offsetof(PySfEventKey, Control), READONLY, (char *)""},
{(char *)"Shift", T_OBJECT, offsetof(PySfEventKey, Shift), READONLY, (char *)""},
{(char *)"Code", T_UINT, offsetof(PySfEventKey, Code), READONLY, (char *)""},
{NULL} /* Sentinel */
};
PyTypeObject PySfEventKeyType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Event.Key", /*tp_name*/
sizeof(PySfEventKey), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -218,19 +219,18 @@ PySfEventMouseMove_init(PySfEventMouseMove *self, PyObject *args, PyObject *kwds
void
PySfEventMouseMove_dealloc(PySfEventMouseMove *self)
{
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
PyMemberDef PySfEventMouseMove_members[] = {
{(char *)"X", T_INT, offsetof(PySfEventMouseMove, X), RO, (char *)""},
{(char *)"Y", T_INT, offsetof(PySfEventMouseMove, Y), RO, (char *)""},
{(char *)"X", T_INT, offsetof(PySfEventMouseMove, X), READONLY, (char *)""},
{(char *)"Y", T_INT, offsetof(PySfEventMouseMove, Y), READONLY, (char *)""},
{NULL} /* Sentinel */
};
PyTypeObject PySfEventMouseMoveType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Event.MouseMove", /*tp_name*/
sizeof(PySfEventMouseMove), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -300,20 +300,19 @@ PySfEventMouseButton_init(PySfEventMouseButton *self, PyObject *args, PyObject *
void
PySfEventMouseButton_dealloc(PySfEventMouseButton* self)
{
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
PyMemberDef PySfEventMouseButton_members[] = {
{(char *)"Button", T_UINT, offsetof(PySfEventMouseButton, Button), RO, (char *)""},
{(char *)"X", T_INT, offsetof(PySfEventMouseButton, X), RO, (char *)""},
{(char *)"Y", T_INT, offsetof(PySfEventMouseButton, Y), RO, (char *)""},
{(char *)"Button", T_UINT, offsetof(PySfEventMouseButton, Button), READONLY, (char *)""},
{(char *)"X", T_INT, offsetof(PySfEventMouseButton, X), READONLY, (char *)""},
{(char *)"Y", T_INT, offsetof(PySfEventMouseButton, Y), READONLY, (char *)""},
{NULL} /* Sentinel */
};
PyTypeObject PySfEventMouseButtonType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Event.MouseButton", /*tp_name*/
sizeof(PySfEventMouseButton), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -381,17 +380,16 @@ PySfEventMouseWheel_init(PySfEventMouseWheel *self, PyObject *args, PyObject *kw
void
PySfEventMouseWheel_dealloc(PySfEventMouseWheel* self)
{
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
PyMemberDef PySfEventMouseWheel_members[] = {
{(char *)"Delta", T_INT, offsetof(PySfEventMouseWheel,Delta), RO, (char *)""},
{(char *)"Delta", T_INT, offsetof(PySfEventMouseWheel,Delta), READONLY, (char *)""},
{NULL} /* Sentinel */
};
PyTypeObject PySfEventMouseWheelType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Event.MouseWheel", /*tp_name*/
sizeof(PySfEventMouseWheel), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -461,20 +459,19 @@ PySfEventJoyMove_init(PySfEventJoyMove *self, PyObject *args, PyObject *kwds)
void
PySfEventJoyMove_dealloc(PySfEventJoyMove* self)
{
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
PyMemberDef PySfEventJoyMove_members[] = {
{(char *)"JoystickId", T_UINT, offsetof(PySfEventJoyMove,JoystickId), RO, (char *)""},
{(char *)"Axis", T_UINT, offsetof(PySfEventJoyMove,Axis), RO, (char *)""},
{(char *)"Position", T_FLOAT, offsetof(PySfEventJoyMove,Position), RO, (char *)""},
{(char *)"JoystickId", T_UINT, offsetof(PySfEventJoyMove,JoystickId), READONLY, (char *)""},
{(char *)"Axis", T_UINT, offsetof(PySfEventJoyMove,Axis), READONLY, (char *)""},
{(char *)"Position", T_FLOAT, offsetof(PySfEventJoyMove,Position), READONLY, (char *)""},
{NULL} /* Sentinel */
};
PyTypeObject PySfEventJoyMoveType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Event.JoyMove", /*tp_name*/
sizeof(PySfEventJoyMove), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -543,19 +540,18 @@ PySfEventJoyButton_init(PySfEventJoyButton *self, PyObject *args, PyObject *kwds
void
PySfEventJoyButton_dealloc(PySfEventJoyButton* self)
{
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
PyMemberDef PySfEventJoyButton_members[] = {
{(char *)"JoystickId", T_UINT, offsetof(PySfEventJoyButton, JoystickId), RO, (char *)""},
{(char *)"Button", T_UINT, offsetof(PySfEventJoyButton, Button), RO, (char *)""},
{(char *)"JoystickId", T_UINT, offsetof(PySfEventJoyButton, JoystickId), READONLY, (char *)""},
{(char *)"Button", T_UINT, offsetof(PySfEventJoyButton, Button), READONLY, (char *)""},
{NULL} /* Sentinel */
};
PyTypeObject PySfEventJoyButtonType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Event.JoyButton", /*tp_name*/
sizeof(PySfEventJoyButton), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -624,18 +620,17 @@ PySfEventSize_init(PySfEventSize *self, PyObject *args, PyObject *kwds)
void
PySfEventSize_dealloc(PySfEventSize* self)
{
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
PyMemberDef PySfEventSize_members[] = {
{(char *)"Width", T_UINT, offsetof(PySfEventSize, Width), RO, (char *)""},
{(char *)"Height", T_UINT, offsetof(PySfEventSize, Height), RO, (char *)""},
{(char *)"Width", T_UINT, offsetof(PySfEventSize, Width), READONLY, (char *)""},
{(char *)"Height", T_UINT, offsetof(PySfEventSize, Height), READONLY, (char *)""},
{NULL} /* Sentinel */
};
PyTypeObject PySfEventSizeType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Event.Size", /*tp_name*/
sizeof(PySfEventSize), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -725,19 +720,19 @@ PySfEvent_dealloc(PySfEvent* self)
Py_DECREF(self->JoyButton);
Py_DECREF(self->Size);
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static PyMemberDef PySfEvent_members[] = {
{(char *)"Text", T_OBJECT, offsetof(PySfEvent, Text), RO, (char *)"Text Events Parameters"},
{(char *)"Key", T_OBJECT, offsetof(PySfEvent, Key), RO, (char *)"Keyboard Events Parameters"},
{(char *)"MouseMove", T_OBJECT, offsetof(PySfEvent, MouseMove), RO, (char *)"MouseMove Events Parameters"},
{(char *)"MouseButton", T_OBJECT, offsetof(PySfEvent, MouseButton), RO, (char *)"MouseButton Events Parameters"},
{(char *)"MouseWheel", T_OBJECT, offsetof(PySfEvent, MouseWheel), RO, (char *)"MouseWheel Events Parameters"},
{(char *)"JoyMove", T_OBJECT, offsetof(PySfEvent, JoyMove), RO, (char *)"JoyMove Events Parameters"},
{(char *)"JoyButton", T_OBJECT, offsetof(PySfEvent, JoyButton), RO, (char *)"JoyButton Events Parameters"},
{(char *)"Size", T_OBJECT, offsetof(PySfEvent, Size), RO, (char *)"Size Events Parameters"},
{(char *)"Type", T_UINT, offsetof(PySfEvent, Type), RO, (char *)"Type Events Parameters"},
{(char *)"Text", T_OBJECT, offsetof(PySfEvent, Text), READONLY, (char *)"Text Events Parameters"},
{(char *)"Key", T_OBJECT, offsetof(PySfEvent, Key), READONLY, (char *)"Keyboard Events Parameters"},
{(char *)"MouseMove", T_OBJECT, offsetof(PySfEvent, MouseMove), READONLY, (char *)"MouseMove Events Parameters"},
{(char *)"MouseButton", T_OBJECT, offsetof(PySfEvent, MouseButton), READONLY, (char *)"MouseButton Events Parameters"},
{(char *)"MouseWheel", T_OBJECT, offsetof(PySfEvent, MouseWheel), READONLY, (char *)"MouseWheel Events Parameters"},
{(char *)"JoyMove", T_OBJECT, offsetof(PySfEvent, JoyMove), READONLY, (char *)"JoyMove Events Parameters"},
{(char *)"JoyButton", T_OBJECT, offsetof(PySfEvent, JoyButton), READONLY, (char *)"JoyButton Events Parameters"},
{(char *)"Size", T_OBJECT, offsetof(PySfEvent, Size), READONLY, (char *)"Size Events Parameters"},
{(char *)"Type", T_UINT, offsetof(PySfEvent, Type), READONLY, (char *)"Type Events Parameters"},
{NULL} /* Sentinel */
};
@ -746,8 +741,7 @@ static PyMethodDef PySfEvent_methods[] = {
};
PyTypeObject PySfEventType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Event", /*tp_name*/
sizeof(PySfEvent), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -792,52 +786,52 @@ void
PySfEvent_InitConst()
{
PyObject *obj;
obj = PyInt_FromLong(sf::Event::KeyReleased);
obj = PyLong_FromLong(sf::Event::KeyReleased);
PyDict_SetItemString(PySfEventType.tp_dict, "KeyReleased", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::LostFocus);
obj = PyLong_FromLong(sf::Event::LostFocus);
PyDict_SetItemString(PySfEventType.tp_dict, "LostFocus", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::GainedFocus);
obj = PyLong_FromLong(sf::Event::GainedFocus);
PyDict_SetItemString(PySfEventType.tp_dict, "GainedFocus", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::KeyPressed);
obj = PyLong_FromLong(sf::Event::KeyPressed);
PyDict_SetItemString(PySfEventType.tp_dict, "KeyPressed", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::MouseWheelMoved);
obj = PyLong_FromLong(sf::Event::MouseWheelMoved);
PyDict_SetItemString(PySfEventType.tp_dict, "MouseWheelMoved", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::TextEntered);
obj = PyLong_FromLong(sf::Event::TextEntered);
PyDict_SetItemString(PySfEventType.tp_dict, "TextEntered", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::MouseMoved);
obj = PyLong_FromLong(sf::Event::MouseMoved);
PyDict_SetItemString(PySfEventType.tp_dict, "MouseMoved", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::JoyButtonPressed);
obj = PyLong_FromLong(sf::Event::JoyButtonPressed);
PyDict_SetItemString(PySfEventType.tp_dict, "JoyButtonPressed", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::MouseButtonReleased);
obj = PyLong_FromLong(sf::Event::MouseButtonReleased);
PyDict_SetItemString(PySfEventType.tp_dict, "MouseButtonReleased", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::Closed);
obj = PyLong_FromLong(sf::Event::Closed);
PyDict_SetItemString(PySfEventType.tp_dict, "Closed", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::MouseButtonPressed);
obj = PyLong_FromLong(sf::Event::MouseButtonPressed);
PyDict_SetItemString(PySfEventType.tp_dict, "MouseButtonPressed", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::JoyMoved);
obj = PyLong_FromLong(sf::Event::JoyMoved);
PyDict_SetItemString(PySfEventType.tp_dict, "JoyMoved", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::JoyButtonReleased);
obj = PyLong_FromLong(sf::Event::JoyButtonReleased);
PyDict_SetItemString(PySfEventType.tp_dict, "JoyButtonReleased", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::Resized);
obj = PyLong_FromLong(sf::Event::Resized);
PyDict_SetItemString(PySfEventType.tp_dict, "Resized", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::MouseEntered);
obj = PyLong_FromLong(sf::Event::MouseEntered);
PyDict_SetItemString(PySfEventType.tp_dict, "MouseEntered", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Event::MouseLeft);
obj = PyLong_FromLong(sf::Event::MouseLeft);
PyDict_SetItemString(PySfEventType.tp_dict, "MouseLeft", obj);
Py_DECREF(obj);
}

View File

@ -25,12 +25,9 @@
#ifndef __PYEVENT_HPP
#define __PYEVENT_HPP
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
#include <SFML/Window/Event.hpp>
typedef struct
{

View File

@ -24,34 +24,27 @@
#include "Image.hpp"
#include "RenderWindow.hpp"
#include "Color.hpp"
#include "Rect.hpp"
#include "compat.hpp"
extern PyTypeObject PySfColorType;
extern PyTypeObject PySfIntRectType;
extern PyTypeObject PySfRenderWindowType;
static PyMemberDef PySfImage_members[] = {
{NULL} /* Sentinel */
};
static void
PySfImage_dealloc(PySfImage* self)
{
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static PyObject *
PySfImage_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfImage *self;
self = (PySfImage *)type->tp_alloc(type, 0);
if (self != NULL)
{
}
return (PyObject *)self;
}
@ -64,7 +57,7 @@ PySfImage_Create(PySfImage* self, PyObject *args, PyObject *kwds)
unsigned int Width=0, Height=0;
const char *kwlist[] = {"Width", "Height", "Color", NULL};
if (! PyArg_ParseTupleAndKeywords(args, kwds, "|IIO!", (char **)kwlist, &Width, &Height, &PySfColorType, &ColorTmp))
if (! PyArg_ParseTupleAndKeywords(args, kwds, "|IIO!:Image.Create", (char **)kwlist, &Width, &Height, &PySfColorType, &ColorTmp))
return NULL;
if (ColorTmp)
@ -82,12 +75,11 @@ PySfImage_Create(PySfImage* self, PyObject *args, PyObject *kwds)
static PyObject *
PySfImage_CopyScreen(PySfImage* self, PyObject *args)
{
// bool CopyScreen(RenderWindow& Window, const IntRect& SourceRect = IntRect(0, 0, 0, 0));
PySfRenderWindow *RenderWindow;
PySfIntRect *SourceRect=NULL;
bool Result;
if (! PyArg_ParseTuple(args, "O!|O!", &PySfRenderWindowType, &RenderWindow, &PySfIntRectType, &SourceRect))
if (! PyArg_ParseTuple(args, "O!|O!:Image.CopyScreen", &PySfRenderWindowType, &RenderWindow, &PySfIntRectType, &SourceRect))
return NULL;
@ -113,7 +105,7 @@ PySfImage_SetPixel(PySfImage* self, PyObject *args, PyObject *kwds)
const char *kwlist[] = {"x", "y", "Color", NULL};
if (! PyArg_ParseTupleAndKeywords(args, kwds, "II|O!", (char **)kwlist, &x, &y, &PySfColorType, &ColorTmp))
if (!PyArg_ParseTupleAndKeywords(args, kwds, "II|O!:Image.SetPixel", (char **)kwlist, &x, &y, &PySfColorType, &ColorTmp))
return NULL;
@ -134,7 +126,7 @@ PySfImage_GetPixel(PySfImage* self, PyObject *args)
unsigned int x=0, y=0;
if (! PyArg_ParseTuple(args, "II", &x, &y))
if (!PyArg_ParseTuple(args, "II:Image.GetPixel", &x, &y))
return NULL;
@ -154,8 +146,11 @@ PySfImage_CreateMaskFromColor(PySfImage* self, PyObject *args)
PySfColor *ColorTmp= (PySfColor *)args;
sf::Color *Color;
if ( ! PyObject_TypeCheck(ColorTmp, &PySfColorType))
PyErr_SetString(PyExc_ValueError, "Argument must be a sf.Color");
if (!PyObject_TypeCheck(ColorTmp, &PySfColorType))
{
PyErr_SetString(PyExc_TypeError, "Image.CreateMaskFromColor() Argument must be a sf.Color");
return NULL;
}
Color = ColorTmp->obj;
PySfColorUpdate(ColorTmp);
self->obj->CreateMaskFromColor(*Color);
@ -169,14 +164,10 @@ PySfImage_LoadFromMemory(PySfImage* self, PyObject *args)
unsigned int SizeInBytes;
char *Data;
if (! PyArg_ParseTuple(args, "s#", &Data, &SizeInBytes))
if (! PyArg_ParseTuple(args, "s#:Image.LoadFromMemory", &Data, &SizeInBytes))
return NULL;
if (self->obj->LoadFromMemory(Data, (std::size_t) SizeInBytes))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
return PyBool_FromLong(self->obj->LoadFromMemory(Data, (std::size_t) SizeInBytes));
}
static PyObject *
@ -185,7 +176,7 @@ PySfImage_LoadFromPixels(PySfImage* self, PyObject *args)
unsigned int Width, Height, Size;
char *Data;
if (! PyArg_ParseTuple(args, "IIs#", &Width, &Height, &Data, &Size))
if (! PyArg_ParseTuple(args, "IIs#:Image.LoadFromPixels", &Width, &Height, &Data, &Size))
return NULL;
self->obj->LoadFromPixels(Width, Height, (sf::Uint8*) Data);
@ -195,29 +186,49 @@ PySfImage_LoadFromPixels(PySfImage* self, PyObject *args)
static PyObject *
PySfImage_GetPixels(PySfImage *self)
{
#ifdef IS_PY3K
return PyBytes_FromStringAndSize((const char *)(self->obj->GetPixelsPtr()), self->obj->GetWidth()*self->obj->GetHeight()*4);
#else
return PyString_FromStringAndSize((const char *)(self->obj->GetPixelsPtr()), self->obj->GetWidth()*self->obj->GetHeight()*4);
#endif
}
static PyObject *
PySfImage_LoadFromFile (PySfImage *self, PyObject *args)
{
char *path = PyString_AsString(args);
if (self->obj->LoadFromFile(path))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
char *path;
#ifdef IS_PY3K
PyObject *string = PyUnicode_AsUTF8String(args);
if (string == NULL)
return NULL;
path = PyBytes_AsString(string);
#else
path = PyString_AsString(args);
#endif
bool result = self->obj->LoadFromFile(path);
#ifdef IS_PY3K
Py_DECREF(string);
#endif
return PyBool_FromLong(result);
}
static PyObject *
PySfImage_SaveToFile (PySfImage *self, PyObject *args)
{
char *path = PyString_AsString(args);
if (self->obj->SaveToFile(path))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
char *path;
#ifdef IS_PY3K
PyObject *string = PyUnicode_AsUTF8String(args);
if (string == NULL)
return NULL;
path = PyBytes_AsString(string);
#else
path = PyString_AsString(args);
#endif
bool result = self->obj->SaveToFile(path);
#ifdef IS_PY3K
Py_DECREF(string);
#endif
return PyBool_FromLong(result);
}
static int
@ -233,10 +244,7 @@ PySfImage_Bind(PySfImage *self)
static PyObject *
PySfImage_SetSmooth (PySfImage *self, PyObject *args)
{
bool arg=false;
if (PyObject_IsTrue(args))
arg = true;
self->obj->SetSmooth(arg);
self->obj->SetSmooth(PyBool_AsBool(args));
Py_RETURN_NONE;
}
@ -269,6 +277,7 @@ PySfImage_GetTexCoords(PySfImage* self, PyObject *args)
if (! PyArg_ParseTuple(args, "O!|O", &PySfIntRectType, &RectArg, &AdjustObj))
return NULL;
if (AdjustObj)
if (PyObject_IsTrue(AdjustObj))
Adjust = true;
@ -326,8 +335,7 @@ Create the image from the current contents of the given window. Return True if c
};
PyTypeObject PySfImageType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Image", /*tp_name*/
sizeof(PySfImage), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -358,7 +366,7 @@ Copy constructor : sf.Image(Copy) where Copy is a sf.Image instance.", /* tp_doc
0, /* tp_iter */
0, /* tp_iternext */
PySfImage_methods, /* tp_methods */
PySfImage_members, /* tp_members */
0, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */
@ -373,7 +381,8 @@ Copy constructor : sf.Image(Copy) where Copy is a sf.Image instance.", /* tp_doc
static int
PySfImage_init(PySfImage *self, PyObject *args, PyObject *kwds)
{
if (PyTuple_Size(args) == 1)
int size = PyTuple_Size(args);
if (size == 1)
{
PySfImage *Image;
if (PyArg_ParseTuple(args, "O!", &PySfImageType, &Image))
@ -386,8 +395,12 @@ PySfImage_init(PySfImage *self, PyObject *args, PyObject *kwds)
if (PyTuple_Size(args) > 0)
{
if (PySfImage_Create(self, args, kwds) == NULL)
if (PySfImage_LoadFromPixels(self, args) == NULL)
{
if (size != 3)
return -1;
else if (PySfImage_LoadFromPixels(self, args) == NULL)
return -1;
}
}
return 0;
}
@ -400,9 +413,10 @@ PySfImage_Copy(PySfImage* self, PyObject *args)
unsigned int DestX, DestY;
PyObject *PyApplyAlpha;
bool ApplyAlpha = false;
if (! PyArg_ParseTuple(args, "O!II|O!O", &PySfImageType, &Source, &DestX, &DestY, &PySfIntRectType, &SourceRect, &PyApplyAlpha))
if (! PyArg_ParseTuple(args, "O!II|O!O:Image.Copy", &PySfImageType, &Source, &DestX, &DestY, &PySfIntRectType, &SourceRect, &PyApplyAlpha))
return NULL;
if (PyApplyAlpha)
if (PyObject_IsTrue(PyApplyAlpha))
ApplyAlpha = true;

View File

@ -25,16 +25,9 @@
#ifndef __PYIMAGE_HPP
#define __PYIMAGE_HPP
#include <SFML/Graphics/Image.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
#include "Color.hpp"
#include "Rect.hpp"
#include "offsetof.hpp"
#include <SFML/Graphics/Image.hpp>
typedef struct {

View File

@ -24,85 +24,61 @@
#include "Input.hpp"
#include "compat.hpp"
static PyMemberDef PySfInput_members[] = {
{NULL} /* Sentinel */
};
static void
PySfInput_dealloc(PySfInput *self)
{
self->ob_type->tp_free((PyObject*)self);
}
static PyObject *
PySfInput_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfInput *self;
self = (PySfInput *)type->tp_alloc(type, 0);
if (self != NULL)
{
}
return (PyObject *)self;
}
static int
PySfInput_init(PySfInput *self, PyObject *args, PyObject *kwds)
{
PyErr_SetString(PyExc_StandardError, "You can't create an Input object yourself, because an Input object must always be associated to its window.\nThe only way to get an Input is by creating a window and calling : Input = MyWindow.GetInput().");
PyErr_SetString(PyExc_RuntimeError, "You can't create an Input object yourself, because an Input object must always be associated to its window.\nThe only way to get an Input is by creating a window and calling : Input = MyWindow.GetInput().");
return -1;
}
static PyObject*
PySfInput_IsKeyDown(PySfInput *self, PyObject *args)
{
if (self->obj->IsKeyDown( (sf::Key::Code) PyInt_AsLong(args) ))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
return PyBool_FromLong(self->obj->IsKeyDown( (sf::Key::Code) PyLong_AsLong(args) ));
}
static PyObject*
PySfInput_IsMouseButtonDown(PySfInput *self, PyObject *args)
{
if (self->obj->IsMouseButtonDown( (sf::Mouse::Button) PyInt_AsLong(args) ))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
return PyBool_FromLong(self->obj->IsMouseButtonDown( (sf::Mouse::Button) PyLong_AsLong(args) ));
}
static PyObject*
PySfInput_IsJoystickButtonDown(PySfInput *self, PyObject *args)
{
unsigned int JoyId, Button;
if (! PyArg_ParseTuple (args, "II", &JoyId, &Button))
if (! PyArg_ParseTuple (args, "II:Input.IsJoystickButtonDown", &JoyId, &Button))
return NULL;
if (self->obj->IsJoystickButtonDown(JoyId, Button))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
return PyBool_FromLong(self->obj->IsJoystickButtonDown(JoyId, Button));
}
static PyObject*
PySfInput_GetMouseX(PySfInput *self)
{
return PyInt_FromLong(self->obj->GetMouseX());
return PyLong_FromLong(self->obj->GetMouseX());
}
static PyObject*
PySfInput_GetMouseY(PySfInput *self)
{
return PyInt_FromLong(self->obj->GetMouseY());
return PyLong_FromLong(self->obj->GetMouseY());
}
static PyObject*
PySfInput_GetJoystickAxis(PySfInput *self, PyObject *args)
{
unsigned int JoyId, Axis;
if (! PyArg_ParseTuple (args, "II", &JoyId, &Axis))
if (! PyArg_ParseTuple (args, "II:Input.GetJoystickAxis", &JoyId, &Axis))
return NULL;
return PyFloat_FromDouble(self->obj->GetJoystickAxis(JoyId, (sf::Joy::Axis) Axis));
}
@ -118,12 +94,11 @@ static PyMethodDef PySfInput_methods[] = {
};
PyTypeObject PySfInputType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Input", /*tp_name*/
sizeof(PySfInput), /*tp_basicsize*/
0, /*tp_itemsize*/
(destructor)PySfInput_dealloc, /*tp_dealloc*/
0, /*tp_dealloc*/
0, /*tp_print*/
0, /*tp_getattr*/
0, /*tp_setattr*/
@ -147,7 +122,7 @@ PyTypeObject PySfInputType = {
0, /* tp_iter */
0, /* tp_iternext */
PySfInput_methods, /* tp_methods */
PySfInput_members, /* tp_members */
0, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */

View File

@ -25,12 +25,9 @@
#ifndef __PYINPUT_HPP
#define __PYINPUT_HPP
#include <SFML/Window/Input.hpp>
#include <SFML/Window/Event.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
#include <SFML/Window/Input.hpp>
typedef struct {
PyObject_HEAD

View File

@ -22,62 +22,24 @@
//
////////////////////////////////////////////////////////////
#include <SFML/Window/Event.hpp>
#include <Python.h>
#include <structmember.h>
#include "Key.hpp"
typedef struct {
PyObject_HEAD
} PySfKey;
static PyMemberDef PySfKey_members[] = {
{NULL} /* Sentinel */
};
static void
PySfKey_dealloc(PySfKey *self)
{
self->ob_type->tp_free((PyObject*)self);
}
#include "compat.hpp"
static PyObject *
PySfKey_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfKey *self;
self = (PySfKey *)type->tp_alloc(type, 0);
if (self != NULL)
{
}
return (PyObject *)self;
}
static int
PySfKey_init(PySfKey *self, PyObject *args, PyObject *kwds)
{
return 0;
}
static PyMethodDef PySfKey_methods[] = {
{NULL} /* Sentinel */
};
PyTypeObject PySfKeyType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Key", /*tp_name*/
sizeof(PySfKey), /*tp_basicsize*/
0, /*tp_itemsize*/
(destructor)PySfKey_dealloc, /*tp_dealloc*/
0, /*tp_dealloc*/
0, /*tp_print*/
0, /*tp_getattr*/
0, /*tp_setattr*/
@ -100,15 +62,15 @@ PyTypeObject PySfKeyType = {
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
PySfKey_methods, /* tp_methods */
PySfKey_members, /* tp_members */
0, /* tp_methods */
0, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfKey_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfKey_new, /* tp_new */
};
@ -116,307 +78,307 @@ PyTypeObject PySfKeyType = {
void PySfKey_InitConst()
{
PyObject *obj;
obj = PyInt_FromLong(sf::Key::Numpad2);
obj = PyLong_FromLong(sf::Key::Numpad2);
PyDict_SetItemString(PySfKeyType.tp_dict, "Numpad2", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Numpad3);
obj = PyLong_FromLong(sf::Key::Numpad3);
PyDict_SetItemString(PySfKeyType.tp_dict, "Numpad3", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Numpad0);
obj = PyLong_FromLong(sf::Key::Numpad0);
PyDict_SetItemString(PySfKeyType.tp_dict, "Numpad0", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Numpad1);
obj = PyLong_FromLong(sf::Key::Numpad1);
PyDict_SetItemString(PySfKeyType.tp_dict, "Numpad1", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Numpad6);
obj = PyLong_FromLong(sf::Key::Numpad6);
PyDict_SetItemString(PySfKeyType.tp_dict, "Numpad6", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Numpad7);
obj = PyLong_FromLong(sf::Key::Numpad7);
PyDict_SetItemString(PySfKeyType.tp_dict, "Numpad7", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Numpad4);
obj = PyLong_FromLong(sf::Key::Numpad4);
PyDict_SetItemString(PySfKeyType.tp_dict, "Numpad4", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Numpad5);
obj = PyLong_FromLong(sf::Key::Numpad5);
PyDict_SetItemString(PySfKeyType.tp_dict, "Numpad5", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Numpad8);
obj = PyLong_FromLong(sf::Key::Numpad8);
PyDict_SetItemString(PySfKeyType.tp_dict, "Numpad8", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Numpad9);
obj = PyLong_FromLong(sf::Key::Numpad9);
PyDict_SetItemString(PySfKeyType.tp_dict, "Numpad9", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::RAlt);
obj = PyLong_FromLong(sf::Key::RAlt);
PyDict_SetItemString(PySfKeyType.tp_dict, "RAlt", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::PageUp);
obj = PyLong_FromLong(sf::Key::PageUp);
PyDict_SetItemString(PySfKeyType.tp_dict, "PageUp", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Multiply);
obj = PyLong_FromLong(sf::Key::Multiply);
PyDict_SetItemString(PySfKeyType.tp_dict, "Multiply", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::D);
obj = PyLong_FromLong(sf::Key::D);
PyDict_SetItemString(PySfKeyType.tp_dict, "D", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::SemiColon);
obj = PyLong_FromLong(sf::Key::SemiColon);
PyDict_SetItemString(PySfKeyType.tp_dict, "SemiColon", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::H);
obj = PyLong_FromLong(sf::Key::H);
PyDict_SetItemString(PySfKeyType.tp_dict, "H", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::L);
obj = PyLong_FromLong(sf::Key::L);
PyDict_SetItemString(PySfKeyType.tp_dict, "L", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::P);
obj = PyLong_FromLong(sf::Key::P);
PyDict_SetItemString(PySfKeyType.tp_dict, "P", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Num7);
obj = PyLong_FromLong(sf::Key::Num7);
PyDict_SetItemString(PySfKeyType.tp_dict, "Num7", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::T);
obj = PyLong_FromLong(sf::Key::T);
PyDict_SetItemString(PySfKeyType.tp_dict, "T", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::X);
obj = PyLong_FromLong(sf::Key::X);
PyDict_SetItemString(PySfKeyType.tp_dict, "X", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::RSystem);
obj = PyLong_FromLong(sf::Key::RSystem);
PyDict_SetItemString(PySfKeyType.tp_dict, "RSystem", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F5);
obj = PyLong_FromLong(sf::Key::F5);
PyDict_SetItemString(PySfKeyType.tp_dict, "F5", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Num4);
obj = PyLong_FromLong(sf::Key::Num4);
PyDict_SetItemString(PySfKeyType.tp_dict, "Num4", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Num5);
obj = PyLong_FromLong(sf::Key::Num5);
PyDict_SetItemString(PySfKeyType.tp_dict, "Num5", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Num6);
obj = PyLong_FromLong(sf::Key::Num6);
PyDict_SetItemString(PySfKeyType.tp_dict, "Num6", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Right);
obj = PyLong_FromLong(sf::Key::Right);
PyDict_SetItemString(PySfKeyType.tp_dict, "Right", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Num0);
obj = PyLong_FromLong(sf::Key::Num0);
PyDict_SetItemString(PySfKeyType.tp_dict, "Num0", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Num1);
obj = PyLong_FromLong(sf::Key::Num1);
PyDict_SetItemString(PySfKeyType.tp_dict, "Num1", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Num2);
obj = PyLong_FromLong(sf::Key::Num2);
PyDict_SetItemString(PySfKeyType.tp_dict, "Num2", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Num3);
obj = PyLong_FromLong(sf::Key::Num3);
PyDict_SetItemString(PySfKeyType.tp_dict, "Num3", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::LControl);
obj = PyLong_FromLong(sf::Key::LControl);
PyDict_SetItemString(PySfKeyType.tp_dict, "LControl", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Num8);
obj = PyLong_FromLong(sf::Key::Num8);
PyDict_SetItemString(PySfKeyType.tp_dict, "Num8", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Num9);
obj = PyLong_FromLong(sf::Key::Num9);
PyDict_SetItemString(PySfKeyType.tp_dict, "Num9", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Tab);
obj = PyLong_FromLong(sf::Key::Tab);
PyDict_SetItemString(PySfKeyType.tp_dict, "Tab", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::RBracket);
obj = PyLong_FromLong(sf::Key::RBracket);
PyDict_SetItemString(PySfKeyType.tp_dict, "RBracket", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::End);
obj = PyLong_FromLong(sf::Key::End);
PyDict_SetItemString(PySfKeyType.tp_dict, "End", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::BackSlash);
obj = PyLong_FromLong(sf::Key::BackSlash);
PyDict_SetItemString(PySfKeyType.tp_dict, "BackSlash", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::LShift);
obj = PyLong_FromLong(sf::Key::LShift);
PyDict_SetItemString(PySfKeyType.tp_dict, "LShift", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::E);
obj = PyLong_FromLong(sf::Key::E);
PyDict_SetItemString(PySfKeyType.tp_dict, "E", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::C);
obj = PyLong_FromLong(sf::Key::C);
PyDict_SetItemString(PySfKeyType.tp_dict, "C", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::G);
obj = PyLong_FromLong(sf::Key::G);
PyDict_SetItemString(PySfKeyType.tp_dict, "G", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::K);
obj = PyLong_FromLong(sf::Key::K);
PyDict_SetItemString(PySfKeyType.tp_dict, "K", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Up);
obj = PyLong_FromLong(sf::Key::Up);
PyDict_SetItemString(PySfKeyType.tp_dict, "Up", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::O);
obj = PyLong_FromLong(sf::Key::O);
PyDict_SetItemString(PySfKeyType.tp_dict, "O", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::S);
obj = PyLong_FromLong(sf::Key::S);
PyDict_SetItemString(PySfKeyType.tp_dict, "S", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::W);
obj = PyLong_FromLong(sf::Key::W);
PyDict_SetItemString(PySfKeyType.tp_dict, "W", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F12);
obj = PyLong_FromLong(sf::Key::F12);
PyDict_SetItemString(PySfKeyType.tp_dict, "F12", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F13);
obj = PyLong_FromLong(sf::Key::F13);
PyDict_SetItemString(PySfKeyType.tp_dict, "F13", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F10);
obj = PyLong_FromLong(sf::Key::F10);
PyDict_SetItemString(PySfKeyType.tp_dict, "F10", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F11);
obj = PyLong_FromLong(sf::Key::F11);
PyDict_SetItemString(PySfKeyType.tp_dict, "F11", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F14);
obj = PyLong_FromLong(sf::Key::F14);
PyDict_SetItemString(PySfKeyType.tp_dict, "F14", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Delete);
obj = PyLong_FromLong(sf::Key::Delete);
PyDict_SetItemString(PySfKeyType.tp_dict, "Delete", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Back);
obj = PyLong_FromLong(sf::Key::Back);
PyDict_SetItemString(PySfKeyType.tp_dict, "Back", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Tilde);
obj = PyLong_FromLong(sf::Key::Tilde);
PyDict_SetItemString(PySfKeyType.tp_dict, "Tilde", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Home);
obj = PyLong_FromLong(sf::Key::Home);
PyDict_SetItemString(PySfKeyType.tp_dict, "Home", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Pause);
obj = PyLong_FromLong(sf::Key::Pause);
PyDict_SetItemString(PySfKeyType.tp_dict, "Pause", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Add);
obj = PyLong_FromLong(sf::Key::Add);
PyDict_SetItemString(PySfKeyType.tp_dict, "Add", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F15);
obj = PyLong_FromLong(sf::Key::F15);
PyDict_SetItemString(PySfKeyType.tp_dict, "F15", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Subtract);
obj = PyLong_FromLong(sf::Key::Subtract);
PyDict_SetItemString(PySfKeyType.tp_dict, "Subtract", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::B);
obj = PyLong_FromLong(sf::Key::B);
PyDict_SetItemString(PySfKeyType.tp_dict, "B", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F);
obj = PyLong_FromLong(sf::Key::F);
PyDict_SetItemString(PySfKeyType.tp_dict, "F", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::J);
obj = PyLong_FromLong(sf::Key::J);
PyDict_SetItemString(PySfKeyType.tp_dict, "J", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::N);
obj = PyLong_FromLong(sf::Key::N);
PyDict_SetItemString(PySfKeyType.tp_dict, "N", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::LBracket);
obj = PyLong_FromLong(sf::Key::LBracket);
PyDict_SetItemString(PySfKeyType.tp_dict, "LBracket", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::R);
obj = PyLong_FromLong(sf::Key::R);
PyDict_SetItemString(PySfKeyType.tp_dict, "R", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::V);
obj = PyLong_FromLong(sf::Key::V);
PyDict_SetItemString(PySfKeyType.tp_dict, "V", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::LSystem);
obj = PyLong_FromLong(sf::Key::LSystem);
PyDict_SetItemString(PySfKeyType.tp_dict, "LSystem", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Z);
obj = PyLong_FromLong(sf::Key::Z);
PyDict_SetItemString(PySfKeyType.tp_dict, "Z", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Left);
obj = PyLong_FromLong(sf::Key::Left);
PyDict_SetItemString(PySfKeyType.tp_dict, "Left", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F1);
obj = PyLong_FromLong(sf::Key::F1);
PyDict_SetItemString(PySfKeyType.tp_dict, "F1", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F2);
obj = PyLong_FromLong(sf::Key::F2);
PyDict_SetItemString(PySfKeyType.tp_dict, "F2", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F3);
obj = PyLong_FromLong(sf::Key::F3);
PyDict_SetItemString(PySfKeyType.tp_dict, "F3", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F4);
obj = PyLong_FromLong(sf::Key::F4);
PyDict_SetItemString(PySfKeyType.tp_dict, "F4", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Divide);
obj = PyLong_FromLong(sf::Key::Divide);
PyDict_SetItemString(PySfKeyType.tp_dict, "Divide", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F6);
obj = PyLong_FromLong(sf::Key::F6);
PyDict_SetItemString(PySfKeyType.tp_dict, "F6", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F7);
obj = PyLong_FromLong(sf::Key::F7);
PyDict_SetItemString(PySfKeyType.tp_dict, "F7", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F8);
obj = PyLong_FromLong(sf::Key::F8);
PyDict_SetItemString(PySfKeyType.tp_dict, "F8", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::F9);
obj = PyLong_FromLong(sf::Key::F9);
PyDict_SetItemString(PySfKeyType.tp_dict, "F9", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Period);
obj = PyLong_FromLong(sf::Key::Period);
PyDict_SetItemString(PySfKeyType.tp_dict, "Period", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Down);
obj = PyLong_FromLong(sf::Key::Down);
PyDict_SetItemString(PySfKeyType.tp_dict, "Down", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::PageDown);
obj = PyLong_FromLong(sf::Key::PageDown);
PyDict_SetItemString(PySfKeyType.tp_dict, "PageDown", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Space);
obj = PyLong_FromLong(sf::Key::Space);
PyDict_SetItemString(PySfKeyType.tp_dict, "Space", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Menu);
obj = PyLong_FromLong(sf::Key::Menu);
PyDict_SetItemString(PySfKeyType.tp_dict, "Menu", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::RControl);
obj = PyLong_FromLong(sf::Key::RControl);
PyDict_SetItemString(PySfKeyType.tp_dict, "RControl", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Slash);
obj = PyLong_FromLong(sf::Key::Slash);
PyDict_SetItemString(PySfKeyType.tp_dict, "Slash", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Return);
obj = PyLong_FromLong(sf::Key::Return);
PyDict_SetItemString(PySfKeyType.tp_dict, "Return", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Quote);
obj = PyLong_FromLong(sf::Key::Quote);
PyDict_SetItemString(PySfKeyType.tp_dict, "Quote", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::A);
obj = PyLong_FromLong(sf::Key::A);
PyDict_SetItemString(PySfKeyType.tp_dict, "A", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Insert);
obj = PyLong_FromLong(sf::Key::Insert);
PyDict_SetItemString(PySfKeyType.tp_dict, "Insert", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::RShift);
obj = PyLong_FromLong(sf::Key::RShift);
PyDict_SetItemString(PySfKeyType.tp_dict, "RShift", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::I);
obj = PyLong_FromLong(sf::Key::I);
PyDict_SetItemString(PySfKeyType.tp_dict, "I", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Escape);
obj = PyLong_FromLong(sf::Key::Escape);
PyDict_SetItemString(PySfKeyType.tp_dict, "Escape", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::M);
obj = PyLong_FromLong(sf::Key::M);
PyDict_SetItemString(PySfKeyType.tp_dict, "M", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Equal);
obj = PyLong_FromLong(sf::Key::Equal);
PyDict_SetItemString(PySfKeyType.tp_dict, "Equal", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Q);
obj = PyLong_FromLong(sf::Key::Q);
PyDict_SetItemString(PySfKeyType.tp_dict, "Q", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::U);
obj = PyLong_FromLong(sf::Key::U);
PyDict_SetItemString(PySfKeyType.tp_dict, "U", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Y);
obj = PyLong_FromLong(sf::Key::Y);
PyDict_SetItemString(PySfKeyType.tp_dict, "Y", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Dash);
obj = PyLong_FromLong(sf::Key::Dash);
PyDict_SetItemString(PySfKeyType.tp_dict, "Dash", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::Comma);
obj = PyLong_FromLong(sf::Key::Comma);
PyDict_SetItemString(PySfKeyType.tp_dict, "Comma", obj);
Py_DECREF(obj);
obj = PyInt_FromLong(sf::Key::LAlt);
obj = PyLong_FromLong(sf::Key::LAlt);
PyDict_SetItemString(PySfKeyType.tp_dict, "LAlt", obj);
Py_DECREF(obj);
}

View File

@ -25,6 +25,14 @@
#ifndef __PYKEY_HPP
#define __PYKEY_HPP
#include <Python.h>
#include <SFML/Window/Event.hpp>
typedef struct {
PyObject_HEAD
} PySfKey;
void
PySfKey_InitConst();

View File

@ -24,32 +24,24 @@
#include "Music.hpp"
#include "compat.hpp"
extern PyTypeObject PySfSoundStreamType;
static PyMemberDef PySfMusic_members[] = {
{NULL} /* Sentinel */
};
static void
PySfMusic_dealloc(PySfMusic *self)
{
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static PyObject *
PySfMusic_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfMusic *self;
self = (PySfMusic *)type->tp_alloc(type, 0);
if (self != NULL)
{
}
return (PyObject *)self;
}
@ -58,11 +50,16 @@ static int
PySfMusic_init(PySfMusic *self, PyObject *args, PyObject *kwds)
{
unsigned int BufferSize=44100;
if (PyTuple_Size(args) == 1)
int size = PyTuple_Size(args);
if (size == 1)
{
if ( !PyArg_ParseTuple(args, "I", &BufferSize))
if ( !PyArg_ParseTuple(args, "I:Music.Init", &BufferSize))
return -1;
}
else if (size > 1)
{
PyErr_SetString(PyExc_TypeError, "Music.__init__() takes at most one argument");
}
self->obj = new sf::Music(BufferSize);
return 0;
}
@ -73,23 +70,29 @@ PySfMusic_OpenFromMemory(PySfMusic *self, PyObject *args)
unsigned int SizeInBytes;
char *Data;
if (! PyArg_ParseTuple(args, "s#", &Data, &SizeInBytes))
if (! PyArg_ParseTuple(args, "s#:Music.OpenFromMemory", &Data, &SizeInBytes))
return NULL;
if (self->obj->OpenFromMemory(Data, (std::size_t) SizeInBytes))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
return PyBool_FromLong(self->obj->OpenFromMemory(Data, (std::size_t) SizeInBytes));
}
static PyObject*
PySfMusic_OpenFromFile(PySfMusic *self, PyObject *args)
{
char *path = PyString_AsString(args);
if (self->obj->OpenFromFile(path))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
char *path;
#ifdef IS_PY3K
PyObject *string = PyUnicode_AsUTF8String(args);
if (string == NULL)
return NULL;
path = PyBytes_AsString(string);
#else
path = PyString_AsString(args);
#endif
bool result = self->obj->OpenFromFile(path);
#ifdef IS_PY3K
Py_DECREF(string);
#endif
return PyBool_FromLong(result);
}
static PyObject*
@ -108,8 +111,7 @@ static PyMethodDef PySfMusic_methods[] = {
PyTypeObject PySfMusicType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Music", /*tp_name*/
sizeof(PySfMusic), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -129,7 +131,9 @@ PyTypeObject PySfMusicType = {
0, /*tp_setattro*/
0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
"sf.Music defines a big sound played using streaming, so usually what we call a music :)", /* tp_doc */
"sf.Music defines a big sound played using streaming, so usually what we call a music :).\n\
Constructor: sf.Music(BufferSize=44100)\n\
BufferSize : Size of the internal buffer, expressed in number of samples (ie. size taken by the music in memory) (44100 by default)", /* tp_doc */
0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
@ -137,7 +141,7 @@ PyTypeObject PySfMusicType = {
0, /* tp_iter */
0, /* tp_iternext */
PySfMusic_methods, /* tp_methods */
PySfMusic_members, /* tp_members */
0, /* tp_members */
0, /* tp_getset */
&PySfSoundStreamType, /* tp_base */
0, /* tp_dict */

View File

@ -25,13 +25,9 @@
#ifndef __PYMUSIC_HPP
#define __PYMUSIC_HPP
#include <SFML/Audio/Music.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
#include <SFML/Audio/Music.hpp>
typedef struct {
PyObject_HEAD

View File

@ -23,68 +23,74 @@
////////////////////////////////////////////////////////////
#include "PostFX.hpp"
#include "Drawable.hpp"
#include "Image.hpp"
#include "compat.hpp"
extern PyTypeObject PySfImageType;
extern PyTypeObject PySfDrawableType;
static PyMemberDef PySfPostFX_members[] = {
{NULL} /* Sentinel */
};
static void
PySfPostFX_dealloc(PySfPostFX *self)
{
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static PyObject *
PySfPostFX_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfPostFX *self;
self = (PySfPostFX *)type->tp_alloc(type, 0);
if (self != NULL)
{
}
return (PyObject *)self;
}
static PyObject *
PySfPostFX_LoadFromFile (PySfPostFX *self, PyObject *args)
{
if (self->obj->LoadFromFile(PyString_AsString(args)))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
char *path;
#ifdef IS_PY3K
PyObject *string = PyUnicode_AsUTF8String(args);
if (string == NULL)
return NULL;
path = PyBytes_AsString(string);
#else
path = PyString_AsString(args);
#endif
bool result = self->obj->LoadFromFile(path);
#ifdef IS_PY3K
Py_DECREF(string);
#endif
return PyBool_FromLong(result);
}
static PyObject *
PySfPostFX_LoadFromMemory (PySfPostFX *self, PyObject *args)
{
if (self->obj->LoadFromMemory(PyString_AsString(args)))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
char *path;
#ifdef IS_PY3K
PyObject *string = PyUnicode_AsUTF8String(args);
if (string == NULL)
return NULL;
path = PyBytes_AsString(string);
#else
path = PyString_AsString(args);
#endif
bool result = self->obj->LoadFromMemory(path);
#ifdef IS_PY3K
Py_DECREF(string);
#endif
return PyBool_FromLong(result);
}
static int
PySfPostFX_init(PySfPostFX *self, PyObject *args);
static PyObject *
PySfPostFX_SetParameter(PySfPostFX* self, PyObject *args)
{
char *Name;
float X, Y, Z, W;
int size = PyTuple_Size(args);
if (! PyArg_ParseTuple(args, "sf|fff", &Name, &X, &Y, &Z, &W))
return NULL;
static PyObject * PySfPostFX_SetParameter(PySfPostFX* self, PyObject *args) { char *Name; float X, Y, Z, W; int size = PyTuple_Size(args); if (!PyArg_ParseTuple(args, "sf|fff:PostFX.SetParameter", &Name, &X, &Y, &Z, &W)) return NULL;
switch (size)
{
@ -120,7 +126,7 @@ PySfPostFX_SetTexture(PySfPostFX* self, PyObject *args)
{
if (!PyObject_TypeCheck(Image, &PySfImageType))
{
PyErr_SetString(PyExc_TypeError, "Argument 2, if specified, must be a sf.Image instance or None.");
PyErr_SetString(PyExc_TypeError, "PostFX.SetTexture() Argument 2, if specified, must be a sf.Image instance or None.");
return NULL;
}
self->obj->SetTexture(Name, Image->obj);
@ -131,10 +137,7 @@ PySfPostFX_SetTexture(PySfPostFX* self, PyObject *args)
static PyObject *
PySfPostFX_CanUsePostFX(PySfPostFX* self, PyObject *args)
{
if (sf::PostFX::CanUsePostFX())
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
return PyBool_FromLong(sf::PostFX::CanUsePostFX());
}
@ -152,8 +155,7 @@ static PyMethodDef PySfPostFX_methods[] = {
};
PyTypeObject PySfPostFXType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"PostFX", /*tp_name*/
sizeof(PySfPostFX), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -173,7 +175,9 @@ PyTypeObject PySfPostFXType = {
0, /*tp_setattro*/
0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
"sf.PostFX is used to apply a post effect to a window. ", /* tp_doc */
"sf.PostFX is used to apply a post effect to a window.\n\
Default constructor : sf.PostFX()\n\
Copy constructor : sf.PostFX(Copy) where Copy is a sf.PostFX instance.", /* tp_doc */
0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
@ -181,7 +185,7 @@ PyTypeObject PySfPostFXType = {
0, /* tp_iter */
0, /* tp_iternext */
PySfPostFX_methods, /* tp_methods */
PySfPostFX_members, /* tp_members */
0, /* tp_members */
0, /* tp_getset */
&PySfDrawableType, /* tp_base */
0, /* tp_dict */

View File

@ -25,14 +25,9 @@
#ifndef __PYPOSTFX_HPP
#define __PYPOSTFX_HPP
#include <SFML/Graphics/PostFX.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
#include "Drawable.hpp"
#include "Image.hpp"
#include <SFML/Graphics/PostFX.hpp>
typedef struct {
PyObject_HEAD

View File

@ -24,6 +24,12 @@
#include "Rect.hpp"
#include <structmember.h>
#include "compat.hpp"
#include "offsetof.hpp"
static PyMemberDef PySfIntRect_members[] = {
{(char *)"Left", T_INT, offsetof(PySfIntRect, Left), 0, (char *)"Left coordinate of the rectangle."},
{(char *)"Top", T_INT, offsetof(PySfIntRect, Top), 0, (char *)"Top coordinate of the rectangle."},
@ -44,26 +50,21 @@ static void
PySfIntRect_dealloc(PySfIntRect* self)
{
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static void
PySfFloatRect_dealloc(PySfFloatRect* self)
{
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static PyObject *
PySfIntRect_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfIntRect *self;
self = (PySfIntRect *)type->tp_alloc(type, 0);
if (self != NULL)
{
}
return (PyObject *)self;
}
@ -71,12 +72,7 @@ static PyObject *
PySfFloatRect_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfFloatRect *self;
self = (PySfFloatRect *)type->tp_alloc(type, 0);
if (self != NULL)
{
}
return (PyObject *)self;
}
@ -86,7 +82,7 @@ PySfIntRect_init(PySfIntRect *self, PyObject *args, PyObject *kwds)
const char *kwlist[] = {"Left", "Top", "Right", "Bottom", NULL};
int Left, Top, Right, Bottom;
if (! PyArg_ParseTupleAndKeywords(args, kwds, "iiii", (char **)kwlist, &Left, &Top, &Right, &Bottom))
if (!PyArg_ParseTupleAndKeywords(args, kwds, "iiii:IntRect.__init__", (char **)kwlist, &Left, &Top, &Right, &Bottom))
return -1;
self->Left = Left;
@ -101,14 +97,14 @@ static PyObject *
PySfIntRect_GetWidth(PySfIntRect *self)
{
PySfIntRectUpdateObj(self);
return PyInt_FromLong(self->obj->GetWidth());
return PyLong_FromLong(self->obj->GetWidth());
}
static PyObject *
PySfIntRect_GetHeight(PySfIntRect *self)
{
PySfIntRectUpdateObj(self);
return PyInt_FromLong(self->obj->GetHeight());
return PyLong_FromLong(self->obj->GetHeight());
}
static PyObject *
@ -143,7 +139,7 @@ PySfFloatRect_init(PySfFloatRect *self, PyObject *args, PyObject *kwds)
const char *kwlist[] = {"Left", "Top", "Right", "Bottom", NULL};
float Left, Top, Right, Bottom;
if (! PyArg_ParseTupleAndKeywords(args, kwds, "ffff", (char **)kwlist, &Left, &Top, &Right, &Bottom))
if (!PyArg_ParseTupleAndKeywords(args, kwds, "ffff:FloatRect.__init__", (char **)kwlist, &Left, &Top, &Right, &Bottom))
return -1;
self->Left = Left;
@ -160,7 +156,7 @@ PySfIntRect_Offset(PySfIntRect* self, PyObject *args)
{
int OffsetX, OffsetY;
if (!PyArg_ParseTuple(args, "ii", &OffsetX, &OffsetY))
if (!PyArg_ParseTuple(args, "ii:IntRect.Offset", &OffsetX, &OffsetY))
return NULL;
PySfIntRectUpdateObj(self);
@ -174,7 +170,7 @@ PySfFloatRect_Offset(PySfFloatRect* self, PyObject *args)
{
float OffsetX, OffsetY;
if (!PyArg_ParseTuple(args, "ff", &OffsetX, &OffsetY))
if (!PyArg_ParseTuple(args, "ff:FloatRect.Offset", &OffsetX, &OffsetY))
return NULL;
PySfFloatRectUpdateObj(self);
@ -228,8 +224,7 @@ Check intersection between two rectangles.\n\
};
PyTypeObject PySfIntRectType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"IntRect", /*tp_name*/
sizeof(PySfIntRect), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -271,8 +266,7 @@ PyTypeObject PySfIntRectType = {
PyTypeObject PySfFloatRectType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"FloatRect", /*tp_name*/
sizeof(PySfFloatRect), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -318,14 +312,11 @@ PySfFloatRect_Contains(PySfFloatRect* self, PyObject *args)
{
float x=0, y=0;
if (! PyArg_ParseTuple(args, "ff", &x, &y))
if (!PyArg_ParseTuple(args, "ff:FloatRect.Contains", &x, &y))
return NULL;
PySfFloatRectUpdateObj(self);
if (self->obj->Contains(x,y))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
return PyBool_FromLong(self->obj->Contains(x,y));
}
static PyObject *
@ -334,8 +325,7 @@ PySfFloatRect_Intersects(PySfFloatRect* self, PyObject *args)
PySfFloatRect *Rect=NULL, *OverlappingRect=NULL;
bool result;
if (! PyArg_ParseTuple(args, "O!|O!", &PySfFloatRectType, &Rect, &PySfFloatRectType, &OverlappingRect))
if (!PyArg_ParseTuple(args, "O!|O!:FloatRect.Intersects", &PySfFloatRectType, &Rect, &PySfFloatRectType, &OverlappingRect))
return NULL;
PySfFloatRectUpdateObj(self);
@ -344,10 +334,7 @@ PySfFloatRect_Intersects(PySfFloatRect* self, PyObject *args)
else
result = self->obj->Intersects(*(Rect->obj));
if (result)
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
return PyBool_FromLong(result);
}
@ -357,13 +344,10 @@ PySfIntRect_Contains(PySfIntRect* self, PyObject *args)
unsigned int x=0, y=0;
PySfIntRectUpdateObj(self);
if (! PyArg_ParseTuple(args, "II", &x, &y))
if (!PyArg_ParseTuple(args, "II:IntRect.Contains", &x, &y))
return NULL;
if (self->obj->Contains(x,y))
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
return PyBool_FromLong(self->obj->Contains(x,y));
}
static PyObject *
@ -373,7 +357,7 @@ PySfIntRect_Intersects(PySfIntRect* self, PyObject *args)
bool result;
PySfIntRectUpdateObj(self);
if (! PyArg_ParseTuple(args, "O!|O!", &PySfIntRectType, &Rect, &PySfIntRectType, &OverlappingRect))
if (!PyArg_ParseTuple(args, "O!|O!:IntRect.Intersects", &PySfIntRectType, &Rect, &PySfIntRectType, &OverlappingRect))
return NULL;
if (OverlappingRect)
@ -381,10 +365,7 @@ PySfIntRect_Intersects(PySfIntRect* self, PyObject *args)
else
result = self->obj->Intersects(*(Rect->obj));
if (result)
Py_RETURN_TRUE;
else
Py_RETURN_FALSE;
return PyBool_FromLong(result);
}
void

View File

@ -25,14 +25,9 @@
#ifndef __PYRECT_HPP
#define __PYRECT_HPP
#include <Python.h>
#include <SFML/Graphics/Rect.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
#include "offsetof.hpp"
typedef struct {
PyObject_HEAD

View File

@ -26,32 +26,25 @@
#include "Color.hpp"
#include "View.hpp"
#include "compat.hpp"
extern PyTypeObject PySfColorType;
extern PyTypeObject PySfViewType;
static PyMemberDef PySfRenderTarget_members[] = {
{NULL} /* Sentinel */
};
static void
PySfRenderTarget_dealloc(PySfRenderTarget *self)
{
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static PyObject *
PySfRenderTarget_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfRenderTarget *self;
self = (PySfRenderTarget *)type->tp_alloc(type, 0);
if (self != NULL)
{
}
return (PyObject *)self;
}
@ -62,11 +55,8 @@ PySfRenderTarget_Clear(PySfRenderTarget *self, PyObject *args)
int size = PyTuple_Size(args);
if (size == 1)
{
if (! PyArg_ParseTuple(args, "O!", &PySfColorType, &Color))
{
PyErr_SetString(PyExc_TypeError, "Argument is not a sf.Color");
if (!PyArg_ParseTuple(args, "O!:RenderTarget.Clear", &PySfColorType, &Color))
return NULL;
}
PySfColorUpdate(Color);
self->obj->Clear(*(Color->obj));
}
@ -97,9 +87,7 @@ PySfRenderTarget_GetView(PySfRenderTarget *self)
static PyObject *
PySfRenderTarget_PreserveOpenGLStates(PySfRenderTarget *self, PyObject *args)
{
bool Optimize = false;
if (PyObject_IsTrue(args))
Optimize = true;
bool Optimize = PyBool_AsBool(args);
self->obj->PreserveOpenGLStates(Optimize);
Py_RETURN_NONE;
}
@ -108,9 +96,9 @@ static PyObject *
PySfRenderTarget_SetView(PySfRenderTarget* self, PyObject *args)
{
PySfView *View = (PySfView *)args;
if (! PyObject_TypeCheck(View, &PySfViewType))
if (!PyObject_TypeCheck(View, &PySfViewType))
{
PyErr_SetString(PyExc_TypeError, "Argument is not a sf.View");
PyErr_SetString(PyExc_TypeError, "RenderTarget.SetView() Argument is not a sf.View");
return NULL;
}
self->obj->SetView( *(View->obj));
@ -146,8 +134,7 @@ Change the current active view. View must be a sf.View instance."},
};
PyTypeObject PySfRenderTargetType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"RenderTarget", /*tp_name*/
sizeof(PySfRenderTarget), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -175,7 +162,7 @@ PyTypeObject PySfRenderTargetType = {
0, /* tp_iter */
0, /* tp_iternext */
PySfRenderTarget_methods, /* tp_methods */
PySfRenderTarget_members, /* tp_members */
0, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */

View File

@ -25,12 +25,9 @@
#ifndef __PYRENDERTARGET_H
#define __PYRENDERTARGET_H
#include <SFML/Graphics/RenderTarget.hpp>
#include <Python.h>
#include <structmember.h>
#include <iostream>
#include <SFML/Graphics/RenderTarget.hpp>
typedef struct {
PyObject_HEAD

View File

@ -23,7 +23,6 @@
////////////////////////////////////////////////////////////
#include "RenderWindow.hpp"
#include "Event.hpp"
#include "VideoMode.hpp"
#include "Drawable.hpp"
@ -32,8 +31,11 @@
#include "View.hpp"
#include "Image.hpp"
#include "Window.hpp"
#include "WindowSettings.hpp"
#include "SFML/Window/WindowStyle.hpp"
#include "compat.hpp"
#include <SFML/Window/WindowStyle.hpp>
extern PyTypeObject PySfEventType;
@ -43,31 +45,21 @@ extern PyTypeObject PySfWindowType;
extern PyTypeObject PySfWindowSettingsType;
extern PyTypeObject PySfVideoModeType;
extern PyTypeObject PySfDrawableType;
extern PyTypeObject PySfRenderTargetType;
static PyMemberDef PySfRenderWindow_members[] = {
{NULL} /* Sentinel */
};
static void
PySfRenderWindow_dealloc(PySfRenderWindow* self)
{
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static PyObject *
PySfRenderWindow_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfRenderWindow *self;
self = (PySfRenderWindow *)type->tp_alloc(type, 0);
if (self != NULL)
{
}
return (PyObject *)self;
}
@ -76,7 +68,8 @@ PySfRenderWindow_init(PySfRenderWindow *self, PyObject *args, PyObject *kwds)
{
self->obj = new sf::RenderWindow();
if (PyTuple_Size(args) > 0)
PySfWindow_Create((PySfWindow *)self, args, kwds);
if (PySfWindow_Create((PySfWindow *)self, args, kwds) == NULL)
return -1;
return 0;
}
@ -98,7 +91,7 @@ PySfRenderWindow_ConvertCoords(PySfRenderWindow *self, PyObject *args)
sf::View *TargetView = NULL;
sf::Vector2f Vect;
if (! PyArg_ParseTuple(args, "II|O!", &WindowX, &WindowY, &PySfViewType, &PyTargetView))
if (!PyArg_ParseTuple(args, "II|O!:RenderWindow.ConvertCoords", &WindowX, &WindowY, &PySfViewType, &PyTargetView))
return NULL;
if (PyTargetView)
@ -154,10 +147,9 @@ PySfRenderWindow_Draw(PySfRenderWindow *self, PyObject *args)
Py_DECREF(iterator);
if (PyErr_Occurred()) {
if (PyErr_Occurred())
return NULL;
}
}
Py_RETURN_NONE;
}
@ -175,8 +167,7 @@ Draw something on the window. The argument can be a drawable or any object suppo
};
PyTypeObject PySfRenderWindowType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"RenderWindow", /*tp_name*/
sizeof(PySfRenderWindow), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -196,7 +187,14 @@ PyTypeObject PySfRenderWindowType = {
0, /*tp_setattro*/
0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
"Simple wrapper for sf.Window that allows easy 2D rendering.", /* tp_doc */
"Simple wrapper for sf.Window that allows easy 2D rendering.\n\
Default constructor : sf.RenderWindow()\n\
Other constructor : sf.RenderWindow(Mode, Title, Style::Resize|Style::Close, Params = WindowSettings())\n\
Parameters:\n\
Mode : Video mode to use\n\
Title : Title of the window\n\
WindowStyle : Window style (Resize | Close by default)\n\
Params : Creation parameters (see default constructor for default values)", /* tp_doc */
0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
@ -204,7 +202,7 @@ PyTypeObject PySfRenderWindowType = {
0, /* tp_iter */
0, /* tp_iternext */
PySfRenderWindow_methods, /* tp_methods */
PySfRenderWindow_members, /* tp_members */
0, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */

View File

@ -25,13 +25,9 @@
#ifndef __PYRENDERWINDOW_HPP
#define __PYRENDERWINDOW_HPP
#include <SFML/Graphics.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
#include "WindowSettings.hpp"
#include <SFML/Graphics.hpp>
typedef struct {
PyObject_HEAD

View File

@ -25,11 +25,9 @@
#ifndef __PYSLEEP_HPP
#define __PYSLEEP_HPP
#include <SFML/System/Sleep.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
#include <SFML/System/Sleep.hpp>
PyObject *
PySFML_Sleep (PyObject *self, PyObject *args);

View File

@ -23,6 +23,11 @@
////////////////////////////////////////////////////////////
#include "Sprite.hpp"
#include "Drawable.hpp"
#include "Rect.hpp"
#include "Color.hpp"
#include "compat.hpp"
extern PyTypeObject PySfColorType;
@ -30,19 +35,16 @@ extern PyTypeObject PySfImageType;
extern PyTypeObject PySfIntRectType;
extern PyTypeObject PySfDrawableType;
static PyMemberDef PySfSprite_members[] = {
{NULL} /* Sentinel */
};
static void
PySfSprite_dealloc(PySfSprite *self)
{
if (self->Image != NULL)
{
Py_DECREF(self->Image);
}
delete self->obj;
self->ob_type->tp_free((PyObject*)self);
free_object(self);
}
static PyObject *
@ -69,7 +71,7 @@ PySfSprite_init(PySfSprite *self, PyObject *args, PyObject *kwds)
PySfImage *Image=NULL;
PySfColor *Color=NULL;
if (! PyArg_ParseTupleAndKeywords(args, kwds, "O!|fffffO!", (char **)kwlist, &PySfImageType, &Image, &X, &Y, &ScaleX, &ScaleY, &Rotation, &PySfColorType, &Color))
if (! PyArg_ParseTupleAndKeywords(args, kwds, "O!|fffffO!:Sprite.__init__", (char **)kwlist, &PySfImageType, &Image, &X, &Y, &ScaleX, &ScaleY, &Rotation, &PySfColorType, &Color))
return -1;
Py_INCREF(Image);
@ -79,7 +81,6 @@ PySfSprite_init(PySfSprite *self, PyObject *args, PyObject *kwds)
else
self->obj = new sf::Sprite(*(Image->obj), sf::Vector2f(X, Y), sf::Vector2f(ScaleX, ScaleY), Rotation);
return 0;
}
@ -91,7 +92,7 @@ PySfSprite_SetImage(PySfSprite* self, PyObject *args)
PySfImage *Image = (PySfImage *)args;
if (! PyObject_TypeCheck(Image, &PySfImageType))
{
PyErr_SetString(PyExc_TypeError, "Argument is not a sfImage");
PyErr_SetString(PyExc_TypeError, "Sprite.SetImage() Argument is not a sf.Image");
return NULL;
}
Py_DECREF(self->Image);
@ -114,8 +115,7 @@ PySfSprite_GetPixel(PySfSprite* self, PyObject *args)
PySfColor *Color;
unsigned int x=0, y=0;
if (! PyArg_ParseTuple(args, "II", &x, &y))
if (!PyArg_ParseTuple(args, "II:Sprite.GetPixel", &x, &y))
return NULL;
Color = GetNewPySfColor();
@ -133,7 +133,7 @@ PySfSprite_Resize(PySfSprite* self, PyObject *args)
{
float W=0, H=0;
if (! PyArg_ParseTuple(args, "ff", &W, &H))
if (! PyArg_ParseTuple(args, "ff:Sprite.Resize", &W, &H))
return NULL;
self->obj->Resize(W,H);
@ -161,7 +161,7 @@ PySfSprite_SetSubRect(PySfSprite* self, PyObject *args)
PySfIntRect *Rect = (PySfIntRect *)args;
if (! PyObject_TypeCheck(Rect, &PySfIntRectType))
{
PyErr_SetString(PyExc_TypeError, "Argument is not a sf.IntRect instance");
PyErr_SetString(PyExc_TypeError, "Sprite.SetSubRect() Argument is not a sf.IntRect instance");
return NULL;
}
self->obj->SetSubRect(*(Rect->obj));
@ -171,20 +171,14 @@ PySfSprite_SetSubRect(PySfSprite* self, PyObject *args)
static PyObject *
PySfSprite_FlipX(PySfSprite* self, PyObject *args)
{
bool Flip = false;
if (PyObject_IsTrue(args))
Flip = true;
self->obj->FlipX(Flip);
self->obj->FlipX(PyBool_AsBool(args));
Py_RETURN_NONE;
}
static PyObject *
PySfSprite_FlipY(PySfSprite* self, PyObject *args)
{
bool Flip = false;
if (PyObject_IsTrue(args))
Flip = true;
self->obj->FlipY(Flip);
self->obj->FlipY(PyBool_AsBool(args));
Py_RETURN_NONE;
}
@ -211,8 +205,7 @@ static PyMethodDef PySfSprite_methods[] = {
};
PyTypeObject PySfSpriteType = {
PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
head_init
"Sprite", /*tp_name*/
sizeof(PySfSprite), /*tp_basicsize*/
0, /*tp_itemsize*/
@ -240,7 +233,7 @@ PyTypeObject PySfSpriteType = {
0, /* tp_iter */
0, /* tp_iternext */
PySfSprite_methods, /* tp_methods */
PySfSprite_members, /* tp_members */
0, /* tp_members */
0, /* tp_getset */
&PySfDrawableType, /* tp_base */
0, /* tp_dict */

View File

@ -25,16 +25,11 @@
#ifndef __PYSPRITE_HPP
#define __PYSPRITE_HPP
#include <SFML/Graphics/Sprite.hpp>
#include <SFML/Graphics/Image.hpp>
#include <iostream>
#include <Python.h>
#include <structmember.h>
#include "Drawable.hpp"
#include <SFML/Graphics/Sprite.hpp>
#include "Image.hpp"
#include "Rect.hpp"
typedef struct {
PyObject_HEAD

View File

@ -169,7 +169,8 @@ PySfWindow_init(PySfWindow *self, PyObject *args, PyObject *kwds)
{
self->obj = new sf::Window();
if (PyTuple_Size(args) > 0)
PySfWindow_Create(self, args, kwds);
if (PySfWindow_Create(self, args, kwds) == NULL)
return -1;
return 0;
}

42
python/src/compat.hpp Normal file
View File

@ -0,0 +1,42 @@
////////////////////////////////////////////////////////////
//
// PySFML - Python binding for SFML (Simple and Fast Multimedia Library)
// Copyright (C) 2007, 2008 Rémi Koenig (remi.k2620@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it freely,
// subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented;
// you must not claim that you wrote the original software.
// If you use this software in a product, an acknowledgment
// in the product documentation would be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such,
// and must not be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source distribution.
//
////////////////////////////////////////////////////////////
#ifndef __PYCOMPAT_HPP
#define __PYCOMPAT_HPP
#if PY_MAJOR_VERSION >= 3
#define IS_PY3K
#define head_init PyVarObject_HEAD_INIT(NULL, 0)
#else
#define Py_TYPE(a) a->ob_type
#define head_init PyObject_HEAD_INIT(NULL) 0,
#define PyBytes_FromStringAndSize PyString_FromStringAndSize
#endif
#define free_object(a) Py_TYPE(a)->tp_free((PyObject*)a)
#define PyBool_AsBool(a) ((PyObject_IsTrue(a))?true:false)
#endif

View File

@ -35,6 +35,8 @@
#include "String.hpp"
#include "SoundStream.hpp"
#include "compat.hpp"
extern PyTypeObject PySfClockType;
extern PyTypeObject PySfEventType;
@ -90,107 +92,127 @@ static PyMethodDef module_methods[] = {
{NULL} /* Sentinel */
};
#ifdef IS_PY3K
#define INITERROR return NULL
static PyModuleDef module_def = {
PyModuleDef_HEAD_INIT,
"noddy",
"Example module that creates an extension type.",
-1,
module_methods, NULL, NULL, NULL, NULL
};
PyObject *
PyInit_sf(void)
#else
#define INITERROR return
#ifndef PyMODINIT_FUNC /* declarations for DLL import/export */
#define PyMODINIT_FUNC void
#endif
PyMODINIT_FUNC
initsf(void)
#endif
{
PyObject *m;
if (PyType_Ready(&PySfClockType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfWindowType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfWindowSettingsType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfStyleType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfRenderTargetType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfRenderWindowType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfVideoModeType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfViewType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfInputType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfEventType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfEventTextType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfEventKeyType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfEventMouseMoveType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfEventMouseButtonType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfEventMouseWheelType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfEventJoyMoveType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfEventJoyButtonType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfEventSizeType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfKeyType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfJoyType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfMouseType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfDrawableType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfBlendType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfSpriteType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfFontType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfGlyphType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfStringType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfPostFXType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfImageType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfShapeType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfColorType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfIntRectType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfFloatRectType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfMusicType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfSoundType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfSoundBufferType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfSoundBufferRecorderType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfSoundRecorderType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfSoundStreamType) < 0)
return;
INITERROR;
if (PyType_Ready(&PySfListenerType) < 0)
return;
INITERROR;
#ifdef IS_PY3K
m = PyModule_Create(&module_def);
#else
m = Py_InitModule3("sf", module_methods, "Python binding for sfml (Simple Fast Media Library)");
#endif
if (m == NULL)
return;
INITERROR;
Py_INCREF(&PySfClockType);
PyModule_AddObject(m, "Clock", (PyObject *)&PySfClockType);
@ -275,5 +297,9 @@ initsf(void)
PySfSound_InitConst();
PySfSoundStream_InitConst();
PySfString_InitConst();
#ifdef IS_PY3K
return m;
#endif
}