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

View File

@ -57,52 +57,28 @@ static PyObject *
PySfColor_new(PyTypeObject *type, PyObject *args, PyObject *kwds) PySfColor_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{ {
PySfColor *self; PySfColor *self;
self = (PySfColor *)type->tp_alloc(type, 0); self = (PySfColor *)type->tp_alloc(type, 0);
if (self != NULL) if (self != NULL)
{ {
self->r = 0; self->r = 0;
self->g = 0; self->g = 0;
self->b = 0; self->b = 0;
self->a = 255; self->a = 255;
self->obj = new sf::Color(0, 0, 0, 255);
} }
return (PyObject *)self; return (PyObject *)self;
} }
static int static int
PySfColor_init(PySfColor *self, PyObject *args, PyObject *kwds) PySfColor_init(PySfColor *self, PyObject *args, PyObject *kwds)
{ {
const char *kwlist[] = {"r", "g", "b", "a", NULL}; const char *kwlist[] = {"r", "g", "b", "a", NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "BBB|B:Color.__init__", (char **)kwlist, &(self->r), &(self->g), &(self->b), &(self->a)))
long int rgba=0; return -1;
PySfColorUpdate(self);
if (PyTuple_Size(args) == 1)
{
if ( !PyArg_ParseTuple(args, "l", &rgba))
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);
return 0; return 0;
} }
static PyMethodDef PySfColor_methods[] = {
{NULL} /* Sentinel */
};
PyTypeObject PySfColorType = { PyTypeObject PySfColorType = {
head_init head_init
"Color", /*tp_name*/ "Color", /*tp_name*/
@ -131,7 +107,7 @@ PyTypeObject PySfColorType = {
0, /* tp_weaklistoffset */ 0, /* tp_weaklistoffset */
0, /* tp_iter */ 0, /* tp_iter */
0, /* tp_iternext */ 0, /* tp_iternext */
PySfColor_methods, /* tp_methods */ 0, /* tp_methods */
PySfColor_members, /* tp_members */ PySfColor_members, /* tp_members */
0, /* tp_getset */ 0, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
@ -147,7 +123,7 @@ PyTypeObject PySfColorType = {
PySfColor * PySfColor *
GetNewPySfColor() GetNewPySfColor()
{ {
return (PySfColor *)PySfColor_new(&PySfColorType, NULL, NULL); return PyObject_New(PySfColor, &PySfColorType);
} }
void void
@ -218,16 +194,5 @@ PySfColor_InitConst()
Cyan->a = sf::Color::Cyan.a; Cyan->a = sf::Color::Cyan.a;
PyDict_SetItemString(PySfColorType.tp_dict, "Cyan", (PyObject *)Cyan); PyDict_SetItemString(PySfColorType.tp_dict, "Cyan", (PyObject *)Cyan);
Py_DECREF(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) if (RenderFunction)
PyObject_CallFunction(RenderFunction, (char *)"O", RenderWindow); PyObject_CallFunction(RenderFunction, (char *)"O", RenderWindow);
else else
{
PyErr_SetString(PyExc_RuntimeError, "Custom drawables must have a render method defined"); PyErr_SetString(PyExc_RuntimeError, "Custom drawables must have a render method defined");
PyErr_Print();
}
} }
static void static void
@ -51,21 +54,17 @@ PySfDrawable_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{ {
PySfDrawable *self; PySfDrawable *self;
self = (PySfDrawable *)type->tp_alloc(type, 0); self = (PySfDrawable *)type->tp_alloc(type, 0);
return (PyObject *)self; if (self != NULL)
}
static int
PySfDrawable_init(PySfDrawable *self, PyObject *args, PyObject *kwds)
{
self->obj = new CustomDrawable();
if (PyObject_HasAttrString((PyObject *)self, "Render"))
{ {
self->obj->RenderFunction = PyObject_GetAttrString((PyObject *)self, "Render"); 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;
} }
else return (PyObject *)self;
self->obj->RenderFunction = NULL;
self->obj->RenderWindow = NULL;
return 0;
} }
static PyObject * static PyObject *
@ -128,7 +127,7 @@ static PyObject *
PySfDrawable_SetColor(PySfDrawable* self, PyObject *args) PySfDrawable_SetColor(PySfDrawable* self, PyObject *args)
{ {
PySfColor *Color = (PySfColor *)args; PySfColor *Color = (PySfColor *)args;
if (! PyObject_TypeCheck(args, &PySfColorType)) if (!PyObject_TypeCheck(args, &PySfColorType))
{ {
PyErr_SetString(PyExc_TypeError, "Drawable.SetColor() Argument is not a sf.Color"); PyErr_SetString(PyExc_TypeError, "Drawable.SetColor() Argument is not a sf.Color");
return NULL; return NULL;
@ -318,15 +317,9 @@ PyTypeObject PySfDrawableType = {
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)PySfDrawable_init, /* tp_init */ 0, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PySfDrawable_new, /* tp_new */ PySfDrawable_new, /* tp_new */
}; };
PySfDrawable *
GetNewPySfDrawable()
{
return (PySfDrawable *)PySfDrawable_new(&PySfDrawableType, NULL, NULL);
}

View File

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

View File

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

View File

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

View File

@ -91,21 +91,13 @@ PySfGlyph_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
self->Advance = 0; self->Advance = 0;
self->Rectangle = GetNewPySfIntRect(); self->Rectangle = GetNewPySfIntRect();
self->TexCoords = GetNewPySfFloatRect(); self->TexCoords = GetNewPySfFloatRect();
self->obj = new sf::Glyph();
self->Rectangle->obj = &(self->obj->Rectangle);
self->TexCoords->obj = &(self->obj->TexCoords);
} }
return (PyObject *)self; 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;
}
PyTypeObject PySfGlyphType = { PyTypeObject PySfGlyphType = {
head_init head_init
"Glyph", /*tp_name*/ "Glyph", /*tp_name*/
@ -142,7 +134,7 @@ PyTypeObject PySfGlyphType = {
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)PySfGlyph_init, /* tp_init */ 0, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PySfGlyph_new, /* tp_new */ PySfGlyph_new, /* tp_new */
}; };
@ -150,6 +142,6 @@ PyTypeObject PySfGlyphType = {
PySfGlyph * PySfGlyph *
GetNewPySfGlyph() 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 * static PyObject *
PySfImage_new(PyTypeObject *type, PyObject *args, PyObject *kwds) PySfImage_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
{
PySfImage *self;
self = (PySfImage *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static PyObject * static PyObject *
PySfImage_Create(PySfImage* self, PyObject *args, PyObject *kwds) PySfImage_Create(PySfImage* self, PyObject *args, PyObject *kwds)
@ -57,7 +51,7 @@ PySfImage_Create(PySfImage* self, PyObject *args, PyObject *kwds)
unsigned int Width=0, Height=0; unsigned int Width=0, Height=0;
const char *kwlist[] = {"Width", "Height", "Color", NULL}; const char *kwlist[] = {"Width", "Height", "Color", NULL};
if (! PyArg_ParseTupleAndKeywords(args, kwds, "|IIO!:Image.Create", (char **)kwlist, &Width, &Height, &PySfColorType, &ColorTmp)) if (!PyArg_ParseTupleAndKeywords(args, kwds, "|IIO!:Image.Create", (char **)kwlist, &Width, &Height, &PySfColorType, &ColorTmp))
return NULL; return NULL;
if (ColorTmp) if (ColorTmp)
@ -79,7 +73,7 @@ PySfImage_CopyScreen(PySfImage* self, PyObject *args)
PySfIntRect *SourceRect=NULL; PySfIntRect *SourceRect=NULL;
bool Result; bool Result;
if (! PyArg_ParseTuple(args, "O!|O!:Image.CopyScreen", &PySfRenderWindowType, &RenderWindow, &PySfIntRectType, &SourceRect)) if (!PyArg_ParseTuple(args, "O!|O!:Image.CopyScreen", &PySfRenderWindowType, &RenderWindow, &PySfIntRectType, &SourceRect))
return NULL; return NULL;
@ -164,7 +158,7 @@ PySfImage_LoadFromMemory(PySfImage* self, PyObject *args)
unsigned int SizeInBytes; unsigned int SizeInBytes;
char *Data; char *Data;
if (! PyArg_ParseTuple(args, "s#:Image.LoadFromMemory", &Data, &SizeInBytes)) if (!PyArg_ParseTuple(args, "s#:Image.LoadFromMemory", &Data, &SizeInBytes))
return NULL; return NULL;
return PyBool_FromLong(self->obj->LoadFromMemory(Data, (std::size_t) SizeInBytes)); return PyBool_FromLong(self->obj->LoadFromMemory(Data, (std::size_t) SizeInBytes));
@ -205,9 +199,6 @@ PySfImage_SaveToFile (PySfImage *self, PyObject *args)
save_to_file(self, args); save_to_file(self, args);
} }
static int
PySfImage_init(PySfImage *self, PyObject *args, PyObject *kwds);
static PyObject * static PyObject *
PySfImage_Bind(PySfImage *self) PySfImage_Bind(PySfImage *self)
{ {
@ -248,7 +239,7 @@ PySfImage_GetTexCoords(PySfImage* self, PyObject *args)
bool Adjust = false; bool Adjust = false;
PyObject *AdjustObj = NULL; 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; return NULL;
if (AdjustObj) if (AdjustObj)
@ -258,7 +249,7 @@ PySfImage_GetTexCoords(PySfImage* self, PyObject *args)
PySfFloatRect *Rect; PySfFloatRect *Rect;
Rect = GetNewPySfFloatRect(); Rect = GetNewPySfFloatRect();
Rect->obj = new sf::FloatRect ( self->obj->GetTexCoords(*(RectArg->obj), Adjust) ); Rect->obj = new sf::FloatRect(self->obj->GetTexCoords(*(RectArg->obj), Adjust));
Rect->Left = Rect->obj->Left; Rect->Left = Rect->obj->Left;
Rect->Top = Rect->obj->Top; Rect->Top = Rect->obj->Top;
Rect->Right = Rect->obj->Right; Rect->Right = Rect->obj->Right;
@ -267,8 +258,26 @@ PySfImage_GetTexCoords(PySfImage* self, PyObject *args)
return (PyObject *)Rect; 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 * static PyObject *
PySfImage_Copy(PySfImage* self, PyObject *args); PySfImage_Copy(PySfImage* self, PyObject *args, PyObject *kwds);
static PyMethodDef PySfImage_methods[] = { static PyMethodDef PySfImage_methods[] = {
{"Copy", (PyCFunction)PySfImage_Copy, METH_VARARGS, "Copy(Source, DestX, DestY, SourceRect = sf.IntRect(0,0,0,0))\n\ {"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 */ PySfImage_new, /* tp_new */
}; };
static int static PyObject *
PySfImage_init(PySfImage *self, PyObject *args, PyObject *kwds) PySfImage_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{ {
int size = PyTuple_Size(args); PySfImage *self;
if (size == 1) self = (PySfImage *)type->tp_alloc(type, 0);
if (self != NULL)
{ {
PySfImage *Image; if (PyTuple_Size(args) == 1)
if (PyArg_ParseTuple(args, "O!", &PySfImageType, &Image))
{ {
self->obj = new sf::Image(*(Image->obj)); PySfImage *Image;
return 0; if (PyArg_ParseTuple(args, "O!", &PySfImageType, &Image))
} {
else PyErr_Clear(); self->obj = new sf::Image(*(Image->obj));
} }
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 PyErr_Clear();
} }
else self->obj = new sf::Image();
} }
return 0; return (PyObject *)self;
} }
static PyObject * 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; PySfIntRect *SourceRect = NULL;
PySfImage *Source = NULL; PySfImage *Source = NULL;
unsigned int DestX, DestY; unsigned int DestX, DestY;
PyObject *PyApplyAlpha; PyObject *PyApplyAlpha = NULL;
bool ApplyAlpha = false; 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; return NULL;
if (PyApplyAlpha) if (PyApplyAlpha)
@ -410,6 +413,6 @@ PySfImage_Copy(PySfImage* self, PyObject *args)
PySfImage * PySfImage *
GetNewPySfImage() GetNewPySfImage()
{ {
return (PySfImage *)PySfImage_new(&PySfImageType, NULL, NULL); return PyObject_New(PySfImage, &PySfImageType);
} }

View File

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

View File

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

View File

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

View File

@ -41,12 +41,7 @@ PySfPostFX_dealloc(PySfPostFX *self)
} }
static PyObject * static PyObject *
PySfPostFX_new(PyTypeObject *type, PyObject *args, PyObject *kwds) PySfPostFX_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
{
PySfPostFX *self;
self = (PySfPostFX *)type->tp_alloc(type, 0);
return (PyObject *)self;
}
static PyObject * static PyObject *
PySfPostFX_LoadFromFile (PySfPostFX *self, PyObject *args) PySfPostFX_LoadFromFile (PySfPostFX *self, PyObject *args)
@ -73,10 +68,6 @@ PySfPostFX_LoadFromMemory (PySfPostFX *self, PyObject *args)
return PyBool_FromLong(result); 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; 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) 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_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)PySfPostFX_init, /* tp_init */ 0, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PySfPostFX_new, /* tp_new */ 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 { typedef struct {
PyObject_HEAD PyObject_HEAD
bool IsCustom;
sf::PostFX *obj; sf::PostFX *obj;
} PySfPostFX; } PySfPostFX;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -48,59 +48,14 @@ PySfString_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
PySfString *self; PySfString *self;
self = (PySfString *)type->tp_alloc(type, 0); self = (PySfString *)type->tp_alloc(type, 0);
if (self != NULL) if (self != NULL)
{
self->font = NULL; self->font = NULL;
self->IsCustom = false;
self->obj = new sf::String();
}
return (PyObject *)self; 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 * static PyObject *
PySfString_SetText(PySfString* self, PyObject *args) PySfString_SetText(PySfString* self, PyObject *args)
{ {
@ -236,6 +191,44 @@ PySfString_GetCharacterPos(PySfString* self, PyObject *args)
return Py_BuildValue("ff", Pos.x, Pos.y); 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[] = { static PyMethodDef PySfString_methods[] = {
{"GetCharacterPos", (PyCFunction)PySfString_GetCharacterPos, METH_O, "GetCharacterPos(Index)\n\ {"GetCharacterPos", (PyCFunction)PySfString_GetCharacterPos, METH_O, "GetCharacterPos(Index)\n\

View File

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

View File

@ -48,17 +48,16 @@ PySfVideoMode_dealloc(PySfVideoMode* self)
static PyObject * static PyObject *
PySfVideoMode_new(PyTypeObject *type, PyObject *args, PyObject *kwds) PySfVideoMode_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{ {
const char *kwlist[] = {"Width", "Height", "BitsPerPixel", NULL};
PySfVideoMode *self; PySfVideoMode *self;
self = (PySfVideoMode *)type->tp_alloc(type, 0); self = (PySfVideoMode *)type->tp_alloc(type, 0);
if (self != NULL) if (self != NULL)
{ {
self->Width = 0;
self->Height = 0;
self->BitsPerPixel = 32; 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; return (PyObject *)self;
} }
@ -70,27 +69,10 @@ PySfVideoModeUpdate(PySfVideoMode *self)
self->obj->BitsPerPixel = self->BitsPerPixel; 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 * static PyObject *
PySfVideoMode_IsValid(PySfVideoMode* self) PySfVideoMode_IsValid(PySfVideoMode* self)
{ {
self->obj->Width = self->Width; PySfVideoModeUpdate(self);
self->obj->Height = self->Height;
self->obj->BitsPerPixel = self->BitsPerPixel;
return PyBool_FromLong(self->obj->IsValid()); return PyBool_FromLong(self->obj->IsValid());
} }
@ -100,7 +82,7 @@ PySfVideoMode_GetDesktopMode(PySfVideoMode* self)
PySfVideoMode *VideoMode; PySfVideoMode *VideoMode;
VideoMode = GetNewPySfVideoMode(); VideoMode = GetNewPySfVideoMode();
VideoMode->obj = new sf::VideoMode ( sf::VideoMode::GetDesktopMode() ); VideoMode->obj = new sf::VideoMode(sf::VideoMode::GetDesktopMode());
VideoMode->Width = VideoMode->obj->Width; VideoMode->Width = VideoMode->obj->Width;
VideoMode->Height = VideoMode->obj->Height; VideoMode->Height = VideoMode->obj->Height;
VideoMode->BitsPerPixel = VideoMode->obj->BitsPerPixel; VideoMode->BitsPerPixel = VideoMode->obj->BitsPerPixel;
@ -117,7 +99,7 @@ PySfVideoMode_GetMode(PySfVideoMode* self, PyObject *args)
index = (std::size_t)PyLong_AsLong(args); index = (std::size_t)PyLong_AsLong(args);
VideoMode = GetNewPySfVideoMode(); VideoMode = GetNewPySfVideoMode();
VideoMode->obj = new sf::VideoMode ( sf::VideoMode::GetMode(index) ); VideoMode->obj = new sf::VideoMode(sf::VideoMode::GetMode(index));
VideoMode->Width = VideoMode->obj->Width; VideoMode->Width = VideoMode->obj->Width;
VideoMode->Height = VideoMode->obj->Height; VideoMode->Height = VideoMode->obj->Height;
VideoMode->BitsPerPixel = VideoMode->obj->BitsPerPixel; VideoMode->BitsPerPixel = VideoMode->obj->BitsPerPixel;
@ -132,7 +114,6 @@ PySfVideoMode_GetModesCount(PySfVideoMode* self)
} }
static PyMethodDef PySfVideoMode_methods[] = { static PyMethodDef PySfVideoMode_methods[] = {
{"IsValid", (PyCFunction)PySfVideoMode_IsValid, METH_NOARGS, "IsValid()\nTell whether or not the video mode is supported."}, {"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."}, {"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_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)PySfVideoMode_init, /* tp_init */ 0, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
PySfVideoMode_new, /* tp_new */ PySfVideoMode_new, /* tp_new */
}; };
@ -199,6 +180,6 @@ Construct the video mode with its attributes : VideoMode(ModeWidth, ModeHeight,
PySfVideoMode * PySfVideoMode *
GetNewPySfVideoMode() 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; PySfWindow *self;
self = (PySfWindow *)type->tp_alloc(type, 0); self = (PySfWindow *)type->tp_alloc(type, 0);
if (self != NULL)
self->obj = new sf::Window();
return (PyObject *)self; return (PyObject *)self;
} }
@ -129,8 +131,7 @@ PySfWindow_Create(PySfWindow* self, PyObject *args, PyObject *kwds)
static int static int
PySfWindow_init(PySfWindow *self, PyObject *args, PyObject *kwds) PySfWindow_init(PySfWindow *self, PyObject *args, PyObject *kwds)
{ {
self->obj = new sf::Window(); if (args != NULL)
if (PyTuple_Size(args) > 0)
if (PySfWindow_Create(self, args, kwds) == NULL) if (PySfWindow_Create(self, args, kwds) == NULL)
return -1; return -1;
return 0; return 0;

View File

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