Split __init__ into __init__ and __new__, code clean up

git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/trunk@1056 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
remi-k 2009-03-14 22:28:16 +00:00
parent 15ba8f9b3c
commit d4e7e7724f
30 changed files with 305 additions and 542 deletions

View File

@ -1 +1,2 @@
__all__ = ['sf']

View File

@ -41,21 +41,12 @@ PySfClock_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
self = (PySfClock *)type->tp_alloc(type, 0);
if (self != NULL)
{
}
self->obj = new sf::Clock();
return (PyObject *)self;
}
static int
PySfClock_init(PySfClock *self, PyObject *args, PyObject *kwds)
{
self->obj = new sf::Clock();
return 0;
}
static PyObject*
PySfClock_GetElapsedTime(PySfClock *self)
{
@ -111,7 +102,7 @@ PyTypeObject PySfClockType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfClock_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfClock_new, /* tp_new */
};

View File

@ -57,52 +57,28 @@ static PyObject *
PySfColor_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfColor *self;
self = (PySfColor *)type->tp_alloc(type, 0);
if (self != NULL)
{
self->r = 0;
self->g = 0;
self->b = 0;
self->a = 255;
self->obj = new sf::Color(0, 0, 0, 255);
}
return (PyObject *)self;
}
static int
PySfColor_init(PySfColor *self, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"r", "g", "b", "a", NULL};
long int rgba=0;
if (PyTuple_Size(args) == 1)
{
if ( !PyArg_ParseTuple(args, "l", &rgba))
if (!PyArg_ParseTupleAndKeywords(args, kwds, "BBB|B:Color.__init__", (char **)kwlist, &(self->r), &(self->g), &(self->b), &(self->a)))
return -1;
self->r = rgba & 0xff;
self->g = rgba>>8 & 0xff;
self->b = rgba>>16 & 0xff;
self->a = rgba>>24 & 0xff;
}
else if (PyTuple_Size(args) > 1)
if (! PyArg_ParseTupleAndKeywords(args, kwds, "BBB|B", (char **)kwlist, &(self->r), &(self->g), &(self->b), &(self->a)))
return -1;
self->obj = new sf::Color(self->r, self->g, self->b, self->a);
PySfColorUpdate(self);
return 0;
}
static PyMethodDef PySfColor_methods[] = {
{NULL} /* Sentinel */
};
PyTypeObject PySfColorType = {
head_init
"Color", /*tp_name*/
@ -131,7 +107,7 @@ PyTypeObject PySfColorType = {
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
PySfColor_methods, /* tp_methods */
0, /* tp_methods */
PySfColor_members, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
@ -147,7 +123,7 @@ PyTypeObject PySfColorType = {
PySfColor *
GetNewPySfColor()
{
return (PySfColor *)PySfColor_new(&PySfColorType, NULL, NULL);
return PyObject_New(PySfColor, &PySfColorType);
}
void
@ -218,16 +194,5 @@ PySfColor_InitConst()
Cyan->a = sf::Color::Cyan.a;
PyDict_SetItemString(PySfColorType.tp_dict, "Cyan", (PyObject *)Cyan);
Py_DECREF(Cyan);
/*
static const Color Black; ///< Black predefined color
static const Color White; ///< White predefined color
static const Color Red; ///< Red predefined color
static const Color Green; ///< Green predefined color
static const Color Blue; ///< Blue predefined color
static const Color Yellow; ///< Yellow predefined color
static const Color Magenta; ///< Magenta predefined color
static const Color Cyan; ///< Cyan predefined color
*/
}

View File

@ -36,7 +36,10 @@ void CustomDrawable::Render(sf::RenderTarget& Target) const
if (RenderFunction)
PyObject_CallFunction(RenderFunction, (char *)"O", RenderWindow);
else
{
PyErr_SetString(PyExc_RuntimeError, "Custom drawables must have a render method defined");
PyErr_Print();
}
}
static void
@ -51,21 +54,17 @@ PySfDrawable_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfDrawable *self;
self = (PySfDrawable *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static int
PySfDrawable_init(PySfDrawable *self, PyObject *args, PyObject *kwds)
if (self != NULL)
{
self->IsCustom = true;
self->obj = new CustomDrawable();
if (PyObject_HasAttrString((PyObject *)self, "Render"))
{
self->obj->RenderFunction = PyObject_GetAttrString((PyObject *)self, "Render");
}
else
self->obj->RenderFunction = NULL;
self->obj->RenderWindow = NULL;
return 0;
}
return (PyObject *)self;
}
static PyObject *
@ -318,15 +317,9 @@ PyTypeObject PySfDrawableType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfDrawable_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfDrawable_new, /* tp_new */
};
PySfDrawable *
GetNewPySfDrawable()
{
return (PySfDrawable *)PySfDrawable_new(&PySfDrawableType, NULL, NULL);
}

View File

@ -44,11 +44,9 @@ public :
typedef struct {
PyObject_HEAD
bool IsCustom;
CustomDrawable *obj;
} PySfDrawable;
PySfDrawable *
GetNewPySfDrawable();
#endif

View File

