00001
00043 #ifndef INC_MI32_STEREODEVICE_H
00044 #define INC_MI32_STEREODEVICE_H
00045
00046 #ifndef INC_MI32_STDDEFNS_H
00047 #include <mi32/stddefns.h>
00048 #endif
00049
00050
00051 #ifndef GENERATING_DOXYGEN_OUTPUT
00052 class STIPPLEMASK;
00053 #endif
00054
00055
00057 class STEREODEVICE {
00058 public:
00059
00061 enum METHOD {
00062 METHOD_Unspecified = 0,
00063 METHOD_SeparateFrames = 100,
00064 METHOD_InterlaceLines = 101,
00065 METHOD_InterlaceColumns = 102,
00066 METHOD_Anaglyph = 103,
00067 METHOD_Sharp = 104,
00068 METHOD_Split = 105,
00069 METHOD_OpenGL = 106,
00070 };
00071
00073 enum ANAGLYPHMODE {
00074 ANAGLYPHMODE_RedGreen = 0,
00075 ANAGLYPHMODE_RedBlue = 1,
00076 ANAGLYPHMODE_RedCyan = 2,
00077 ANAGLYPHMODE_GreenRed = 3,
00078 ANAGLYPHMODE_GreenBlue = 4,
00079 ANAGLYPHMODE_GreenMagenta = 5,
00080 ANAGLYPHMODE_BlueRed = 6,
00081 ANAGLYPHMODE_BlueGreen = 7,
00082 ANAGLYPHMODE_BlueYellow = 8,
00083 ANAGLYPHMODE_CyanRed = 9,
00084 ANAGLYPHMODE_MagentaGreen = 10,
00085 ANAGLYPHMODE_YellowBlue = 11,
00086 ANAGLYPHMODE_RedBlueMI = 12
00087 };
00088
00090 enum INTERLACEMODE {
00091 INTERLACEMODE_LeftEven = 0,
00092 INTERLACEMODE_RightEven = 1
00093 };
00094
00096 enum SPLITMODE {
00097 SPLITMODE_LeftRight = 0,
00098 SPLITMODE_RightLeft = 1,
00099 SPLITMODE_LeftAboveRight = 2,
00100 SPLITMODE_RightAboveLeft = 3
00101 };
00102
00104 STEREODEVICE ();
00105
00106 #ifdef USE_MGUI
00109 int DlgEditValues (
00110 MDLGPARENT dlgparent,
00111 const char *inigroup,
00112 bool AllowSeparateFrames = false
00113 );
00114 #endif
00115
00116 ANAGLYPHMODE GetAnaglyphMode () const
00117 { return (m_AnaglyphMode); }
00118
00119 INTERLACEMODE GetInterlaceMode () const
00120 { return (m_InterlaceMode); }
00121
00122 bool GetInterlaceStartRight (
00123 INT32 OriginX = 0,
00124 INT32 OriginY = 0
00125 ) const;
00126
00127 void GetMaskLeft (
00128 UINT8& MaskRed,
00129 UINT8& MaskGreen,
00130 UINT8& MaskBlue
00131 ) const;
00132
00133 void GetMaskRight (
00134 UINT8& MaskRed,
00135 UINT8& MaskGreen,
00136 UINT8& MaskBlue
00137 ) const;
00138
00139 METHOD GetMethod () const
00140 { return (m_Method); }
00141
00142 double GetMonitorSeparation () const
00143 { return (m_MonitorSeparation); }
00144
00145 double GetOpticalSeparation () const
00146 { return (m_OpticalSeparation); }
00147
00148 SPLITMODE GetSplitMode () const
00149 { return (m_SplitMode); }
00150
00152 void GetStippleMasks (
00153 STIPPLEMASK& MaskLeft,
00154 STIPPLEMASK& MaskRight,
00155 INT32 OriginX = 0,
00156 INT32 OriginY = 0
00157 ) const;
00158
00159 bool IniRead (
00160 const char *inigroup,
00161 INIHANDLE inihnd = 0
00162 );
00163
00164 void IniWrite (
00165 const char *inigroup,
00166 INIHANDLE inihnd = 0
00167 ) const;
00168
00169 bool IsEqual (
00170 const STEREODEVICE rhs
00171 ) const;
00172
00174 bool IsValid () const;
00175
00176 void SetAnaglyphMode (
00177 ANAGLYPHMODE AnaglyphMode
00178 ) { m_AnaglyphMode = AnaglyphMode; }
00179
00180 void SetInterlaceMode (
00181 INTERLACEMODE InterlaceMode
00182 ) { m_InterlaceMode = InterlaceMode; }
00183
00184 void SetMethod (
00185 METHOD Method
00186 ) { m_Method = Method; }
00187
00188 void SetMonitorSeparation (
00189 double MonitorSeparation
00190 ) { m_MonitorSeparation = MonitorSeparation; }
00191
00192 void SetOpticalSeparation (
00193 double OpticalSeparation
00194 ) { m_OpticalSeparation = OpticalSeparation; }
00195
00196 void SetSplitMode (
00197 SPLITMODE SplitMode
00198 ) { m_SplitMode = SplitMode; }
00199
00200 private:
00201 #ifndef GENERATING_DOXYGEN_OUTPUT
00202
00203 double m_OpticalSeparation;
00204 double m_MonitorSeparation;
00205 METHOD m_Method;
00206 ANAGLYPHMODE m_AnaglyphMode;
00207 INTERLACEMODE m_InterlaceMode;
00208 SPLITMODE m_SplitMode;
00209
00210 #endif
00211 };
00212
00213 inline bool operator== (const STEREODEVICE& lhs, const STEREODEVICE& rhs)
00214 { return (lhs.IsEqual(rhs)); }
00215
00216 inline bool operator!= (const STEREODEVICE& lhs, const STEREODEVICE& rhs)
00217 { return (!lhs.IsEqual(rhs)); }
00218
00219
00220 #endif // INC_MI32_STEREODEVICE_H