From b04be941114df56df8cff9d343abea16a45778d2 Mon Sep 17 00:00:00 2001
From: marco <marco@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Sun, 21 Mar 2010 17:38:11 +0000
Subject: [PATCH] POV export for SIMPLE render mode

This is essentially the same as the CUSTOM renderer export, but with
a very thin tube and sphere radius.

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1859 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/gfx/src/impl/simple_renderer.cc | 26 ++++++++++++++++++++++++-
 modules/gfx/src/impl/simple_renderer.hh |  2 +-
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/modules/gfx/src/impl/simple_renderer.cc b/modules/gfx/src/impl/simple_renderer.cc
index cbd012f35..4e228f0dc 100644
--- a/modules/gfx/src/impl/simple_renderer.cc
+++ b/modules/gfx/src/impl/simple_renderer.cc
@@ -24,7 +24,7 @@
 #include <ost/gfx/gl_helper.hh>
 #include <ost/gfx/scene.hh>
 #include <ost/gfx/entity.hh>
-
+#include <ost/gfx/povray.hh>
 #include "simple_renderer.hh"
 
 namespace ost { namespace gfx { namespace impl {
@@ -316,4 +316,28 @@ SimpleRenderer::~SimpleRenderer()
 
 }
 
+void SimpleRenderer::RenderPov(PovState& pov, const std::string& name)
+{
+  pov.write_merge_or_union(name);
+  
+  for (AtomEntryMap::const_iterator it=view_.atom_map.begin();
+       it!=view_.atom_map.end();++it) {
+    pov.write_sphere(it->second.atom.GetPos(),
+                     options_->GetLineWidth()*0.05,
+                     it->second.color,
+                     name);
+  }
+
+  for(BondEntryList::const_iterator it=view_.bond_list.begin();it!=view_.bond_list.end();++it) {
+    const geom::Vec3& p0=it->bond.GetFirst().GetPos();
+    const geom::Vec3& p2=it->bond.GetSecond().GetPos();
+    geom::Vec3 p1=(p0+p2)*0.5;
+    pov.write_cyl(p0,p1,options_->GetLineWidth()*0.05,
+                  it->atom1->color,name,true);
+    pov.write_cyl(p1,p2,options_->GetLineWidth()*0.05,
+                  it->atom2->color,name,true);
+  }
+  pov.inc() << " }\n";
+}
+
 }}}
diff --git a/modules/gfx/src/impl/simple_renderer.hh b/modules/gfx/src/impl/simple_renderer.hh
index 87162e168..78038ffe5 100644
--- a/modules/gfx/src/impl/simple_renderer.hh
+++ b/modules/gfx/src/impl/simple_renderer.hh
@@ -45,7 +45,7 @@ public:
   
   virtual void Render(RenderPass pass);
   virtual ~SimpleRenderer();
-  
+  virtual void RenderPov(PovState& pov, const std::string& name);
   void BlurSnapshot();
 private:
   void RenderBlur();
-- 
GitLab