Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-01-06 02:24:05 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-01-06 02:24:05 +0400
commitfeccbaabbd39c18b2f552964ebd8dfab4eeaed89 (patch)
tree0069f654883a7a02dd320649ce61bd7933748111 /source/blender/python/intern/bpy_app_build_options.c
parenta22096e8019c461128a0907e4026859996ec1b5c (diff)
parent37ba969c74840142682cf22f34610f3b65b86cf4 (diff)
Merged changes in the trunk up to revision 53584.
Conflicts resolved: release/scripts/startup/bl_ui/properties_render.py source/blender/blenloader/intern/readfile.c source/blender/editors/interface/interface_templates.c source/blender/makesrna/RNA_enum_types.h Also made additional code updates for: r53355 UIList - Python-extendable list of UI items r53460 Alpha premul pipeline cleanup
Diffstat (limited to 'source/blender/python/intern/bpy_app_build_options.c')
-rw-r--r--source/blender/python/intern/bpy_app_build_options.c226
1 files changed, 178 insertions, 48 deletions
diff --git a/source/blender/python/intern/bpy_app_build_options.c b/source/blender/python/intern/bpy_app_build_options.c
index 74df3ef7307..8815348c22d 100644
--- a/source/blender/python/intern/bpy_app_build_options.c
+++ b/source/blender/python/intern/bpy_app_build_options.c
@@ -15,7 +15,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * Contributor(s): Bastien Montagne
+ * Contributor(s): Sergey Sharybin
*
* ***** END GPL LICENSE BLOCK *****
*/
@@ -29,152 +29,282 @@
#include "bpy_app_build_options.h"
-static PyObject *make_build_options(void)
+static PyTypeObject BlenderAppBuildOptionsType;
+
+static PyStructSequence_Field app_builtopts_info_fields[] = {
+ /* names mostly follow CMake options, lowecases, after WITH_ */
+ {(char *)"bullet", NULL},
+ {(char *)"codec_avi", NULL},
+ {(char *)"codec_ffmpeg", NULL},
+ {(char *)"codec_quicktime", NULL},
+ {(char *)"codec_sndfile", NULL},
+ {(char *)"compositor", NULL},
+ {(char *)"cycles", NULL},
+ {(char *)"cycles_osl", NULL},
+ {(char *)"freestyle", NULL},
+ {(char *)"gameengine", NULL},
+ {(char *)"image_cineon", NULL},
+ {(char *)"image_dds", NULL},
+ {(char *)"image_frameserver", NULL},
+ {(char *)"image_hdr", NULL},
+ {(char *)"image_openexr", NULL},
+ {(char *)"image_openjpeg", NULL},
+ {(char *)"image_redcode", NULL},
+ {(char *)"image_tiff", NULL},
+ {(char *)"input_ndof", NULL},
+ {(char *)"audaspace", NULL},
+ {(char *)"international", NULL},
+ {(char *)"openal", NULL},
+ {(char *)"sdl", NULL},
+ {(char *)"jack", NULL},
+ {(char *)"libmv", NULL},
+ {(char *)"mod_boolean", NULL},
+ {(char *)"mod_fluid", NULL},
+ {(char *)"mod_oceansim", NULL},
+ {(char *)"mod_remesh", NULL},
+ {(char *)"mod_smoke", NULL},
+ {(char *)"collada", NULL},
+ {(char *)"opencolorio", NULL},
+ {(char *)"player", NULL},
+ {NULL}
+};
+
+
+static PyStructSequence_Desc app_builtopts_info_desc = {
+ (char *)"bpy.app.build_options", /* name */
+ (char *)"This module contains information about FFmpeg blender is linked against", /* doc */
+ app_builtopts_info_fields, /* fields */
+ (sizeof(app_builtopts_info_fields) / sizeof(PyStructSequence_Field)) - 1
+};
+
+static PyObject *make_builtopts_info(void)
{
- PyObject *build_options = PyFrozenSet_New(NULL);
+ PyObject *builtopts_info;
+ int pos = 0;
-#define SetStrItem(str) \
- PySet_Add(build_options, PyUnicode_FromString(str));
+ builtopts_info = PyStructSequence_New(&BlenderAppBuildOptionsType);
+ if (builtopts_info == NULL) {
+ return NULL;
+ }
-#ifdef WITH_AUDASPACE
- SetStrItem("AUDASPACE");
-#endif
+#define SetObjIncref(item) \
+ PyStructSequence_SET_ITEM(builtopts_info, pos++, (Py_IncRef(item), item))
#ifdef WITH_BULLET
- SetStrItem("BULLET");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_AVI
- SetStrItem("CODEC_AVI");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_FFMPEG
- SetStrItem("CODEC_FFMPEG");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_QUICKTIME
- SetStrItem("CODEC_QUICKTIME");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_SNDFILE
- SetStrItem("CODEC_SNDFILE");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_COMPOSITOR
- SetStrItem("COMPOSITOR");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_CYCLES
- SetStrItem("CYCLES");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_CYCLES_OSL
- SetStrItem("CYCLES_OSL");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_FREESTYLE
- SetStrItem("FREESTYLE");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_GAMEENGINE
- SetStrItem("GAMEENGINE");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_CINEON
- SetStrItem("IMAGE_CINEON");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_DDS
- SetStrItem("IMAGE_DDS");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_FRAMESERVER
- SetStrItem("IMAGE_FRAMESERVER");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_HDR
- SetStrItem("IMAGE_HDR");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_OPENEXR
- SetStrItem("IMAGE_OPENEXR");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_OPENJPEG
- SetStrItem("IMAGE_OPENJPEG");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_REDCODE
- SetStrItem("IMAGE_REDCODE");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_TIFF
- SetStrItem("IMAGE_TIFF");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_INPUT_NDOF
- SetStrItem("INPUT_NDOF");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
+#endif
+
+#ifdef WITH_AUDASPACE
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_INTERNATIONAL
- SetStrItem("INTERNATIONAL");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
+#endif
+
+#ifdef WITH_OPENAL
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
+#endif
+
+#ifdef WITH_SDL
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_JACK
- SetStrItem("JACK");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_LIBMV
- SetStrItem("LIBMV");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_MOD_BOOLEAN
- SetStrItem("MOD_BOOLEAN");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_MOD_FLUID
- SetStrItem("MOD_FLUID");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_OCEANSIM
- SetStrItem("MOD_OCEANSIM");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_MOD_REMESH
- SetStrItem("MOD_REMESH");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_SMOKE
- SetStrItem("MOD_SMOKE");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
-#ifdef WITH_OPENAL
- SetStrItem("OPENAL");
+#ifdef WITH_COLLADA
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
-#ifdef WITH_COLLADA
- SetStrItem("COLLADA");
+#ifdef WITH_OCIO
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
#ifdef WITH_PLAYER
- SetStrItem("PLAYER");
+ SetObjIncref(Py_True);
+#else
+ SetObjIncref(Py_False);
#endif
-#undef SetStrItem
+#undef SetObjIncref
- if (PyErr_Occurred()) {
- Py_CLEAR(build_options);
- return NULL;
- }
-
- return build_options;
+ return builtopts_info;
}
PyObject *BPY_app_build_options_struct(void)
{
PyObject *ret;
- ret = make_build_options();
+ PyStructSequence_InitType(&BlenderAppBuildOptionsType, &app_builtopts_info_desc);
+
+ ret = make_builtopts_info();
+
+ /* prevent user from creating new instances */
+ BlenderAppBuildOptionsType.tp_init = NULL;
+ BlenderAppBuildOptionsType.tp_new = NULL;
+ BlenderAppBuildOptionsType.tp_hash = (hashfunc)_Py_HashPointer; /* without this we can't do set(sys.modules) [#29635] */
return ret;
}