00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef SO_DEPTH_OFFSET_ELEMENT_H
00025 #define SO_DEPTH_OFFSET_ELEMENT_H
00026
00027 #include <Inventor/elements/SoFloatElement.h>
00028
00042 SoEXTENDER_Documented class SoDepthOffsetElement : public SoFloatElement
00043 {
00044
00045 SO_ELEMENT_HEADER(SoDepthOffsetElement);
00046
00047 public:
00048
00050 static void set(SoState *state, float offset);
00051
00053 static void set(SoState *state, SoNode *, float offset);
00054
00056 static void set(SoState *state, float, float, float);
00057
00059 static float get(SoState *state);
00060
00062 static void setMaxOffset(SoState *state, float offset);
00063
00065 static float getMaxOffset(SoState *state);
00066
00068 virtual void push( SoState* );
00069
00071 virtual void pop(SoState*, const SoElement*);
00072
00073 private:
00074
00076 virtual void init(SoState *state);
00077
00078 private:
00079
00080 static void initClass();
00081 static void exitClass();
00082
00085 static void setNormalizationFactor(SoState *state, float value);
00086
00088 static float getNormalizationFactor(SoState *state);
00089
00092 static void setNDCadjustment(SoState *state, float value);
00093
00095 static float getNDCadjustment(SoState *state);
00096
00098 static void evalGlobalFactors(float offset, float& NDCadjustment, float &normFactor);
00099
00100
00101
00102
00103
00104
00105 enum DepthOffsetVersion
00106 {
00107 NONE = -1,
00108 V1 = 1,
00109 V2
00110 };
00111
00116 static DepthOffsetVersion getDepthOffsetVersion();
00117
00121 static void copyDepthOffset( SoState* dstState, SoState* srcState );
00122
00123 private:
00124 virtual ~SoDepthOffsetElement();
00125
00126 float maxOffset;
00127 float localdata;
00128 float normalizationFactor;
00129 float NDCadjustment;
00130
00131 private :
00132
00133 static DepthOffsetVersion s_depthOffsetVersion;
00134 };
00135
00136 #endif // SO_DEPTH_OFFSET_ELEMENT_H
00137
00138
00139