mirror of
https://github.com/SFML/SFML.git
synced 2024-11-24 20:31:05 +08:00
More code clean-up and python3 compliance
git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/trunk@1022 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
parent
79bf5c6252
commit
af3dd7c630
@ -22,62 +22,26 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#include <SFML/Graphics/Drawable.hpp>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "Blend.hpp"
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
} PySfBlend;
|
||||
|
||||
|
||||
|
||||
static PyMemberDef PySfBlend_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
static void
|
||||
PySfBlend_dealloc(PySfBlend *self)
|
||||
{
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfBlend_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfBlend *self;
|
||||
|
||||
self = (PySfBlend *)type->tp_alloc(type, 0);
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
PySfBlend_init(PySfBlend *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyMethodDef PySfBlend_methods[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
PyTypeObject PySfBlendType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"Blend", /*tp_name*/
|
||||
sizeof(PySfBlend), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
(destructor)PySfBlend_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_dealloc*/
|
||||
0, /*tp_print*/
|
||||
0, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
@ -104,15 +68,15 @@ None No blending.", /* tp_doc */
|
||||
0, /* tp_weaklistoffset */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfBlend_methods, /* tp_methods */
|
||||
PySfBlend_members, /* tp_members */
|
||||
0, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
0, /* tp_descr_get */
|
||||
0, /* tp_descr_set */
|
||||
0, /* tp_dictoffset */
|
||||
(initproc)PySfBlend_init, /* tp_init */
|
||||
0, /* tp_init */
|
||||
0, /* tp_alloc */
|
||||
PySfBlend_new, /* tp_new */
|
||||
};
|
||||
@ -120,16 +84,16 @@ None No blending.", /* tp_doc */
|
||||
void PySfBlend_InitConst()
|
||||
{
|
||||
PyObject *obj;
|
||||
obj = PyInt_FromLong(sf::Blend::Alpha);
|
||||
obj = PyLong_FromLong(sf::Blend::Alpha);
|
||||
PyDict_SetItemString(PySfBlendType.tp_dict, "Alpha", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Blend::Add);
|
||||
obj = PyLong_FromLong(sf::Blend::Add);
|
||||
PyDict_SetItemString(PySfBlendType.tp_dict, "Add", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Blend::Multiply);
|
||||
obj = PyLong_FromLong(sf::Blend::Multiply);
|
||||
PyDict_SetItemString(PySfBlendType.tp_dict, "Multiply", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Blend::None);
|
||||
obj = PyLong_FromLong(sf::Blend::None);
|
||||
PyDict_SetItemString(PySfBlendType.tp_dict, "None", obj);
|
||||
Py_DECREF(obj);
|
||||
}
|
||||
|
@ -25,6 +25,14 @@
|
||||
#ifndef __PYBLEND_HPP
|
||||
#define __PYBLEND_HPP
|
||||
|
||||
#include <Python.h>
|
||||
|
||||
#include <SFML/Graphics/Drawable.hpp>
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
} PySfBlend;
|
||||
|
||||
void
|
||||
PySfBlend_InitConst();
|
||||
|
||||
|
@ -25,10 +25,7 @@
|
||||
#include "Font.hpp"
|
||||
#include "Glyph.hpp"
|
||||
|
||||
static PyMemberDef PySfFont_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
|
||||
static void
|
||||
@ -36,21 +33,16 @@ PySfFont_dealloc(PySfFont *self)
|
||||
{
|
||||
if (self->Owner)
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
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;
|
||||
}
|
||||
|
||||
@ -71,7 +63,7 @@ PySfFont_LoadFromFile(PySfFont* self, PyObject *args, PyObject *kwds)
|
||||
int CharsetSize;
|
||||
bool Result;
|
||||
|
||||
if (! PyArg_ParseTupleAndKeywords(args, kwds, "s|Is#", (char **)kwlist, &Filename, &Charsize, &CharsetTmp, &CharsetSize))
|
||||
if (! PyArg_ParseTupleAndKeywords(args, kwds, "s|Is#:Font.LoadFromFile", (char **)kwlist, &Filename, &Charsize, &CharsetTmp, &CharsetSize))
|
||||
return NULL;
|
||||
|
||||
if (CharsetTmp)
|
||||
@ -100,7 +92,7 @@ PySfFont_LoadFromMemory(PySfFont* self, PyObject *args, PyObject *kwds)
|
||||
int CharsetSize;
|
||||
bool Result;
|
||||
|
||||
if (! PyArg_ParseTupleAndKeywords(args, kwds, "s#|Is#", (char **)kwlist, &Data, &Size, &Charsize, &CharsetTmp, &CharsetSize))
|
||||
if (! PyArg_ParseTupleAndKeywords(args, kwds, "s#|Is#:Font.LoadFromMemory", (char **)kwlist, &Data, &Size, &Charsize, &CharsetTmp, &CharsetSize))
|
||||
return NULL;
|
||||
|
||||
if (CharsetTmp)
|
||||
@ -169,8 +161,7 @@ Get the description of a glyph (character) given by its unicode value. Returns g
|
||||
|
||||
|
||||
PyTypeObject PySfFontType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"Font", /*tp_name*/
|
||||
sizeof(PySfFont), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -198,7 +189,7 @@ PyTypeObject PySfFontType = {
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfFont_methods, /* tp_methods */
|
||||
PySfFont_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
|
@ -25,13 +25,9 @@
|
||||
#ifndef __PYFONT_HPP
|
||||
#define __PYFONT_HPP
|
||||
|
||||
#include <SFML/Graphics/Font.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include <SFML/Graphics/Font.hpp>
|
||||
|
||||
|
||||
typedef struct {
|
||||
|
@ -24,6 +24,12 @@
|
||||
|
||||
#include "Glyph.hpp"
|
||||
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include "compat.hpp"
|
||||
|
||||
|
||||
static PyMemberDef PySfGlyph_members[] = {
|
||||
{(char *)"Advance", T_INT, offsetof(PySfGlyph, Advance), 0, (char *)"Offset to move horizontically to the next character."},
|
||||
{(char *)"Rectangle", T_OBJECT, offsetof(PySfGlyph, Rectangle), 0, (char *)"Bounding rectangle of the glyph, in relative coordinates."},
|
||||
@ -32,7 +38,6 @@ static PyMemberDef PySfGlyph_members[] = {
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void
|
||||
PySfGlyph_dealloc(PySfGlyph *self)
|
||||
{
|
||||
@ -41,7 +46,7 @@ PySfGlyph_dealloc(PySfGlyph *self)
|
||||
self->TexCoords->obj = new sf::FloatRect(self->obj->TexCoords);
|
||||
Py_DECREF(self->TexCoords);
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
void
|
||||
@ -80,16 +85,13 @@ static PyObject *
|
||||
PySfGlyph_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfGlyph *self;
|
||||
|
||||
self = (PySfGlyph *)type->tp_alloc(type, 0);
|
||||
|
||||
if (self != NULL)
|
||||
{
|
||||
self->Advance = 0;
|
||||
self->Rectangle = GetNewPySfIntRect();
|
||||
self->TexCoords = GetNewPySfFloatRect();
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
@ -103,14 +105,9 @@ PySfGlyph_init(PySfGlyph *self, PyObject *args, PyObject *kwds)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyMethodDef PySfGlyph_methods[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
PyTypeObject PySfGlyphType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"Glyph", /*tp_name*/
|
||||
sizeof(PySfGlyph), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -137,7 +134,7 @@ PyTypeObject PySfGlyphType = {
|
||||
0, /* tp_weaklistoffset */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfGlyph_methods, /* tp_methods */
|
||||
0, /* tp_methods */
|
||||
PySfGlyph_members, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
|
@ -25,13 +25,9 @@
|
||||
#ifndef __PYGLYPH_HPP
|
||||
#define __PYGLYPH_HPP
|
||||
|
||||
#include <SFML/Graphics/Glyph.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include <SFML/Graphics/Glyph.hpp>
|
||||
|
||||
#include "Rect.hpp"
|
||||
|
||||
|
@ -196,39 +196,13 @@ PySfImage_GetPixels(PySfImage *self)
|
||||
static PyObject *
|
||||
PySfImage_LoadFromFile (PySfImage *self, PyObject *args)
|
||||
{
|
||||
char *path;
|
||||
#ifdef IS_PY3K
|
||||
PyObject *string = PyUnicode_AsUTF8String(args);
|
||||
if (string == NULL)
|
||||
return NULL;
|
||||
path = PyBytes_AsString(string);
|
||||
#else
|
||||
path = PyString_AsString(args);
|
||||
#endif
|
||||
bool result = self->obj->LoadFromFile(path);
|
||||
#ifdef IS_PY3K
|
||||
Py_DECREF(string);
|
||||
#endif
|
||||
return PyBool_FromLong(result);
|
||||
load_from_file(self, args);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfImage_SaveToFile (PySfImage *self, PyObject *args)
|
||||
{
|
||||
char *path;
|
||||
#ifdef IS_PY3K
|
||||
PyObject *string = PyUnicode_AsUTF8String(args);
|
||||
if (string == NULL)
|
||||
return NULL;
|
||||
path = PyBytes_AsString(string);
|
||||
#else
|
||||
path = PyString_AsString(args);
|
||||
#endif
|
||||
bool result = self->obj->SaveToFile(path);
|
||||
#ifdef IS_PY3K
|
||||
Py_DECREF(string);
|
||||
#endif
|
||||
return PyBool_FromLong(result);
|
||||
save_to_file(self, args);
|
||||
}
|
||||
|
||||
static int
|
||||
@ -390,6 +364,7 @@ PySfImage_init(PySfImage *self, PyObject *args, PyObject *kwds)
|
||||
self->obj = new sf::Image(*(Image->obj));
|
||||
return 0;
|
||||
}
|
||||
else PyErr_Clear();
|
||||
}
|
||||
self->obj = new sf::Image();
|
||||
if (PyTuple_Size(args) > 0)
|
||||
@ -400,6 +375,7 @@ PySfImage_init(PySfImage *self, PyObject *args, PyObject *kwds)
|
||||
return -1;
|
||||
else if (PySfImage_LoadFromPixels(self, args) == NULL)
|
||||
return -1;
|
||||
else PyErr_Clear();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
@ -22,62 +22,26 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#include <SFML/Window/Event.hpp>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "Joy.hpp"
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
} PySfJoy;
|
||||
|
||||
|
||||
|
||||
static PyMemberDef PySfJoy_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
static void
|
||||
PySfJoy_dealloc(PySfJoy *self)
|
||||
{
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfJoy_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfJoy *self;
|
||||
|
||||
self = (PySfJoy *)type->tp_alloc(type, 0);
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
PySfJoy_init(PySfJoy *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyMethodDef PySfJoy_methods[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
PyTypeObject PySfJoyType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"Joy", /*tp_name*/
|
||||
sizeof(PySfJoy), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
(destructor)PySfJoy_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_dealloc*/
|
||||
0, /*tp_print*/
|
||||
0, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
@ -100,15 +64,15 @@ PyTypeObject PySfJoyType = {
|
||||
0, /* tp_weaklistoffset */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfJoy_methods, /* tp_methods */
|
||||
PySfJoy_members, /* tp_members */
|
||||
0, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
0, /* tp_descr_get */
|
||||
0, /* tp_descr_set */
|
||||
0, /* tp_dictoffset */
|
||||
(initproc)PySfJoy_init, /* tp_init */
|
||||
0, /* tp_init */
|
||||
0, /* tp_alloc */
|
||||
PySfJoy_new, /* tp_new */
|
||||
};
|
||||
@ -116,25 +80,25 @@ PyTypeObject PySfJoyType = {
|
||||
void PySfJoy_InitConst()
|
||||
{
|
||||
PyObject *obj;
|
||||
obj = PyInt_FromLong(sf::Joy::AxisX);
|
||||
obj = PyLong_FromLong(sf::Joy::AxisX);
|
||||
PyDict_SetItemString(PySfJoyType.tp_dict, "AxisX", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Joy::AxisY);
|
||||
obj = PyLong_FromLong(sf::Joy::AxisY);
|
||||
PyDict_SetItemString(PySfJoyType.tp_dict, "AxisY", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Joy::AxisZ);
|
||||
obj = PyLong_FromLong(sf::Joy::AxisZ);
|
||||
PyDict_SetItemString(PySfJoyType.tp_dict, "AxisZ", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Joy::AxisR);
|
||||
obj = PyLong_FromLong(sf::Joy::AxisR);
|
||||
PyDict_SetItemString(PySfJoyType.tp_dict, "AxisR", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Joy::AxisU);
|
||||
obj = PyLong_FromLong(sf::Joy::AxisU);
|
||||
PyDict_SetItemString(PySfJoyType.tp_dict, "AxisU", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Joy::AxisV);
|
||||
obj = PyLong_FromLong(sf::Joy::AxisV);
|
||||
PyDict_SetItemString(PySfJoyType.tp_dict, "AxisV", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Joy::AxisPOV);
|
||||
obj = PyLong_FromLong(sf::Joy::AxisPOV);
|
||||
PyDict_SetItemString(PySfJoyType.tp_dict, "AxisPOV", obj);
|
||||
Py_DECREF(obj);
|
||||
}
|
||||
|
@ -25,6 +25,14 @@
|
||||
#ifndef __PYJOY_HPP
|
||||
#define __PYJOY_HPP
|
||||
|
||||
#include <Python.h>
|
||||
|
||||
#include <SFML/Window/Event.hpp>
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
} PySfJoy;
|
||||
|
||||
void
|
||||
PySfJoy_InitConst();
|
||||
|
||||
|
@ -24,40 +24,17 @@
|
||||
|
||||
#include "Listener.hpp"
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
static PyMemberDef PySfListener_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void
|
||||
PySfListener_dealloc(PySfListener* self)
|
||||
{
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfListener_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfListener *self;
|
||||
|
||||
self = (PySfListener *)type->tp_alloc(type, 0);
|
||||
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
static int
|
||||
PySfListener_init(PySfListener *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static PyObject *
|
||||
PySfListener_SetGlobalVolume(PySfListener* self, PyObject *args)
|
||||
{
|
||||
@ -75,7 +52,7 @@ static PyObject *
|
||||
PySfListener_SetPosition(PySfListener* self, PyObject *args)
|
||||
{
|
||||
float X, Y, Z;
|
||||
if (! PyArg_ParseTuple(args, "fff", &X, &Y, &Z))
|
||||
if (!PyArg_ParseTuple(args, "fff:Listener.SetPosition", &X, &Y, &Z))
|
||||
return NULL;
|
||||
sf::Listener::SetPosition(X, Y, Z);
|
||||
Py_RETURN_NONE;
|
||||
@ -92,7 +69,7 @@ static PyObject *
|
||||
PySfListener_SetTarget(PySfListener* self, PyObject *args)
|
||||
{
|
||||
float X, Y, Z;
|
||||
if (! PyArg_ParseTuple(args, "fff", &X, &Y, &Z))
|
||||
if (!PyArg_ParseTuple(args, "fff:Listener.SetTarget", &X, &Y, &Z))
|
||||
return NULL;
|
||||
sf::Listener::SetTarget(X, Y, Z);
|
||||
Py_RETURN_NONE;
|
||||
@ -116,12 +93,11 @@ static PyMethodDef PySfListener_methods[] = {
|
||||
};
|
||||
|
||||
PyTypeObject PySfListenerType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"Listener", /*tp_name*/
|
||||
sizeof(PySfListener), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
(destructor)PySfListener_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_dealloc*/
|
||||
0, /*tp_print*/
|
||||
0, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
@ -145,14 +121,14 @@ PyTypeObject PySfListenerType = {
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfListener_methods, /* tp_methods */
|
||||
PySfListener_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
0, /* tp_descr_get */
|
||||
0, /* tp_descr_set */
|
||||
0, /* tp_dictoffset */
|
||||
(initproc)PySfListener_init, /* tp_init */
|
||||
0, /* tp_init */
|
||||
0, /* tp_alloc */
|
||||
PySfListener_new, /* tp_new */
|
||||
};
|
||||
|
@ -25,13 +25,9 @@
|
||||
#ifndef __PYLISTENER_HPP
|
||||
#define __PYLISTENER_HPP
|
||||
|
||||
#include <SFML/Audio/Listener.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include <SFML/Audio/Listener.hpp>
|
||||
|
||||
|
||||
typedef struct {
|
||||
|
@ -22,62 +22,26 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#include <SFML/Window/Event.hpp>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "Mouse.hpp"
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
} PySfMouse;
|
||||
|
||||
|
||||
|
||||
static PyMemberDef PySfMouse_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
static void
|
||||
PySfMouse_dealloc(PySfMouse *self)
|
||||
{
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfMouse_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfMouse *self;
|
||||
|
||||
self = (PySfMouse *)type->tp_alloc(type, 0);
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
PySfMouse_init(PySfMouse *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyMethodDef PySfMouse_methods[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
PyTypeObject PySfMouseType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"Mouse", /*tp_name*/
|
||||
sizeof(PySfMouse), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
(destructor)PySfMouse_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_dealloc*/
|
||||
0, /*tp_print*/
|
||||
0, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
@ -100,15 +64,15 @@ PyTypeObject PySfMouseType = {
|
||||
0, /* tp_weaklistoffset */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfMouse_methods, /* tp_methods */
|
||||
PySfMouse_members, /* tp_members */
|
||||
0, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
0, /* tp_descr_get */
|
||||
0, /* tp_descr_set */
|
||||
0, /* tp_dictoffset */
|
||||
(initproc)PySfMouse_init, /* tp_init */
|
||||
0, /* tp_init */
|
||||
0, /* tp_alloc */
|
||||
PySfMouse_new, /* tp_new */
|
||||
};
|
||||
@ -116,19 +80,19 @@ PyTypeObject PySfMouseType = {
|
||||
void PySfMouse_InitConst()
|
||||
{
|
||||
PyObject *obj;
|
||||
obj = PyInt_FromLong(sf::Mouse::Left);
|
||||
obj = PyLong_FromLong(sf::Mouse::Left);
|
||||
PyDict_SetItemString(PySfMouseType.tp_dict, "Left", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Mouse::Right);
|
||||
obj = PyLong_FromLong(sf::Mouse::Right);
|
||||
PyDict_SetItemString(PySfMouseType.tp_dict, "Right", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Mouse::Middle);
|
||||
obj = PyLong_FromLong(sf::Mouse::Middle);
|
||||
PyDict_SetItemString(PySfMouseType.tp_dict, "Middle", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Mouse::XButton1);
|
||||
obj = PyLong_FromLong(sf::Mouse::XButton1);
|
||||
PyDict_SetItemString(PySfMouseType.tp_dict, "XButton1", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Mouse::XButton2);
|
||||
obj = PyLong_FromLong(sf::Mouse::XButton2);
|
||||
PyDict_SetItemString(PySfMouseType.tp_dict, "XButton2", obj);
|
||||
Py_DECREF(obj);
|
||||
}
|
||||
|
@ -25,6 +25,14 @@
|
||||
#ifndef __PYMOUSE_HPP
|
||||
#define __PYMOUSE_HPP
|
||||
|
||||
#include <Python.h>
|
||||
|
||||
#include <SFML/Window/Event.hpp>
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
} PySfMouse;
|
||||
|
||||
void
|
||||
PySfMouse_InitConst();
|
||||
|
||||
|
@ -51,35 +51,22 @@ PySfPostFX_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
static PyObject *
|
||||
PySfPostFX_LoadFromFile (PySfPostFX *self, PyObject *args)
|
||||
{
|
||||
char *path;
|
||||
#ifdef IS_PY3K
|
||||
PyObject *string = PyUnicode_AsUTF8String(args);
|
||||
if (string == NULL)
|
||||
return NULL;
|
||||
path = PyBytes_AsString(string);
|
||||
#else
|
||||
path = PyString_AsString(args);
|
||||
#endif
|
||||
bool result = self->obj->LoadFromFile(path);
|
||||
#ifdef IS_PY3K
|
||||
Py_DECREF(string);
|
||||
#endif
|
||||
return PyBool_FromLong(result);
|
||||
load_from_file(self, args);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfPostFX_LoadFromMemory (PySfPostFX *self, PyObject *args)
|
||||
{
|
||||
char *path;
|
||||
char *effect;
|
||||
#ifdef IS_PY3K
|
||||
PyObject *string = PyUnicode_AsUTF8String(args);
|
||||
if (string == NULL)
|
||||
return NULL;
|
||||
path = PyBytes_AsString(string);
|
||||
effect = PyBytes_AsString(string);
|
||||
#else
|
||||
path = PyString_AsString(args);
|
||||
effect = PyString_AsString(args);
|
||||
#endif
|
||||
bool result = self->obj->LoadFromMemory(path);
|
||||
bool result = self->obj->LoadFromMemory(effect);
|
||||
#ifdef IS_PY3K
|
||||
Py_DECREF(string);
|
||||
#endif
|
||||
|
@ -27,33 +27,24 @@
|
||||
#include <SFML/Graphics/Color.hpp>
|
||||
#include "Color.hpp"
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
extern PyTypeObject PySfColorType;
|
||||
extern PyTypeObject PySfDrawableType;
|
||||
|
||||
static PyMemberDef PySfShape_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void
|
||||
PySfShape_dealloc(PySfShape* self)
|
||||
{
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfShape_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfShape *self;
|
||||
|
||||
self = (PySfShape *)type->tp_alloc(type, 0);
|
||||
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
@ -64,7 +55,6 @@ PySfShape_init(PySfShape *self, PyObject *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// void AddPoint(float X, float Y, const Color& Col = Color(255, 255, 255), const Color& OutlineCol = Color(0, 0, 0));
|
||||
static PyObject *
|
||||
PySfShape_AddPoint(PySfShape* self, PyObject *args, PyObject *kwds)
|
||||
@ -73,7 +63,7 @@ PySfShape_AddPoint(PySfShape* self, PyObject *args, PyObject *kwds)
|
||||
float X, Y;
|
||||
sf::Color *Col, *OutlineCol;
|
||||
PySfColor *ColTmp=NULL, *OutlineColTmp=NULL;
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "ff|O!O!", (char **)kwlist, &X, &Y, &PySfColorType, &ColTmp, &PySfColorType, &OutlineColTmp))
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "ff|O!O!:Shape.AddPoint", (char **)kwlist, &X, &Y, &PySfColorType, &ColTmp, &PySfColorType, &OutlineColTmp))
|
||||
return NULL;
|
||||
|
||||
if (ColTmp)
|
||||
@ -119,7 +109,7 @@ PySfShape_Line(PySfShape* self, PyObject *args, PyObject *kwds)
|
||||
float X0, Y0, X1, Y1, Thickness, Outline = 0.f;
|
||||
sf::Color *OutlineCol;
|
||||
PySfColor *ColTmp, *OutlineColTmp=NULL;
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "fffffO!|fO!", (char **)kwlist, &X0, &Y0, &X1, &Y1, &Thickness, &PySfColorType, &ColTmp, &Outline, &PySfColorType, &OutlineColTmp))
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "fffffO!|fO!:Shape.Line", (char **)kwlist, &X0, &Y0, &X1, &Y1, &Thickness, &PySfColorType, &ColTmp, &Outline, &PySfColorType, &OutlineColTmp))
|
||||
return NULL;
|
||||
if (OutlineColTmp)
|
||||
{
|
||||
@ -143,7 +133,7 @@ PySfShape_Rectangle(PySfShape* self, PyObject *args, PyObject *kwds)
|
||||
float X0, Y0, X1, Y1, Outline = 0.f;
|
||||
sf::Color *OutlineCol;
|
||||
PySfColor *ColTmp, *OutlineColTmp=NULL;
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "ffffO!|fO!", (char **)kwlist, &X0, &Y0, &X1, &Y1, &PySfColorType, &ColTmp, &Outline, &PySfColorType, &OutlineColTmp))
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "ffffO!|fO!:Shape.Rectangle", (char **)kwlist, &X0, &Y0, &X1, &Y1, &PySfColorType, &ColTmp, &Outline, &PySfColorType, &OutlineColTmp))
|
||||
return NULL;
|
||||
if (OutlineColTmp)
|
||||
{
|
||||
@ -167,7 +157,7 @@ PySfShape_Circle(PySfShape* self, PyObject *args, PyObject *kwds)
|
||||
float X, Y, Radius, Outline = 0.f;
|
||||
sf::Color *OutlineCol;
|
||||
PySfColor *ColTmp, *OutlineColTmp=NULL;
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "fffO!|fO!", (char **)kwlist, &X, &Y, &Radius, &PySfColorType, &ColTmp, &Outline, &PySfColorType, &OutlineColTmp))
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "fffO!|fO!:Shape.Circle", (char **)kwlist, &X, &Y, &Radius, &PySfColorType, &ColTmp, &Outline, &PySfColorType, &OutlineColTmp))
|
||||
return NULL;
|
||||
if (OutlineColTmp)
|
||||
{
|
||||
@ -218,7 +208,7 @@ PySfShape_SetPointPosition(PySfShape* self, PyObject *args)
|
||||
{
|
||||
unsigned int Index;
|
||||
float X, Y;
|
||||
if (!PyArg_ParseTuple(args, "Iff", &Index, &X, &Y))
|
||||
if (!PyArg_ParseTuple(args, "Iff:Shape.SetPointPosition", &Index, &X, &Y))
|
||||
return NULL;
|
||||
self->obj->SetPointPosition(Index, X, Y);
|
||||
Py_RETURN_NONE;
|
||||
@ -229,7 +219,7 @@ PySfShape_SetPointColor(PySfShape* self, PyObject *args)
|
||||
{
|
||||
unsigned int Index;
|
||||
PySfColor *Color;
|
||||
if (!PyArg_ParseTuple(args, "IO!", &Index, &PySfColorType, &Color))
|
||||
if (!PyArg_ParseTuple(args, "IO!:Shape.SetPointColor", &Index, &PySfColorType, &Color))
|
||||
return NULL;
|
||||
PySfColorUpdate(Color);
|
||||
self->obj->SetPointColor(Index, *(Color->obj));
|
||||
@ -241,7 +231,7 @@ PySfShape_SetPointOutlineColor(PySfShape* self, PyObject *args)
|
||||
{
|
||||
unsigned int Index;
|
||||
PySfColor *Color;
|
||||
if (!PyArg_ParseTuple(args, "IO!", &Index, &PySfColorType, &Color))
|
||||
if (!PyArg_ParseTuple(args, "IO!:Shape:SetPointOutlineColor", &Index, &PySfColorType, &Color))
|
||||
return NULL;
|
||||
PySfColorUpdate(Color);
|
||||
self->obj->SetPointOutlineColor(Index, *(Color->obj));
|
||||
@ -257,20 +247,14 @@ PySfShape_GetNbPoints(PySfShape* self, PyObject *args)
|
||||
static PyObject *
|
||||
PySfShape_EnableFill(PySfShape* self, PyObject *args)
|
||||
{
|
||||
if (PyObject_IsTrue(args))
|
||||
self->obj->EnableFill(true);
|
||||
else
|
||||
self->obj->EnableFill(false);
|
||||
self->obj->EnableFill(PyBool_AsBool(args));
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfShape_EnableOutline(PySfShape* self, PyObject *args)
|
||||
{
|
||||
if (PyObject_IsTrue(args))
|
||||
self->obj->EnableOutline(true);
|
||||
else
|
||||
self->obj->EnableOutline(false);
|
||||
self->obj->EnableOutline(PyBool_AsBool(args));
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
@ -346,8 +330,7 @@ Create a shape made of a single circle.\n\
|
||||
|
||||
|
||||
PyTypeObject PySfShapeType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"Shape", /*tp_name*/
|
||||
sizeof(PySfShape), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -375,7 +358,7 @@ PyTypeObject PySfShapeType = {
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfShape_methods, /* tp_methods */
|
||||
PySfShape_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
&PySfDrawableType, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
|
@ -25,13 +25,9 @@
|
||||
#ifndef __PYSHAPE_HPP
|
||||
#define __PYSHAPE_HPP
|
||||
|
||||
#include <SFML/Graphics/Shape.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include <SFML/Graphics/Shape.hpp>
|
||||
|
||||
|
||||
typedef struct {
|
||||
|
@ -23,33 +23,26 @@
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#include "Sound.hpp"
|
||||
|
||||
#include "SoundBuffer.hpp"
|
||||
|
||||
extern PyTypeObject PySfSoundBufferType;
|
||||
#include "compat.hpp"
|
||||
|
||||
static PyMemberDef PySfSound_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
extern PyTypeObject PySfSoundBufferType;
|
||||
|
||||
|
||||
static void
|
||||
PySfSound_dealloc(PySfSound *self)
|
||||
{
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfSound_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfSound *self;
|
||||
|
||||
self = (PySfSound *)type->tp_alloc(type, 0);
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
@ -61,21 +54,17 @@ static PyObject*
|
||||
PySfSound_SetBuffer(PySfSound *self, PyObject *args)
|
||||
{
|
||||
PySfSoundBuffer *Buffer = (PySfSoundBuffer *)args;
|
||||
if ( ! PyObject_TypeCheck(args, &PySfSoundBufferType))
|
||||
PyErr_SetString(PyExc_TypeError, "The argument must be a sfSoundBuffer.");
|
||||
if (!PyObject_TypeCheck(args, &PySfSoundBufferType))
|
||||
PyErr_SetString(PyExc_TypeError, "Sound.SetBuffer() The argument must be a sf.SoundBuffer.");
|
||||
|
||||
self->obj->SetBuffer(*(Buffer->obj));
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static PyObject*
|
||||
PySfSound_SetLoop(PySfSound *self, PyObject *args)
|
||||
{
|
||||
if (PyObject_IsTrue(args))
|
||||
self->obj->SetLoop(true);
|
||||
else
|
||||
self->obj->SetLoop(false);
|
||||
self->obj->SetLoop(PyBool_AsBool(args));
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
@ -147,10 +136,7 @@ PySfSound_GetPlayingOffset(PySfSound *self)
|
||||
static PyObject*
|
||||
PySfSound_GetLoop(PySfSound *self)
|
||||
{
|
||||
if (self->obj->GetLoop())
|
||||
Py_RETURN_TRUE;
|
||||
else
|
||||
Py_RETURN_FALSE;
|
||||
return PyBool_FromLong(self->obj->GetLoop());
|
||||
}
|
||||
|
||||
static PyObject*
|
||||
@ -184,7 +170,7 @@ static PyObject*
|
||||
PySfSound_SetPosition(PySfSound *self, PyObject *args)
|
||||
{
|
||||
float X, Y, Z;
|
||||
if (! PyArg_ParseTuple(args, "fff", &X, &Y, &Z))
|
||||
if (!PyArg_ParseTuple(args, "fff:Sound.SetPosition", &X, &Y, &Z))
|
||||
return NULL;
|
||||
self->obj->SetPosition(X, Y, Z);
|
||||
Py_RETURN_NONE;
|
||||
@ -233,8 +219,7 @@ static PyMethodDef PySfSound_methods[] = {
|
||||
};
|
||||
|
||||
PyTypeObject PySfSoundType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"Sound", /*tp_name*/
|
||||
sizeof(PySfSound), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -272,7 +257,7 @@ Copy constructor : Sound(Copy) where Copy is a sf.Sound instance.", /* tp_doc */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfSound_methods, /* tp_methods */
|
||||
PySfSound_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
@ -286,9 +271,7 @@ Copy constructor : Sound(Copy) where Copy is a sf.Sound instance.", /* tp_doc */
|
||||
|
||||
static int
|
||||
PySfSound_init(PySfSound *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
// Sound(const SoundBuffer& Buffer, bool Loop = false, float Pitch = 1.f, float Volume = 100.f, float X = 0.f, float Y = 0.f, float Z = 0.f);
|
||||
|
||||
{
|
||||
const char *kwlist[] = {"Buffer", "Loop", "Pitch", "Volume", "X", "Y", "Z", NULL};
|
||||
PySfSoundBuffer *Buffer=NULL;
|
||||
bool Loop=false;
|
||||
@ -298,19 +281,17 @@ PySfSound_init(PySfSound *self, PyObject *args, PyObject *kwds)
|
||||
if (PyTuple_Size(args) == 1)
|
||||
{
|
||||
PySfSound *Copy;
|
||||
if (PyArg_ParseTuple(args, "O!", &PySfSoundType, &Copy))
|
||||
if (PyArg_ParseTuple(args, "O!:Sound.__init__", &PySfSoundType, &Copy))
|
||||
{
|
||||
self->obj = new sf::Sound(*(Copy->obj));
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
PyErr_Clear();
|
||||
else PyErr_Clear();
|
||||
}
|
||||
if (PyTuple_Size(args) > 0)
|
||||
{
|
||||
if ( !PyArg_ParseTupleAndKeywords(args, kwds, "O!|Offfff", (char **)kwlist, &PySfSoundBufferType, &Buffer, &LoopObj, &Pitch, &Volume, &X, &Y, &Z))
|
||||
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;
|
||||
|
||||
@ -326,13 +307,13 @@ void
|
||||
PySfSound_InitConst()
|
||||
{
|
||||
PyObject *obj;
|
||||
obj = PyInt_FromLong(sf::Sound::Stopped);
|
||||
obj = PyLong_FromLong(sf::Sound::Stopped);
|
||||
PyDict_SetItemString(PySfSoundType.tp_dict, "Stopped", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Sound::Paused);
|
||||
obj = PyLong_FromLong(sf::Sound::Paused);
|
||||
PyDict_SetItemString(PySfSoundType.tp_dict, "Paused", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Sound::Playing);
|
||||
obj = PyLong_FromLong(sf::Sound::Playing);
|
||||
PyDict_SetItemString(PySfSoundType.tp_dict, "Playing", obj);
|
||||
Py_DECREF(obj);
|
||||
}
|
||||
|
@ -25,11 +25,9 @@
|
||||
#ifndef __PYSOUND_HPP
|
||||
#define __PYSOUND_HPP
|
||||
|
||||
#include <SFML/Audio/Sound.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include <SFML/Audio/Sound.hpp>
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
|
@ -24,29 +24,21 @@
|
||||
|
||||
#include "SoundBuffer.hpp"
|
||||
|
||||
|
||||
static PyMemberDef PySfSoundBuffer_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
#include "compat.hpp"
|
||||
|
||||
|
||||
static void
|
||||
PySfSoundBuffer_dealloc(PySfSoundBuffer *self)
|
||||
{
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfSoundBuffer_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfSoundBuffer *self;
|
||||
|
||||
self = (PySfSoundBuffer *)type->tp_alloc(type, 0);
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
@ -56,11 +48,7 @@ PySfSoundBuffer_init(PySfSoundBuffer *self, PyObject *args, PyObject *kwds);
|
||||
static PyObject*
|
||||
PySfSoundBuffer_LoadFromFile(PySfSoundBuffer *self, PyObject *args)
|
||||
{
|
||||
char *path = PyString_AsString(args);
|
||||
if (self->obj->LoadFromFile(path))
|
||||
Py_RETURN_TRUE;
|
||||
else
|
||||
Py_RETURN_FALSE;
|
||||
load_from_file(self, args);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
@ -69,13 +57,10 @@ PySfSoundBuffer_LoadFromMemory(PySfSoundBuffer* self, PyObject *args)
|
||||
unsigned int SizeInBytes;
|
||||
char *Data;
|
||||
|
||||
if (! PyArg_ParseTuple(args, "s#", &Data, &SizeInBytes))
|
||||
if (!PyArg_ParseTuple(args, "s#:SoundBuffer.LoadFromMemory", &Data, &SizeInBytes))
|
||||
return NULL;
|
||||
|
||||
if (self->obj->LoadFromMemory(Data, (std::size_t) SizeInBytes))
|
||||
Py_RETURN_TRUE;
|
||||
else
|
||||
Py_RETURN_FALSE;
|
||||
return PyBool_FromLong(self->obj->LoadFromMemory(Data, (std::size_t) SizeInBytes));
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
@ -84,29 +69,26 @@ PySfSoundBuffer_LoadFromSamples(PySfSoundBuffer* self, PyObject *args)
|
||||
unsigned int SizeInBytes, ChannelsCount, SampleRate;
|
||||
char *Data;
|
||||
|
||||
if (! PyArg_ParseTuple(args, "s#II", &Data, &SizeInBytes, &ChannelsCount, &SampleRate))
|
||||
if (!PyArg_ParseTuple(args, "s#II:SoundBuffer.LoadFromSamples", &Data, &SizeInBytes, &ChannelsCount, &SampleRate))
|
||||
return NULL;
|
||||
|
||||
if (self->obj->LoadFromSamples((const sf::Int16*)Data, (std::size_t) SizeInBytes/2, ChannelsCount, SampleRate))
|
||||
Py_RETURN_TRUE;
|
||||
else
|
||||
Py_RETURN_FALSE;
|
||||
return PyBool_FromLong(self->obj->LoadFromSamples((const sf::Int16*)Data, (std::size_t) SizeInBytes/2, ChannelsCount, SampleRate));
|
||||
}
|
||||
|
||||
static PyObject*
|
||||
PySfSoundBuffer_GetSamples(PySfSoundBuffer *self)
|
||||
{
|
||||
#ifdef IS_PY3K
|
||||
return PyBytes_FromStringAndSize((const char *)(self->obj->GetSamples()), self->obj->GetSamplesCount()*2);
|
||||
#else
|
||||
return PyString_FromStringAndSize((const char *)(self->obj->GetSamples()), self->obj->GetSamplesCount()*2);
|
||||
#endif
|
||||
}
|
||||
|
||||
static PyObject*
|
||||
PySfSoundBuffer_SaveToFile(PySfSoundBuffer *self, PyObject *args)
|
||||
{
|
||||
char *path = PyString_AsString(args);
|
||||
if (self->obj->SaveToFile(path))
|
||||
Py_RETURN_TRUE;
|
||||
else
|
||||
Py_RETURN_FALSE;
|
||||
save_to_file(self, args);
|
||||
}
|
||||
|
||||
static PyObject*
|
||||
@ -151,8 +133,7 @@ static PyMethodDef PySfSoundBuffer_methods[] = {
|
||||
};
|
||||
|
||||
PyTypeObject PySfSoundBufferType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"SoundBuffer", /*tp_name*/
|
||||
sizeof(PySfSoundBuffer), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -182,7 +163,7 @@ Copy constructor : SoundBuffer(Copy) where Copy is a sf.SoundBuffer instance.",
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfSoundBuffer_methods, /* tp_methods */
|
||||
PySfSoundBuffer_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
@ -197,16 +178,18 @@ Copy constructor : SoundBuffer(Copy) where Copy is a sf.SoundBuffer instance.",
|
||||
static int
|
||||
PySfSoundBuffer_init(PySfSoundBuffer *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
if (PyTuple_Size(args) == 1)
|
||||
int size = PyTuple_Size(args);
|
||||
if (size == 1)
|
||||
{
|
||||
PySfSoundBuffer *Copy;
|
||||
if (PyArg_ParseTuple(args, "O!", &PySfSoundBufferType, &Copy))
|
||||
self->obj = new sf::SoundBuffer(*(Copy->obj));
|
||||
else
|
||||
if (!PyArg_ParseTuple(args, "O!:SoundBuffer.__init__", &PySfSoundBufferType, &Copy))
|
||||
return -1;
|
||||
self->obj = new sf::SoundBuffer(*(Copy->obj));
|
||||
}
|
||||
else
|
||||
else if (size == 0)
|
||||
self->obj = new sf::SoundBuffer();
|
||||
else
|
||||
PyErr_SetString(PyExc_TypeError, "SoundBuffer.__init__() takes 0 or 1 argument");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -25,11 +25,9 @@
|
||||
#ifndef __PYSOUNDBUFFER_HPP
|
||||
#define __PYSOUNDBUFFER_HPP
|
||||
|
||||
#include <SFML/Audio/SoundBuffer.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include <SFML/Audio/SoundBuffer.hpp>
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
|
@ -23,35 +23,26 @@
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#include "SoundBufferRecorder.hpp"
|
||||
|
||||
#include "SoundBuffer.hpp"
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
|
||||
extern PyTypeObject PySfSoundRecorderType;
|
||||
|
||||
static PyMemberDef PySfSoundBufferRecorder_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void
|
||||
PySfSoundBufferRecorder_dealloc(PySfSoundBufferRecorder *self)
|
||||
{
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfSoundBufferRecorder_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfSoundBufferRecorder *self;
|
||||
|
||||
self = (PySfSoundBufferRecorder *)type->tp_alloc(type, 0);
|
||||
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
@ -66,7 +57,7 @@ static PyObject *
|
||||
PySfSoundBufferRecorder_GetBuffer(PySfSoundBufferRecorder* self)
|
||||
{
|
||||
PySfSoundBuffer *SoundBuffer = GetNewPySfSoundBuffer();
|
||||
SoundBuffer->obj = new sf::SoundBuffer( self->obj->GetBuffer() );
|
||||
SoundBuffer->obj = new sf::SoundBuffer(self->obj->GetBuffer());
|
||||
return (PyObject *)SoundBuffer;
|
||||
}
|
||||
|
||||
@ -77,8 +68,7 @@ static PyMethodDef PySfSoundBufferRecorder_methods[] = {
|
||||
};
|
||||
|
||||
PyTypeObject PySfSoundBufferRecorderType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"SoundBufferRecorder", /*tp_name*/
|
||||
sizeof(PySfSoundBufferRecorder), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -106,7 +96,7 @@ PyTypeObject PySfSoundBufferRecorderType = {
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfSoundBufferRecorder_methods, /* tp_methods */
|
||||
PySfSoundBufferRecorder_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
&PySfSoundRecorderType, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
|
@ -25,13 +25,9 @@
|
||||
#ifndef __PYSOUNDBUFFERRECORDER_HPP
|
||||
#define __PYSOUNDBUFFERRECORDER_HPP
|
||||
|
||||
#include <SFML/Audio/SoundBufferRecorder.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include <SFML/Audio/SoundBufferRecorder.hpp>
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
|
@ -24,57 +24,58 @@
|
||||
|
||||
#include "SoundRecorder.hpp"
|
||||
|
||||
|
||||
|
||||
static PyMemberDef PySfSoundRecorder_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
bool CustomSoundRecorder::OnStart()
|
||||
{
|
||||
bool result = false;
|
||||
if (PyObject_HasAttrString(SoundRecorder, "OnStart"))
|
||||
if (PyObject_IsTrue(PyObject_CallFunction(PyObject_GetAttrString(SoundRecorder, "OnStart"), NULL)))
|
||||
return true;
|
||||
return false;
|
||||
{
|
||||
PyObject *OnStart = PyObject_GetAttrString(SoundRecorder, "OnStart");
|
||||
PyObject *Result = PyObject_CallFunction(OnStart, NULL);
|
||||
result = PyBool_AsBool(Result);
|
||||
Py_DECREF(OnStart);
|
||||
Py_DECREF(Result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool CustomSoundRecorder::OnProcessSamples(const sf::Int16* Samples, std::size_t SamplesCount)
|
||||
{
|
||||
bool result = false;
|
||||
if (PyObject_HasAttrString(SoundRecorder, "OnGetData"))
|
||||
{
|
||||
if (PyObject_IsTrue(PyObject_CallFunction(PyObject_GetAttrString(SoundRecorder, "OnGetData"), (char *)"#s", (char *)Samples, SamplesCount*2)))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
PyObject *OnGetData = PyObject_GetAttrString(SoundRecorder, "OnGetData");
|
||||
PyObject *Result = PyObject_CallFunction(OnGetData, (char *)"#s", (char *)Samples, SamplesCount*2);
|
||||
result = PyBool_AsBool(Result);
|
||||
Py_DECREF(OnGetData);
|
||||
Py_DECREF(Result);
|
||||
}
|
||||
return false;
|
||||
return result;
|
||||
}
|
||||
|
||||
void CustomSoundRecorder::OnStop()
|
||||
{
|
||||
if (PyObject_HasAttrString(SoundRecorder, "OnStop"))
|
||||
PyObject_CallFunction(PyObject_GetAttrString(SoundRecorder, "OnStop"), NULL);
|
||||
{
|
||||
PyObject *OnStop = PyObject_GetAttrString(SoundRecorder, "OnStop");
|
||||
PyObject_CallFunction(OnStop, NULL);
|
||||
Py_DECREF(OnStop);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
PySfSoundRecorder_dealloc(PySfSoundRecorder* self)
|
||||
{
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfSoundRecorder_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfSoundRecorder *self;
|
||||
|
||||
self = (PySfSoundRecorder *)type->tp_alloc(type, 0);
|
||||
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
@ -86,11 +87,10 @@ PySfSoundRecorder_init(PySfSoundRecorder *self, PyObject *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static PyObject *
|
||||
PySfSoundRecorder_Start(PySfSoundRecorder* self, PyObject *args)
|
||||
{
|
||||
self->obj->Start( PyInt_AsLong(args) );
|
||||
self->obj->Start(PyLong_AsLong(args));
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
@ -104,20 +104,16 @@ PySfSoundRecorder_Stop(PySfSoundRecorder* self)
|
||||
static PyObject *
|
||||
PySfSoundRecorder_GetSampleRate(PySfSoundRecorder* self)
|
||||
{
|
||||
return PyInt_FromLong(self->obj->GetSampleRate());
|
||||
return PyLong_FromLong(self->obj->GetSampleRate());
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfSoundRecorder_CanCapture(PySfSoundRecorder* self)
|
||||
{
|
||||
if (sf::SoundRecorder::CanCapture())
|
||||
Py_RETURN_TRUE;
|
||||
else
|
||||
Py_RETURN_FALSE;
|
||||
return PyBool_FromLong(sf::SoundRecorder::CanCapture());
|
||||
}
|
||||
|
||||
|
||||
|
||||
static PyMethodDef PySfSoundRecorder_methods[] = {
|
||||
{"Start", (PyCFunction)PySfSoundRecorder_Start, METH_O, "Start(SampleRate=44100)\nStart the capture. Warning : only one capture can happen at the same time.\n SampleRate : Sound frequency (the more samples, the higher the quality) (44100 by default = CD quality)."},
|
||||
{"Stop", (PyCFunction)PySfSoundRecorder_Stop, METH_NOARGS, "Stop()\nStop the capture."},
|
||||
@ -128,8 +124,7 @@ static PyMethodDef PySfSoundRecorder_methods[] = {
|
||||
|
||||
|
||||
PyTypeObject PySfSoundRecorderType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"SoundRecorder", /*tp_name*/
|
||||
sizeof(PySfSoundRecorder), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -160,7 +155,7 @@ Construct the sound recorder with a callback function for processing captured sa
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfSoundRecorder_methods, /* tp_methods */
|
||||
PySfSoundRecorder_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
|
@ -25,13 +25,9 @@
|
||||
#ifndef __PYSOUNDRECORDER_HPP
|
||||
#define __PYSOUNDRECORDER_HPP
|
||||
|
||||
#include <SFML/Audio/SoundRecorder.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include <SFML/Audio/SoundRecorder.hpp>
|
||||
|
||||
class CustomSoundRecorder : public sf::SoundRecorder
|
||||
{
|
||||
|
@ -24,32 +24,46 @@
|
||||
|
||||
#include "SoundStream.hpp"
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
|
||||
bool CustomSoundStream::OnStart()
|
||||
{
|
||||
bool result = false;
|
||||
if (PyObject_HasAttrString(SoundStream, "OnStart"))
|
||||
if (PyObject_IsTrue(PyObject_CallFunction(PyObject_GetAttrString(SoundStream, "OnStart"), NULL)))
|
||||
return true;
|
||||
return false;
|
||||
{
|
||||
PyObject *OnStart = PyObject_GetAttrString(SoundStream, "OnStart");
|
||||
PyObject *Result = PyObject_CallFunction(OnStart, NULL);
|
||||
result = PyBool_AsBool(Result);
|
||||
Py_DECREF(OnStart);
|
||||
Py_DECREF(Result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool CustomSoundStream::OnGetData(Chunk& Data)
|
||||
{
|
||||
bool result = false;
|
||||
if (PyData != NULL) {
|
||||
Py_DECREF(PyData);
|
||||
}
|
||||
if (PyObject_HasAttrString(SoundStream, "OnGetData"))
|
||||
{
|
||||
PyObject *PyData=NULL;
|
||||
PyObject *Function = PyObject_GetAttrString(SoundStream, "OnGetData");
|
||||
Data.NbSamples = 0;
|
||||
if ((PyData = PyObject_CallFunction(PyObject_GetAttrString(SoundStream, "OnGetData"), NULL)))
|
||||
PyData = PyObject_CallFunction(Function, NULL);
|
||||
if (PyData != NULL)
|
||||
{
|
||||
if (PyArg_Parse(PyData, "s#", &(Data.Samples), &(Data.NbSamples)))
|
||||
{
|
||||
Data.NbSamples /= 2;
|
||||
if (Data.NbSamples > 0)
|
||||
return true;
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
Py_DECREF(Function);
|
||||
}
|
||||
return false;
|
||||
return result;
|
||||
}
|
||||
|
||||
void CustomSoundStream::Init(unsigned int ChannelsCount, unsigned int SampleRate)
|
||||
@ -57,16 +71,11 @@ void CustomSoundStream::Init(unsigned int ChannelsCount, unsigned int SampleRate
|
||||
Initialize(ChannelsCount, SampleRate);
|
||||
}
|
||||
|
||||
|
||||
static PyMemberDef PySfSoundStream_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
@ -75,7 +84,7 @@ static void
|
||||
PySfSoundStream_dealloc(PySfSoundStream *self)
|
||||
{
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
@ -90,7 +99,7 @@ static PyObject *
|
||||
PySfSoundStream_Initialize(PySfSoundStream *self, PyObject *args)
|
||||
{
|
||||
unsigned int ChannelsCount, SampleRate;
|
||||
if (!PyArg_ParseTuple(args, "II", &ChannelsCount, &SampleRate))
|
||||
if (!PyArg_ParseTuple(args, "II:SoundStream.Initialize", &ChannelsCount, &SampleRate))
|
||||
return NULL;
|
||||
self->obj->Init(ChannelsCount, SampleRate);
|
||||
Py_RETURN_NONE;
|
||||
@ -192,7 +201,7 @@ static PyObject*
|
||||
PySfSoundStream_SetPosition(PySfSoundStream *self, PyObject *args)
|
||||
{
|
||||
float X, Y, Z;
|
||||
if (! PyArg_ParseTuple(args, "fff", &X, &Y, &Z))
|
||||
if (!PyArg_ParseTuple(args, "fff:SoundStream.SetPosition", &X, &Y, &Z))
|
||||
return NULL;
|
||||
self->obj->SetPosition(X, Y, Z);
|
||||
Py_RETURN_NONE;
|
||||
@ -207,20 +216,14 @@ PySfSoundStream_GetStatus(PySfSoundStream *self)
|
||||
static PyObject*
|
||||
PySfSoundStream_SetLoop(PySfSoundStream *self, PyObject *args)
|
||||
{
|
||||
if (PyObject_IsTrue(args))
|
||||
self->obj->SetLoop(true);
|
||||
else
|
||||
self->obj->SetLoop(false);
|
||||
self->obj->SetLoop(PyBool_AsBool(args));
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static PyObject*
|
||||
PySfSoundStream_GetLoop(PySfSoundStream *self)
|
||||
{
|
||||
if (self->obj->GetLoop())
|
||||
Py_RETURN_TRUE;
|
||||
else
|
||||
Py_RETURN_FALSE;
|
||||
return PyBool_FromLong(self->obj->GetLoop());
|
||||
}
|
||||
|
||||
static PyObject*
|
||||
@ -259,8 +262,7 @@ Set the audio stream parameters, you must call it before Play()\n\
|
||||
|
||||
|
||||
PyTypeObject PySfSoundStreamType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"SoundStream", /*tp_name*/
|
||||
sizeof(PySfSoundStream), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -291,7 +293,7 @@ or for streaming sound from the network", /* tp_doc */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfSoundStream_methods, /* tp_methods */
|
||||
PySfSoundStream_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
@ -308,13 +310,13 @@ void
|
||||
PySfSoundStream_InitConst()
|
||||
{
|
||||
PyObject *obj;
|
||||
obj = PyInt_FromLong(sf::SoundStream::Stopped);
|
||||
obj = PyLong_FromLong(sf::SoundStream::Stopped);
|
||||
PyDict_SetItemString(PySfSoundStreamType.tp_dict, "Stopped", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::SoundStream::Paused);
|
||||
obj = PyLong_FromLong(sf::SoundStream::Paused);
|
||||
PyDict_SetItemString(PySfSoundStreamType.tp_dict, "Paused", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::SoundStream::Playing);
|
||||
obj = PyLong_FromLong(sf::SoundStream::Playing);
|
||||
PyDict_SetItemString(PySfSoundStreamType.tp_dict, "Playing", obj);
|
||||
Py_DECREF(obj);
|
||||
}
|
||||
|
@ -26,15 +26,14 @@
|
||||
#define __PYSOUNDSTREAM_HPP
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include <SFML/Audio/SoundStream.hpp>
|
||||
#include <iostream>
|
||||
|
||||
class CustomSoundStream : public sf::SoundStream
|
||||
{
|
||||
public :
|
||||
PyObject *SoundStream;
|
||||
PyObject *PyData;
|
||||
virtual bool OnStart();
|
||||
virtual bool OnGetData(Chunk& Data);
|
||||
void Init(unsigned int ChannelsCount, unsigned int SampleRate);
|
||||
|
@ -27,36 +27,27 @@
|
||||
#include "Color.hpp"
|
||||
#include "Rect.hpp"
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
|
||||
extern PyTypeObject PySfColorType;
|
||||
extern PyTypeObject PySfImageType;
|
||||
extern PyTypeObject PySfDrawableType;
|
||||
extern PyTypeObject PySfFontType;
|
||||
|
||||
static PyMemberDef PySfString_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void
|
||||
PySfString_dealloc(PySfString *self)
|
||||
{
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfString_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfString *self;
|
||||
|
||||
self = (PySfString *)type->tp_alloc(type, 0);
|
||||
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
@ -121,7 +112,7 @@ PySfString_SetFont(PySfString* self, PyObject *args)
|
||||
{
|
||||
PySfFont *Font = (PySfFont *)args;
|
||||
if (!PyObject_TypeCheck(Font, &PySfFontType))
|
||||
PyErr_SetString(PyExc_ValueError, "Argument must be a sf.Font");
|
||||
PyErr_SetString(PyExc_ValueError, "String.SetFont() Argument must be a sf.Font");
|
||||
self->obj->SetFont(*(Font->obj));
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
@ -155,7 +146,12 @@ PySfString_GetStyle(PySfString* self)
|
||||
static PyObject *
|
||||
PySfString_GetText(PySfString* self)
|
||||
{
|
||||
return PyString_FromString((std::string(self->obj->GetText())).c_str());
|
||||
std::string Text = (std::string(self->obj->GetText()));
|
||||
#ifdef IS_PY3K
|
||||
return PyUnicode_DecodeUTF8(Text.c_str(), (Py_ssize_t)Text.length(), "replace");
|
||||
#else
|
||||
return PyString_FromString(Text.c_str());
|
||||
#endif
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
@ -206,8 +202,7 @@ Return the visual position (a tuple of two floats) of the Index-th character of
|
||||
};
|
||||
|
||||
PyTypeObject PySfStringType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"String", /*tp_name*/
|
||||
sizeof(PySfString), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -236,7 +231,7 @@ Default constructor : String ()\nConstruct the string from a utf-8 or a utf-16 s
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfString_methods, /* tp_methods */
|
||||
PySfString_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
&PySfDrawableType, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
@ -253,16 +248,16 @@ Default constructor : String ()\nConstruct the string from a utf-8 or a utf-16 s
|
||||
void PySfString_InitConst()
|
||||
{
|
||||
PyObject *obj;
|
||||
obj = PyInt_FromLong(sf::String::Regular);
|
||||
obj = PyLong_FromLong(sf::String::Regular);
|
||||
PyDict_SetItemString(PySfStringType.tp_dict, "Regular", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::String::Bold);
|
||||
obj = PyLong_FromLong(sf::String::Bold);
|
||||
PyDict_SetItemString(PySfStringType.tp_dict, "Bold", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::String::Italic);
|
||||
obj = PyLong_FromLong(sf::String::Italic);
|
||||
PyDict_SetItemString(PySfStringType.tp_dict, "Italic", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::String::Underlined);
|
||||
obj = PyLong_FromLong(sf::String::Underlined);
|
||||
PyDict_SetItemString(PySfStringType.tp_dict, "Underlined", obj);
|
||||
Py_DECREF(obj);
|
||||
}
|
||||
|
@ -25,11 +25,9 @@
|
||||
#ifndef __PYSTRING_HPP
|
||||
#define __PYSTRING_HPP
|
||||
|
||||
#include <SFML/Graphics/String.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include <SFML/Graphics/String.hpp>
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
|
@ -22,8 +22,12 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#include "VideoMode.hpp"
|
||||
|
||||
#include "VideoMode.hpp"
|
||||
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include "compat.hpp"
|
||||
|
||||
|
||||
static PyMemberDef PySfVideoMode_members[] = {
|
||||
@ -34,12 +38,11 @@ static PyMemberDef PySfVideoMode_members[] = {
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void
|
||||
PySfVideoMode_dealloc(PySfVideoMode* self)
|
||||
{
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
@ -72,7 +75,7 @@ PySfVideoMode_init(PySfVideoMode *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
const char *kwlist[] = {"Width", "Height", "BitsPerPixel", NULL};
|
||||
|
||||
if (! PyArg_ParseTupleAndKeywords(args, kwds, "II|I", (char **)kwlist, &self->Width, &self->Height, &self->BitsPerPixel))
|
||||
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);
|
||||
@ -111,7 +114,7 @@ PySfVideoMode_GetMode(PySfVideoMode* self, PyObject *args)
|
||||
std::size_t index;
|
||||
PySfVideoMode *VideoMode;
|
||||
|
||||
index = (std::size_t)PyInt_AsLong(args);
|
||||
index = (std::size_t)PyLong_AsLong(args);
|
||||
|
||||
VideoMode = GetNewPySfVideoMode();
|
||||
VideoMode->obj = new sf::VideoMode ( sf::VideoMode::GetMode(index) );
|
||||
@ -125,7 +128,7 @@ PySfVideoMode_GetMode(PySfVideoMode* self, PyObject *args)
|
||||
static PyObject *
|
||||
PySfVideoMode_GetModesCount(PySfVideoMode* self)
|
||||
{
|
||||
return PyInt_FromLong(sf::VideoMode::GetModesCount());
|
||||
return PyLong_FromLong(sf::VideoMode::GetModesCount());
|
||||
}
|
||||
|
||||
|
||||
@ -150,8 +153,7 @@ int PySfVideoMode_Compare(PyObject *o1, PyObject *o2)
|
||||
|
||||
|
||||
PyTypeObject PySfVideoModeType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"VideoMode", /*tp_name*/
|
||||
sizeof(PySfVideoMode), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
|
@ -25,15 +25,9 @@
|
||||
#ifndef __PYVIDEOMODE_HPP
|
||||
#define __PYVIDEOMODE_HPP
|
||||
|
||||
#include <SFML/System.hpp>
|
||||
#include <SFML/Window.hpp>
|
||||
#include <iostream>
|
||||
#include <SFML/Window/VideoMode.hpp>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
|
@ -23,20 +23,21 @@
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#include "View.hpp"
|
||||
#include "Rect.hpp"
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include "compat.hpp"
|
||||
|
||||
|
||||
extern PyTypeObject PySfFloatRectType;
|
||||
|
||||
static PyMemberDef PySfView_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
static void
|
||||
PySfView_dealloc(PySfView *self)
|
||||
{
|
||||
if (self->Owner)
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
@ -57,7 +58,7 @@ static int
|
||||
PySfView_init(PySfView *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfFloatRect *Rect=NULL;
|
||||
if (! PyArg_ParseTuple(args, "|O!", &PySfFloatRectType, &Rect))
|
||||
if (!PyArg_ParseTuple(args, "|O!:View.__init__", &PySfFloatRectType, &Rect))
|
||||
return -1;
|
||||
|
||||
if (Rect != NULL)
|
||||
@ -98,7 +99,7 @@ static PyObject *
|
||||
PySfView_Move(PySfView* self, PyObject *args)
|
||||
{
|
||||
float x, y;
|
||||
if ( !PyArg_ParseTuple(args, "ff", &x, &y) )
|
||||
if (!PyArg_ParseTuple(args, "ff:View.Move", &x, &y) )
|
||||
return NULL;
|
||||
self->obj->Move(x, y);
|
||||
Py_RETURN_NONE;
|
||||
@ -108,7 +109,7 @@ static PyObject *
|
||||
PySfView_SetCenter(PySfView* self, PyObject *args)
|
||||
{
|
||||
float x, y;
|
||||
if ( !PyArg_ParseTuple(args, "ff", &x, &y) )
|
||||
if (!PyArg_ParseTuple(args, "ff:View.SetCenter", &x, &y) )
|
||||
return NULL;
|
||||
self->obj->SetCenter(x, y);
|
||||
Py_RETURN_NONE;
|
||||
@ -118,7 +119,7 @@ static PyObject *
|
||||
PySfView_SetHalfSize(PySfView* self, PyObject *args)
|
||||
{
|
||||
float x, y;
|
||||
if ( !PyArg_ParseTuple(args, "ff", &x, &y) )
|
||||
if (!PyArg_ParseTuple(args, "ff:View.SetHalfSize", &x, &y) )
|
||||
return NULL;
|
||||
self->obj->SetHalfSize(x, y);
|
||||
Py_RETURN_NONE;
|
||||
@ -145,8 +146,7 @@ static PyMethodDef PySfView_methods[] = {
|
||||
};
|
||||
|
||||
PyTypeObject PySfViewType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"View", /*tp_name*/
|
||||
sizeof(PySfView), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -174,7 +174,7 @@ PyTypeObject PySfViewType = {
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfView_methods, /* tp_methods */
|
||||
PySfView_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
|
@ -25,15 +25,9 @@
|
||||
#ifndef __PYVIEW_HPP
|
||||
#define __PYVIEW_HPP
|
||||
|
||||
#include <SFML/Graphics/View.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include "Rect.hpp"
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include <SFML/Graphics/View.hpp>
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
|
@ -22,39 +22,38 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#include "Window.hpp"
|
||||
#include "Window.hpp"
|
||||
|
||||
#include "Event.hpp"
|
||||
#include "VideoMode.hpp"
|
||||
#include "Input.hpp"
|
||||
#include "WindowSettings.hpp"
|
||||
|
||||
#include "SFML/Window/WindowStyle.hpp"
|
||||
#include <SFML/Window/WindowStyle.hpp>
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
|
||||
extern PyTypeObject PySfEventType;
|
||||
extern PyTypeObject PySfWindowSettingsType;
|
||||
extern PyTypeObject PySfVideoModeType;
|
||||
extern PyTypeObject PySfVideoModeType;
|
||||
|
||||
static PyMemberDef PySfWindow_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
static void
|
||||
PySfWindow_dealloc(PySfWindow* self)
|
||||
{
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfWindow_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfWindow *self;
|
||||
|
||||
self = (PySfWindow *)type->tp_alloc(type, 0);
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static PyObject*
|
||||
PySfWindow_GetEvent(PySfWindow *self, PyObject *args)
|
||||
@ -63,7 +62,7 @@ PySfWindow_GetEvent(PySfWindow *self, PyObject *args)
|
||||
|
||||
if (! PyObject_TypeCheck(PyEvent, &PySfEventType))
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "Argument is not a sfEvent");
|
||||
PyErr_SetString(PyExc_TypeError, "Window.GetEvent() Argument is not a sfEvent");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -71,43 +70,13 @@ PySfWindow_GetEvent(PySfWindow *self, PyObject *args)
|
||||
{
|
||||
PyEvent->Type = PyEvent->obj->Type;
|
||||
PyEvent->Text->Unicode = PyEvent->obj->Text.Unicode;
|
||||
PyEvent->Key->Code = PyEvent->obj->Key.Code;
|
||||
if (PyEvent->obj->Key.Alt && PyEvent->Key->Alt == Py_False)
|
||||
{
|
||||
Py_DECREF(Py_False);
|
||||
Py_INCREF(Py_True);
|
||||
PyEvent->Key->Alt = Py_True;
|
||||
}
|
||||
else if (PyEvent->Key->Alt == Py_True)
|
||||
{
|
||||
Py_DECREF(Py_True);
|
||||
Py_INCREF(Py_False);
|
||||
PyEvent->Key->Alt = Py_False;
|
||||
}
|
||||
if (PyEvent->obj->Key.Control && PyEvent->Key->Control == Py_False)
|
||||
{
|
||||
Py_DECREF(Py_False);
|
||||
Py_INCREF(Py_True);
|
||||
PyEvent->Key->Control = Py_True;
|
||||
}
|
||||
else if (PyEvent->Key->Control == Py_True)
|
||||
{
|
||||
Py_DECREF(Py_True);
|
||||
Py_INCREF(Py_False);
|
||||
PyEvent->Key->Control = Py_False;
|
||||
}
|
||||
if (PyEvent->obj->Key.Shift && PyEvent->Key->Shift == Py_False)
|
||||
{
|
||||
Py_DECREF(Py_False);
|
||||
Py_INCREF(Py_True);
|
||||
PyEvent->Key->Shift = Py_True;
|
||||
}
|
||||
else if (PyEvent->Key->Shift == Py_True)
|
||||
{
|
||||
Py_DECREF(Py_True);
|
||||
Py_INCREF(Py_False);
|
||||
PyEvent->Key->Shift = Py_False;
|
||||
}
|
||||
PyEvent->Key->Code = PyEvent->obj->Key.Code;
|
||||
Py_DECREF(PyEvent->Key->Alt);
|
||||
PyEvent->Key->Alt = PyBool_FromLong(PyEvent->obj->Key.Alt);
|
||||
Py_DECREF(PyEvent->Key->Control);
|
||||
PyEvent->Key->Control = PyBool_FromLong(PyEvent->obj->Key.Control);
|
||||
Py_DECREF(PyEvent->Key->Shift);
|
||||
PyEvent->Key->Shift = PyBool_FromLong(PyEvent->obj->Key.Shift);
|
||||
PyEvent->MouseButton->Button = PyEvent->obj->MouseButton.Button;
|
||||
PyEvent->MouseButton->X = PyEvent->obj->MouseButton.X;
|
||||
PyEvent->MouseButton->Y = PyEvent->obj->MouseButton.Y;
|
||||
@ -136,30 +105,23 @@ PySfWindow_Create(PySfWindow* self, PyObject *args, PyObject *kwds)
|
||||
sf::VideoMode *VideoMode;
|
||||
char *Title=NULL;
|
||||
unsigned long WindowStyle = sf::Style::Resize | sf::Style::Close;
|
||||
PySfWindowSettings *ParamsTmp=NULL;
|
||||
sf::WindowSettings *Params = NULL;
|
||||
PySfWindowSettings *Params=NULL;
|
||||
|
||||
const char *kwlist[] = {"VideoMode", "Title", "WindowStyle", "Params", NULL};
|
||||
|
||||
if (! PyArg_ParseTupleAndKeywords(args, kwds, "O!s|IO!", (char **)kwlist, &PySfVideoModeType, &VideoModeTmp, &Title, &WindowStyle, &PySfWindowSettingsType, &ParamsTmp))
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!s|IO!:Window.Create", (char **)kwlist, &PySfVideoModeType, &VideoModeTmp, &Title, &WindowStyle, &PySfWindowSettingsType, &Params))
|
||||
return NULL;
|
||||
|
||||
if (VideoModeTmp) {
|
||||
VideoMode = ((PySfVideoMode *)VideoModeTmp)->obj;
|
||||
PySfVideoModeUpdate((PySfVideoMode *)VideoModeTmp);
|
||||
}
|
||||
else
|
||||
return NULL;
|
||||
VideoMode = ((PySfVideoMode *)VideoModeTmp)->obj;
|
||||
PySfVideoModeUpdate((PySfVideoMode *)VideoModeTmp);
|
||||
|
||||
if (ParamsTmp)
|
||||
if (Params)
|
||||
{
|
||||
PySfWindowSettingsUpdate(ParamsTmp);
|
||||
Params = ParamsTmp->obj;
|
||||
PySfWindowSettingsUpdate(Params);
|
||||
self->obj->Create(*VideoMode, Title, WindowStyle, *(Params->obj));
|
||||
}
|
||||
else
|
||||
Params = new sf::WindowSettings();
|
||||
|
||||
self->obj->Create(*VideoMode, Title, WindowStyle, *Params);
|
||||
else
|
||||
self->obj->Create(*VideoMode, Title, WindowStyle);
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
@ -183,10 +145,7 @@ PySfWindow_Close(PySfWindow *self)
|
||||
static PyObject *
|
||||
PySfWindow_IsOpened(PySfWindow *self)
|
||||
{
|
||||
if (self->obj->IsOpened())
|
||||
Py_RETURN_TRUE;
|
||||
else
|
||||
Py_RETURN_NONE;
|
||||
return PyBool_FromLong(self->obj->IsOpened());
|
||||
}
|
||||
static PyObject *
|
||||
PySfWindow_GetWidth(PySfWindow *self)
|
||||
@ -202,32 +161,20 @@ PySfWindow_GetHeight(PySfWindow *self)
|
||||
static PyObject *
|
||||
PySfWindow_UseVerticalSync(PySfWindow *self, PyObject *args)
|
||||
{
|
||||
bool Enabled = false;
|
||||
if (PyObject_IsTrue(args))
|
||||
Enabled = true;
|
||||
self->obj->UseVerticalSync(Enabled);
|
||||
self->obj->UseVerticalSync(PyBool_AsBool(args));
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
static PyObject *
|
||||
PySfWindow_ShowMouseCursor(PySfWindow *self, PyObject *args)
|
||||
{
|
||||
bool Show = false;
|
||||
if (PyObject_IsTrue(args))
|
||||
Show = true;
|
||||
self->obj->ShowMouseCursor(Show);
|
||||
self->obj->ShowMouseCursor(PyBool_AsBool(args));
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfWindow_SetActive(PySfWindow *self, PyObject *args)
|
||||
{
|
||||
bool Active = false;
|
||||
if (PyObject_IsTrue(args))
|
||||
Active = true;
|
||||
if (self->obj->SetActive(Active))
|
||||
Py_RETURN_TRUE;
|
||||
else
|
||||
Py_RETURN_FALSE;
|
||||
return PyBool_FromLong(self->obj->SetActive(PyBool_AsBool(args)));
|
||||
}
|
||||
static PyObject *
|
||||
PySfWindow_Display(PySfWindow *self)
|
||||
@ -266,9 +213,8 @@ static PyObject *
|
||||
PySfWindow_SetPosition(PySfWindow* self, PyObject *args)
|
||||
{
|
||||
int Left=0, Top=0;
|
||||
if (! PyArg_ParseTuple(args, "ii", &Left, &Top))
|
||||
if (!PyArg_ParseTuple(args, "ii:Window.SetPosition", &Left, &Top))
|
||||
return NULL;
|
||||
|
||||
self->obj->SetPosition(Left,Top);
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
@ -283,20 +229,14 @@ PySfWindow_SetFramerateLimit(PySfWindow *self, PyObject *args)
|
||||
static PyObject *
|
||||
PySfWindow_Show(PySfWindow *self, PyObject *args)
|
||||
{
|
||||
if (PyObject_IsTrue(args))
|
||||
self->obj->Show(true);
|
||||
else
|
||||
self->obj->Show(false);
|
||||
self->obj->Show(PyBool_AsBool(args));
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfWindow_EnableKeyRepeat(PySfWindow *self, PyObject *args)
|
||||
{
|
||||
if (PyObject_IsTrue(args))
|
||||
self->obj->EnableKeyRepeat(true);
|
||||
else
|
||||
self->obj->EnableKeyRepeat(false);
|
||||
self->obj->EnableKeyRepeat(PyBool_AsBool(args));
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
@ -304,9 +244,8 @@ static PyObject *
|
||||
PySfWindow_SetCursorPosition(PySfWindow* self, PyObject *args)
|
||||
{
|
||||
unsigned int Left=0, Top=0;
|
||||
if (! PyArg_ParseTuple(args, "II", &Left, &Top))
|
||||
if (!PyArg_ParseTuple(args, "II:Window.SetCursorPosition", &Left, &Top))
|
||||
return NULL;
|
||||
|
||||
self->obj->SetCursorPosition(Left,Top);
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
@ -315,9 +254,8 @@ static PyObject *
|
||||
PySfWindow_SetSize(PySfWindow* self, PyObject *args)
|
||||
{
|
||||
unsigned int Width=0, Height=0;
|
||||
if (! PyArg_ParseTuple(args, "II", &Width, &Height))
|
||||
if (!PyArg_ParseTuple(args, "II:Window.SetSize", &Width, &Height))
|
||||
return NULL;
|
||||
|
||||
self->obj->SetSize(Width, Height);
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
@ -335,7 +273,7 @@ PySfWindow_SetIcon(PySfWindow* self, PyObject *args)
|
||||
unsigned int Width, Height, Size;
|
||||
char *Data;
|
||||
|
||||
if (! PyArg_ParseTuple(args, "IIs#", &Width, &Height, &Data, &Size))
|
||||
if (! PyArg_ParseTuple(args, "IIs#:Window.SetIcon", &Width, &Height, &Data, &Size))
|
||||
return NULL;
|
||||
|
||||
self->obj->SetIcon(Width, Height, (sf::Uint8*) Data);
|
||||
@ -378,8 +316,7 @@ Change the window's icon.\n\
|
||||
};
|
||||
|
||||
PyTypeObject PySfWindowType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"Window", /*tp_name*/
|
||||
sizeof(PySfWindow), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -414,7 +351,7 @@ Construct a new window : sf.Window(Mode, Title, sf.Style.Resize | sf.Style.Close
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfWindow_methods, /* tp_methods */
|
||||
PySfWindow_members, /* tp_members */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
|
@ -25,17 +25,9 @@
|
||||
#ifndef __PYWINDOW_HPP
|
||||
#define __PYWINDOW_HPP
|
||||
|
||||
#include <SFML/System.hpp>
|
||||
#include <SFML/Window.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "Event.hpp"
|
||||
#include "VideoMode.hpp"
|
||||
#include "Input.hpp"
|
||||
#include "WindowSettings.hpp"
|
||||
#include <SFML/Window/Window.hpp>
|
||||
|
||||
|
||||
typedef struct {
|
||||
|
@ -24,6 +24,11 @@
|
||||
|
||||
#include "WindowSettings.hpp"
|
||||
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include "compat.hpp"
|
||||
|
||||
static PyMemberDef PySfWindowSettings_members[] = {
|
||||
{(char *)"DepthBits", T_UINT, offsetof(PySfWindowSettings, DepthBits), 0, (char *)"Depth buffer bits (24 by default)"},
|
||||
{(char *)"StencilBits", T_UINT, offsetof(PySfWindowSettings, StencilBits), 0, (char *)"Stencil buffer bits (8 by default)"},
|
||||
@ -36,7 +41,7 @@ static void
|
||||
PySfWindowSettings_dealloc(PySfWindowSettings *self)
|
||||
{
|
||||
delete self->obj;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
free_object(self);
|
||||
}
|
||||
|
||||
void
|
||||
@ -51,16 +56,13 @@ static PyObject *
|
||||
PySfWindowSettings_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfWindowSettings *self;
|
||||
|
||||
self = (PySfWindowSettings *)type->tp_alloc(type, 0);
|
||||
|
||||
if (self != NULL)
|
||||
{
|
||||
self->DepthBits = 24;
|
||||
self->StencilBits = 8;
|
||||
self->AntialiasingLevel = 0;
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
@ -69,21 +71,16 @@ static int
|
||||
PySfWindowSettings_init(PySfWindowSettings *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
const char *kwlist[] = {"DepthBits", "StencilBits", "AntialiasingLevel", NULL};
|
||||
if (! PyArg_ParseTupleAndKeywords(args, kwds, "|III", (char **)kwlist, &(self->DepthBits), &(self->StencilBits), &(self->AntialiasingLevel)))
|
||||
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;
|
||||
}
|
||||
|
||||
static PyMethodDef PySfWindowSettings_methods[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
PyTypeObject PySfWindowSettingsType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"WindowSettings", /*tp_name*/
|
||||
sizeof(PySfWindowSettings), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
@ -110,7 +107,7 @@ PyTypeObject PySfWindowSettingsType = {
|
||||
0, /* tp_weaklistoffset */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfWindowSettings_methods, /* tp_methods */
|
||||
0, /* tp_methods */
|
||||
PySfWindowSettings_members, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
|
@ -25,13 +25,9 @@
|
||||
#ifndef __PYWINDOWSETTINGS_HPP
|
||||
#define __PYWINDOWSETTINGS_HPP
|
||||
|
||||
#include <SFML/Window/WindowSettings.hpp>
|
||||
#include <iostream>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "offsetof.hpp"
|
||||
#include <SFML/Window/WindowSettings.hpp>
|
||||
|
||||
|
||||
typedef struct {
|
||||
|
@ -22,62 +22,25 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
#include <SFML/Window/WindowStyle.hpp>
|
||||
|
||||
#include <Python.h>
|
||||
#include <structmember.h>
|
||||
|
||||
#include "WindowStyle.hpp"
|
||||
|
||||
#include "compat.hpp"
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
} PySfStyle;
|
||||
|
||||
|
||||
|
||||
static PyMemberDef PySfStyle_members[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
static void
|
||||
PySfStyle_dealloc(PySfStyle *self)
|
||||
{
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PySfStyle_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PySfStyle *self;
|
||||
|
||||
self = (PySfStyle *)type->tp_alloc(type, 0);
|
||||
if (self != NULL)
|
||||
{
|
||||
}
|
||||
|
||||
return (PyObject *)self;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
PySfStyle_init(PySfStyle *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyMethodDef PySfStyle_methods[] = {
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
PyTypeObject PySfStyleType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
head_init
|
||||
"Style", /*tp_name*/
|
||||
sizeof(PySfStyle), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
(destructor)PySfStyle_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_dealloc*/
|
||||
0, /*tp_print*/
|
||||
0, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
@ -105,15 +68,15 @@ Fullscreen Fullscreen mode (this flag and all others are mutually exclusive).",
|
||||
0, /* tp_weaklistoffset */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
PySfStyle_methods, /* tp_methods */
|
||||
PySfStyle_members, /* tp_members */
|
||||
0, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
0, /* tp_descr_get */
|
||||
0, /* tp_descr_set */
|
||||
0, /* tp_dictoffset */
|
||||
(initproc)PySfStyle_init, /* tp_init */
|
||||
0, /* tp_init */
|
||||
0, /* tp_alloc */
|
||||
PySfStyle_new, /* tp_new */
|
||||
};
|
||||
@ -121,19 +84,19 @@ Fullscreen Fullscreen mode (this flag and all others are mutually exclusive).",
|
||||
void PySfStyle_InitConst()
|
||||
{
|
||||
PyObject *obj;
|
||||
obj = PyInt_FromLong(sf::Style::None);
|
||||
obj = PyLong_FromLong(sf::Style::None);
|
||||
PyDict_SetItemString(PySfStyleType.tp_dict, "None", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Style::Titlebar);
|
||||
obj = PyLong_FromLong(sf::Style::Titlebar);
|
||||
PyDict_SetItemString(PySfStyleType.tp_dict, "Titlebar", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Style::Resize);
|
||||
obj = PyLong_FromLong(sf::Style::Resize);
|
||||
PyDict_SetItemString(PySfStyleType.tp_dict, "Resize", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Style::Close);
|
||||
obj = PyLong_FromLong(sf::Style::Close);
|
||||
PyDict_SetItemString(PySfStyleType.tp_dict, "Close", obj);
|
||||
Py_DECREF(obj);
|
||||
obj = PyInt_FromLong(sf::Style::Fullscreen);
|
||||
obj = PyLong_FromLong(sf::Style::Fullscreen);
|
||||
PyDict_SetItemString(PySfStyleType.tp_dict, "Fullscreen", obj);
|
||||
Py_DECREF(obj);
|
||||
}
|
||||
|
@ -25,6 +25,14 @@
|
||||
#ifndef __PYWINDOWSTYLE_HPP
|
||||
#define __PYWINDOWSTYLE_HPP
|
||||
|
||||
#include <Python.h>
|
||||
|
||||
#include <SFML/Window/WindowStyle.hpp>
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
} PySfStyle;
|
||||
|
||||
void
|
||||
PySfStyle_InitConst();
|
||||
|
||||
|
@ -26,17 +26,44 @@
|
||||
#define __PYCOMPAT_HPP
|
||||
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
|
||||
#define IS_PY3K
|
||||
#define head_init PyVarObject_HEAD_INIT(NULL, 0)
|
||||
|
||||
#define save_to_file(self, args) \
|
||||
PyObject *string = PyUnicode_AsUTF8String(args); \
|
||||
if (string == NULL) return NULL; \
|
||||
char *path = PyBytes_AsString(string); \
|
||||
bool result = self->obj->SaveToFile(path); \
|
||||
Py_DECREF(string); \
|
||||
return PyBool_FromLong(result)
|
||||
|
||||
#define load_from_file(self, args) \
|
||||
PyObject *string = PyUnicode_AsUTF8String(args); \
|
||||
if (string == NULL) return NULL; \
|
||||
char *path = PyBytes_AsString(string); \
|
||||
bool result = self->obj->LoadFromFile(path); \
|
||||
Py_DECREF(string); \
|
||||
return PyBool_FromLong(result)
|
||||
|
||||
#else
|
||||
|
||||
#define save_to_file(self, args) \
|
||||
return PyBool_FromLong(self->obj->SaveToFile(PyString_AsString(args)))
|
||||
#define load_from_file(self, args) \
|
||||
return PyBool_FromLong(self->obj->LoadFromFile(PyString_AsString(args)))
|
||||
|
||||
#define Py_TYPE(a) a->ob_type
|
||||
#define head_init PyObject_HEAD_INIT(NULL) 0,
|
||||
#define PyBytes_FromStringAndSize PyString_FromStringAndSize
|
||||
|
||||
#endif
|
||||
|
||||
#define free_object(a) Py_TYPE(a)->tp_free((PyObject*)a)
|
||||
|
||||
#define PyBool_AsBool(a) ((PyObject_IsTrue(a))?true:false)
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -69,8 +69,7 @@ extern PyTypeObject PySfGlyphType;
|
||||
extern PyTypeObject PySfStringType;
|
||||
extern PyTypeObject PySfPostFXType;
|
||||
|
||||
extern PyTypeObject PySfImageType;
|
||||
|
||||
extern PyTypeObject PySfImageType;
|
||||
extern PyTypeObject PySfColorType;
|
||||
|
||||
extern PyTypeObject PySfShapeType;
|
||||
@ -96,8 +95,8 @@ static PyMethodDef module_methods[] = {
|
||||
#define INITERROR return NULL
|
||||
static PyModuleDef module_def = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
"noddy",
|
||||
"Example module that creates an extension type.",
|
||||
"sf",
|
||||
"Python binding for sfml (Simple Fast Media Library)",
|
||||
-1,
|
||||
module_methods, NULL, NULL, NULL, NULL
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user