2006-02-11 Eric Seidel <eseidel@apple.com>
[WebKit-https.git] / WebCore / ksvg2 / ecma / GlobalObject.cpp
1 /*
2     Copyright (C) 2002 David Faure <faure@kde.org>
3                   2004, 2005 Nikolas Zimmermann <wildfox@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 "config.h"
24 #if SVG_SUPPORT
25 #include <kdom/core/NodeImpl.h>
26 #include <kdom/core/DocumentImpl.h>
27
28 #include "GlobalObject.h"
29 #include "Constructors.h"
30
31 #include <ksvg2/data/EcmaConstants.h>
32 #include <ksvg2/data/GlobalObject.lut.h>
33 using namespace WebCore;
34
35 /*
36 @begin GlobalObject::s_hashTable 13
37 # Constructors
38  SVGException    GlobalObjectConstants::SVGException DontDelete|Function 1
39  SVGLength        GlobalObjectConstants::SVGLength DontDelete|Function 1
40  SVGAngle        GlobalObjectConstants::SVGAngle DontDelete|Function 1
41  SVGColor        GlobalObjectConstants::SVGColor DontDelete|Function 1
42  SVGUnitTypes    GlobalObjectConstants::SVGUnitTypes DontDelete|Function 1
43  SVGTransform    GlobalObjectConstants::SVGTransform DontDelete|Function 1
44  SVGPaint        GlobalObjectConstants::SVGPaint DontDelete|Function 1
45  SVGGradientElement        GlobalObjectConstants::SVGGradientElement DontDelete|Function 1
46  SVGPreserveAspectRatio        GlobalObjectConstants::SVGPreserveAspectRatio DontDelete|Function 1
47  SVGZoomAndPan        GlobalObjectConstants::SVGZoomAndPan DontDelete|Function 1
48  SVGMarkerElement    GlobalObjectConstants::SVGMarkerElement DontDelete|Function 1
49 @end
50 */
51
52 GlobalObject::GlobalObject(DocumentImpl *doc) : GlobalObject(doc)
53 {
54 }
55
56 GlobalObject::~GlobalObject()
57 {
58 }
59
60 void GlobalObject::afterTimeout() const
61 {
62     if(doc())
63         doc()->updateRendering();
64 }
65
66 KJS::JSValue *GlobalObject::get(KJS::ExecState *exec, const KJS::Identifier &p) const
67 {
68     kdDebug(26004) << "KSVG::GlobalObject (" << this << ")::get " << p.qstring() << endl;
69
70     KJS::JSValue *ret = GlobalObject::get(exec, p);
71     if(ret->type() != KJS::UndefinedType)
72         return ret;
73
74     const KJS::HashEntry *entry = KJS::Lookup::findEntry(&GlobalObject::s_hashTable, p);
75     if(entry)
76     {
77         switch(entry->value)
78         {
79             case GlobalObjectConstants::SVGException:
80                 return getSVGExceptionConstructor(exec);
81             case GlobalObjectConstants::SVGLength:
82                 return getSVGLengthConstructor(exec);
83             case GlobalObjectConstants::SVGAngle:
84                 return getSVGAngleConstructor(exec);
85             case GlobalObjectConstants::SVGColor:
86                 return getSVGColorConstructor(exec);
87             case GlobalObjectConstants::SVGPaint:
88                 return getSVGPaintConstructor(exec);
89             case GlobalObjectConstants::SVGUnitTypes:
90                 return getSVGUnitTypesConstructor(exec);
91             case GlobalObjectConstants::SVGTransform:
92                 return getSVGTransformConstructor(exec);
93             case GlobalObjectConstants::SVGGradientElement:
94                 return getSVGGradientElementConstructor(exec);
95             case GlobalObjectConstants::SVGPreserveAspectRatio:
96                 return getSVGPreserveAspectRatioConstructor(exec);
97             case GlobalObjectConstants::SVGZoomAndPan:
98                 return getSVGZoomAndPanConstructor(exec);
99             case GlobalObjectConstants::SVGMarkerElement:
100                 return getSVGMarkerElementConstructor(exec);
101         }
102     }
103
104     // This isn't necessarily a bug. Some code uses if(!window.blah) window.blah=1
105     // But it can also mean something isn't loaded or implemented...
106     kdDebug(26004) << "GlobalObject::get property not found: " << p.qstring() << endl;
107     return KJS::jsUndefined();
108 }
109
110 // vim:ts=4:noet
111 #endif // SVG_SUPPORT
112