//////////////////////////////////////////////////////////// // // PySFML - Python binding for SFML (Simple and Fast Multimedia Library) // Copyright (C) 2007, 2008 RĂ©mi Koenig (remi.k2620@gmail.com) // // This software is provided 'as-is', without any express or implied warranty. // In no event will the authors be held liable for any damages arising from the use of this software. // // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it freely, // subject to the following restrictions: // // 1. The origin of this software must not be misrepresented; // you must not claim that you wrote the original software. // If you use this software in a product, an acknowledgment // in the product documentation would be appreciated but is not required. // // 2. Altered source versions must be plainly marked as such, // and must not be misrepresented as being the original software. // // 3. This notice may not be removed or altered from any source distribution. // //////////////////////////////////////////////////////////// #include "main.hpp" #include "Color.hpp" #include "Key.hpp" #include "Joy.hpp" #include "Event.hpp" #include "Mouse.hpp" #include "WindowStyle.hpp" #include "ContextSettings.hpp" #include "Blend.hpp" #include "Sound.hpp" #include "Text.hpp" #include "SoundStream.hpp" #include "compat.hpp" extern PyTypeObject PySfClockType; extern PyTypeObject PySfEventType; extern PyTypeObject PySfEventTextType; extern PyTypeObject PySfEventKeyType; extern PyTypeObject PySfEventMouseMoveType; extern PyTypeObject PySfEventMouseButtonType; extern PyTypeObject PySfEventMouseWheelType; extern PyTypeObject PySfEventJoyMoveType; extern PyTypeObject PySfEventJoyButtonType; extern PyTypeObject PySfEventSizeType; extern PyTypeObject PySfKeyType; extern PyTypeObject PySfJoyType; extern PyTypeObject PySfMouseType; extern PyTypeObject PySfVideoModeType; extern PyTypeObject PySfWindowType; extern PyTypeObject PySfStyleType; extern PyTypeObject PySfContextSettingsType; extern PyTypeObject PySfRenderWindowType; extern PyTypeObject PySfViewType; extern PyTypeObject PySfInputType; extern PyTypeObject PySfDrawableType; extern PyTypeObject PySfBlendType; extern PyTypeObject PySfSpriteType; extern PyTypeObject PySfFontType; extern PyTypeObject PySfGlyphType; extern PyTypeObject PySfTextType; //extern PyTypeObject PySfPostFXType; extern PyTypeObject PySfImageType; extern PyTypeObject PySfColorType; extern PyTypeObject PySfShapeType; extern PyTypeObject PySfIntRectType; extern PyTypeObject PySfFloatRectType; extern PyTypeObject PySfMusicType; extern PyTypeObject PySfSoundType; extern PyTypeObject PySfSoundBufferType; extern PyTypeObject PySfSoundRecorderType; extern PyTypeObject PySfSoundBufferRecorderType; extern PyTypeObject PySfSoundStreamType; extern PyTypeObject PySfListenerType; static PyMethodDef module_methods[] = { {"Sleep", (PyCFunction)PySFML_Sleep, METH_O, "Sleep(Duration)\nMake the current thread sleep for a given time.\n Duration : Time to sleep, in seconds"}, {NULL} /* Sentinel */ }; #ifdef IS_PY3K #define INITERROR return NULL static PyModuleDef module_def = { PyModuleDef_HEAD_INIT, "sf", "Python binding for sfml (Simple Fast Media Library)", -1, module_methods, NULL, NULL, NULL, NULL }; PyMODINIT_FUNC PyInit_sf(void) #else #define INITERROR return #ifndef PyMODINIT_FUNC /* declarations for DLL import/export */ #define PyMODINIT_FUNC void #endif PyMODINIT_FUNC initsf(void) #endif { PyObject *m; if (PyType_Ready(&PySfClockType) < 0) INITERROR; if (PyType_Ready(&PySfWindowType) < 0) INITERROR; if (PyType_Ready(&PySfStyleType) < 0) INITERROR; if (PyType_Ready(&PySfContextSettingsType) < 0) INITERROR; if (PyType_Ready(&PySfRenderWindowType) < 0) INITERROR; if (PyType_Ready(&PySfVideoModeType) < 0) INITERROR; if (PyType_Ready(&PySfViewType) < 0) INITERROR; if (PyType_Ready(&PySfInputType) < 0) INITERROR; if (PyType_Ready(&PySfEventType) < 0) INITERROR; if (PyType_Ready(&PySfEventTextType) < 0) INITERROR; if (PyType_Ready(&PySfEventKeyType) < 0) INITERROR; if (PyType_Ready(&PySfEventMouseMoveType) < 0) INITERROR; if (PyType_Ready(&PySfEventMouseButtonType) < 0) INITERROR; if (PyType_Ready(&PySfEventMouseWheelType) < 0) INITERROR; if (PyType_Ready(&PySfEventJoyMoveType) < 0) INITERROR; if (PyType_Ready(&PySfEventJoyButtonType) < 0) INITERROR; if (PyType_Ready(&PySfEventSizeType) < 0) INITERROR; if (PyType_Ready(&PySfKeyType) < 0) INITERROR; if (PyType_Ready(&PySfJoyType) < 0) INITERROR; if (PyType_Ready(&PySfMouseType) < 0) INITERROR; if (PyType_Ready(&PySfDrawableType) < 0) INITERROR; if (PyType_Ready(&PySfBlendType) < 0) INITERROR; if (PyType_Ready(&PySfSpriteType) < 0) INITERROR; if (PyType_Ready(&PySfFontType) < 0) INITERROR; if (PyType_Ready(&PySfGlyphType) < 0) INITERROR; if (PyType_Ready(&PySfTextType) < 0) INITERROR; /*if (PyType_Ready(&PySfPostFXType) < 0) INITERROR; */ if (PyType_Ready(&PySfImageType) < 0) INITERROR; if (PyType_Ready(&PySfShapeType) < 0) INITERROR; if (PyType_Ready(&PySfColorType) < 0) INITERROR; if (PyType_Ready(&PySfIntRectType) < 0) INITERROR; if (PyType_Ready(&PySfFloatRectType) < 0) INITERROR; if (PyType_Ready(&PySfMusicType) < 0) INITERROR; if (PyType_Ready(&PySfSoundType) < 0) INITERROR; if (PyType_Ready(&PySfSoundBufferType) < 0) INITERROR; if (PyType_Ready(&PySfSoundBufferRecorderType) < 0) INITERROR; if (PyType_Ready(&PySfSoundRecorderType) < 0) INITERROR; if (PyType_Ready(&PySfSoundStreamType) < 0) INITERROR; if (PyType_Ready(&PySfListenerType) < 0) INITERROR; #ifdef IS_PY3K m = PyModule_Create(&module_def); #else m = Py_InitModule3("sf", module_methods, "Python binding for sfml (Simple Fast Media Library)"); #endif if (m == NULL) INITERROR; Py_INCREF(&PySfClockType); PyModule_AddObject(m, "Clock", (PyObject *)&PySfClockType); Py_INCREF(&PySfWindowType); PyModule_AddObject(m, "Window", (PyObject *)&PySfWindowType); Py_INCREF(&PySfStyleType); PyModule_AddObject(m, "Style", (PyObject *)&PySfStyleType); Py_INCREF(&PySfContextSettingsType); PyModule_AddObject(m, "ContextSettings", (PyObject *)&PySfContextSettingsType); Py_INCREF(&PySfRenderWindowType); PyModule_AddObject(m, "RenderWindow", (PyObject *)&PySfRenderWindowType); Py_INCREF(&PySfVideoModeType); PyModule_AddObject(m, "VideoMode", (PyObject *)&PySfVideoModeType); Py_INCREF(&PySfViewType); PyModule_AddObject(m, "View", (PyObject *)&PySfViewType); Py_INCREF(&PySfInputType); PyModule_AddObject(m, "Input", (PyObject *)&PySfInputType); Py_INCREF(&PySfDrawableType); PyModule_AddObject(m, "Drawable", (PyObject *)&PySfDrawableType); Py_INCREF(&PySfBlendType); PyModule_AddObject(m, "Blend", (PyObject *)&PySfBlendType); Py_INCREF(&PySfSpriteType); PyModule_AddObject(m, "Sprite", (PyObject *)&PySfSpriteType); Py_INCREF(&PySfFontType); PyModule_AddObject(m, "Font", (PyObject *)&PySfFontType); Py_INCREF(&PySfGlyphType); PyModule_AddObject(m, "Glyph", (PyObject *)&PySfGlyphType); Py_INCREF(&PySfTextType); PyModule_AddObject(m, "Text", (PyObject *)&PySfTextType); /*Py_INCREF(&PySfPostFXType); PyModule_AddObject(m, "PostFX", (PyObject *)&PySfPostFXType); */ Py_INCREF(&PySfEventType); PyModule_AddObject(m, "Event", (PyObject *)&PySfEventType); Py_INCREF(&PySfKeyType); PyModule_AddObject(m, "Key", (PyObject *)&PySfKeyType); Py_INCREF(&PySfJoyType); PyModule_AddObject(m, "Joy", (PyObject *)&PySfJoyType); Py_INCREF(&PySfMouseType); PyModule_AddObject(m, "Mouse", (PyObject *)&PySfMouseType); Py_INCREF(&PySfImageType); PyModule_AddObject(m, "Image", (PyObject *)&PySfImageType); Py_INCREF(&PySfColorType); PyModule_AddObject(m, "Color", (PyObject *)&PySfColorType); Py_INCREF(&PySfShapeType); PyModule_AddObject(m, "Shape", (PyObject *)&PySfShapeType); Py_INCREF(&PySfIntRectType); PyModule_AddObject(m, "IntRect", (PyObject *)&PySfIntRectType); Py_INCREF(&PySfFloatRectType); PyModule_AddObject(m, "FloatRect", (PyObject *)&PySfFloatRectType); Py_INCREF(&PySfMusicType); PyModule_AddObject(m, "Music", (PyObject *)&PySfMusicType); Py_INCREF(&PySfSoundType); PyModule_AddObject(m, "Sound", (PyObject *)&PySfSoundType); Py_INCREF(&PySfSoundBufferType); PyModule_AddObject(m, "SoundBuffer", (PyObject *)&PySfSoundBufferType); Py_INCREF(&PySfSoundRecorderType); PyModule_AddObject(m, "SoundRecorder", (PyObject *)&PySfSoundRecorderType); Py_INCREF(&PySfSoundBufferRecorderType); PyModule_AddObject(m, "SoundBufferRecorder", (PyObject *)&PySfSoundBufferRecorderType); Py_INCREF(&PySfSoundStreamType); PyModule_AddObject(m, "SoundStream", (PyObject *)&PySfSoundStreamType); Py_INCREF(&PySfListenerType); PyModule_AddObject(m, "Listener", (PyObject *)&PySfListenerType); PyModule_AddStringConstant(m, "Version", "1.6"); PySfColor_InitConst(); PySfKey_InitConst(); PySfJoy_InitConst(); PySfEvent_InitConst(); PySfMouse_InitConst(); PySfStyle_InitConst(); PySfBlend_InitConst(); PySfSound_InitConst(); PySfSoundStream_InitConst(); PySfText_InitConst(); PyEval_InitThreads(); #ifdef IS_PY3K return m; #endif }