From d1dace5f933806fab6808fb5ef7754b0c7949c53 Mon Sep 17 00:00:00 2001
From: Ansgar Philippsen <ansgar.philippsen@gmail.com>
Date: Thu, 27 Oct 2011 10:38:12 -0400
Subject: [PATCH] added temporary implementation to allow tube rendering with
 per-residue diameter

---
 modules/gfx/src/impl/backbone_trace.cc | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/modules/gfx/src/impl/backbone_trace.cc b/modules/gfx/src/impl/backbone_trace.cc
index 01bbfb265..ad9e8c961 100644
--- a/modules/gfx/src/impl/backbone_trace.cc
+++ b/modules/gfx/src/impl/backbone_trace.cc
@@ -84,11 +84,15 @@ public:
     // determine atom to add to list
     mol::AtomHandle ca = res.GetCentralAtom();
     if (ca) {
+      float rad=1.0;
+      if(ca.HasProp("trace_rad")) {
+        rad=ca.GetFloatProp("trace_rad");
+      }
       NodeEntry entry={ca, GfxObj::Ele2Color(ca.GetElement()),
                        GfxObj::Ele2Color(ca.GetElement()),
                        geom::Vec3(), // this will be set by the gfx trace obj
                        res.GetCentralNormal(),
-                       1.0,
+                       rad,
                        geom::Vec3(),geom::Vec3(),geom::Vec3(), // for later use in NA rendering
                        false,id_counter_++};
       list_.push_back(entry);
@@ -164,7 +168,13 @@ void BackboneTrace::OnUpdatedPositions()
   for(NodeEntryListList::iterator nitnit=node_list_list_.begin();nitnit!=node_list_list_.end();++nitnit) {
     NodeEntryList& nlist=*nitnit;
     for(NodeEntryList::iterator nit=nlist.begin();nit!=nlist.end();++nit) {
-      nit->normal=nit->atom.GetResidue().GetCentralNormal();
+      mol::AtomHandle ca=nit->atom;
+      nit->normal=ca.GetResidue().GetCentralNormal();
+      if(ca.HasProp("trace_rad")) {
+        nit->rad=ca.GetFloatProp("trace_rad");
+      } else {
+        nit->rad=1.0;
+      }
     }
     PrepList(nlist);
   }
-- 
GitLab