Bug #: 4332
[WebKit-https.git] / WebCore / ksvg2 / events / SVGZoomEvent.cpp
1 /*
2     Copyright (C) 2004 Nikolas Zimmermann <wildfox@kde.org>
3                                   2004 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/impl/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