"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "layer2/DistSet.cpp" between
pymol-v1.8.6.0.tar.bz2 and pymol-v2.1.0.tar.bz2

About: PyMOL is a Python-enhanced molecular graphics tool. It excels at 3D visualization of proteins, small molecules, density, surfaces, and trajectories. It also includes molecular editing, ray tracing, and movies. Open Source version.

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

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)