DistSet.cpp (pymol-v1.8.6.0.tar.bz2) | : | DistSet.cpp (pymol-v2.1.0.tar.bz2) | ||
---|---|---|---|---|
skipping to change at line 157 | skipping to change at line 157 | |||
ok_except1: | ok_except1: | |||
return rVal; | return rVal; | |||
} | } | |||
static CMeasureInfo * MeasureInfoListFromPyList(PyMOLGlobals * G, PyObject * lis t) | static CMeasureInfo * MeasureInfoListFromPyList(PyMOLGlobals * G, PyObject * lis t) | |||
{ | { | |||
int i, ll, N; | int i, ll, N; | |||
CMeasureInfo *item = NULL, *I= NULL; | CMeasureInfo *item = NULL, *I= NULL; | |||
CPythonVal *val, *tmp; | CPythonVal *val, *tmp; | |||
ok_assert(1, list && CPythonVal_PyList_Check(list)); | ok_assert(1, list && PyList_Check(list)); | |||
ll = CPythonVal_PyList_Size(list); | ll = PyList_Size(list); | |||
for (i = 0; i < ll; i++) { | for (i = 0; i < ll; i++) { | |||
ok_assert(1, item = Alloc(CMeasureInfo, 1)); | ok_assert(1, item = Alloc(CMeasureInfo, 1)); | |||
ListPrepend(I, item, next); | ListPrepend(I, item, next); | |||
val = CPythonVal_PyList_GetItem(G, list, i); | val = CPythonVal_PyList_GetItem(G, list, i); | |||
if(val && CPythonVal_PyList_Check(val) && | if(val && PyList_Check(val) && | |||
CPythonVal_PyList_Size(val) > 2) { | PyList_Size(val) > 2) { | |||
tmp = CPythonVal_PyList_GetItem(G, val, 1); | tmp = CPythonVal_PyList_GetItem(G, val, 1); | |||
N = CPythonVal_PyList_Size(tmp); | N = PyList_Size(tmp); | |||
ok_assert(1, N < 5); | ok_assert(1, N < 5); | |||
item->measureType = (N == 2) ? cRepDash : | item->measureType = (N == 2) ? cRepDash : | |||
(N == 3) ? cRepAngle : cRepDihedral; | (N == 3) ? cRepAngle : cRepDihedral; | |||
CPythonVal_PConvPyIntToInt_From_List(G, val, 0, &item->offset); | CPythonVal_PConvPyIntToInt_From_List(G, val, 0, &item->offset); | |||
CPythonVal_PConvPyListToIntArrayInPlace(G, tmp, item->id, N); | CPythonVal_PConvPyListToIntArrayInPlace(G, tmp, item->id, N); | |||
CPythonVal_PConvPyListToIntArrayInPlace_From_List(G, val, 2, item->state, N); | CPythonVal_PConvPyListToIntArrayInPlace_From_List(G, val, 2, item->state, N); | |||
CPythonVal_Free(tmp); | CPythonVal_Free(tmp); | |||
skipping to change at line 193 | skipping to change at line 193 | |||
} | } | |||
CPythonVal_Free(val); | CPythonVal_Free(val); | |||
} | } | |||
ok_except1: | ok_except1: | |||
return I; | return I; | |||
} | } | |||
static PyObject *MeasureInfoListAsPyList(CMeasureInfo * I) | static PyObject *MeasureInfoListAsPyList(CMeasureInfo * I) | |||
{ | { | |||
#ifdef _PYMOL_NOPY | ||||
return NULL; | ||||
#else | ||||
int N; | int N; | |||
PyObject *item, *result = PyList_New(0); | PyObject *item, *result = PyList_New(0); | |||
ok_assert(1, result); | ok_assert(1, result); | |||
while (I) { | while (I) { | |||
switch(I->measureType) { | switch(I->measureType) { | |||
case cRepDash: N = 2; break; | case cRepDash: N = 2; break; | |||
case cRepAngle: N = 3; break; | case cRepAngle: N = 3; break; | |||
default: N = 4; | default: N = 4; | |||
} | } | |||
ok_assert(1, item = PyList_New(3)); | ok_assert(1, item = PyList_New(3)); | |||
PyList_Append(result, item); | ||||
PyList_SetItem(item, 0, PyInt_FromLong(I->offset)); | PyList_SetItem(item, 0, PyInt_FromLong(I->offset)); | |||
PyList_SetItem(item, 1, PConvIntArrayToPyList(I->id, N)); | PyList_SetItem(item, 1, PConvIntArrayToPyList(I->id, N)); | |||
PyList_SetItem(item, 2, PConvIntArrayToPyList(I->state, N)); | PyList_SetItem(item, 2, PConvIntArrayToPyList(I->state, N)); | |||
PyList_Append(result, item); | ||||
Py_DECREF(item); | ||||
I = I->next; | I = I->next; | |||
} | } | |||
ok_except1: | ok_except1: | |||
return PConvAutoNone(result); | return PConvAutoNone(result); | |||
#endif | ||||
} | } | |||
int DistSetFromPyList(PyMOLGlobals * G, PyObject * list, DistSet ** cs) | int DistSetFromPyList(PyMOLGlobals * G, PyObject * list, DistSet ** cs) | |||
{ | { | |||
DistSet *I = NULL; | DistSet *I = NULL; | |||
int ll = 0; | int ll = 0; | |||
CPythonVal *val; | CPythonVal *val; | |||
if(*cs) { | if(*cs) { | |||
(*cs)->fFree(); | (*cs)->fFree(); | |||
*cs = NULL; | *cs = NULL; | |||
} | } | |||
if(list == Py_None) { /* allow None for CSet */ | if(list == Py_None) { /* allow None for CSet */ | |||
*cs = NULL; | *cs = NULL; | |||
return true; | return true; | |||
} | } | |||
ok_assert(1, list && CPythonVal_PyList_Check(list)); | ok_assert(1, list && PyList_Check(list)); | |||
ok_assert(1, I = DistSetNew(G)); | ok_assert(1, I = DistSetNew(G)); | |||
ll = PyList_Size(list); | ll = PyList_Size(list); | |||
/* TO SUPPORT BACKWARDS COMPATIBILITY... | /* TO SUPPORT BACKWARDS COMPATIBILITY... | |||
Always check ll when adding new PyList_GetItem's */ | Always check ll when adding new PyList_GetItem's */ | |||
ok_assert(1, CPythonVal_PConvPyIntToInt_From_List(G, list, 0, &I->NIndex)); | ok_assert(1, CPythonVal_PConvPyIntToInt_From_List(G, list, 0, &I->NIndex)); | |||
ok_assert(1, CPythonVal_PConvPyListToFloatVLANoneOkay_From_List(G, list, 1, &I ->Coord)); | ok_assert(1, CPythonVal_PConvPyListToFloatVLANoneOkay_From_List(G, list, 1, &I ->Coord)); | |||
ok_assert(2, ll > 2); | ok_assert(2, ll > 2); | |||
I->LabCoord = NULL; // will be calculated in RepDistLabelNew | I->LabCoord = NULL; // will be calculated in RepDistLabelNew | |||
ok_assert(1, CPythonVal_PConvPyIntToInt_From_List(G, list, 3, &I->NAngleIndex) ); | ok_assert(1, CPythonVal_PConvPyIntToInt_From_List(G, list, 3, &I->NAngleIndex) ); | |||
ok_assert(1, CPythonVal_PConvPyListToFloatVLANoneOkay_From_List(G, list, 4, &I ->AngleCoord)); | ok_assert(1, CPythonVal_PConvPyListToFloatVLANoneOkay_From_List(G, list, 4, &I ->AngleCoord)); | |||
ok_assert(1, CPythonVal_PConvPyIntToInt_From_List(G, list, 5, &I->NDihedralInd ex)); | ok_assert(1, CPythonVal_PConvPyIntToInt_From_List(G, list, 5, &I->NDihedralInd ex)); | |||
ok_assert(1, CPythonVal_PConvPyListToFloatVLANoneOkay_From_List(G, list, 6, &I ->DihedralCoord)); | ok_assert(1, CPythonVal_PConvPyListToFloatVLANoneOkay_From_List(G, list, 6, &I ->DihedralCoord)); | |||
ok_assert(2, ll > 7); | ok_assert(2, ll > 7); | |||
val = CPythonVal_PyList_GetItem(G, list, 7); | // DistSet->Setting never gets set (removed BB 11/14), was state settings? | |||
I->Setting = SettingNewFromPyList(G, val); /* state settings */ | /* val = CPythonVal_PyList_GetItem(G, list, 7); | |||
CPythonVal_Free(val); | I->Setting = SettingNewFromPyList(G, val); | |||
CPythonVal_Free(val); */ | ||||
ok_assert(2, ll > 8); | ok_assert(2, ll > 8); | |||
val = CPythonVal_PyList_GetItem(G, list, 8); | val = CPythonVal_PyList_GetItem(G, list, 8); | |||
ok_assert(1, CPythonVal_PConvPyListToLabPosVLA(G, val, &I->LabPos)); | ok_assert(1, CPythonVal_PConvPyListToLabPosVLA(G, val, &I->LabPos)); | |||
CPythonVal_Free(val); | CPythonVal_Free(val); | |||
ok_assert(2, ll > 9); | ok_assert(2, ll > 9); | |||
val = CPythonVal_PyList_GetItem(G, list, 9); | val = CPythonVal_PyList_GetItem(G, list, 9); | |||
skipping to change at line 284 | skipping to change at line 282 | |||
ok_except2: | ok_except2: | |||
*cs = I; | *cs = I; | |||
return true; | return true; | |||
ok_except1: | ok_except1: | |||
I->fFree(); | I->fFree(); | |||
return false; | return false; | |||
} | } | |||
PyObject *DistSetAsPyList(DistSet * I) | PyObject *DistSetAsPyList(DistSet * I) | |||
{ | { | |||
#ifdef _PYMOL_NOPY | ||||
return NULL; | ||||
#else | ||||
PyObject *result = NULL; | PyObject *result = NULL; | |||
if(I) { | if(I) { | |||
result = PyList_New(9); | result = PyList_New(10); | |||
PyList_SetItem(result, 0, PyInt_FromLong(I->NIndex)); | PyList_SetItem(result, 0, PyInt_FromLong(I->NIndex)); | |||
PyList_SetItem(result, 1, PConvFloatArrayToPyListNullOkay(I->Coord, I->NInde x * 3)); | PyList_SetItem(result, 1, PConvFloatArrayToPyListNullOkay(I->Coord, I->NInde x * 3)); | |||
PyList_SetItem(result, 2, PConvAutoNone(NULL)); // I->LabCoord recalculated in RepDistLabelNew | PyList_SetItem(result, 2, PConvAutoNone(NULL)); // I->LabCoord recalculated in RepDistLabelNew | |||
PyList_SetItem(result, 3, PyInt_FromLong(I->NAngleIndex)); | PyList_SetItem(result, 3, PyInt_FromLong(I->NAngleIndex)); | |||
PyList_SetItem(result, 4, | PyList_SetItem(result, 4, | |||
PConvFloatArrayToPyListNullOkay(I->AngleCoord, I->NAngleIndex * 3)); | PConvFloatArrayToPyListNullOkay(I->AngleCoord, I->NAngleIndex * 3)); | |||
PyList_SetItem(result, 5, PyInt_FromLong(I->NDihedralIndex)); | PyList_SetItem(result, 5, PyInt_FromLong(I->NDihedralIndex)); | |||
PyList_SetItem(result, 6, | PyList_SetItem(result, 6, | |||
PConvFloatArrayToPyListNullOkay(I->DihedralCoord, | PConvFloatArrayToPyListNullOkay(I->DihedralCoord, | |||
I->NDihedralIndex * 3)); | I->NDihedralIndex * 3)); | |||
PyList_SetItem(result, 7, SettingAsPyList(I->Setting)); | // DistSet->Setting never gets set (removed BB 11/14), was state settings? | |||
PyList_SetItem(result, 7, PConvAutoNone(NULL) /* SettingAsPyList(I->Setting) | ||||
*/); | ||||
if(I->LabPos) { | if(I->LabPos) { | |||
PyList_SetItem(result, 8, PConvLabPosVLAToPyList(I->LabPos, VLAGetSize(I-> LabPos))); | PyList_SetItem(result, 8, PConvLabPosVLAToPyList(I->LabPos, VLAGetSize(I-> LabPos))); | |||
} else { | } else { | |||
PyList_SetItem(result, 8, PConvAutoNone(NULL)); | PyList_SetItem(result, 8, PConvAutoNone(NULL)); | |||
} | } | |||
PyList_Append(result, MeasureInfoListAsPyList(I->MeasureInfo)); | PyList_SetItem(result, 9, MeasureInfoListAsPyList(I->MeasureInfo)); | |||
/* TODO setting ... */ | /* TODO setting ... */ | |||
} | } | |||
return (PConvAutoNone(result)); | return (PConvAutoNone(result)); | |||
#endif | ||||
} | } | |||
/*========================================================================*/ | /*========================================================================*/ | |||
int DistSetGetExtent(DistSet * I, float *mn, float *mx) | int DistSetGetExtent(DistSet * I, float *mn, float *mx) | |||
{ | { | |||
float *v; | float *v; | |||
int a; | int a; | |||
int c; | int c; | |||
v = I->Coord; | v = I->Coord; | |||
for(a = 0; a < I->NIndex; a++) { | for(a = 0; a < I->NIndex; a++) { | |||
skipping to change at line 436 | skipping to change at line 431 | |||
} | } | |||
/*========================================================================*/ | /*========================================================================*/ | |||
void DistSet::render(RenderInfo * info) | void DistSet::render(RenderInfo * info) | |||
{ | { | |||
DistSet * I = this; | DistSet * I = this; | |||
CRay *ray = info->ray; | CRay *ray = info->ray; | |||
int pass = info->pass; | int pass = info->pass; | |||
Picking **pick = info->pick; | Picking **pick = info->pick; | |||
int float_labels = SettingGet_i(I->State.G, | int float_labels = SettingGet_i(I->State.G, | |||
I->Setting, | NULL, | |||
I->Obj->Obj.Setting, | I->Obj->Obj.Setting, | |||
cSetting_float_labels); | cSetting_float_labels); | |||
int a; | int a; | |||
::Rep *r; | ::Rep *r; | |||
for(a = 0; a < I->NRep; a++) | for(a = 0; a < I->NRep; a++) | |||
{ | { | |||
if(!GET_BIT(I->Obj->Obj.visRep, a)) | if(!GET_BIT(I->Obj->Obj.visRep, a)) | |||
continue; | continue; | |||
if(!I->Rep[a]) { | if(!I->Rep[a]) { | |||
switch(a) { | switch(a) { | |||
skipping to change at line 499 | skipping to change at line 494 | |||
/*========================================================================*/ | /*========================================================================*/ | |||
DistSet *DistSetNew(PyMOLGlobals * G) | DistSet *DistSetNew(PyMOLGlobals * G) | |||
{ | { | |||
int a; | int a; | |||
OOAlloc(G, DistSet); | OOAlloc(G, DistSet); | |||
ObjectStateInit(G, &I->State); | ObjectStateInit(G, &I->State); | |||
I->NIndex = 0; | I->NIndex = 0; | |||
I->Coord = NULL; | I->Coord = NULL; | |||
I->Rep = VLAlloc(Rep *, cRepCnt); | I->Rep = VLAlloc(Rep *, cRepCnt); | |||
I->NRep = cRepCnt; | I->NRep = cRepCnt; | |||
I->Setting = NULL; | ||||
I->LabPos = NULL; | I->LabPos = NULL; | |||
I->LabCoord = NULL; | I->LabCoord = NULL; | |||
I->AngleCoord = NULL; | I->AngleCoord = NULL; | |||
I->NAngleIndex = 0; | I->NAngleIndex = 0; | |||
I->DihedralCoord = NULL; | I->DihedralCoord = NULL; | |||
I->NDihedralIndex = 0; | I->NDihedralIndex = 0; | |||
I->NLabel = 0; | I->NLabel = 0; | |||
for(a = 0; a < I->NRep; a++) | for(a = 0; a < I->NRep; a++) | |||
I->Rep[a] = NULL; | I->Rep[a] = NULL; | |||
I->MeasureInfo = NULL; | I->MeasureInfo = NULL; | |||
skipping to change at line 548 | skipping to change at line 542 | |||
VLAFreeP(I->Coord); | VLAFreeP(I->Coord); | |||
VLAFreeP(I->Rep); | VLAFreeP(I->Rep); | |||
ptr = I->MeasureInfo; | ptr = I->MeasureInfo; | |||
while((target = ptr)) { | while((target = ptr)) { | |||
ptr = target->next; | ptr = target->next; | |||
ListElemFree(target); | ListElemFree(target); | |||
} | } | |||
/* need to find and decrement the number of dist sets on the objects */ | /* need to find and decrement the number of dist sets on the objects */ | |||
SettingFreeP(I->Setting); | ||||
OOFreeP(I); | OOFreeP(I); | |||
} | } | |||
} | } | |||
End of changes. 17 change blocks. | ||||
24 lines changed or deleted | 18 lines changed or added |