Engauge Digitizer  2
Public Member Functions | List of all members
ZoomTransition Class Reference

Perform calculations to determine the next zoom setting given the current zoom setting, when zooming in or out. More...

#include <ZoomTransition.h>

Collaboration diagram for ZoomTransition:
Collaboration graph

Public Member Functions

 ZoomTransition ()
 Single constructor. More...
 
double mapToFactor (ZoomFactor zoomFactor) const
 Return the floating precision zoom factor given the enum value. More...
 
ZoomFactor zoomIn (ZoomFactor currentZoomFactor, double m11, double m22, bool actionZoomFillIsChecked) const
 Zoom in. More...
 
ZoomFactor zoomOut (ZoomFactor currentZoomFactor, double m11, double m22, bool actionZoomFillIsChecked) const
 Zoom out. More...
 

Detailed Description

Perform calculations to determine the next zoom setting given the current zoom setting, when zooming in or out.

Definition at line 13 of file ZoomTransition.h.

Constructor & Destructor Documentation

◆ ZoomTransition()

ZoomTransition::ZoomTransition ( )

Single constructor.

Definition at line 16 of file ZoomTransition.cpp.

17 {
18  m_zoomMapToFactor [ZOOM_16_TO_1] = 16.0;
19  m_zoomMapToFactor [ZOOM_16_TO_1_FARTHER] = 16.0 * FARTHER;
20  m_zoomMapToFactor [ZOOM_8_TO_1_CLOSER] = 8.0 * CLOSER;
21  m_zoomMapToFactor [ZOOM_8_TO_1] = 8.0;
22  m_zoomMapToFactor [ZOOM_8_TO_1_FARTHER] = 8.0 * FARTHER;
23  m_zoomMapToFactor [ZOOM_4_TO_1_CLOSER] = 4.0 * CLOSER;
24  m_zoomMapToFactor [ZOOM_4_TO_1] = 4.0;
25  m_zoomMapToFactor [ZOOM_4_TO_1_FARTHER] = 4.0 * FARTHER;
26  m_zoomMapToFactor [ZOOM_2_TO_1_CLOSER] = 2.0 * CLOSER;
27  m_zoomMapToFactor [ZOOM_2_TO_1] = 2.0;
28  m_zoomMapToFactor [ZOOM_2_TO_1_FARTHER] = 2.0 * FARTHER;
29  m_zoomMapToFactor [ZOOM_1_TO_1_CLOSER] = 1.0 * CLOSER;
30  m_zoomMapToFactor [ZOOM_1_TO_1] = 1.0;
31  m_zoomMapToFactor [ZOOM_1_TO_1_FARTHER] = 1.0 * FARTHER;
32  m_zoomMapToFactor [ZOOM_1_TO_2_CLOSER] = 0.5 * CLOSER;
33  m_zoomMapToFactor [ZOOM_1_TO_2] = 0.5;
34  m_zoomMapToFactor [ZOOM_1_TO_2_FARTHER] = 0.5 * FARTHER;
35  m_zoomMapToFactor [ZOOM_1_TO_4_CLOSER] = 0.25 * CLOSER;
36  m_zoomMapToFactor [ZOOM_1_TO_4] = 0.25;
37  m_zoomMapToFactor [ZOOM_1_TO_4_FARTHER] = 0.25 * FARTHER;
38  m_zoomMapToFactor [ZOOM_1_TO_8_CLOSER] = 0.125 * CLOSER;
39  m_zoomMapToFactor [ZOOM_1_TO_8] = 0.125;
40  m_zoomMapToFactor [ZOOM_1_TO_8_FARTHER] = 0.125 * FARTHER;
41  m_zoomMapToFactor [ZOOM_1_TO_16_CLOSER] = 0.0625 * CLOSER;
42  m_zoomMapToFactor [ZOOM_1_TO_16] = 0.0625;
43 }

Member Function Documentation

◆ mapToFactor()

double ZoomTransition::mapToFactor ( ZoomFactor  zoomFactor) const

Return the floating precision zoom factor given the enum value.

Definition at line 45 of file ZoomTransition.cpp.

46 {
47  ENGAUGE_ASSERT (m_zoomMapToFactor.contains (zoomFactor));
48 
49  return m_zoomMapToFactor [zoomFactor];
50 }

◆ zoomIn()

ZoomFactor ZoomTransition::zoomIn ( ZoomFactor  currentZoomFactor,
double  m11,
double  m22,
bool  actionZoomFillIsChecked 
) const

Zoom in.

Definition at line 52 of file ZoomTransition.cpp.