@ -51,12 +51,6 @@ PySfEventText_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return (PyObject *)self;
}
int
PySfEventText_init(PySfEventText *self, PyObject *args, PyObject *kwds)
{
return 0;
}
void
PySfEventText_dealloc(PySfEventText* self)
{
@ -99,7 +93,7 @@ PyTypeObject PySfEventTextType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfEventText_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfEventText_new, /* tp_new */
};
@ -129,12 +123,6 @@ PySfEventKey_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return (PyObject *)self;
}
int
PySfEventKey_init(PySfEventKey *self, PyObject *args, PyObject *kwds)
{
return 0;
}
void
PySfEventKey_dealloc(PySfEventKey* self)
{
@ -185,7 +173,7 @@ PyTypeObject PySfEventKeyType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfEventKey_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfEventKey_new, /* tp_new */
};
@ -210,12 +198,6 @@ PySfEventMouseMove_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return (PyObject *)self;
}
int
PySfEventMouseMove_init(PySfEventMouseMove *self, PyObject *args, PyObject *kwds)
{
return 0;
}
void
PySfEventMouseMove_dealloc(PySfEventMouseMove *self)
{
@ -265,7 +247,7 @@ PyTypeObject PySfEventMouseMoveType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfEventMouseMove_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfEventMouseMove_new, /* tp_new */
};
@ -291,12 +273,6 @@ PySfEventMouseButton_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return (PyObject *)self;
}
int
PySfEventMouseButton_init(PySfEventMouseButton *self, PyObject *args, PyObject *kwds)
{
return 0;
}
void
PySfEventMouseButton_dealloc(PySfEventMouseButton* self)
{
@ -347,7 +323,7 @@ PyTypeObject PySfEventMouseButtonType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfEventMouseButton_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfEventMouseButton_new, /* tp_new */
};
@ -371,12 +347,6 @@ PySfEventMouseWheel_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return (PyObject *)self;
}
int
PySfEventMouseWheel_init(PySfEventMouseWheel *self, PyObject *args, PyObject *kwds)
{
return 0;
}
void
PySfEventMouseWheel_dealloc(PySfEventMouseWheel* self)
{
@ -424,7 +394,7 @@ PyTypeObject PySfEventMouseWheelType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfEventMouseWheel_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfEventMouseWheel_new, /* tp_new */
};
@ -450,12 +420,6 @@ PySfEventJoyMove_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return (PyObject *)self;
}
int
PySfEventJoyMove_init(PySfEventJoyMove *self, PyObject *args, PyObject *kwds)
{
return 0;
}
void
PySfEventJoyMove_dealloc(PySfEventJoyMove* self)
{
@ -506,7 +470,7 @@ PyTypeObject PySfEventJoyMoveType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfEventJoyMove_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfEventJoyMove_new, /* tp_new */
};
@ -531,12 +495,6 @@ PySfEventJoyButton_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return (PyObject *)self;
}
int
PySfEventJoyButton_init(PySfEventJoyButton *self, PyObject *args, PyObject *kwds)
{
return 0;
}
void
PySfEventJoyButton_dealloc(PySfEventJoyButton* self)
{
@ -586,7 +544,7 @@ PyTypeObject PySfEventJoyButtonType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfEventJoyButton_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfEventJoyButton_new, /* tp_new */
};
@ -611,12 +569,6 @@ PySfEventSize_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return (PyObject *)self;
}
int
PySfEventSize_init(PySfEventSize *self, PyObject *args, PyObject *kwds)
{
return 0;
}
void
PySfEventSize_dealloc(PySfEventSize* self)
{
@ -665,7 +617,7 @@ PyTypeObject PySfEventSizeType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfEventSize_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfEventSize_new, /* tp_new */
};
@ -680,13 +632,6 @@ PyTypeObject PySfEventSizeType = {
////////////////////////////////////
static int
PySfEvent_init(PySfEvent *self, PyObject *args, PyObject *kwds)
{
self->obj = new sf::Event();
return 0;
}
static PyObject *
PySfEvent_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
@ -703,6 +648,7 @@ PySfEvent_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
self->JoyMove = (PySfEventJoyMove *)PySfEventJoyMove_new(&PySfEventJoyMoveType, NULL, NULL);
self->JoyButton = (PySfEventJoyButton *)PySfEventJoyButton_new(&PySfEventJoyButtonType, NULL, NULL);
self->Size = (PySfEventSize *)PySfEventSize_new(&PySfEventSizeType, NULL, NULL);
self->obj = new sf::Event();
}
return (PyObject *)self;
@ -736,10 +682,6 @@ static PyMemberDef PySfEvent_members[] = {
{NULL} /* Sentinel */
};
static PyMethodDef PySfEvent_methods[] = {
{NULL} /* Sentinel */
};
PyTypeObject PySfEventType = {
head_init
"Event", /*tp_name*/
@ -768,7 +710,7 @@ PyTypeObject PySfEventType = {
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
PySfEvent_methods, /* tp_methods */
0, /* tp_methods */
PySfEvent_members, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
@ -776,7 +718,7 @@ PyTypeObject PySfEventType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfEvent_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfEvent_new, /* tp_new */
};

View File

@ -42,15 +42,11 @@ PySfFont_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
PySfFont *self;
self = (PySfFont *)type->tp_alloc(type, 0);
if (self != NULL)
self->Owner = true;
return (PyObject *)self;
}
static int
PySfFont_init(PySfFont *self, PyObject *args, PyObject *kwds)
{
self->Owner = true;
self->obj = new sf::Font();
return 0;
}
return (PyObject *)self;
}
static PyObject *
@ -238,7 +234,7 @@ PyTypeObject PySfFontType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfFont_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfFont_new, /* tp_new */
};
@ -246,7 +242,7 @@ PyTypeObject PySfFontType = {
PySfFont *
GetNewPySfFont()
{
return (PySfFont *)PySfFont_new(&PySfFontType, NULL, NULL);
return PyObject_New(PySfFont, &PySfFontType);
}

View File

@ -91,20 +91,12 @@ PySfGlyph_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
self->Advance = 0;
self->Rectangle = GetNewPySfIntRect();
self->TexCoords = GetNewPySfFloatRect();
}
return (PyObject *)self;
}
static int
PySfGlyph_init(PySfGlyph *self, PyObject *args, PyObject *kwds)
{
self->obj = new sf::Glyph();
self->Rectangle->obj = &(self->obj->Rectangle);
self->TexCoords->obj = &(self->obj->TexCoords);
return 0;
}
return (PyObject *)self;
}
PyTypeObject PySfGlyphType = {
head_init
@ -142,7 +134,7 @@ PyTypeObject PySfGlyphType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfGlyph_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfGlyph_new, /* tp_new */
};
@ -150,6 +142,6 @@ PyTypeObject PySfGlyphType = {
PySfGlyph *
GetNewPySfGlyph()
{
return (PySfGlyph *)PySfGlyph_new(&PySfGlyphType, NULL, NULL);
return PyObject_New(PySfGlyph, &PySfGlyphType);
}

View File

@ -41,13 +41,7 @@ PySfImage_dealloc(PySfImage* self)
}
static PyObject *
PySfImage_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfImage *self;
self = (PySfImage *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
PySfImage_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
static PyObject *
PySfImage_Create(PySfImage* self, PyObject *args, PyObject *kwds)
@ -205,9 +199,6 @@ PySfImage_SaveToFile (PySfImage *self, PyObject *args)
save_to_file(self, args);
}
static int
PySfImage_init(PySfImage *self, PyObject *args, PyObject *kwds);
static PyObject *
PySfImage_Bind(PySfImage *self)
{
@ -248,7 +239,7 @@ PySfImage_GetTexCoords(PySfImage* self, PyObject *args)
bool Adjust = false;
PyObject *AdjustObj = NULL;
if (! PyArg_ParseTuple(args, "O!|O", &PySfIntRectType, &RectArg, &AdjustObj))
if (!PyArg_ParseTuple(args, "O!|O:Image.GetTextCoords", &PySfIntRectType, &RectArg, &AdjustObj))
return NULL;
if (AdjustObj)
@ -267,8 +258,26 @@ PySfImage_GetTexCoords(PySfImage* self, PyObject *args)
return (PyObject *)Rect;
}
static int
PySfImage_init(PySfImage *self, PyObject *args, PyObject *kwds)
{
int size = PyTuple_Size(args);
if (size > 0)
{
if (PySfImage_Create(self, args, kwds) == NULL)
{
if (size != 3)
return -1;
else if (PySfImage_LoadFromPixels(self, args) == NULL)
return -1;
else PyErr_Clear();
}
}
return 0;
}
static PyObject *
PySfImage_Copy(PySfImage* self, PyObject *args);
PySfImage_Copy(PySfImage* self, PyObject *args, PyObject *kwds);
static PyMethodDef PySfImage_methods[] = {
{"Copy", (PyCFunction)PySfImage_Copy, METH_VARARGS, "Copy(Source, DestX, DestY, SourceRect = sf.IntRect(0,0,0,0))\n\
@ -352,44 +361,38 @@ Copy constructor : sf.Image(Copy) where Copy is a sf.Image instance.", /* tp_doc
PySfImage_new, /* tp_new */
};
static int
PySfImage_init(PySfImage *self, PyObject *args, PyObject *kwds)
static PyObject *
PySfImage_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
int size = PyTuple_Size(args);
if (size == 1)
PySfImage *self;
self = (PySfImage *)type->tp_alloc(type, 0);
if (self != NULL)
{
if (PyTuple_Size(args) == 1)
{
PySfImage *Image;
if (PyArg_ParseTuple(args, "O!", &PySfImageType, &Image))
{
self->obj = new sf::Image(*(Image->obj));
return 0;
}
else PyErr_Clear();
}
self->obj = new sf::Image();
if (PyTuple_Size(args) > 0)
{
if (PySfImage_Create(self, args, kwds) == NULL)
{
if (size != 3)
return -1;
else if (PySfImage_LoadFromPixels(self, args) == NULL)
return -1;
else PyErr_Clear();
else self->obj = new sf::Image();
}
}
return 0;
return (PyObject *)self;
}
static PyObject *
PySfImage_Copy(PySfImage* self, PyObject *args)
PySfImage_Copy(PySfImage* self, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"Source", "DestX", "DestY", "SourceRect", "ApplyAlpha", NULL};
PySfIntRect *SourceRect = NULL;
PySfImage *Source = NULL;
unsigned int DestX, DestY;
PyObject *PyApplyAlpha;
PyObject *PyApplyAlpha = NULL;
bool ApplyAlpha = false;
if (! PyArg_ParseTuple(args, "O!II|O!O:Image.Copy", &PySfImageType, &Source, &DestX, &DestY, &PySfIntRectType, &SourceRect, &PyApplyAlpha))
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!II|O!O:Image.Copy", (char **)kwlist, &PySfImageType, &Source, &DestX, &DestY, &PySfIntRectType, &SourceRect, &PyApplyAlpha))
return NULL;
if (PyApplyAlpha)
@ -410,6 +413,6 @@ PySfImage_Copy(PySfImage* self, PyObject *args)
PySfImage *
GetNewPySfImage()
{
return (PySfImage *)PySfImage_new(&PySfImageType, NULL, NULL);
return PyObject_New(PySfImage, &PySfImageType);
}

View File

@ -29,17 +29,9 @@
static PyObject *
PySfInput_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfInput *self;
self = (PySfInput *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static int
PySfInput_init(PySfInput *self, PyObject *args, PyObject *kwds)
{
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;
return NULL;
}
static PyObject*
@ -129,7 +121,7 @@ PyTypeObject PySfInputType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfInput_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfInput_new, /* tp_new */
};
@ -137,6 +129,6 @@ PyTypeObject PySfInputType = {
PySfInput *
GetNewPySfInput()
{
return (PySfInput *)PySfInput_new(&PySfInputType, NULL, NULL);
return PyObject_New(PySfInput, &PySfInputType);
}

View File

@ -27,14 +27,6 @@
#include "compat.hpp"
static PyObject *
PySfListener_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfListener *self;
self = (PySfListener *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static PyObject *
PySfListener_SetGlobalVolume(PySfListener* self, PyObject *args)
{
@ -130,7 +122,7 @@ PyTypeObject PySfListenerType = {
0, /* tp_dictoffset */
0, /* tp_init */
0, /* tp_alloc */
PySfListener_new, /* tp_new */
0, /* tp_new */
};

View File

@ -40,28 +40,16 @@ PySfMusic_dealloc(PySfMusic *self)
static PyObject *
PySfMusic_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
unsigned int BufferSize=44100;
PySfMusic *self;
self = (PySfMusic *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static int
PySfMusic_init(PySfMusic *self, PyObject *args, PyObject *kwds)
if (self != NULL)
{
unsigned int BufferSize=44100;
int size = PyTuple_Size(args);
if (size == 1)
{
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");
}
if (!PyArg_ParseTuple(args, "|I:Music.__new__", &BufferSize))
return NULL;
self->obj = new sf::Music(BufferSize);
return 0;
}
return (PyObject *)self;
}
static PyObject*
@ -148,7 +136,7 @@ BufferSize : Size of the internal buffer, expressed in number of samples (ie. si
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfMusic_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfMusic_new, /* tp_new */
};

View File

@ -41,12 +41,7 @@ PySfPostFX_dealloc(PySfPostFX *self)
}
static PyObject *
PySfPostFX_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfPostFX *self;
self = (PySfPostFX *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
PySfPostFX_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
static PyObject *
PySfPostFX_LoadFromFile (PySfPostFX *self, PyObject *args)
@ -73,10 +68,6 @@ PySfPostFX_LoadFromMemory (PySfPostFX *self, PyObject *args)
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:PostFX.SetParameter", &Name, &X, &Y, &Z, &W)) return NULL;
switch (size)
@ -179,24 +170,25 @@ Copy constructor : sf.PostFX(Copy) where Copy is a sf.PostFX instance.", /* tp_d
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfPostFX_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfPostFX_new, /* tp_new */
};
static int
PySfPostFX_init(PySfPostFX *self, PyObject *args)
{
if (PyTuple_Size(args) == 1)
{
PySfPostFX *Copy;
if (PyArg_ParseTuple(args, "O!", &PySfPostFXType, &Copy))
self->obj = new sf::PostFX(*(Copy->obj));
else
return -1;
}
else
self->obj = new sf::PostFX();
return 0;
}
static PyObject *
PySfPostFX_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfPostFX *self;
self = (PySfPostFX *)type->tp_alloc(type, 0);
if (self != NULL)
{
PySfPostFX *Copy = NULL;
self->IsCustom = false;
if (!PyArg_ParseTuple(args, "|O!", &PySfPostFXType, &Copy))
return NULL;
if (Copy) self->obj = new sf::PostFX(*(Copy->obj));
else self->obj = new sf::PostFX();
}
return (PyObject *)self;
}

View File

@ -31,6 +31,7 @@
typedef struct {
PyObject_HEAD
bool IsCustom;
sf::PostFX *obj;
} PySfPostFX;

View File

@ -63,34 +63,31 @@ PySfFloatRect_dealloc(PySfFloatRect* self)
static PyObject *
PySfIntRect_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"Left", "Top", "Right", "Bottom", NULL};
PySfIntRect *self;
self = (PySfIntRect *)type->tp_alloc(type, 0);
if (self != NULL)
{
if (!PyArg_ParseTupleAndKeywords(args, kwds, "iiii:IntRect.__init__", (char **)kwlist, &(self->Left), &(self->Top), &(self->Right), &(self->Bottom)))
return NULL;
self->obj = new sf::IntRect(self->Left, self->Top, self->Right, self->Bottom);
}
return (PyObject *)self;
}
static PyObject *
PySfFloatRect_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"Left", "Top", "Right", "Bottom", NULL};
PySfFloatRect *self;
self = (PySfFloatRect *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static int
PySfIntRect_init(PySfIntRect *self, PyObject *args, PyObject *kwds)
if (self != NULL)
{
const char *kwlist[] = {"Left", "Top", "Right", "Bottom", NULL};
int Left, Top, Right, Bottom;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "iiii:IntRect.__init__", (char **)kwlist, &Left, &Top, &Right, &Bottom))
return -1;
self->Left = Left;
self->Top = Top;
self->Right = Right;
self->Bottom = Bottom;
self->obj = new sf::IntRect(Left, Top, Right, Bottom);
return 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "ffff:FloatRect.__init__", (char **)kwlist, &(self->Left), &(self->Top), &(self->Right), &(self->Bottom)))
return NULL;
self->obj = new sf::FloatRect(self->Left, self->Top, self->Right, self->Bottom);
}
return (PyObject *)self;
}
static PyObject *
@ -133,24 +130,6 @@ PySfFloatRect_Contains(PySfFloatRect* self, PyObject *args);
static PyObject *
PySfFloatRect_Intersects(PySfFloatRect* self, PyObject *args);
static int
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:FloatRect.__init__", (char **)kwlist, &Left, &Top, &Right, &Bottom))
return -1;
self->Left = Left;
self->Top = Top;
self->Right = Right;
self->Bottom = Bottom;
self->obj = new sf::FloatRect(Left, Top, Right, Bottom);
return 0;
}
static PyObject *
PySfIntRect_Offset(PySfIntRect* self, PyObject *args)
{
@ -259,7 +238,7 @@ PyTypeObject PySfIntRectType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfIntRect_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfIntRect_new, /* tp_new */
};
@ -301,7 +280,7 @@ PyTypeObject PySfFloatRectType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfFloatRect_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfFloatRect_new, /* tp_new */
};
@ -406,13 +385,13 @@ PySfFloatRectUpdateSelf(PySfFloatRect *self)
PySfIntRect *
GetNewPySfIntRect()
{
return (PySfIntRect *)PySfIntRect_new(&PySfIntRectType, NULL, NULL);
return PyObject_New(PySfIntRect, &PySfIntRectType);
}
PySfFloatRect *
GetNewPySfFloatRect()
{
return (PySfFloatRect *)PySfFloatRect_new(&PySfFloatRectType, NULL, NULL);
return PyObject_New(PySfFloatRect, &PySfFloatRectType);
}

