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 "render_options.hh"
00031
00032 namespace ost { namespace gfx {
00033
00034 class DLLEXPORT_OST_GFX CartoonRenderOptions: public RenderOptions {
00035 public:
00036 CartoonRenderOptions(bool force_tube=false);
00037
00038
00039 virtual RenderMode::Type GetRenderMode();
00040 virtual bool CanApplyRenderOptions(RenderOptionsPtr render_options);
00041 virtual void ApplyRenderOptions(RenderOptionsPtr render_options);
00042
00044 void SetPolyMode(uint poly_mode);
00045 uint GetPolyMode() const;
00046
00048 void SetSplineDetail(uint spline_detail);
00049 uint GetSplineDetail() const;
00050
00052 void SetArcDetail(uint arc_detail);
00053 uint GetArcDetail() const;
00054
00056 void SetNormalSmoothFactor(float smooth_factor);
00057 float GetNormalSmoothFactor() const;
00058
00059
00060 void SetTubeRadius(float tube_radius);
00061 float GetTubeRadius() const;
00062 void SetTubeRatio(float tube_ratio);
00063 float GetTubeRatio() const;
00064 unsigned int GetTubeProfileType() const;
00065 void SetTubeProfileType(unsigned int);
00066
00067
00068 void SetHelixWidth(float helix_width);
00069 float GetHelixWidth() const;
00070 void SetHelixThickness(float helix_thickness);
00071 float GetHelixThickness() const;
00073 void SetHelixEcc(float helix_ecc);
00074 float GetHelixEcc() const;
00076 void SetHelixProfileType(unsigned int);
00077 unsigned int GetHelixProfileType() const;
00079 unsigned int GetHelixMode() const;
00080 void SetHelixMode(unsigned int);
00081
00082
00083 void SetStrandWidth(float strand_width);
00084 float GetStrandWidth() const;
00085 void SetStrandThickness(float strand_thickness);
00086 float GetStrandThickness() const;
00088 void SetStrandEcc(float strand_ecc);
00089 float GetStrandEcc() const;
00091 void SetStrandProfileType(unsigned int);
00092 unsigned int GetStrandProfileType() const;
00094 void SetStrandMode(unsigned int);
00095 unsigned int GetStrandMode() const;
00096
00097
00098
00100 void SetColorBlendMode(unsigned int);
00101 unsigned int GetColorBlendMode() const;
00102
00104 void SetTwistHack(bool);
00105 bool GetTwistHack() const {return twist_hack_;}
00106
00107
00108 float GetMaxRad() const;
00109
00110 private:
00111 bool force_tube_;
00112 uint spline_detail_;
00113 uint poly_mode_;
00114 uint arc_detail_;
00115
00116 float smooth_factor_;
00117
00118 float tube_radius_;
00119 float tube_ratio_;
00120 unsigned int tube_profile_;
00121 float helix_width_;
00122 float helix_thickness_;
00123 float helix_ecc_;
00124 unsigned int helix_profile_;
00125 unsigned int helix_mode_;
00126 float strand_width_;
00127 float strand_thickness_;
00128 float strand_ecc_;
00129 unsigned int strand_profile_;
00130 unsigned int strand_mode_;
00131
00132 unsigned int color_blend_mode_;
00133
00134 bool twist_hack_;
00135 };
00136
00137 typedef boost::shared_ptr<CartoonRenderOptions> CartoonRenderOptionsPtr;
00138
00139 }}
00140
00141 #endif