56 {
57  LOG4CPP_INFO_S ((*mainCat)) << "ZoomTransition::zoomIn";
58 
59  // Try to zoom in
60  ZoomFactor zoomFactorOld = currentZoomFactor;
61 
62  if (actionZoomFillIsChecked) {
63 
64  // Zooming in means user probably wants the more squished direction to be zoomed in by one step.
65  // Loop through the zoom values until a match is found
66  double xScale = m11;
67  double yScale = m22;
68  double scale = qMin(xScale, yScale); // Fit so large extent just fits
69 
70  for (int zoom = ZOOM_1_TO_16_CLOSER; zoom >= 0; zoom--) {
71  ZoomFactor zoomFactor = static_cast<ZoomFactor> (zoom);
72  if (scale < m_zoomMapToFactor [zoomFactor]) {
73  zoomFactorOld = zoomFactor;
74  break;
75  }
76  }
77  }
78 
79  ZoomFactor zoomFactorNew = ZOOM_16_TO_1;
80  if (zoomFactorOld > ZOOM_16_TO_1) {
81  zoomFactorNew = static_cast<ZoomFactor> (zoomFactorOld - 1);
82  }
83 
84  return zoomFactorNew;
85 }

◆ zoomOut()

ZoomFactor ZoomTransition::zoomOut ( ZoomFactor  currentZoomFactor,
double  m11,
double  m22,
bool  actionZoomFillIsChecked 
) const

Zoom out.

Definition at line 87 of file ZoomTransition.cpp.

91 {
92  LOG4CPP_INFO_S ((*mainCat)) << "ZoomTransition::zoomOut";
93 
94  // Try to zoom out
95  ZoomFactor zoomFactorOld = currentZoomFactor;
96 
97  if (actionZoomFillIsChecked) {
98 
99  // Zooming out means user probably wants the less squished direction to be zoomed out by one step.
100  // Loop through the zoom values until a match is found
101  double xScale = m11;
102  double yScale = m22;
103  double scale = qMax(xScale, yScale); // Fit so larger extent just fits
104 
105  for (int zoom = 0; zoom <= ZOOM_1_TO_16_CLOSER; zoom++) {
106  ZoomFactor zoomFactor = static_cast<ZoomFactor> (zoom);
107  if (scale > m_zoomMapToFactor [zoomFactor]) {
108  zoomFactorOld = zoomFactor;
109  break;
110  }
111  }
112  }
113 
114  ZoomFactor zoomFactorNew = ZOOM_1_TO_16;
115  if (zoomFactorOld < ZOOM_1_TO_16) {
116  zoomFactorNew = static_cast<ZoomFactor> (zoomFactorOld + 1);
117  }
118 
119  return zoomFactorNew;
120 }

The documentation for this class was generated from the following files:
ZOOM_4_TO_1_FARTHER
Definition: ZoomFactor.h:21
ZOOM_1_TO_4
Definition: ZoomFactor.h:32
ZOOM_1_TO_4_CLOSER
Definition: ZoomFactor.h:31
ZOOM_16_TO_1
Definition: ZoomFactor.h:14
ZOOM_1_TO_1
Definition: ZoomFactor.h:26
ZOOM_1_TO_1_CLOSER
Definition: ZoomFactor.h:25
ZOOM_2_TO_1_CLOSER
Definition: ZoomFactor.h:22
ZOOM_2_TO_1
Definition: ZoomFactor.h:23
FARTHER
const double FARTHER
Definition: ZoomTransition.cpp:14
ZOOM_1_TO_2_FARTHER
Definition: ZoomFactor.h:30
ZOOM_1_TO_2_CLOSER
Definition: ZoomFactor.h:28
ZOOM_1_TO_8_CLOSER
Definition: ZoomFactor.h:34
ZOOM_16_TO_1_FARTHER
Definition: ZoomFactor.h:15
ZoomFactor
ZoomFactor
Zoom factors ordered by zoom level so next one above/below is the next zoom level.
Definition: ZoomFactor.h:10
ZOOM_8_TO_1_FARTHER
Definition: ZoomFactor.h:18
ZOOM_8_TO_1
Definition: ZoomFactor.h:17
LOG4CPP_INFO_S
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
ZOOM_1_TO_16_CLOSER
Definition: ZoomFactor.h:37
ZOOM_4_TO_1_CLOSER
Definition: ZoomFactor.h:19
ZOOM_4_TO_1
Definition: ZoomFactor.h:20
ZOOM_1_TO_2
Definition: ZoomFactor.h:29
CLOSER
const double CLOSER
Definition: ZoomTransition.cpp:13
mainCat
log4cpp::Category * mainCat
Definition: Logger.cpp:14
ZOOM_8_TO_1_CLOSER
Definition: ZoomFactor.h:16
ZOOM_1_TO_1_FARTHER
Definition: ZoomFactor.h:27
ZOOM_1_TO_8_FARTHER
Definition: ZoomFactor.h:36
ZOOM_1_TO_4_FARTHER
Definition: ZoomFactor.h:33
ZOOM_2_TO_1_FARTHER
Definition: ZoomFactor.h:24
ZOOM_1_TO_8
Definition: ZoomFactor.h:35
ENGAUGE_ASSERT
#define ENGAUGE_ASSERT(cond)
Drop in replacement for Q_ASSERT if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) define ENGAUGE...
Definition: EngaugeAssert.h:19
ZOOM_1_TO_16
Definition: ZoomFactor.h:38