From 4b813c5c8101740b2ac82a9e170a9d98e2eee3db Mon Sep 17 00:00:00 2001
From: Jacques Guignot <guignot@wanadoo.fr>
Date: Wed, 17 Dec 2003 14:15:14 +0000
Subject: [PATCH] Modification of the function getCurvecurval suggested by
 Jiba. This function can take an integer argument (the position of the curve)
 or a string (the name of the curve) Updated documentation in doc/Ipo.py

---
 source/blender/python/api2_2x/Ipo.c      | 38 ++++++++++++++++--------
 source/blender/python/api2_2x/doc/Ipo.py |  4 +--
 2 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/source/blender/python/api2_2x/Ipo.c b/source/blender/python/api2_2x/Ipo.c
index 5bc5741d7be1..8549201b03da 100644
--- a/source/blender/python/api2_2x/Ipo.c
+++ b/source/blender/python/api2_2x/Ipo.c
@@ -344,7 +344,7 @@ static PyObject *Ipo_addCurve(BPy_Ipo *self, PyObject *args)
     IpoCurve *ptr;
 	int typenumber = -1;
 	char*type = 0;
-	static char *name="mmm";
+	static char *name="mmmppp";
 
 	if (!PyArg_ParseTuple(args, "s",&type))
 		return (EXPP_ReturnPyObjError (PyExc_TypeError, "expected string argument"));
@@ -549,20 +549,32 @@ static PyObject *Ipo_EvaluateCurveOn(BPy_Ipo *self, PyObject *args)
 
 static PyObject *Ipo_getCurvecurval(BPy_Ipo *self, PyObject *args)
 {       
-        int num = 0,i;
-        IpoCurve *icu;
+	int numcurve = 0,i;
+	IpoCurve *icu;
+	char*stringname = 0;
 
-  if (!PyArg_ParseTuple(args, "i",&num))
-    return (EXPP_ReturnPyObjError (PyExc_TypeError,"expected int argument"));
-        icu =self->ipo->curve.first;
-        if(!icu) return (EXPP_ReturnPyObjError (PyExc_TypeError,"No IPO curve"));
-        for(i = 0;i<num;i++)
-                {
-                        if(!icu) return (EXPP_ReturnPyObjError (PyExc_TypeError,"Bad ipo number"));
-                        icu=icu->next;
+  if (!PyArg_ParseTuple(args, "i",&numcurve))
+  if (!PyArg_ParseTuple(args, "s",&stringname))
+    return (EXPP_ReturnPyObjError (PyExc_TypeError,"expected int or string argument"));
+	icu =self->ipo->curve.first;
+	if(!icu) return (EXPP_ReturnPyObjError (PyExc_TypeError,"No IPO curve"));
+	if (!stringname)
+	for(i = 0;i<numcurve;i++)
+		{
+			puts(type_from_num(icu->adrcode,icu->blocktype));
+			if(!icu) return (EXPP_ReturnPyObjError (PyExc_TypeError,"Bad ipo number"));
+			icu=icu->next;
                  
-    }
-        return PyFloat_FromDouble(icu->curval);
+		}
+	else
+		while (icu){
+			if (!strcmp(type_from_num(icu->adrcode,icu->blocktype),stringname))break;
+			icu=icu->next;
+		}
+	if (icu) return PyFloat_FromDouble(icu->curval);
+	else { Py_INCREF(Py_None);
+  return Py_None;
+	}
 }
 
 
diff --git a/source/blender/python/api2_2x/doc/Ipo.py b/source/blender/python/api2_2x/doc/Ipo.py
index 72b00d4a935c..e3cd01eca534 100644
--- a/source/blender/python/api2_2x/doc/Ipo.py
+++ b/source/blender/python/api2_2x/doc/Ipo.py
@@ -151,8 +151,8 @@ class Ipo:
   def getCurvecurval(curvepos):
     """
 		Gets the current value of a curve of the Ipo.
-		@type curvepos: int
-		@param curvepos: the position of the curve in the ipo
+		@type curvepos: int or string
+		@param curvepos: the position of the curve in the ipo or the name of the curve
 		@rtype: float
 		@return: the current value of the selected curve of the Ipo.
     """
-- 
GitLab