00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef OST_GFX_CARTOON_RENDER_OPTIONS_HH
00024 #define OST_GFX_CARTOON_RENDER_OPTIONS_HH
00025
00026 #include <boost/shared_ptr.hpp>
00027
00028 #include <ost/gfx/module_config.hh>
00029
00030 #include <ost/gfx/render_options/render_options.hh>
00031
00032 namespace ost { namespace gfx {
00033
00034 class DLLEXPORT_OST_GFX CartoonRenderOptions: public ost::gfx::RenderOptions {
00035 public:
00036 CartoonRenderOptions(bool force_tube=false);
00037
00038 virtual RenderMode::Type GetRenderMode();
00039
00040 virtual bool CanApplyRenderOptions(RenderOptionsPtr render_options);
00041 virtual void ApplyRenderOptions(RenderOptionsPtr render_options);
00042
00043 virtual void SetSplineDetail(uint spline_detail);
00044 virtual uint GetSplineDetail() const;
00045
00046 virtual void SetPolyMode(uint poly_mode);
00047 virtual uint GetPolyMode() const;
00048
00049 virtual void SetArcDetail(uint arc_detail);
00050 virtual uint GetArcDetail() const;
00051
00052 virtual void SetNormalSmoothFactor(float smooth_factor);
00053 virtual float GetNormalSmoothFactor() const;
00054
00055 virtual void SetTubeRadius(float tube_radius);
00056 virtual float GetTubeRadius() const;
00057 virtual void SetTubeRatio(float tube_ratio);
00058 virtual float GetTubeRatio() const;
00059 virtual unsigned int GetTubeProfileType() const;
00060 virtual void SetTubeProfileType(unsigned int);
00061
00062 virtual void SetHelixWidth(float helix_width);
00063 virtual float GetHelixWidth() const;
00064 virtual void SetHelixThickness(float helix_thickness);
00065 virtual float GetHelixThickness() const;
00066 virtual void SetHelixEcc(float helix_ecc);
00067 virtual float GetHelixEcc() const;
00068 virtual unsigned int GetHelixProfileType() const;
00069 virtual void SetHelixProfileType(unsigned int);
00070
00071 virtual void SetStrandWidth(float strand_width);
00072 virtual float GetStrandWidth() const;
00073 virtual void SetStrandThickness(float strand_thickness);
00074 virtual float GetStrandThickness() const;
00075 virtual void SetStrandEcc(float strand_ecc);
00076 virtual float GetStrandEcc() const;
00077 virtual unsigned int GetStrandProfileType() const;
00078 virtual void SetStrandProfileType(unsigned int);
00079
00080 float GetMaxRad() const;
00081
00082 virtual ~CartoonRenderOptions();
00083
00084 private:
00085 bool force_tube_;
00086 uint spline_detail_;
00087 uint poly_mode_;
00088 uint arc_detail_;
00089
00090 float smooth_factor_;
00091
00092 float tube_radius_;
00093 float tube_ratio_;
00094 unsigned int tube_profile_;
00095 float helix_width_;
00096 float helix_thickness_;
00097 float helix_ecc_;
00098 unsigned int helix_profile_;
00099 float strand_width_;
00100 float strand_thickness_;
00101 float strand_ecc_;
00102 unsigned int strand_profile_;
00103 };
00104
00105 typedef boost::shared_ptr<CartoonRenderOptions> CartoonRenderOptionsPtr;
00106
00107 }}
00108
00109 #endif