"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "layer2/ObjectCGO.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.

ObjectCGO.cpp  (pymol-v1.8.6.0.tar.bz2):ObjectCGO.cpp  (pymol-v2.1.0.tar.bz2)
skipping to change at line 36 skipping to change at line 36
#include"MemoryDebug.h" #include"MemoryDebug.h"
#include"CGO.h" #include"CGO.h"
#include"Scene.h" #include"Scene.h"
#include"Setting.h" #include"Setting.h"
#include"PConv.h" #include"PConv.h"
#include"main.h" #include"main.h"
#include"Color.h" #include"Color.h"
#include"VFont.h" #include"VFont.h"
#include"ShaderMgr.h" #include"ShaderMgr.h"
#ifndef _PYMOL_NOPY
static PyObject *ObjectCGOStateAsPyList(ObjectCGOState * I) static PyObject *ObjectCGOStateAsPyList(ObjectCGOState * I)
{ {
PyObject *result = NULL; PyObject *result = NULL;
result = PyList_New(1); result = PyList_New(1);
if(I->ray) if(I->ray)
PyList_SetItem(result, 0, CGOAsPyList(I->ray)); PyList_SetItem(result, 0, CGOAsPyList(I->ray));
else if(I->std) else if(I->std)
PyList_SetItem(result, 0, CGOAsPyList(I->std)); PyList_SetItem(result, 0, CGOAsPyList(I->std));
else else
PyList_SetItem(result, 0, PConvAutoNone(NULL)); PyList_SetItem(result, 0, PConvAutoNone(NULL));
return (PConvAutoNone(result)); return (PConvAutoNone(result));
} }
static PyObject *ObjectCGOAllStatesAsPyList(ObjectCGO * I) static PyObject *ObjectCGOAllStatesAsPyList(ObjectCGO * I)
{ {
PyObject *result = NULL; PyObject *result = NULL;
int a; int a;
result = PyList_New(I->NState); result = PyList_New(I->NState);
for(a = 0; a < I->NState; a++) { for(a = 0; a < I->NState; a++) {
PyList_SetItem(result, a, ObjectCGOStateAsPyList(I->State + a)); PyList_SetItem(result, a, ObjectCGOStateAsPyList(I->State + a));
} }
return (PConvAutoNone(result)); return (PConvAutoNone(result));
} }
static int ObjectCGOStateFromPyList(PyMOLGlobals * G, ObjectCGOState * I, PyObje ct * list, static int ObjectCGOStateFromPyList(PyMOLGlobals * G, ObjectCGOState * I, PyObje ct * list,
skipping to change at line 120 skipping to change at line 118
ok = ok =
ObjectCGOStateFromPyList(I->Obj.G, I->State + a, PyList_GetItem(list, a) , ObjectCGOStateFromPyList(I->Obj.G, I->State + a, PyList_GetItem(list, a) ,
version); version);
if(!ok) if(!ok)
break; break;
} }
} }
return (ok); return (ok);
} }
#endif
int ObjectCGONewFromPyList(PyMOLGlobals * G, PyObject * list, ObjectCGO ** resul t, int ObjectCGONewFromPyList(PyMOLGlobals * G, PyObject * list, ObjectCGO ** resul t,
int version) int version)
{ {
#ifdef _PYMOL_NOPY
return 0;
#else
int ok = true; int ok = true;
ObjectCGO *I = NULL; ObjectCGO *I = NULL;
(*result) = NULL; (*result) = NULL;
if(ok) if(ok)
ok = (list != Py_None); ok = (list != NULL);
if(ok) if(ok)
ok = PyList_Check(list); ok = PyList_Check(list);
I = ObjectCGONew(G); I = ObjectCGONew(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);
if(ok) if(ok)
ok = ObjectCGOAllStatesFromPyList(I, PyList_GetItem(list, 2), version); ok = ObjectCGOAllStatesFromPyList(I, PyList_GetItem(list, 2), version);
if(ok) { if(ok) {
(*result) = I; (*result) = I;
ObjectCGORecomputeExtent(I); ObjectCGORecomputeExtent(I);
} else { } else {
/* cleanup? */ /* cleanup? */
} }
return (ok); return (ok);
#endif
} }
PyObject *ObjectCGOAsPyList(ObjectCGO * I) PyObject *ObjectCGOAsPyList(ObjectCGO * I)
{ {
#ifdef _PYMOL_NOPY
return NULL;
#else
PyObject *result = NULL; PyObject *result = NULL;
result = PyList_New(3); result = PyList_New(3);
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, ObjectCGOAllStatesAsPyList(I)); PyList_SetItem(result, 2, ObjectCGOAllStatesAsPyList(I));
return (PConvAutoNone(result)); return (PConvAutoNone(result));
#endif
} }
/*========================================================================*/ /*========================================================================*/
void ObjectCGOFree(ObjectCGO * I) void ObjectCGOFree(ObjectCGO * I)
{ {
int a; int a;
for(a = 0; a < I->NState; a++) { for(a = 0; a < I->NState; a++) {
if(I->State[a].shaderCGO && I->State[a].std!=I->State[a].shaderCGO) if(I->State[a].shaderCGO && I->State[a].std!=I->State[a].shaderCGO)
CGOFree(I->State[a].shaderCGO); CGOFree(I->State[a].shaderCGO);
skipping to change at line 231 skipping to change at line 218
} }
I->Obj.ExtentFlag = extent_flag; I->Obj.ExtentFlag = extent_flag;
SettingCheckHandle(I->Obj.G, &I->Obj.Setting); SettingCheckHandle(I->Obj.G, &I->Obj.Setting);
SettingSet_i(I->Obj.Setting, cSetting_cgo_lighting, has_normals); SettingSet_i(I->Obj.Setting, cSetting_cgo_lighting, has_normals);
} }
/*========================================================================*/ /*========================================================================*/
static void ObjectCGOInvalidate(ObjectCGO * I, int rep, int level, int state) static void ObjectCGOInvalidate(ObjectCGO * I, int rep, int level, int state)
{ {
ObjectCGOState *sobj = NULL; ObjectCGOState *sobj = NULL;
if(state < 0) { if(state < 0) {
int a; int a;
for(a = 0; a < I->NState; a++) { for(a = 0; a < I->NState; a++) {
I->State[a].valid = false; I->State[a].valid = false;
sobj = I->State + a; sobj = I->State + a;
if (sobj->shaderCGO){ if (sobj->shaderCGO){
CGOFree(sobj->shaderCGO); CGOFree(sobj->shaderCGO);
sobj->shaderCGO = 0; sobj->shaderCGO = 0;
} }
} }
skipping to change at line 435 skipping to change at line 423
I->Obj.fFree = (void (*)(CObject *)) ObjectCGOFree; I->Obj.fFree = (void (*)(CObject *)) ObjectCGOFree;
I->Obj.fUpdate = (void (*)(CObject *)) ObjectCGOUpdate; I->Obj.fUpdate = (void (*)(CObject *)) ObjectCGOUpdate;
I->Obj.fInvalidate = (void (*)(CObject *, int rep, int level, int state)) I->Obj.fInvalidate = (void (*)(CObject *, int rep, int level, int state))
ObjectCGOInvalidate; ObjectCGOInvalidate;
I->Obj.fRender = (void (*)(CObject *, RenderInfo *)) ObjectCGORender; I->Obj.fRender = (void (*)(CObject *, RenderInfo *)) ObjectCGORender;
I->Obj.fGetNFrame = (int (*)(CObject *)) ObjectCGOGetNState; I->Obj.fGetNFrame = (int (*)(CObject *)) ObjectCGOGetNState;
return (I); return (I);
} }
#ifndef _PYMOL_NOPY
/*========================================================================*/ /*========================================================================*/
static CGO *ObjectCGOPyListFloatToCGO(PyMOLGlobals * G, PyObject * list) static CGO *ObjectCGOPyListFloatToCGO(PyMOLGlobals * G, PyObject * list)
{ {
CGO *cgo = NULL; CGO *cgo = NULL;
int len; int len;
int ok = true; int ok = true;
int result; int result;
float *raw = NULL; float *raw = NULL;
if(PyList_Check(list)) { if(PyList_Check(list)) {
len = PConvPyListToFloatArray(list, &raw); len = PConvPyListToFloatArray(list, &raw);
skipping to change at line 465 skipping to change at line 451
PRINTF " FloatToCGO: error encountered on element %d\n", result ENDF (G); PRINTF " FloatToCGO: error encountered on element %d\n", result ENDF (G);
} }
CGOStop(cgo); CGOStop(cgo);
} }
} }
FreeP(raw); FreeP(raw);
} }
} }
return (cgo); return (cgo);
} }
#endif
/*========================================================================*/ /*========================================================================*/
static CGO *ObjectCGOFloatArrayToCGO(PyMOLGlobals * G, float *raw, int len, int quiet) static CGO *ObjectCGOFloatArrayToCGO(PyMOLGlobals * G, float *raw, int len, int quiet)
{ {
CGO *cgo = NULL; CGO *cgo = NULL;
int ok = true; int ok = true;
int result; int result;
if(raw) { if(raw) {
if(ok) { if(ok) {
skipping to change at line 560 skipping to change at line 545
cgo = CGONew(G); cgo = CGONew(G);
VFontWriteToCGO(G, font_id, cgo, text, pos, scale, NULL); VFontWriteToCGO(G, font_id, cgo, text, pos, scale, NULL);
I = ObjectCGOFromCGO(G, NULL, cgo, 0); I = ObjectCGOFromCGO(G, NULL, cgo, 0);
return (I); return (I);
} }
/*========================================================================*/ /*========================================================================*/
ObjectCGO *ObjectCGODefine(PyMOLGlobals * G, ObjectCGO * obj, PyObject * pycgo, int state) ObjectCGO *ObjectCGODefine(PyMOLGlobals * G, ObjectCGO * obj, PyObject * pycgo, int state)
{ /* assumes blocked interpreter */ { /* assumes blocked interpreter */
#ifdef _PYMOL_NOPY
return NULL;
#else
ObjectCGO *I = NULL; ObjectCGO *I = NULL;
CGO *cgo, *font_cgo; CGO *cgo, *font_cgo;
int est; int est;
if(obj) { if(obj) {
if(obj->Obj.type != cObjectCGO) /* TODO: handle this */ if(obj->Obj.type != cObjectCGO) /* TODO: handle this */
obj = NULL; obj = NULL;
} }
if(!obj) { if(!obj) {
skipping to change at line 620 skipping to change at line 602
} }
} }
} }
} }
if(I) { if(I) {
ObjectCGORecomputeExtent(I); ObjectCGORecomputeExtent(I);
} }
SceneChanged(G); SceneChanged(G);
SceneCountFrames(G); SceneCountFrames(G);
return (I); return (I);
#endif
} }
ObjectCGO *ObjectCGOFromFloatArray(PyMOLGlobals * G, ObjectCGO * obj, ObjectCGO *ObjectCGOFromFloatArray(PyMOLGlobals * G, ObjectCGO * obj,
float *array, int size, int state, int quiet) float *array, int size, int state, int quiet)
{ {
ObjectCGO *I = NULL; ObjectCGO *I = NULL;
CGO *cgo, *font_cgo; CGO *cgo, *font_cgo;
int est; int est;
 End of changes. 13 change blocks. 
21 lines changed or deleted 2 lines changed or added

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