"Fossies" - the Fresh Open Source Software Archive  

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

ObjectCGO.cpp  (pymol-open-source-2.2.0):ObjectCGO.cpp  (pymol-open-source-2.3.0)
skipping to change at line 253 skipping to change at line 253
SceneInvalidate(I->Obj.G); /* needed ? */ SceneInvalidate(I->Obj.G); /* needed ? */
} }
/*========================================================================*/ /*========================================================================*/
static int ObjectCGOGetNState(ObjectCGO * I) static int ObjectCGOGetNState(ObjectCGO * I)
{ {
return (I->NState); return (I->NState);
} }
static void ObjectCGORenderState(PyMOLGlobals * G, int pass, CRay *ray, Picking static void ObjectCGORenderState(PyMOLGlobals* G, int pass, CRay* ray,
**pick, ObjectCGO * I, RenderInfo * info, ObjectCGOState *sobj, const float *col ObjectCGO* I, RenderInfo* info, ObjectCGOState* sobj, const float* color,
or, ObjectGadgetRamp *ramp, int use_shader, bool cgo_lighting){ ObjectGadgetRamp* ramp, int use_shader, bool cgo_lighting)
{
if(ray) { if(ray) {
if(sobj) { if(sobj) {
if(sobj->origCGO){ if(sobj->origCGO){
CGO *cgo = sobj->origCGO, *cgo_copy = NULL; CGO *cgo = sobj->origCGO, *cgo_copy = NULL;
if (cgo_lighting && CGOHasAnyTriangleVerticesWithoutNormals(cgo)) { if (cgo_lighting && CGOHasAnyTriangleVerticesWithoutNormals(cgo)) {
cgo = cgo_copy = CGOGenerateNormalsForTriangles(cgo); cgo = cgo_copy = CGOGenerateNormalsForTriangles(cgo);
} }
CGORenderRay(cgo, ray, info, color, ramp, I->Obj.Setting, NULL); CGORenderRay(cgo, ray, info, color, ramp, I->Obj.Setting, NULL);
CGOFree(cgo_copy); CGOFree(cgo_copy);
} }
} }
} else if(G->HaveGUI && G->ValidContext && pass) { } else if(G->HaveGUI && G->ValidContext && pass) {
if(pick) { // no picking yet if(info->pick) { // no picking yet
} else { } else {
bool pass_is_opaque = (pass > 0); bool pass_is_opaque = (pass > 0);
if(sobj && ((sobj->hasTransparency ^ pass_is_opaque) || (sobj->hasOpaque = = pass_is_opaque))){ if(sobj && ((sobj->hasTransparency ^ pass_is_opaque) || (sobj->hasOpaque = = pass_is_opaque))){
{ {
CShaderPrg *shaderPrg; CShaderPrg *shaderPrg;
int two_sided_lighting = SettingGet_i(G, I->Obj.Setting, NULL, cSetting _two_sided_lighting); int two_sided_lighting = SettingGet_i(G, I->Obj.Setting, NULL, cSetting _two_sided_lighting);
bool backface_cull = SettingGet_i(G, I->Obj.Setting, NULL, cSetting_ba ckface_cull); bool backface_cull = SettingGet_i(G, I->Obj.Setting, NULL, cSetting_ba ckface_cull);
if (two_sided_lighting<0){ if (two_sided_lighting<0){
two_sided_lighting = !cgo_lighting; two_sided_lighting = !cgo_lighting;
} }
skipping to change at line 489 skipping to change at line 492
sobj->cgo_lighting = cgo_lighting; sobj->cgo_lighting = cgo_lighting;
} }
} }
/*========================================================================*/ /*========================================================================*/
static void ObjectCGORender(ObjectCGO * I, RenderInfo * info) static void ObjectCGORender(ObjectCGO * 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;
int pass = info->pass; int pass = info->pass;
ObjectCGOState *sobj = NULL; ObjectCGOState *sobj = NULL;
const float *color = NULL; const float *color = NULL;
bool use_shader = false, cgo_lighting = false; bool use_shader = false, cgo_lighting = false;
ObjectGadgetRamp *ramp = NULL; ObjectGadgetRamp *ramp = NULL;
use_shader = SettingGetGlobal_b(G, cSetting_cgo_use_shader) & use_shader = SettingGetGlobal_b(G, cSetting_cgo_use_shader) &
SettingGetGlobal_b(G, cSetting_use_shaders); SettingGetGlobal_b(G, cSetting_use_shaders);
cgo_lighting = SettingGet_i(G, I->Obj.Setting, NULL, cSetting_cgo_lighting); cgo_lighting = SettingGet_i(G, I->Obj.Setting, NULL, cSetting_cgo_lighting);
skipping to change at line 515 skipping to change at line 517
return; return;
if(pass || info->ray) { if(pass || info->ray) {
if((I->Obj.visRep & cRepCGOBit)) { if((I->Obj.visRep & cRepCGOBit)) {
for(StateIterator iter(G, I->Obj.Setting, state, I->NState); iter.next();) { for(StateIterator iter(G, I->Obj.Setting, state, I->NState); iter.next();) {
sobj = I->State + iter.state; sobj = I->State + iter.state;
if (!sobj->origCGO) if (!sobj->origCGO)
continue; continue;
if (!ray) if (!ray)
ObjectCGOGenerateCGO(G, I, sobj, use_shader, cgo_lighting, color, ramp , iter.state); ObjectCGOGenerateCGO(G, I, sobj, use_shader, cgo_lighting, color, ramp , iter.state);
ObjectCGORenderState(G, pass, ray, pick, I, info, sobj, color, ramp, use_ shader, cgo_lighting); ObjectCGORenderState(G, pass, ray, I, info, sobj, color, ramp, use_sha der, cgo_lighting);
} }
} }
} }
} }
/*========================================================================*/ /*========================================================================*/
ObjectCGO *ObjectCGONew(PyMOLGlobals * G) ObjectCGO *ObjectCGONew(PyMOLGlobals * G)
{ {
OOAlloc(G, ObjectCGO); OOAlloc(G, ObjectCGO);
 End of changes. 4 change blocks. 
6 lines changed or deleted 6 lines changed or added

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