1 /****************************************************************************
2 **
3 ** This file is part of the LibreCAD project, a 2D CAD program
4 **
5 ** Copyright (C) 2010 R. van Twisk (librecad@rvt.dds.nl)
6 ** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
7 **
8 **
9 ** This file may be distributed and/or modified under the terms of the
10 ** GNU General Public License version 2 as published by the Free Software
11 ** Foundation and appearing in the file gpl-2.0.txt included in the
12 ** packaging of this file.
13 **
14 ** This program is distributed in the hope that it will be useful,
15 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 ** GNU General Public License for more details.
18 **
19 ** You should have received a copy of the GNU General Public License
20 ** along with this program; if not, write to the Free Software
21 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
22 **
23 ** This copyright notice MUST APPEAR in all copies of the script!
24 **
25 **********************************************************************/
26 
27 #include "rs_actionzoomin.h"
28 
29 #include <QAction>
30 #include "rs_graphicview.h"
31 
32 /**
33  * Default constructor.
34  *
35  * @param direction In for zooming in, Out for zooming out.
36  * @param axis Axis that are affected by the zoom (OnlyX, OnlyY or Both)
37  */
RS_ActionZoomIn(RS_EntityContainer & container,RS_GraphicView & graphicView,RS2::ZoomDirection direction,RS2::Axis axis,RS_Vector const * pCenter,double factor)38 RS_ActionZoomIn::RS_ActionZoomIn(RS_EntityContainer& container,
39                                  RS_GraphicView& graphicView,
40                                  RS2::ZoomDirection direction,
41                                  RS2::Axis axis,
42 								 RS_Vector const* pCenter,
43                                  double factor)
44         :RS_ActionInterface("Zoom in", container, graphicView)
45         ,zoom_factor(factor)
46         ,direction(direction)
47         ,axis(axis)
48 		,center(pCenter?new RS_Vector{*pCenter}:new RS_Vector{})
49 {
50 }
51 
52 RS_ActionZoomIn::~RS_ActionZoomIn() = default;
53 
init(int status)54 void RS_ActionZoomIn::init(int status) {
55     RS_ActionInterface::init(status);
56     trigger();
57 }
58 
trigger()59 void RS_ActionZoomIn::trigger() {
60     switch (axis) {
61     case RS2::OnlyX:
62         if (direction==RS2::In) {
63             graphicView->zoomInX();
64         } else {
65             graphicView->zoomOutX();
66         }
67         break;
68 
69     case RS2::OnlyY:
70         if (direction==RS2::In) {
71             graphicView->zoomInY();
72         } else {
73             graphicView->zoomOutY();
74         }
75         break;
76 
77     case RS2::Both:
78         if (direction==RS2::In) {
79 			graphicView->zoomIn(zoom_factor, *center);
80         } else {
81 			graphicView->zoomOut(zoom_factor, *center);
82         }
83         break;
84     }
85     finish(false);
86 }
87 
88 // EOF
89