Engauge Digitizer 2
Loading...
Searching...
No Matches
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.
double mapToFactor (ZoomFactor zoomFactor) const
 Return the floating precision zoom factor given the enum value.
ZoomFactor zoomIn (ZoomFactor currentZoomFactor, double m11, double m22, bool actionZoomFillIsChecked) const
 Zoom in.
ZoomFactor zoomOut (ZoomFactor currentZoomFactor, double m11, double m22, bool actionZoomFillIsChecked) const
 Zoom out.

Detailed Description

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

Definition at line 14 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}
@ ZOOM_1_TO_1_FARTHER
Definition ZoomFactor.h:25
@ ZOOM_8_TO_1_FARTHER
Definition ZoomFactor.h:16
@ ZOOM_16_TO_1_FARTHER
Definition ZoomFactor.h:13
@ ZOOM_2_TO_1
Definition ZoomFactor.h:21
@ ZOOM_8_TO_1
Definition ZoomFactor.h:15
@ ZOOM_1_TO_4_CLOSER
Definition ZoomFactor.h:29
@ ZOOM_1_TO_8_CLOSER
Definition ZoomFactor.h:32
@ ZOOM_4_TO_1
Definition ZoomFactor.h:18
@ ZOOM_1_TO_2
Definition ZoomFactor.h:27
@ ZOOM_4_TO_1_CLOSER
Definition ZoomFactor.h:17
@ ZOOM_1_TO_4_FARTHER
Definition ZoomFactor.h:31
@ ZOOM_1_TO_1_CLOSER
Definition ZoomFactor.h:23
@ ZOOM_1_TO_2_FARTHER
Definition ZoomFactor.h:28
@ ZOOM_1_TO_1
Definition ZoomFactor.h:24
@ ZOOM_1_TO_8
Definition ZoomFactor.h:33
@ ZOOM_4_TO_1_FARTHER
Definition ZoomFactor.h:19
@ ZOOM_8_TO_1_CLOSER
Definition ZoomFactor.h:14
@ ZOOM_2_TO_1_CLOSER
Definition ZoomFactor.h:20
@ ZOOM_1_TO_4
Definition ZoomFactor.h:30
@ ZOOM_1_TO_8_FARTHER
Definition ZoomFactor.h:34
@ ZOOM_1_TO_2_CLOSER
Definition ZoomFactor.h:26
@ ZOOM_1_TO_16
Definition ZoomFactor.h:36
@ ZOOM_2_TO_1_FARTHER
Definition ZoomFactor.h:22
@ ZOOM_1_TO_16_CLOSER
Definition ZoomFactor.h:35
@ ZOOM_16_TO_1
Definition ZoomFactor.h:12
const double FARTHER
const double CLOSER

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}
#define ENGAUGE_ASSERT(cond)
Drop in replacement for Q_ASSERT.

◆ 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}
log4cpp::Category * mainCat
Definition Logger.cpp:14
ZoomFactor
Zoom factors ordered by zoom level so next one above/below is the next zoom level.
Definition ZoomFactor.h:11
#define LOG4CPP_INFO_S(logger)
Definition convenience.h:18

◆ 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: