![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2000 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: viewportExtents.h,v $ $Revision: 1.25 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef VIEWPORTEXTENTS_H 00013 #define VIEWPORTEXTENTS_H 00014 00015 #include "drawerNative/drawerNativeDefines.h" 00016 #include "geometry/tdbextent.h" 00017 #include "drawerNative/displaySize.h" 00018 #include "drawerNative/displayPoint.h" 00019 #include <QtCore/QPoint> 00020 00021 class DT_DLL_drawerNative DtViewportExtents 00022 { 00023 public: 00024 00025 DtViewportExtents(); 00026 00027 DtViewportExtents(const DtViewportExtents& v); 00028 00029 virtual ~DtViewportExtents(); 00030 00031 DtViewportExtents& operator=(const DtViewportExtents& rhs); 00032 00034 00035 virtual void resetToGlobalView(); 00036 virtual void zoomIn(); 00037 virtual void zoomOut(); 00038 virtual void panNorthwest(); 00039 virtual void panNorth(); 00040 virtual void panNortheast(); 00041 virtual void panEast(); 00042 virtual void panSoutheast(); 00043 virtual void panSouth(); 00044 virtual void panSouthwest(); 00045 virtual void panWest(); 00046 00048 virtual void zoom(const DtPoint& center, const double& mag); 00049 virtual void resize(const DtExtent& e); 00050 00052 virtual void recenter(const DtPoint& center, bool clipToGlobal = true); 00053 00055 virtual const DtExtent& globalExtent() const; 00056 virtual void setGlobalExtent(const DtExtent& e); 00057 virtual const double& globalAspectRatio() const; 00058 00059 virtual const DtExtent& localExtent() const; 00060 virtual void setLocalExtent(const DtExtent& e); 00061 virtual const double& localAspectRatio() const; 00062 00063 virtual const DtDisplaySize windowSize() const; 00064 virtual void setWindowSize(const DtDisplaySize& s); 00065 virtual const double& windowAspectRatio() const; 00066 00067 //After the initial init, use this function to resize the 00068 //window without zooming 00069 virtual void changeWindowSize(const DtDisplaySize& s, bool resetExtents = true); 00070 00075 virtual void windowFromDatabase( 00076 DtDisplayPoint& xp, 00077 const DtPoint& gd, 00078 bool smartRound = false) const; 00079 00080 virtual void windowFromDatabase( 00081 QPointF& xp, 00082 const DtPoint& gd) const; 00083 00085 virtual void databaseFromWindow( 00086 DtPoint& gd, 00087 const DtDisplayPoint& xp) const; 00088 00090 virtual void databaseFromWindow( 00091 DtPoint& gd, 00092 const QPointF& xp) const; 00093 00096 virtual void databaseFromWindow( 00097 DtPoint& gd, 00098 const double& x, 00099 const double& y) const; 00100 00102 00103 virtual const double& uMin() const; 00104 virtual void setUMin(const double& min); 00105 00106 virtual const double& uMax() const; 00107 virtual void setUMax(const double& max); 00108 00109 virtual const double& vMin() const; 00110 virtual void setVMin(const double& min); 00111 00112 virtual const double& vMax() const; 00113 virtual void setVMax(const double& max); 00114 00116 00117 virtual const double& panStep() const; 00118 virtual void setPanStep(const double& step); 00119 00120 virtual const double& minPanStep() const; 00121 virtual void setMinPanStep(const double& step); 00122 00123 virtual const double& maxPanStep() const; 00124 virtual void setMaxPanStep(const double& step); 00125 00126 virtual const double& zoomStep() const; 00127 virtual void setZoomStep(const double& step); 00128 00129 virtual const double& minZoomStep() const; 00130 virtual void setMinZoomStep(const double& step); 00131 00132 virtual const double& maxZoomStep() const; 00133 virtual void setMaxZoomStep(const double& step); 00134 00137 virtual void clearExtents(); 00138 00140 virtual DtPoint center() const; 00141 00142 virtual void setKeepAspectRatios(bool b); 00143 00147 virtual void setMinimumViewPercent(double g); 00148 virtual double minimumViewWidth() const; 00149 virtual double minimumViewHeight() const; 00150 00153 virtual void zoomLevel(double& magX, double& magY) const; 00154 00158 virtual void zoomFromGlobal(const DtPoint& center, 00159 const double& magX, const double& magY); 00160 00162 virtual void resizeToFitAspectRatio(double& width, double& height); 00163 virtual void resizeToFitAspectRatio(DtExtent& extent); 00164 00167 virtual void setFromCorners(const DtPoint& nw, const DtPoint& se); 00168 00170 virtual bool isValidWindowDisplayPointFromDatabase(DtPoint gd) const; 00171 00172 protected: 00173 00174 static const double theDefaultPanStep; 00175 00176 static const double theDefaultMinPanStep; 00177 00178 static const double theDefaultMaxPanStep; 00179 00180 static const double theDefaultZoomStep; 00181 00182 static const double theDefaultMinZoomStep; 00183 00184 static const double theDefaultMaxZoomStep; 00185 00187 virtual void recomputeTransforms(); 00188 00189 virtual const double& xMin() const; 00190 virtual void setXMin(const double& min); 00191 00192 virtual const double& xMax() const; 00193 virtual void setXMax(const double& max); 00194 00195 virtual const double& yMin() const; 00196 virtual void setYMin(const double& min); 00197 00198 virtual const double& yMax() const; 00199 virtual void setYMax(const double& max); 00200 00201 virtual const double& a() const; 00202 virtual void setA(const double& a); 00203 00204 virtual const double& b() const; 00205 virtual void setB(const double& b); 00206 00207 virtual const double& c() const; 00208 virtual void setC(const double& c); 00209 00210 virtual const double& d() const; 00211 virtual void setD(const double& d); 00212 00213 virtual int roundIt(double val) const; 00214 00215 public: 00218 #ifdef WIN32 00219 static const int MAX_WINDOW_X; 00220 static const int MIN_WINDOW_X; 00221 static const int MAX_WINDOW_Y; 00222 static const int MIN_WINDOW_Y; 00223 #else 00224 static const int MAX_WINDOW_X; 00225 static const int MIN_WINDOW_X; 00226 static const int MAX_WINDOW_Y; 00227 static const int MIN_WINDOW_Y; 00228 #endif 00229 00230 static const int maxWindowX(); 00231 static const int maxWindowY(); 00232 static const int minWindowX(); 00233 static const int minWindowY(); 00234 00235 static double theDefaultAltitudeRange; 00236 00237 protected: 00238 00239 double myPanStep; 00240 double myMinPanStep; 00241 double myMaxPanStep; 00242 00243 double myZoomStep; 00244 double myMinZoomStep; 00245 double myMaxZoomStep; 00246 00248 DtDisplaySize myWindowSize; 00249 double myWindowAspectRatio; 00250 00252 DtExtent myGlobalExtent; 00253 double myGlobalAspectRatio; 00254 DtExtent myLocalExtent; 00255 double myLocalAspectRatio; 00256 00257 DtPoint myCenter; 00258 00260 double myUMin; 00261 double myUMax; 00262 double myVMin; 00263 double myVMax; 00264 00266 double myXMin; 00267 double myXMax; 00268 double myYMin; 00269 double myYMax; 00270 double myA; 00271 double myB; 00272 double myC; 00273 double myD; 00274 00275 bool myKeepAspectRatios; 00276 00277 static double gMinimumPercent; 00278 }; 00279 00280 #endif //VIEWPORTEXTENTS_H