![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2007 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtChannelConfiguration.h,v $ $Revision: 1.32 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 #include <vrvUtil/vrvUtil.h> 00015 #include <vrvUtil/DtConfiguration.h> 00016 #include <vrvUtil/DtKeywordMixin.h> 00017 #include <boost/serialization/set.hpp> 00018 00019 namespace makVrv 00020 { 00027 class DT_DLL_VRVUTIL DtChannelConfiguration 00028 : public DtConfiguration 00029 , public DtKeywordMixin 00030 { 00031 00032 public: 00033 00034 static const char* DefaultChannelString; 00035 00036 enum ProjectionUnits 00037 { 00038 NoUnits, 00039 FieldOfViewAngles, 00040 DatabaseUnits 00041 }; 00042 00043 enum ProjectionResizePolicy 00044 { 00045 FIXED = 0, 00046 HORIZONTAL, 00047 VERTICAL, 00048 NONE 00049 }; 00050 00053 DtChannelConfiguration(const std::string& name = DefaultChannelString); 00054 00056 DtChannelConfiguration(const DtChannelConfiguration&); 00057 00059 DtChannelConfiguration& operator=(const DtChannelConfiguration&); 00060 00062 virtual ~DtChannelConfiguration(); 00063 00065 virtual void setParentChannel(const std::string& displayName, 00066 const std::string& windowName, const std::string& channelName); 00067 00069 virtual void getParentChannel(std::string& displayEngineNameOut, 00070 std::string& windowNameOut, std::string& channelNameOut) const; 00071 00073 virtual void setProjection(ProjectionUnits units, double left, double right, double bottom, double top, 00074 double zNear, double zFar); 00075 00077 virtual void getProjection(ProjectionUnits& units, double &left, double &right, double &bottom, double &top, 00078 double &zNear, double &zFar) const; 00079 00081 bool dynamicNearFar() const; 00082 00084 void setDynamicNearFar(bool enabled); 00085 00087 double nearFarRatio() const; 00088 00090 void setNearFarRatio(double ratio); 00091 00093 virtual ProjectionUnits projectionUnits() const; 00094 00096 virtual void setProjectionUnits(ProjectionUnits units); 00097 00100 virtual void getClearColor(float& r,float& g,float& b,float& a) const; 00101 00104 virtual void setClearColor(float r,float g,float b,float a); 00105 00107 virtual void setCameraPositionOffset(double x, double y, double z); 00108 00110 virtual void getCameraPositionOffset(double& x, double& y, double& z) const; 00111 00113 virtual void setCameraOrientationOffset(double psi, double theta, double phi); 00114 00116 virtual void getCameraOrientationOffset(double& psi, double& theta, double& phi) const; 00117 00119 virtual void getViewport(double& left,double& right,double& bottom,double& top) const; 00120 00122 virtual void setViewport(double left,double right,double bottom, double top); 00123 00125 virtual const std::string& observerName() const; 00126 00128 virtual void setObserverName(const std::string& observerName); 00129 00131 virtual ProjectionResizePolicy projectionResizePolicy() const; 00132 00134 virtual void setProjectionResizePolicy(ProjectionResizePolicy policy); 00135 00137 virtual double cameraMagnification() const; 00138 00140 virtual void setCameraMagnification(double mag); 00141 00147 DT_DECLARE_ALL_serialize_FUNCTIONS 00148 protected: 00149 00150 template<class Archive> 00151 void _serialize(Archive & ar, const unsigned int version) 00152 { 00154 ar & DT_SERIALIZE_BASE(DtConfiguration); 00155 00156 ar & DT_SERIALIZE_MEMBER(myClearColorR); 00157 ar & DT_SERIALIZE_MEMBER(myClearColorG); 00158 ar & DT_SERIALIZE_MEMBER(myClearColorB); 00159 ar & DT_SERIALIZE_MEMBER(myClearColorA); 00160 ar & DT_SERIALIZE_MEMBER(myViewportLeft); 00161 ar & DT_SERIALIZE_MEMBER(myViewportRight); 00162 ar & DT_SERIALIZE_MEMBER(myViewportBottom); 00163 ar & DT_SERIALIZE_MEMBER(myViewportTop); 00164 ar & DT_SERIALIZE_MEMBER(myParentDisplayEngineName); 00165 ar & DT_SERIALIZE_MEMBER(myParentWindowName); 00166 ar & DT_SERIALIZE_MEMBER(myParentChannelName); 00167 ar & DT_SERIALIZE_MEMBER(myCameraPositionOffsetX); 00168 ar & DT_SERIALIZE_MEMBER(myCameraPositionOffsetY); 00169 ar & DT_SERIALIZE_MEMBER(myCameraPositionOffsetZ); 00170 ar & DT_SERIALIZE_MEMBER(myCameraOrientationOffsetPsi); 00171 ar & DT_SERIALIZE_MEMBER(myCameraOrientationOffsetTheta); 00172 ar & DT_SERIALIZE_MEMBER(myCameraOrientationOffsetPhi); 00173 ar & DT_SERIALIZE_MEMBER(myFrustumLeft); 00174 ar & DT_SERIALIZE_MEMBER(myFrustumRight); 00175 ar & DT_SERIALIZE_MEMBER(myFrustumTop); 00176 ar & DT_SERIALIZE_MEMBER(myFrustumBottom); 00177 ar & DT_SERIALIZE_MEMBER(myNearZ); 00178 ar & DT_SERIALIZE_MEMBER(myFarZ); 00179 ar & DT_SERIALIZE_MEMBER(myProjectionUnits); 00180 ar & DT_SERIALIZE_MEMBER(myObserverName); 00181 ar & DT_SERIALIZE_MEMBER(myProjectionResizePolicy); 00182 00183 if(version > 1) 00184 { 00185 ar & DT_SERIALIZE_MEMBER(myKeywords); 00186 } 00187 00188 if (version > 2) 00189 { 00190 ar & DT_SERIALIZE_MEMBER(myDynamicNearFar); 00191 ar & DT_SERIALIZE_MEMBER(myNearFarRatio); 00192 } 00193 00194 if (version > 3) 00195 { 00196 ar & DT_SERIALIZE_MEMBER(myCameraMagnification); 00197 } 00198 } 00199 00200 std::string myParentDisplayEngineName; 00201 std::string myParentWindowName; 00202 std::string myParentChannelName; 00203 00204 //Default Clear color is 0,0,0,0 00205 float myClearColorR; 00206 float myClearColorG; 00207 float myClearColorB; 00208 float myClearColorA;; 00209 00210 double myViewportLeft; 00211 double myViewportRight; 00212 double myViewportBottom; 00213 double myViewportTop; 00214 00215 double myCameraPositionOffsetX; 00216 double myCameraPositionOffsetY; 00217 double myCameraPositionOffsetZ; 00218 double myCameraOrientationOffsetPsi; 00219 double myCameraOrientationOffsetTheta; 00220 double myCameraOrientationOffsetPhi; 00221 00223 double myFrustumLeft; 00224 double myFrustumRight; 00225 double myFrustumTop; 00226 double myFrustumBottom; 00227 double myNearZ; 00228 double myFarZ; 00229 00230 bool myDynamicNearFar; //Version 3 00231 double myNearFarRatio; //Version 3 00232 00233 double myCameraMagnification; // Version 4 00234 00235 ProjectionUnits myProjectionUnits; 00236 std::string myObserverName; 00237 ProjectionResizePolicy myProjectionResizePolicy; 00238 00239 }; 00240 } 00241 00242 BOOST_CLASS_VERSION(makVrv::DtChannelConfiguration,4)