コード例 #1
0
 ConstAllocationTransformRcPtr GetConstAllocationTransform(PyObject * pyobject, bool allowCast)
 {
     ConstAllocationTransformRcPtr transform = \
         DynamicPtrCast<const AllocationTransform>(GetConstTransform(pyobject, allowCast));
     if(!transform)
     {
         throw Exception("PyObject must be a valid OCIO.AllocationTransform.");
     }
     return transform;
 }
コード例 #2
0
 PyObject * PyOCIO_GroupTransform_push_back(PyObject * self, PyObject * args)
 {
     OCIO_PYTRY_ENTER()
     PyObject* pytransform = 0;
     if (!PyArg_ParseTuple(args,"O:push_back",
         &pytransform)) return NULL;
     GroupTransformRcPtr transform = GetEditableGroupTransform(self);
     if(!IsPyTransform(pytransform))
         throw Exception("GroupTransform.push_back requires a transform as the first arg.");
     transform->push_back(GetConstTransform(pytransform, true));
     Py_RETURN_NONE;
     OCIO_PYTRY_EXIT(NULL)
 }
コード例 #3
0
ファイル: PyUtil.cpp プロジェクト: heesoo/OpenColorIO
 bool FillTransformVectorFromPySequence(PyObject* datalist, std::vector<ConstTransformRcPtr> &data)
 {
     data.clear();
     
     if(PyListOrTuple_Check(datalist))
     {
         int sequenceSize = PyListOrTuple_GET_SIZE(datalist);
         data.reserve(sequenceSize);
         
         for(int i=0; i < sequenceSize; i++)
         {
             PyObject* item = PyListOrTuple_GET_ITEM(datalist, i);
             ConstTransformRcPtr val;
             try
             {
                 val = GetConstTransform(item, true);
             }
             catch(...)
             {
                 data.clear();
                 return false;
             }
             
             data.push_back( val );
         }
         return true;
     }
     else
     {
         PyObject *item;
         PyObject *iter = PyObject_GetIter(datalist);
         if (iter == NULL)
         {
             PyErr_Clear();
             return false;
         }
         while((item = PyIter_Next(iter)) != NULL)
         {
             ConstTransformRcPtr val;
             try
             {
                 val = GetConstTransform(item, true);
             }
             catch(...)
             {
                 Py_DECREF(item);
                 Py_DECREF(iter);
                 
                 data.clear();
                 return false;
             }
             
             data.push_back(val);
             Py_DECREF(item);
         }
         
         Py_DECREF(iter);
         if (PyErr_Occurred())
         {
             PyErr_Clear();
             data.clear();
             return false;
         }
         
         return true;
     }
 }