8 #include "EngaugeAssert.h" 11 #include "ZoomTransition.h" 13 const double CLOSER = qPow (2, 1.0 / 3.0);
14 const double FARTHER = 1.0 / CLOSER;
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;
47 ENGAUGE_ASSERT (m_zoomMapToFactor.contains (zoomFactor));
49 return m_zoomMapToFactor [zoomFactor];
55 bool actionZoomFillIsChecked)
const 57 LOG4CPP_INFO_S ((*mainCat)) <<
"ZoomTransition::zoomIn";
60 ZoomFactor zoomFactorOld = currentZoomFactor;
62 if (actionZoomFillIsChecked) {
68 double scale = qMin(xScale, yScale);
70 for (
int zoom = ZOOM_1_TO_16_CLOSER; zoom >= 0; zoom--) {
71 ZoomFactor zoomFactor = (ZoomFactor) zoom;
72 if (scale < m_zoomMapToFactor [zoomFactor]) {
73 zoomFactorOld = zoomFactor;
79 ZoomFactor zoomFactorNew = ZOOM_16_TO_1;
80 if (zoomFactorOld > ZOOM_16_TO_1) {
81 zoomFactorNew = (ZoomFactor) (zoomFactorOld - 1);
90 bool actionZoomFillIsChecked)
const 92 LOG4CPP_INFO_S ((*mainCat)) <<
"ZoomTransition::zoomOut";
95 ZoomFactor zoomFactorOld = currentZoomFactor;
97 if (actionZoomFillIsChecked) {
103 double scale = qMax(xScale, yScale);
105 for (
int zoom = 0; zoom <= ZOOM_1_TO_16_CLOSER; zoom++) {
106 ZoomFactor zoomFactor = (ZoomFactor) zoom;
107 if (scale > m_zoomMapToFactor [zoomFactor]) {
108 zoomFactorOld = zoomFactor;
114 ZoomFactor zoomFactorNew = ZOOM_1_TO_16;
115 if (zoomFactorOld < ZOOM_1_TO_16) {
116 zoomFactorNew = (ZoomFactor) (zoomFactorOld + 1);
119 return zoomFactorNew;
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.
ZoomTransition()
Single constructor.
ZoomFactor zoomOut(ZoomFactor currentZoomFactor, double m11, double m22, bool actionZoomFillIsChecked) const
Zoom out.