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:
Diffstat (limited to 'source/blender/python/api2_2x/Camera.c')
-rw-r--r--source/blender/python/api2_2x/Camera.c93
1 files changed, 61 insertions, 32 deletions
diff --git a/source/blender/python/api2_2x/Camera.c b/source/blender/python/api2_2x/Camera.c
index 81646cae727..97c57ee9a5b 100644
--- a/source/blender/python/api2_2x/Camera.c
+++ b/source/blender/python/api2_2x/Camera.c
@@ -87,40 +87,69 @@ static PyObject *M_Camera_New(PyObject *self, PyObject *args, PyObject *keywords
/*****************************************************************************/
/* Function: M_Camera_Get */
/* Python equivalent: Blender.Camera.Get */
+/* Description: Receives a string and returns the camera data obj */
+/* whose name matches the string. If no argument is */
+/* passed in, a list of all camera data names in the */
+/* current scene is returned. */
/*****************************************************************************/
static PyObject *M_Camera_Get(PyObject *self, PyObject *args)
{
- char *name;
- Camera *cam_iter;
- C_Camera *wanted_cam;
+ char *name = NULL;
+ Camera *cam_iter;
- printf ("In Camera_Get()\n");
- if (!PyArg_ParseTuple(args, "s", &name))
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
- "expected string argument"));
+ if (!PyArg_ParseTuple(args, "|s", &name))
+ return (EXPP_ReturnPyObjError (PyExc_TypeError,
+ "expected string argument (or nothing)"));
- /* Use the name to search for the camera requested */
- wanted_cam = NULL;
cam_iter = G.main->camera.first;
- while ((cam_iter) && (wanted_cam == NULL)) {
+ if (name) { /* (name) - Search camera by name */
+
+ C_Camera *wanted_cam = NULL;
- if (strcmp (name, cam_iter->id.name+2) == 0) {
- wanted_cam = (C_Camera *)PyObject_NEW(C_Camera, &Camera_Type);
- if (wanted_cam) wanted_cam->camera = cam_iter;
+ while ((cam_iter) && (wanted_cam == NULL)) {
+ if (strcmp (name, cam_iter->id.name+2) == 0) {
+ wanted_cam = (C_Camera *)PyObject_NEW(C_Camera, &Camera_Type);
+ if (wanted_cam) wanted_cam->camera = cam_iter;
+ }
+ cam_iter = cam_iter->id.next;
}
- cam_iter = cam_iter->id.next;
- }
+ if (wanted_cam == NULL) { /* Requested camera doesn't exist */
+ char error_msg[64];
+ PyOS_snprintf(error_msg, sizeof(error_msg),
+ "Camera \"%s\" not found", name);
+ return (EXPP_ReturnPyObjError (PyExc_NameError, error_msg));
+ }
- if (wanted_cam == NULL) { /* Requested camera doesn't exist */
- char error_msg[64];
- PyOS_snprintf(error_msg, sizeof(error_msg),
- "Camera \"%s\" not found", name);
- return (EXPP_ReturnPyObjError (PyExc_NameError, error_msg));
- }
+ return (PyObject *)wanted_cam;
+ }
+
+ else { /* () - return a list of all cameras in the scene */
+ int index = 0;
+ PyObject *camlist, *pystr;
+
+ camlist = PyList_New (BLI_countlist (&(G.main->camera)));
+
+ if (camlist == NULL)
+ return (PythonReturnErrorObject (PyExc_MemoryError,
+ "couldn't create PyList"));
+
+ while (cam_iter) {
+ pystr = PyString_FromString (cam_iter->id.name+2);
+
+ if (!pystr)
+ return (PythonReturnErrorObject (PyExc_MemoryError,
+ "couldn't create PyString"));
+
+ PyList_SET_ITEM (camlist, index, pystr);
- return (PyObject*)wanted_cam;
+ cam_iter = cam_iter->id.next;
+ index++;
+ }
+
+ return (camlist);
+ }
}
/*****************************************************************************/
@@ -216,7 +245,7 @@ static PyObject *Camera_rename(C_Camera *self, PyObject *args)
char buf[21];
if (!PyArg_ParseTuple(args, "s", &name))
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
+ return (EXPP_ReturnPyObjError (PyExc_TypeError,
"expected string argument"));
PyOS_snprintf(buf, sizeof(buf), "%s", name);
@@ -232,7 +261,7 @@ static PyObject *Camera_setType(C_Camera *self, PyObject *args)
char *type;
if (!PyArg_ParseTuple(args, "s", &type))
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
+ return (EXPP_ReturnPyObjError (PyExc_TypeError,
"expected string argument"));
if (strcmp (type, "persp") == 0)
@@ -257,13 +286,13 @@ static PyObject *Camera_setIntType(C_Camera *self, PyObject *args)
short value;
if (!PyArg_ParseTuple(args, "h", &value))
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
+ return (EXPP_ReturnPyObjError (PyExc_TypeError,
"expected int argument: 0 or 1"));
if (value == 0 || value == 1)
self->camera->type = value;
else
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
+ return (EXPP_ReturnPyObjError (PyExc_ValueError,
"expected int argument: 0 or 1"));
Py_INCREF(Py_None);
@@ -312,13 +341,13 @@ static PyObject *Camera_setIntMode(C_Camera *self, PyObject *args)
short value;
if (!PyArg_ParseTuple(args, "h", &value))
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
+ return (EXPP_ReturnPyObjError (PyExc_TypeError,
"expected int argument in [0,3]"));
if (value >= 0 && value <= 3)
self->camera->flag = value;
else
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
+ return (EXPP_ReturnPyObjError (PyExc_ValueError,
"expected int argument in [0,3]"));
Py_INCREF(Py_None);
@@ -330,7 +359,7 @@ static PyObject *Camera_setLens(C_Camera *self, PyObject *args)
float value;
if (!PyArg_ParseTuple(args, "f", &value))
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
+ return (EXPP_ReturnPyObjError (PyExc_TypeError,
"expected float argument"));
self->camera->lens = EXPP_ClampFloat (value,
@@ -345,7 +374,7 @@ static PyObject *Camera_setClipStart(C_Camera *self, PyObject *args)
float value;
if (!PyArg_ParseTuple(args, "f", &value))
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
+ return (EXPP_ReturnPyObjError (PyExc_TypeError,
"expected float argument"));
self->camera->clipsta = EXPP_ClampFloat (value,
@@ -360,7 +389,7 @@ static PyObject *Camera_setClipEnd(C_Camera *self, PyObject *args)
float value;
if (!PyArg_ParseTuple(args, "f", &value))
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
+ return (EXPP_ReturnPyObjError (PyExc_TypeError,
"expected float argument"));
self->camera->clipend = EXPP_ClampFloat (value,
@@ -375,7 +404,7 @@ static PyObject *Camera_setDrawSize(C_Camera *self, PyObject *args)
float value;
if (!PyArg_ParseTuple(args, "f", &value))
- return (EXPP_ReturnPyObjError (PyExc_AttributeError,
+ return (EXPP_ReturnPyObjError (PyExc_TypeError,
"expected a float number as argument"));
self->camera->drawsize = EXPP_ClampFloat (value,