View File

@ -53,17 +53,9 @@ PySfRenderWindow_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfRenderWindow *self;
self = (PySfRenderWindow *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static int
PySfRenderWindow_init(PySfRenderWindow *self, PyObject *args, PyObject *kwds)
{
if (self != NULL)
self->obj = new sf::RenderWindow();
if (PyTuple_Size(args) > 0)
if (PySfWindow_Create((PySfWindow *)self, args, kwds) == NULL)
return -1;
return 0;
return (PyObject *)self;
}
static PyObject *
@ -99,7 +91,7 @@ PySfRenderWindow_DrawObject(PySfRenderWindow *RenderWindow, PySfDrawable *Obj)
{
if (PyObject_TypeCheck((PyObject *)Obj, &PySfDrawableType))
{
if (PyObject_HasAttrString((PyObject *)Obj, "Render"))
if (Obj->IsCustom)
{
Py_CLEAR(Obj->obj->RenderWindow);
Py_INCREF(RenderWindow);
@ -146,23 +138,14 @@ PySfRenderWindow_Draw(PySfRenderWindow *self, PyObject *args)
static PyObject *
PySfRenderWindow_Clear(PySfRenderWindow *self, PyObject *args)
{
PySfColor *Color;
int size = PyTuple_Size(args);
if (size == 1)
{
if (!PyArg_ParseTuple(args, "O!:RenderWindow.Clear", &PySfColorType, &Color))
PySfColor *Color = NULL;
if (!PyArg_ParseTuple(args, "|O!:RenderWindow.Clear", &PySfColorType, &Color))
return NULL;
PySfColorUpdate(Color);
self->obj->Clear(*(Color->obj));
}
else if (size == 0)
{
self->obj->Clear(sf::Color::Black);
}
if (Color == NULL) self->obj->Clear(sf::Color::Black);
else
{
PyErr_SetString(PyExc_TypeError, "RenderWindow.Clear() takes one or zero argument");
return NULL;
PySfColorUpdate(Color);
self->obj->Clear(*(Color->obj));
}
Py_RETURN_NONE;
}
@ -281,7 +264,7 @@ Parameters:\n\
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfRenderWindow_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfRenderWindow_new, /* tp_new */
};

View File

@ -45,14 +45,12 @@ PySfShape_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfShape *self;
self = (PySfShape *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static int
PySfShape_init(PySfShape *self, PyObject *args)
if (self != NULL)
{
self->obj = new sf::Shape();
return 0;
self->IsCustom = false;
}
return (PyObject *)self;
}
// void AddPoint(float X, float Y, const Color& Col = Color(255, 255, 255), const Color& OutlineCol = Color(0, 0, 0));
@ -231,7 +229,7 @@ PySfShape_SetPointOutlineColor(PySfShape* self, PyObject *args)
{
unsigned int Index;
PySfColor *Color;
if (!PyArg_ParseTuple(args, "IO!:Shape:SetPointOutlineColor", &Index, &PySfColorType, &Color))
if (!PyArg_ParseTuple(args, "IO!:Shape.SetPointOutlineColor", &Index, &PySfColorType, &Color))
return NULL;
PySfColorUpdate(Color);
self->obj->SetPointOutlineColor(Index, *(Color->obj));
@ -365,7 +363,7 @@ PyTypeObject PySfShapeType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfShape_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfShape_new, /* tp_new */
};
@ -374,6 +372,8 @@ PyTypeObject PySfShapeType = {
PySfShape *
GetNewPySfShape()
{
return (PySfShape *)PySfShape_new(&PySfShapeType, NULL, NULL);
PySfShape *Shape = PyObject_New(PySfShape, &PySfShapeType);
Shape->IsCustom = false;
return Shape;
}

View File

@ -32,6 +32,7 @@
typedef struct {
PyObject_HEAD
bool IsCustom;
sf::Shape *obj;
} PySfShape;

View File

@ -39,23 +39,38 @@ PySfSound_dealloc(PySfSound *self)
}
static PyObject *
PySfSound_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfSound *self;
self = (PySfSound *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
PySfSound_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
static int
PySfSound_init(PySfSound *self, PyObject *args, PyObject *kwds);
PySfSound_init(PySfSound *self, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"Buffer", "Loop", "Pitch", "Volume", "X", "Y", "Z", NULL};
PySfSoundBuffer *Buffer=NULL;
PyObject *Loop=NULL;
float Pitch=1.f, Volume=100.f, X=0.f, Y=0.f, Z=0.f;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!Offfff:Sound.__new__", (char **)kwlist, &PySfSoundBufferType, &Buffer, &Loop, &Pitch, &Volume, &X, &Y, &Z))
return -1;
{
if (Loop)
self->obj->SetLoop(PyBool_AsBool(Loop));
if (Buffer)
self->obj->SetBuffer(*(Buffer->obj));
self->obj->SetPitch(Pitch);
self->obj->SetVolume(Volume);
self->obj->SetPosition(X, Y, Z);
}
return 0;
}
static PyObject*
PySfSound_SetBuffer(PySfSound *self, PyObject *args)
{
PySfSoundBuffer *Buffer = (PySfSoundBuffer *)args;
if (!PyObject_TypeCheck(args, &PySfSoundBufferType))
{
PyErr_SetString(PyExc_TypeError, "Sound.SetBuffer() The argument must be a sf.SoundBuffer.");
return NULL;
}
self->obj->SetBuffer(*(Buffer->obj));
Py_RETURN_NONE;
@ -269,38 +284,26 @@ Copy constructor : Sound(Copy) where Copy is a sf.Sound instance.", /* tp_doc */
PySfSound_new, /* tp_new */
};
static int
PySfSound_init(PySfSound *self, PyObject *args, PyObject *kwds)
static PyObject *
PySfSound_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfSound *self;
self = (PySfSound *)type->tp_alloc(type, 0);
if (self != NULL)
{
const char *kwlist[] = {"Buffer", "Loop", "Pitch", "Volume", "X", "Y", "Z", NULL};
PySfSoundBuffer *Buffer=NULL;
bool Loop=false;
PyObject *LoopObj=Py_False;
float Pitch=1.f, Volume=100.f, X=0.f, Y=0.f, Z=0.f;
if (PyTuple_Size(args) == 1)
{
PySfSound *Copy;
if (PyArg_ParseTuple(args, "O!:Sound.__init__", &PySfSoundType, &Copy))
if (PyArg_ParseTuple(args, "O!:Sound.__new__", &PySfSoundType, &Copy))
{
self->obj = new sf::Sound(*(Copy->obj));
return 0;
return (PyObject *)self;
}
else PyErr_Clear();
}
if (PyTuple_Size(args) > 0)
{
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!|Offfff:Sound.__init__", (char **)kwlist, &PySfSoundBufferType, &Buffer, &LoopObj, &Pitch, &Volume, &X, &Y, &Z))
return -1;
if (PyObject_IsTrue(LoopObj))
Loop = true;
self->obj = new sf::Sound(*(Buffer->obj), Loop, Pitch, Volume, sf::Vector3f(X, Y, Z));
}
else
self->obj = new sf::Sound();
return 0;
}
return (PyObject *)self;
}
void

View File

@ -35,15 +35,7 @@ PySfSoundBuffer_dealloc(PySfSoundBuffer *self)
}
static PyObject *
PySfSoundBuffer_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfSoundBuffer *self;
self = (PySfSoundBuffer *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static int
PySfSoundBuffer_init(PySfSoundBuffer *self, PyObject *args, PyObject *kwds);
PySfSoundBuffer_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
static PyObject*
PySfSoundBuffer_LoadFromFile(PySfSoundBuffer *self, PyObject *args)
@ -170,32 +162,33 @@ Copy constructor : SoundBuffer(Copy) where Copy is a sf.SoundBuffer instance.",
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfSoundBuffer_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfSoundBuffer_new, /* tp_new */
};
static int
PySfSoundBuffer_init(PySfSoundBuffer *self, PyObject *args, PyObject *kwds)
static PyObject *
PySfSoundBuffer_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
int size = PyTuple_Size(args);
if (size == 1)
PySfSoundBuffer *self;
self = (PySfSoundBuffer *)type->tp_alloc(type, 0);
if (self != NULL)
{
PySfSoundBuffer *Copy=NULL;
if (PyArg_ParseTuple(args, "O!:SoundBuffer.__init__", &PySfSoundBufferType, &Copy))
{
PySfSoundBuffer *Copy;
if (!PyArg_ParseTuple(args, "O!:SoundBuffer.__init__", &PySfSoundBufferType, &Copy))
return -1;
self->obj = new sf::SoundBuffer(*(Copy->obj));
return (PyObject *)self;
}
else if (size == 0)
PyErr_Clear();
self->obj = new sf::SoundBuffer();
else
PyErr_SetString(PyExc_TypeError, "SoundBuffer.__init__() takes 0 or 1 argument");
return 0;
}
return (PyObject *)self;
}
PySfSoundBuffer *
GetNewPySfSoundBuffer()
{
return (PySfSoundBuffer *)PySfSoundBuffer_new(&PySfSoundBufferType, NULL, NULL);
return PyObject_New(PySfSoundBuffer, &PySfSoundBufferType);
}

