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