ObjectMap.cpp (pymol-open-source-2.2.0) | : | ObjectMap.cpp (pymol-open-source-2.3.0) | ||
---|---|---|---|---|
skipping to change at line 1570 | skipping to change at line 1570 | |||
PyList_SetItem(result, 0, ObjectAsPyList(&I->Obj)); | PyList_SetItem(result, 0, ObjectAsPyList(&I->Obj)); | |||
PyList_SetItem(result, 1, PyInt_FromLong(I->NState)); | PyList_SetItem(result, 1, PyInt_FromLong(I->NState)); | |||
PyList_SetItem(result, 2, ObjectMapAllStatesAsPyList(I)); | PyList_SetItem(result, 2, ObjectMapAllStatesAsPyList(I)); | |||
return (PConvAutoNone(result)); | return (PConvAutoNone(result)); | |||
} | } | |||
int ObjectMapNewFromPyList(PyMOLGlobals * G, PyObject * list, ObjectMap ** resul t) | int ObjectMapNewFromPyList(PyMOLGlobals * G, PyObject * list, ObjectMap ** resul t) | |||
{ | { | |||
int ok = true; | int ok = true; | |||
int ll; | ||||
ObjectMap *I = NULL; | ObjectMap *I = NULL; | |||
(*result) = NULL; | (*result) = NULL; | |||
if(ok) | if(ok) | |||
ok = (list != NULL); | ok = (list != NULL); | |||
if(ok) | if(ok) | |||
ok = PyList_Check(list); | ok = PyList_Check(list); | |||
if(ok) | ||||
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 */ | |||
I = ObjectMapNew(G); | I = ObjectMapNew(G); | |||
if(ok) | if(ok) | |||
ok = (I != NULL); | ok = (I != NULL); | |||
if(ok) | if(ok) | |||
ok = ObjectFromPyList(G, PyList_GetItem(list, 0), &I->Obj); | ok = ObjectFromPyList(G, PyList_GetItem(list, 0), &I->Obj); | |||
if(ok) | if(ok) | |||
ok = PConvPyIntToInt(PyList_GetItem(list, 1), &I->NState); | ok = PConvPyIntToInt(PyList_GetItem(list, 1), &I->NState); | |||
skipping to change at line 1908 | skipping to change at line 1905 | |||
shaderCGO->use_shader = true; | shaderCGO->use_shader = true; | |||
return shaderCGO; | return shaderCGO; | |||
} | } | |||
static void ObjectMapRender(ObjectMap * I, RenderInfo * info) | static void ObjectMapRender(ObjectMap * I, RenderInfo * info) | |||
{ | { | |||
PyMOLGlobals *G = I->Obj.G; | PyMOLGlobals *G = I->Obj.G; | |||
int state = info->state; | int state = info->state; | |||
CRay *ray = info->ray; | CRay *ray = info->ray; | |||
Picking **pick = info->pick; | auto pick = info->pick; | |||
int pass = info->pass; | int pass = info->pass; | |||
ObjectMapState *ms = NULL; | ObjectMapState *ms = NULL; | |||
if(pass) | if(pass) | |||
return; | return; | |||
for(StateIterator iter(G, I->Obj.Setting, state, I->NState); | for(StateIterator iter(G, I->Obj.Setting, state, I->NState); | |||
iter.next();) { | iter.next();) { | |||
state = iter.state; | state = iter.state; | |||
if(I->State[state].Active) | if(I->State[state].Active) | |||
skipping to change at line 2527 | skipping to change at line 2524 | |||
} | } | |||
// AMIN, AMAX, AMEAN | // AMIN, AMAX, AMEAN | |||
mind = *(float *) (i++); | mind = *(float *) (i++); | |||
maxd = *(float *) (i++); | maxd = *(float *) (i++); | |||
mean = *(float *) (i++); | mean = *(float *) (i++); | |||
ispg = *(i++); | ispg = *(i++); | |||
sym_skip = *(i++); | sym_skip = *(i++); | |||
// CCP4 Format: | ||||
// 25-37 skew transformation | ||||
// 38-52 future use "Storage space sometimes used by specific programs (defaul | ||||
t = 0)" | ||||
// MRC 2000 Format: | ||||
// 25-49 "Extra, user defined storage space (default = 0)" | ||||
// 50-52 ORIGIN | ||||
{ | { | |||
int skew = *(i++); | int skew = *(i++); | |||
if(skew) { | if(skew) { | |||
double matrix[16]; | double matrix[16]; | |||
auto i_float = (const float *) i; | auto i_float = (const float *) i; | |||
// SKWMAT Skew matrix S (in order S11, S12, S13, S21 etc) | // SKWMAT Skew matrix S (in order S11, S12, S13, S21 etc) | |||
copy33f44d(i_float, matrix); | copy33f44d(i_float, matrix); | |||
xx_matrix_invert(matrix, matrix, 4); | xx_matrix_invert(matrix, matrix, 4); | |||
skipping to change at line 2556 | skipping to change at line 2561 | |||
PRINTFB(I->Obj.G, FB_ObjectMap, FB_Details) | PRINTFB(I->Obj.G, FB_ObjectMap, FB_Details) | |||
" ObjectMapCCP4: Applied skew transformation\n" | " ObjectMapCCP4: Applied skew transformation\n" | |||
ENDFB(I->Obj.G); | ENDFB(I->Obj.G); | |||
} | } | |||
} | } | |||
// XORIGIN, YORIGIN, ZORIGIN (50 - 52) | // XORIGIN, YORIGIN, ZORIGIN (50 - 52) | |||
// TODO See "Origin Conventions" in http://situs.biomachina.org/fmap.pdf | // TODO See "Origin Conventions" in http://situs.biomachina.org/fmap.pdf | |||
float * mrc2000origin = (float *)(i + 49 - 25); | float * mrc2000origin = (float *)(i + 49 - 25); | |||
if (lengthsq3f(mrc2000origin) > R_SMALL4) { | if (lengthsq3f(mrc2000origin) > R_SMALL4) { | |||
double matrix[] = { | ||||
1., 0., 0., mrc2000origin[0], | ||||
0., 1., 0., mrc2000origin[1], | ||||
0., 0., 1., mrc2000origin[2], | ||||
0., 0., 0., 1.}; | ||||
ObjectStateSetMatrix(&ms->State, matrix); | ||||
if (!quiet) { | if (!quiet) { | |||
PRINTFB(I->Obj.G, FB_ObjectMap, FB_Warnings) | PRINTFB(I->Obj.G, FB_ObjectMap, FB_Details) | |||
" ObjectMapCCP4: MRC 2000 ORIGIN %.2f %.2f %.2f (unused)\n", | " ObjectMapCCP4: Applied MRC 2000 ORIGIN %.2f %.2f %.2f\n", | |||
mrc2000origin[0], mrc2000origin[1], mrc2000origin[2] | mrc2000origin[0], mrc2000origin[1], mrc2000origin[2] | |||
ENDFB(I->Obj.G); | ENDFB(I->Obj.G); | |||
} | } | |||
} | } | |||
i += 54 - 25; | i += 54 - 25; | |||
stdev = *(float *) (i++); | stdev = *(float *) (i++); | |||
if(!quiet) { | if(!quiet) { | |||
PRINTFB(I->Obj.G, FB_ObjectMap, FB_Blather) | PRINTFB(I->Obj.G, FB_ObjectMap, FB_Blather) | |||
skipping to change at line 5623 | skipping to change at line 5636 | |||
#ifdef _PYMOL_NUMPY | #ifdef _PYMOL_NUMPY | |||
ptr = PyArray_GETPTR3(pao, a, b, c); | ptr = PyArray_GETPTR3(pao, a, b, c); | |||
switch(itemsize) { | switch(itemsize) { | |||
case sizeof(double): | case sizeof(double): | |||
dens = (float) *((double*)ptr); | dens = (float) *((double*)ptr); | |||
break; | break; | |||
case sizeof(float): | case sizeof(float): | |||
dens = *((float*)ptr); | dens = *((float*)ptr); | |||
break; | break; | |||
default: | default: | |||
dens = 0.0; | ||||
printf("no itemsize match\n"); | printf("no itemsize match\n"); | |||
} | } | |||
#else | #else | |||
dens = 0.0; | dens = 0.0; | |||
#endif | #endif | |||
F3(ms->Field->data, a, b, c) = dens; | F3(ms->Field->data, a, b, c) = dens; | |||
if(maxd < dens) | if(maxd < dens) | |||
maxd = dens; | maxd = dens; | |||
if(mind > dens) | if(mind > dens) | |||
mind = dens; | mind = dens; | |||
End of changes. 7 change blocks. | ||||
6 lines changed or deleted | 21 lines changed or added |