From 31cd83e3d7407baefb6c71ca8be3db6710e21f16 Mon Sep 17 00:00:00 2001
From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Mon, 8 Mar 2010 09:09:34 +0000
Subject: [PATCH] Fixed bug in RenderOptions (Tube not updated)

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1784 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/gfx/pymod/export_render_options.cc               | 1 +
 modules/gfx/src/impl/cartoon_renderer.cc                 | 2 +-
 modules/gfx/src/render_options/cartoon_render_options.cc | 9 +++++++--
 modules/gfx/src/render_options/cartoon_render_options.hh | 3 ++-
 4 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/modules/gfx/pymod/export_render_options.cc b/modules/gfx/pymod/export_render_options.cc
index cb5a530b7..5d2a95172 100644
--- a/modules/gfx/pymod/export_render_options.cc
+++ b/modules/gfx/pymod/export_render_options.cc
@@ -79,6 +79,7 @@ void export_RenderOptions()
   ;
 
   class_<CartoonRenderOptions, boost::shared_ptr<CartoonRenderOptions>, bases<RenderOptions>, boost::noncopyable>("CartoonRenderOptions")
+    .def(init<optional<bool> >())
     .def("SetSplineDetail", &CartoonRenderOptions::SetSplineDetail)
     .def("GetSplineDetail", &CartoonRenderOptions::GetSplineDetail)
     .def("SetPolyMode", &CartoonRenderOptions::SetPolyMode)
diff --git a/modules/gfx/src/impl/cartoon_renderer.cc b/modules/gfx/src/impl/cartoon_renderer.cc
index 887e4c449..e9b750232 100644
--- a/modules/gfx/src/impl/cartoon_renderer.cc
+++ b/modules/gfx/src/impl/cartoon_renderer.cc
@@ -32,7 +32,7 @@ using namespace impl;
 
 CartoonRenderer::CartoonRenderer(BackboneTrace& trace, bool force_tube): 
   TraceRendererBase(trace, 3),   force_tube_(force_tube),
-  options_(new CartoonRenderOptions())
+  options_(new CartoonRenderOptions(force_tube))
 {
 if(force_tube){
   this->SetName("Smooth Tube");
diff --git a/modules/gfx/src/render_options/cartoon_render_options.cc b/modules/gfx/src/render_options/cartoon_render_options.cc
index 1f3428c15..30996bfd1 100644
--- a/modules/gfx/src/render_options/cartoon_render_options.cc
+++ b/modules/gfx/src/render_options/cartoon_render_options.cc
@@ -26,7 +26,8 @@ namespace ost {
 
 namespace gfx {
 
-CartoonRenderOptions::CartoonRenderOptions(): 
+CartoonRenderOptions::CartoonRenderOptions(bool force_tube):
+  force_tube_(force_tube),
   spline_detail_(6),
   poly_mode_(2),
   arc_detail_(4),
@@ -41,10 +42,14 @@ CartoonRenderOptions::CartoonRenderOptions():
   strand_ecc_(0.3) {}
 
 RenderMode::Type CartoonRenderOptions::GetRenderMode(){
- return RenderMode::HSC;
+  if(force_tube_)
+    return RenderMode::TUBE;
+  return RenderMode::HSC;
 }
 
 bool CartoonRenderOptions::CanApplyRenderOptions(RenderOptionsPtr render_options){
+  if(force_tube_)
+    return render_options.get()->GetRenderMode()==RenderMode::TUBE;
   return render_options.get()->GetRenderMode()==RenderMode::HSC;
 }
 
diff --git a/modules/gfx/src/render_options/cartoon_render_options.hh b/modules/gfx/src/render_options/cartoon_render_options.hh
index cddecbdab..55653bb53 100644
--- a/modules/gfx/src/render_options/cartoon_render_options.hh
+++ b/modules/gfx/src/render_options/cartoon_render_options.hh
@@ -33,7 +33,7 @@ namespace ost { namespace gfx {
 
 class DLLEXPORT_OST_GFX CartoonRenderOptions: public ost::gfx::RenderOptions {
 public:
-  CartoonRenderOptions();
+  CartoonRenderOptions(bool force_tube=false);
 
   virtual RenderMode::Type GetRenderMode();
 
@@ -76,6 +76,7 @@ public:
   virtual ~CartoonRenderOptions();
 
 private:
+  bool force_tube_;
   uint spline_detail_;
   uint poly_mode_;
   uint arc_detail_;
-- 
GitLab