"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "layer2/ObjectDist.cpp" between
pymol-open-source-2.2.0.tar.gz and pymol-open-source-2.3.0.tar.gz

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.

ObjectDist.cpp  (pymol-open-source-2.2.0):ObjectDist.cpp  (pymol-open-source-2.3.0)
skipping to change at line 38 skipping to change at line 38
#include"Scene.h" #include"Scene.h"
#include"Ray.h" #include"Ray.h"
#include"ObjectDist.h" #include"ObjectDist.h"
#include"Selector.h" #include"Selector.h"
#include"PConv.h" #include"PConv.h"
#include"ObjectMolecule.h" #include"ObjectMolecule.h"
#include"Feedback.h" #include"Feedback.h"
#include"DistSet.h" #include"DistSet.h"
#include"ListMacros.h" #include"ListMacros.h"
void ObjectDistFree(ObjectDist * I); static void ObjectDistFree(ObjectDist * I);
void ObjectDistUpdate(ObjectDist * I); static void ObjectDistUpdate(ObjectDist * I);
int ObjectDistGetNFrames(ObjectDist * I); static int ObjectDistGetNFrames(ObjectDist * I);
void ObjectDistUpdateExtents(ObjectDist * I); static void ObjectDistUpdateExtents(ObjectDist * I);
int ObjectDistGetLabelTxfVertex(ObjectDist * I, int state, int index, float *v) int ObjectDistGetLabelTxfVertex(ObjectDist * I, int state, int index, float *v)
{ {
int result = 0; int result = 0;
if(I->DSet) { if(I->DSet) {
if(state < 0) if(state < 0)
state = SettingGet_i(I->Obj.G, NULL, I->Obj.Setting, cSetting_state) - 1; state = SettingGet_i(I->Obj.G, NULL, I->Obj.Setting, cSetting_state) - 1;
if(state < 0) if(state < 0)
state = SceneGetState(I->Obj.G); state = SceneGetState(I->Obj.G);
if(I->NDSet == 1) if(I->NDSet == 1)
skipping to change at line 439 skipping to change at line 439
I->DSet[a]->invalidateRep(rep, cRepInvAll); I->DSet[a]->invalidateRep(rep, cRepInvAll);
} }
} }
/*========================================================================*/ /*========================================================================*/
static void ObjectDistRender(ObjectDist * I, RenderInfo * info) static void ObjectDistRender(ObjectDist * I, RenderInfo * info)
{ {
int state = info->state; int state = info->state;
int pass = info->pass; int pass = info->pass;
CRay *ray = info->ray; CRay *ray = info->ray;
Picking **pick = info->pick; auto pick = info->pick;
bool shouldRender = false; bool shouldRender = false;
if(ray || pick) { if(ray || pick) {
shouldRender = true; shouldRender = true;
} else { } else {
shouldRender = pass != 0; // distance measurements should render shouldRender = pass != 0; // distance measurements should render
// both in opaque and transparency loop, // both in opaque and transparency loop,
// the rep decides based on transparency // the rep decides based on transparency
// whether it renders in that loop. // whether it renders in that loop.
} }
skipping to change at line 463 skipping to change at line 463
ObjectPrepareContext(&I->Obj, info); ObjectPrepareContext(&I->Obj, info);
for(StateIterator iter(I->Obj.G, I->Obj.Setting, state, I->NDSet); for(StateIterator iter(I->Obj.G, I->Obj.Setting, state, I->NDSet);
iter.next();) { iter.next();) {
DistSet * ds = I->DSet[iter.state]; DistSet * ds = I->DSet[iter.state];
if(ds) if(ds)
ds->render(info); ds->render(info);
} }
} }
#if 0
static CSetting **ObjectDistGetSettingHandle(ObjectDist * I, int state) static CSetting **ObjectDistGetSettingHandle(ObjectDist * I, int state)
{ {
if(state < 0) { if(state < 0) {
return (&I->Obj.Setting); return (&I->Obj.Setting);
} else { } else {
return (NULL); return (NULL);
} }
} }
#endif
static void ObjectDistInvalidate(CObject * Iarg, int rep, int level, int state){ static void ObjectDistInvalidate(CObject * Iarg, int rep, int level, int state){
ObjectDist * I = (ObjectDist*)Iarg; ObjectDist * I = (ObjectDist*)Iarg;
for(StateIterator iter(I->Obj.G, I->Obj.Setting, state, I->NDSet); for(StateIterator iter(I->Obj.G, I->Obj.Setting, state, I->NDSet);
iter.next();) { iter.next();) {
DistSet * ds = I->DSet[iter.state]; DistSet * ds = I->DSet[iter.state];
if(ds) if(ds)
ds->invalidateRep(rep, level); ds->invalidateRep(rep, level);
} }
} }
skipping to change at line 571 skipping to change at line 573
mn = 0; mn = 0;
SelectorUpdateTable(G, state, -1); SelectorUpdateTable(G, state, -1);
/* here we determine the highest number of states with which we need to concer n ourselves */ /* here we determine the highest number of states with which we need to concer n ourselves */
n_state1 = SelectorGetSeleNCSet(G, sele1); n_state1 = SelectorGetSeleNCSet(G, sele1);
n_state2 = SelectorGetSeleNCSet(G, sele2); n_state2 = SelectorGetSeleNCSet(G, sele2);
/* take the larger state count */ /* take the larger state count */
mn = (n_state2>n_state1) ? n_state2 : n_state1; mn = (n_state2>n_state1) ? n_state2 : n_state1;
/* updated state handling */ /* updated state handling */
/* determine the selected object */
frozen1 = checkFrozenState(G, sele1, state1); frozen1 = checkFrozenState(G, sele1, state1);
frozen2 = checkFrozenState(G, sele2, state2); frozen2 = checkFrozenState(G, sele2, state2);
/* FIX for incorrectly handling state=-1 for multi-molecule selections */ /* FIX for incorrectly handling state=-1 for multi-molecule selections */
if(state1<0) state1=0; if(state1<0) state1=0;
if(state2<0) state2=0; if(state2<0) state2=0;
if(mn) { if(mn) {
/* loop over the max number of states */ /* loop over the max number of states */
for(a = 0; a < mn; a++) { for(a = 0; a < mn; a++) {
skipping to change at line 669 skipping to change at line 670
/* figure out the total number of states */ /* figure out the total number of states */
mn = n_state1; mn = n_state1;
if(n_state2 > mn) if(n_state2 > mn)
mn = n_state2; mn = n_state2;
if(n_state3 > mn) if(n_state3 > mn)
mn = n_state3; mn = n_state3;
/* updated state handling */ /* updated state handling */
/* determine the selected object */
frozen1 = checkFrozenState(G, sele1, state1); frozen1 = checkFrozenState(G, sele1, state1);
frozen2 = checkFrozenState(G, sele2, state2); frozen2 = checkFrozenState(G, sele2, state2);
frozen3 = checkFrozenState(G, sele3, state3); frozen3 = checkFrozenState(G, sele3, state3);
if(mn) { if(mn) {
for(a = 0; a < mn; a++) { for(a = 0; a < mn; a++) {
if(state >= 0) { if(state >= 0) {
if(state > mn) if(state > mn)
break; break;
a = state; a = state;
skipping to change at line 736 skipping to change at line 736
} }
ObjectDist *ObjectDistNewFromDihedralSele(PyMOLGlobals * G, ObjectDist * oldObj, ObjectDist *ObjectDistNewFromDihedralSele(PyMOLGlobals * G, ObjectDist * oldObj,
int sele1, int sele2, int sele3, int s ele4, int sele1, int sele2, int sele3, int s ele4,
int mode, int labels, float *result, int mode, int labels, float *result,
int reset, int state) int reset, int state)
{ {
int a, mn; int a, mn;
float angle_sum = 0.0; float angle_sum = 0.0;
int angle_cnt = 0; int angle_cnt = 0;
int n_state1, n_state2, n_state3, n_state4, state1, state2, state3, state4; int n_state1, n_state2, n_state3, n_state4;
int state1 = -1, state2 = -1, state3 = -1, state4 = -1;
ObjectDist *I; ObjectDist *I;
int frozen1=-1, frozen2=-1, frozen3=-1, frozen4=-1; int frozen1=-1, frozen2=-1, frozen3=-1, frozen4=-1;
CObject * query_obj = NULL;
if(!oldObj) /* create object if new */ if(!oldObj) /* create object if new */
I = ObjectDistNew(G); I = ObjectDistNew(G);
else { /* otherwise, use existing object */ else { /* otherwise, use existing object */
I = oldObj; I = oldObj;
if(reset) { /* if reseting, then clear out all existing coor dinate sets */ if(reset) { /* if reseting, then clear out all existing coor dinate sets */
ObjectDistReset(G, I); ObjectDistReset(G, I);
} }
} }
*result = 0.0; *result = 0.0;
skipping to change at line 772 skipping to change at line 772
mn = n_state1; mn = n_state1;
if(n_state2 > mn) if(n_state2 > mn)
mn = n_state2; mn = n_state2;
if(n_state3 > mn) if(n_state3 > mn)
mn = n_state3; mn = n_state3;
if(n_state4 > mn) if(n_state4 > mn)
mn = n_state4; mn = n_state4;
/* updated state handling */ /* updated state handling */
/* determine the selected object */ frozen1 = checkFrozenState(G, sele1, state1);
if(sele1 >= 0) frozen2 = checkFrozenState(G, sele2, state2);
query_obj = (CObject*) SelectorGetSingleObjectMolecule(G, sele1); frozen3 = checkFrozenState(G, sele3, state3);
if(query_obj) { frozen4 = checkFrozenState(G, sele4, state4);
frozen1 = SettingGetIfDefined_i(query_obj->G, query_obj->Setting, cSetting_s
tate, &state1);
state1--;
}
/* updated state handling */
/* determine the selected object */
if(sele2 >= 0)
query_obj = (CObject*) SelectorGetSingleObjectMolecule(G, sele2);
if(query_obj) {
frozen2 = SettingGetIfDefined_i(query_obj->G, query_obj->Setting, cSetting_s
tate, &state2);
state2--;
}
/* updated state handling */
/* determine the selected object */
if(sele3 >= 0)
query_obj = (CObject*) SelectorGetSingleObjectMolecule(G, sele3);
if(query_obj) {
frozen3 = SettingGetIfDefined_i(query_obj->G, query_obj->Setting, cSetting_s
tate, &state3);
state3--;
}
/* updated state handling */
/* determine the selected object */
if(sele4 >= 0)
query_obj = (CObject*) SelectorGetSingleObjectMolecule(G, sele4);
if(query_obj) {
frozen4 = SettingGetIfDefined_i(query_obj->G, query_obj->Setting, cSetting_s
tate, &state4);
state4--;
}
if(mn) { if(mn) {
for(a = 0; a < mn; a++) { for(a = 0; a < mn; a++) {
if(state >= 0) { if(state >= 0) {
if(state > mn) if(state > mn)
break; break;
a = state; a = state;
} }
/* treat selections with one state as static singletons */ /* treat selections with one state as static singletons */
 End of changes. 9 change blocks. 
44 lines changed or deleted 13 lines changed or added

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