View File

@ -43,14 +43,9 @@ PySfSoundBufferRecorder_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfSoundBufferRecorder *self;
self = (PySfSoundBufferRecorder *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static int
PySfSoundBufferRecorder_init(PySfSoundBufferRecorder *self, PyObject *args)
{
if (self != NULL)
self->obj = new sf::SoundBufferRecorder();
return 0;
return (PyObject *)self;
}
static PyObject *
@ -103,7 +98,7 @@ PyTypeObject PySfSoundBufferRecorderType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfSoundBufferRecorder_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfSoundBufferRecorder_new, /* tp_new */
};

View File

@ -76,15 +76,12 @@ PySfSoundRecorder_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfSoundRecorder *self;
self = (PySfSoundRecorder *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static int
PySfSoundRecorder_init(PySfSoundRecorder *self, PyObject *args)
if (self != NULL)
{
self->obj = new CustomSoundRecorder();
self->obj->SoundRecorder = (PyObject *)self;
return 0;
}
return (PyObject *)self;
}
static PyObject *
@ -162,7 +159,7 @@ Construct the sound recorder with a callback function for processing captured sa
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfSoundRecorder_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfSoundRecorder_new, /* tp_new */
};

View File

@ -81,15 +81,6 @@ void CustomSoundStream::Init(unsigned int ChannelsCount, unsigned int SampleRate
Initialize(ChannelsCount, SampleRate);
}
static int
PySfSoundStream_init(PySfSoundStream *self, PyObject *args, PyObject *kwds)
{
self->obj = new CustomSoundStream();
self->obj->PyData = NULL;
self->obj->SoundStream = (PyObject *)self;
return 0;
}
static void
PySfSoundStream_dealloc(PySfSoundStream *self)
{
@ -102,6 +93,12 @@ PySfSoundStream_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfSoundStream *self;
self = (PySfSoundStream *)type->tp_alloc(type, 0);
if (self != NULL)
{
self->obj = new CustomSoundStream();
self->obj->PyData = NULL;
self->obj->SoundStream = (PyObject *)self;
}
return (PyObject *)self;
}
@ -310,7 +307,7 @@ or for streaming sound from the network", /* tp_doc */
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfSoundStream_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfSoundStream_new, /* tp_new */
};

