Bug #: 4790
[WebKit-https.git] / WebCore / ksvg2 / events / SVGZoomEvent.cpp
1 /*
2     Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
3                   2004, 2005 Rob Buis <buis@kde.org>
4                   
5     This file is part of the KDE project
6
7     This library is free software; you can redistribute it and/or
8     modify it under the terms of the GNU Library General Public
9     License as published by the Free Software Foundation; either
10     version 2 of the License, or (at your option) any later version.
11
12     This library is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15     Library General Public License for more details.
16
17     You should have received a copy of the GNU Library General Public License
18     along with this library; see the file COPYING.LIB.  If not, write to
19     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20     Boston, MA 02111-1307, USA.
21 */
22
23 #include <kdom/Shared.h>
24 #include <kdom/DOMException.h>
25 #include <kdom/core/DOMExceptionImpl.h>
26
27 #include "SVGRect.h"
28 #include "SVGPoint.h"
29 #include "SVGZoomEvent.h"
30 #include "SVGZoomEventImpl.h"
31
32 #include <ksvg2/data/EventsConstants.h>
33 #include "SVGZoomEvent.lut.h"
34 using namespace KSVG;
35
36 /*
37 @begin SVGZoomEvent::s_hashTable 7
38  zoomRectScreen        SVGZoomEventConstants::ZoomRectScreen        DontDelete|ReadOnly
39  previousScale        SVGZoomEventConstants::PreviousScale        DontDelete|ReadOnly
40  previousTranslate    SVGZoomEventConstants::PreviousTranslate    DontDelete|ReadOnly
41  newScale            SVGZoomEventConstants::NewScale                DontDelete|ReadOnly
42  newTranslate        SVGZoomEventConstants::NewTranslate            DontDelete|ReadOnly
43 @end
44 */
45
46 ValueImp *SVGZoomEvent::getValueProperty(ExecState *exec, int token) const
47 {
48     KDOM_ENTER_SAFE
49
50     switch(token)
51     {
52         case SVGZoomEventConstants::ZoomRectScreen:
53             return KDOM::safe_cache<SVGRect>(exec, zoomRectScreen());
54         case SVGZoomEventConstants::PreviousTranslate:
55             return KDOM::safe_cache<SVGPoint>(exec, previousTranslate());
56         case SVGZoomEventConstants::PreviousScale:
57             return Number(previousScale());
58         case SVGZoomEventConstants::NewTranslate:
59             return KDOM::safe_cache<SVGPoint>(exec, newTranslate());
60         case SVGZoomEventConstants::NewScale:
61             return Number(newScale());
62         default:
63             kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
64     }
65
66     KDOM_LEAVE_SAFE(KDOM::DOMException)
67     return Undefined();
68 }
69
70 // The qdom way...
71 #define impl (static_cast<SVGZoomEventImpl *>(d))
72
73 SVGZoomEvent SVGZoomEvent::null;
74
75 SVGZoomEvent::SVGZoomEvent() : KDOM::UIEvent()
76 {
77 }
78
79 SVGZoomEvent::SVGZoomEvent(SVGZoomEventImpl *i) : KDOM::UIEvent(i)
80 {
81 }
82
83 SVGZoomEvent::SVGZoomEvent(const SVGZoomEvent &other) : KDOM::UIEvent()
84 {
85     (*this) = other;
86 }
87
88 SVGZoomEvent::SVGZoomEvent(const KDOM::Event &other) : KDOM::UIEvent()
89 {
90     (*this) = other;
91 }
92
93 SVGZoomEvent::~SVGZoomEvent()
94 {
95 }
96
97 SVGZoomEvent &SVGZoomEvent::operator=(const SVGZoomEvent &other)
98 {
99     KDOM::Event::operator=(other);
100     return *this;
101 }
102
103 KDOM_EVENT_DERIVED_ASSIGN_OP(SVGZoomEvent, Event, KDOM::TypeLastEvent)
104
105 SVGRect SVGZoomEvent::zoomRectScreen() const
106 {
107     if(!d)
108         return SVGRect::null;
109
110     return SVGRect(impl->zoomRectScreen());
111 }
112
113 float SVGZoomEvent::previousScale() const
114 {
115     if(!d)
116         return 1.;
117
118     return impl->previousScale();
119 }
120
121 SVGPoint SVGZoomEvent::previousTranslate() const
122 {
123     if(!d)
124         return SVGPoint::null;
125
126     return SVGPoint(impl->previousTranslate());
127 }
128
129 float SVGZoomEvent::newScale() const
130 {
131     if(!d)
132         return 1.;
133
134     return impl->newScale();
135 }
136
137 SVGPoint SVGZoomEvent::newTranslate() const
138 {
139     if(!d)
140         return SVGPoint::null;
141
142     return SVGPoint(impl->newTranslate());
143 }
144
145 // vim:ts=4:noet