Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef mitkDisplayGeometry_h
00020 #define mitkDisplayGeometry_h
00021
00022 #include "mitkGeometry2D.h"
00023
00024 namespace mitk
00025 {
00026
00067 class MITK_CORE_EXPORT DisplayGeometry : public Geometry2D
00068 {
00069
00070 public:
00071
00072 mitkClassMacro(DisplayGeometry,Geometry2D);
00073
00075 itkNewMacro(Self);
00076
00078 virtual AffineGeometryFrame3D::Pointer Clone() const;
00079
00080 virtual bool IsValid() const;
00081
00083 virtual unsigned long GetMTime() const;
00084
00085 virtual const TimeBounds& GetTimeBounds() const;
00086
00087
00088
00089
00090
00091 virtual void SetWorldGeometry(const Geometry2D* aWorldGeometry);
00092 itkGetConstObjectMacro(WorldGeometry, Geometry2D);
00093
00095 virtual bool SetOriginInMM(const Vector2D& origin_mm);
00096
00097 virtual Vector2D GetOriginInMM() const;
00098 virtual Vector2D GetOriginInDisplayUnits() const;
00099
00112 virtual void SetSizeInDisplayUnits(unsigned int width, unsigned int height, bool keepDisplayedRegion=true);
00113 virtual Vector2D GetSizeInDisplayUnits() const;
00114 virtual Vector2D GetSizeInMM() const;
00115 unsigned int GetDisplayWidth() const;
00116 unsigned int GetDisplayHeight() const;
00117
00118
00119
00120
00121
00122
00123 virtual void SetConstrainZoomingAndPanning(bool constrain);
00124 virtual bool GetConstrainZommingAndPanning() const;
00125
00127 itkGetMacro(MaxWorldViewPercentage, float);
00128 itkSetMacro(MaxWorldViewPercentage, float);
00129
00131 itkGetMacro(MinWorldViewPercentage, float);
00132 itkSetMacro(MinWorldViewPercentage, float);
00133
00134 virtual bool SetScaleFactor(ScalarType mmPerDisplayUnit);
00135 ScalarType GetScaleFactorMMPerDisplayUnit() const;
00136
00141 virtual bool Zoom(ScalarType factor, const Point2D& centerInDisplayUnits);
00142
00150 virtual bool ZoomWithFixedWorldCoordinates(ScalarType factor, const Point2D& focusDisplayUnits, const Point2D& focusUnitsInMM );
00151
00152
00153 virtual bool MoveBy(const Vector2D& shiftInDisplayUnits);
00154
00155
00156 virtual void Fit();
00157
00158
00159
00160
00161
00162
00163 virtual void DisplayToWorld(const Point2D &pt_display, Point2D &pt_mm) const;
00164 virtual void WorldToDisplay(const Point2D &pt_mm, Point2D &pt_display) const;
00165
00166 virtual void DisplayToWorld(const Vector2D &vec_display, Vector2D &vec_mm) const;
00167 virtual void WorldToDisplay(const Vector2D &vec_mm, Vector2D &vec_display) const;
00168
00169 virtual void ULDisplayToMM(const Point2D &pt_ULdisplay, Point2D &pt_mm) const;
00170 virtual void MMToULDisplay(const Point2D &pt_mm, Point2D &pt_ULdisplay) const;
00171
00172 virtual void ULDisplayToMM(const Vector2D &vec_ULdisplay, Vector2D &vec_mm) const;
00173 virtual void MMToULDisplay(const Vector2D &vec_mm, Vector2D &vec_ULdisplay) const;
00174
00175 virtual void ULDisplayToDisplay(const Point2D &pt_ULdisplay, Point2D &pt_display) const;
00176 virtual void DisplayToULDisplay(const Point2D &pt_display, Point2D &pt_ULdisplay) const;
00177
00178 virtual void ULDisplayToDisplay(const Vector2D &vec_ULdisplay, Vector2D &vec_display) const;
00179 virtual void DisplayToULDisplay(const Vector2D &vec_display, Vector2D &vec_ULdisplay) const;
00180
00181 virtual bool Project(const Point3D &pt3d_mm, Point3D &projectedPt3d_mm) const;
00182 virtual bool Project(const Point3D & atPt3d_mm, const Vector3D &vec3d_mm, Vector3D &projectedVec3d_mm) const;
00183
00184 virtual bool Map(const Point3D &pt3d_mm, Point2D &pt2d_mm) const;
00185 virtual void Map(const Point2D &pt2d_mm, Point3D &pt3d_mm) const;
00186 virtual bool Map(const Point3D & atPt3d_mm, const Vector3D &vec3d_mm, Vector2D &vec2d_mm) const;
00187 virtual void Map(const Point2D & atPt2d_mm, const Vector2D &vec2d_mm, Vector3D &vec3d_mm) const;
00188
00189 protected:
00190
00191 DisplayGeometry();
00192 virtual ~DisplayGeometry();
00193
00209 virtual bool RefitVisibleRect();
00210
00211 virtual void PrintSelf(std::ostream& os, itk::Indent indent) const;
00212
00213 Vector2D m_OriginInMM;
00214 Vector2D m_OriginInDisplayUnits;
00215 ScalarType m_ScaleFactorMMPerDisplayUnit;
00216 Vector2D m_SizeInMM;
00217 Vector2D m_SizeInDisplayUnits;
00218 Geometry2D::ConstPointer m_WorldGeometry;
00219
00220 bool m_ConstrainZoomingAndPanning;
00221 float m_MaxWorldViewPercentage;
00222 float m_MinWorldViewPercentage;
00223 };
00224
00225 }
00226
00227 #endif // include guard
00228