View File

@ -57,6 +57,7 @@ PySfSprite_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
if (self != NULL)
{
self->Image = NULL;
self->IsCustom = false;
}
return (PyObject *)self;

View File

@ -33,6 +33,7 @@
typedef struct {
PyObject_HEAD
bool IsCustom;
sf::Sprite *obj;
PySfImage *Image;
} PySfSprite;

View File

@ -48,59 +48,14 @@ PySfString_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
PySfString *self;
self = (PySfString *)type->tp_alloc(type, 0);
if (self != NULL)
{
self->font = NULL;
self->IsCustom = false;
self->obj = new sf::String();
}
return (PyObject *)self;
}
static int
PySfString_init(PySfString *self, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"Text", "Font", "Size", NULL};
float Size = 30.f;
PyObject *Text=NULL;
PySfFont *FontTmp = NULL;
sf::Font *Font;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OO!f:String.__init__", (char **)kwlist, &Text, &PySfFontType, &FontTmp, &Size))
return -1;
if (FontTmp)
{
Font = (FontTmp->obj);
Py_INCREF(FontTmp);
self->font = FontTmp;
}
else
Font = (sf::Font *)&(sf::Font::GetDefaultFont());
if (Text != NULL)
{
if (PyUnicode_Check(Text))
{
#if Py_UNICODE_SIZE == 4
self->obj = new sf::String((sf::Uint32 *)PyUnicode_AS_UNICODE(Text), *Font, Size);
#else
self->obj = new sf::String((sf::Uint16 *)PyUnicode_AS_UNICODE(Text), *Font, Size);
#endif
}
#ifdef IS_PY3K
else if (PyBytes_Check(Text))
self->obj = new sf::String(sf::Unicode::UTF8String((sf::Uint8 *)PyBytes_AsString(Text)), *Font, Size);
#else
else if (PyString_Check(Text))
self->obj = new sf::String(sf::Unicode::UTF8String((sf::Uint8 *)PyString_AsString(Text)), *Font, Size);
#endif
else
{
PyErr_SetString(PyExc_TypeError, "String.__init__() first argument must be str");
return -1;
}
}
else
self->obj = new sf::String("", *Font, Size);
return 0;
}
static PyObject *
PySfString_SetText(PySfString* self, PyObject *args)
{
@ -236,6 +191,44 @@ PySfString_GetCharacterPos(PySfString* self, PyObject *args)
return Py_BuildValue("ff", Pos.x, Pos.y);
}
static int
PySfString_init(PySfString *self, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"Text", "Font", "Size", NULL};
float Size = 30.f;
PyObject *Text=NULL;
PySfFont *Font = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OO!f:String.__new__", (char **)kwlist, &Text, &PySfFontType, &Font, &Size))
return -1;
if (Text != NULL)
{
if (PyUnicode_Check(Text))
{
#if Py_UNICODE_SIZE == 4
self->obj->SetText((sf::Uint32 *)PyUnicode_AS_UNICODE(Text));
#else
self->obj->SetText((sf::Uint16 *)PyUnicode_AS_UNICODE(Text));
#endif
}
#ifdef IS_PY3K
else if (PyBytes_Check(Text))
self->obj->SetText(sf::Unicode::UTF8String((sf::Uint8 *)PyBytes_AsString(Text)));
#else
else if (PyString_Check(Text))
self->obj->SetText(sf::Unicode::UTF8String((sf::Uint8 *)PyString_AsString(Text)));
#endif
else
{
PyErr_SetString(PyExc_TypeError, "String.__init__() first argument must be str");
return -1;
}
}
if (Font) PySfString_SetFont(self, (PyObject *)Font);
self->obj->SetSize(Size);
return 0;
}
static PyMethodDef PySfString_methods[] = {
{"GetCharacterPos", (PyCFunction)PySfString_GetCharacterPos, METH_O, "GetCharacterPos(Index)\n\

View File

@ -33,6 +33,7 @@
typedef struct {
PyObject_HEAD
bool IsCustom;
sf::String *obj;
PySfFont *font;
} PySfString;

View File

@ -48,17 +48,16 @@ PySfVideoMode_dealloc(PySfVideoMode* self)
static PyObject *
PySfVideoMode_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"Width", "Height", "BitsPerPixel", NULL};
PySfVideoMode *self;
self = (PySfVideoMode *)type->tp_alloc(type, 0);
if (self != NULL)
{
self->Width = 0;
self->Height = 0;
self->BitsPerPixel = 32;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "II|I:VideoMode.__init__", (char **)kwlist, &self->Width, &self->Height, &self->BitsPerPixel))
return NULL;
self->obj = new sf::VideoMode(self->Width, self->Height, self->BitsPerPixel);
}
return (PyObject *)self;
}
@ -70,27 +69,10 @@ PySfVideoModeUpdate(PySfVideoMode *self)
self->obj->BitsPerPixel = self->BitsPerPixel;
}
static int
PySfVideoMode_init(PySfVideoMode *self, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"Width", "Height", "BitsPerPixel", NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "II|I:VideoMode.__init__", (char **)kwlist, &self->Width, &self->Height, &self->BitsPerPixel))
return -1;
self->obj = new sf::VideoMode(self->Width, self->Height, self->BitsPerPixel);
return 0;
}
static PyObject *
PySfVideoMode_IsValid(PySfVideoMode* self)
{
self->obj->Width = self->Width;
self->obj->Height = self->Height;
self->obj->BitsPerPixel = self->BitsPerPixel;
PySfVideoModeUpdate(self);
return PyBool_FromLong(self->obj->IsValid());
}
@ -132,7 +114,6 @@ PySfVideoMode_GetModesCount(PySfVideoMode* self)
}
static PyMethodDef PySfVideoMode_methods[] = {
{"IsValid", (PyCFunction)PySfVideoMode_IsValid, METH_NOARGS, "IsValid()\nTell whether or not the video mode is supported."},
{"GetDesktopMode", (PyCFunction)PySfVideoMode_GetDesktopMode, METH_STATIC | METH_NOARGS, "GetDesktopMode()\nGet the current desktop video mode."},
@ -190,7 +171,7 @@ Construct the video mode with its attributes : VideoMode(ModeWidth, ModeHeight,
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfVideoMode_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfVideoMode_new, /* tp_new */
};
@ -199,6 +180,6 @@ Construct the video mode with its attributes : VideoMode(ModeWidth, ModeHeight,
PySfVideoMode *
GetNewPySfVideoMode()
{
return (PySfVideoMode *)PySfVideoMode_new(&PySfVideoModeType, NULL, NULL);
return PyObject_New(PySfVideoMode, &PySfVideoModeType);
}

View File

@ -51,6 +51,8 @@ PySfWindow_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
PySfWindow *self;
self = (PySfWindow *)type->tp_alloc(type, 0);
if (self != NULL)
self->obj = new sf::Window();
return (PyObject *)self;
}
@ -129,8 +131,7 @@ PySfWindow_Create(PySfWindow* self, PyObject *args, PyObject *kwds)
static int
PySfWindow_init(PySfWindow *self, PyObject *args, PyObject *kwds)
{
self->obj = new sf::Window();
if (PyTuple_Size(args) > 0)
if (args != NULL)
if (PySfWindow_Create(self, args, kwds) == NULL)
return -1;
return 0;

View File

@ -55,6 +55,7 @@ PySfWindowSettingsUpdate(PySfWindowSettings *self)
static PyObject *
PySfWindowSettings_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"DepthBits", "StencilBits", "AntialiasingLevel", NULL};
PySfWindowSettings *self;
self = (PySfWindowSettings *)type->tp_alloc(type, 0);
if (self != NULL)
@ -62,23 +63,13 @@ PySfWindowSettings_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
self->DepthBits = 24;
self->StencilBits = 8;
self->AntialiasingLevel = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|III:WindowSettings.__init__", (char **)kwlist, &(self->DepthBits), &(self->StencilBits), &(self->AntialiasingLevel)))
return NULL;
self->obj = new sf::WindowSettings(self->DepthBits, self->StencilBits, self->AntialiasingLevel);
}
return (PyObject *)self;
}
static int
PySfWindowSettings_init(PySfWindowSettings *self, PyObject *args, PyObject *kwds)
{
const char *kwlist[] = {"DepthBits", "StencilBits", "AntialiasingLevel", NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|III:WindowSettings.__init__", (char **)kwlist, &(self->DepthBits), &(self->StencilBits), &(self->AntialiasingLevel)))
return -1;
self->obj = new sf::WindowSettings(self->DepthBits, self->StencilBits, self->AntialiasingLevel);
return 0;
}
PyTypeObject PySfWindowSettingsType = {
head_init
"WindowSettings", /*tp_name*/
@ -115,7 +106,7 @@ PyTypeObject PySfWindowSettingsType = {
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
(initproc)PySfWindowSettings_init, /* tp_init */
0, /* tp_init */
0, /* tp_alloc */
PySfWindowSettings_new, /* tp_new */
};
@ -123,6 +114,6 @@ PyTypeObject PySfWindowSettingsType = {
PySfWindowSettings *
GetNewPySfWindowSettings()
{
return (PySfWindowSettings *)PySfWindowSettings_new(&PySfWindowSettingsType, NULL, NULL);
return PyObject_New(PySfWindowSettings, &PySfWindowSettingsType);
}