diff --git a/modules/gfx/src/impl/cartoon_renderer.cc b/modules/gfx/src/impl/cartoon_renderer.cc index 1403c3891ef7c7501fb109789ae9e450c879892e..e2f6071f5baa78ee4337b09eeb5ec4e045c03b0a 100644 --- a/modules/gfx/src/impl/cartoon_renderer.cc +++ b/modules/gfx/src/impl/cartoon_renderer.cc @@ -51,6 +51,27 @@ void CartoonRenderer::SetForceTube(bool force_tube) force_tube_ = force_tube; } +geom::AlignedCuboid CartoonRenderer::GetBoundingBox() const +{ + geom::Vec3 mmin(std::numeric_limits<float>::max(), + std::numeric_limits<float>::max(), + std::numeric_limits<float>::max()); + geom::Vec3 mmax(-std::numeric_limits<float>::max(), + -std::numeric_limits<float>::max(), + -std::numeric_limits<float>::max()); + + assert(!(state_ & DIRTY_VIEW)); + for(unsigned int llc=0;llc<spline_list_list_.size();++llc) { + SplineEntryList slist = spline_list_list_[llc]; + for(unsigned int lc=0;lc<slist.size();++lc) { + mmin=geom::Min(mmin, slist[lc].position); + mmax=geom::Max(mmax, slist[lc].position); + } + } + + return geom::AlignedCuboid(mmin, mmax); +} + void CartoonRenderer::PrepareRendering() { TraceRendererBase::PrepareRendering(); diff --git a/modules/gfx/src/impl/cartoon_renderer.hh b/modules/gfx/src/impl/cartoon_renderer.hh index 59be06b598c0f89723baf5fde722200f56c344f8..1d60eec76b775923e6b51ddc98ca8f815add45e0 100644 --- a/modules/gfx/src/impl/cartoon_renderer.hh +++ b/modules/gfx/src/impl/cartoon_renderer.hh @@ -41,6 +41,8 @@ class DLLEXPORT_OST_GFX CartoonRenderer: public TraceRendererBase { public: CartoonRenderer(BackboneTrace* trace, bool force_tube=false); + virtual geom::AlignedCuboid GetBoundingBox() const; + virtual void PrepareRendering(); virtual bool CanSetOptions(RenderOptionsPtr& render_options);