NorMIT-nav  2023.01.05-dev+develop.0da12
An IGT application
cxSliceAutoViewportCalculator.h
Go to the documentation of this file.
1 #ifndef CXSLICEAUTOVIEWPORTCALCULATOR_H
2 #define CXSLICEAUTOVIEWPORTCALCULATOR_H
3 
4 #include "cxResourceVisualizationExport.h"
5 #include "cxVector3D.h"
6 #include "cxBoundingBox3D.h"
7 #include "cxTransform3D.h"
8 #include "cxDefinitions.h"
9 
10 namespace cx
11 {
12 
17 class cxResourceVisualization_EXPORT SliceAutoViewportCalculator
18 {
19 public:
20 
21  struct ReturnType
22  {
23  ReturnType(Vector3D center_shift_s_=Vector3D::Zero(), double zoom_=1) :
24  center_shift_s(center_shift_s_),
25  zoom(zoom_)
26  {
27  }
28 
29  double zoom;
31  };
32  // find a (center,zoom) change according the the input config.
34 
35  // MUST set all these parameters before call to calculate() is valid.
36  FOLLOW_TYPE mFollowType;
42 
43 private:
44  Vector3D findCenterShift_s();
45  ReturnType autoZoom();
46  Vector3D findVirtualTooltip_s();
47  DoubleBoundingBox3D findStaticBox();
48  Vector3D findShiftFromBoxToTool_s(DoubleBoundingBox3D BB_s, Vector3D pt_s);
49  Vector3D findShiftFromBoxToROI(DoubleBoundingBox3D bb, DoubleBoundingBox3D roi);
50  double findZoomRequiredToIncludeRoi(DoubleBoundingBox3D base, DoubleBoundingBox3D roi);
51  bool isAutoZoom() const;
52  ReturnType calculateZoomCenter_SmallestFitROI();
53  ReturnType calculateCenter_FitToolIntoViewport();
54  ReturnType calculateZoom_FitROIKeepCenter();
55 };
56 
57 } // namespace cx
58 
59 #endif // CXSLICEAUTOVIEWPORTCALCULATOR_H
cx::DoubleBoundingBox3D
Representation of a floating-point bounding box in 3D. The data are stored as {xmin,...
Definition: cxBoundingBox3D.h:63
cx::SliceAutoViewportCalculator::mFollowTooltip
bool mFollowTooltip
Definition: cxSliceAutoViewportCalculator.h:39
cx
Namespace for all CustusX production code.
Definition: cx_dev_group_definitions.h:13
cxDefinitions.h
cx::SliceAutoViewportCalculator::ReturnType::ReturnType
ReturnType(Vector3D center_shift_s_=Vector3D::Zero(), double zoom_=1)
Definition: cxSliceAutoViewportCalculator.h:23
cxBoundingBox3D.h
cxVector3D.h
cx::SliceAutoViewportCalculator::mFollowTooltipBoundary
double mFollowTooltipBoundary
Definition: cxSliceAutoViewportCalculator.h:38
cx::SliceAutoViewportCalculator::ReturnType::zoom
double zoom
Definition: cxSliceAutoViewportCalculator.h:29
cx::SliceAutoViewportCalculator::mTooltip_s
Vector3D mTooltip_s
Definition: cxSliceAutoViewportCalculator.h:37
cx::SliceAutoViewportCalculator::mBB_s
DoubleBoundingBox3D mBB_s
Definition: cxSliceAutoViewportCalculator.h:40
cx::SliceAutoViewportCalculator::ReturnType
Definition: cxSliceAutoViewportCalculator.h:21
cx::SliceAutoViewportCalculator
Definition: cxSliceAutoViewportCalculator.h:17
cx::SliceAutoViewportCalculator::mROI_s
DoubleBoundingBox3D mROI_s
Definition: cxSliceAutoViewportCalculator.h:41
cxTransform3D.h
cx::SliceAutoViewportCalculator::mFollowType
FOLLOW_TYPE mFollowType
Definition: cxSliceAutoViewportCalculator.h:36
cx::SliceAutoViewportCalculator::ReturnType::center_shift_s
Vector3D center_shift_s
Definition: cxSliceAutoViewportCalculator.h:30
cx::Vector3D
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
Definition: cxVector3D.h:42