GlobalObject.cpp   [plain text]


/*
    Copyright (C) 2002 David Faure <faure@kde.org>
                  2004, 2005 Nikolas Zimmermann <wildfox@kde.org>

    This file is part of the KDE project

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public License
    along with this library; see the file COPYING.LIB.  If not, write to
    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.
*/

#include "config.h"
#if SVG_SUPPORT
#include <kdom/core/Document.h>

#include "GlobalObject.h"
#include "Constructors.h"

#include <ksvg2/data/EcmaConstants.h>
#include <ksvg2/data/GlobalObject.lut.h>
using namespace WebCore;

/*
@begin GlobalObject::s_hashTable 13
# Constructors
 SVGException    GlobalObjectConstants::SVGException DontDelete|Function 1
 SVGLength        GlobalObjectConstants::SVGLength DontDelete|Function 1
 SVGAngle        GlobalObjectConstants::SVGAngle DontDelete|Function 1
 SVGColor        GlobalObjectConstants::SVGColor DontDelete|Function 1
 SVGUnitTypes    GlobalObjectConstants::SVGUnitTypes DontDelete|Function 1
 SVGTransform    GlobalObjectConstants::SVGTransform DontDelete|Function 1
 SVGPaint        GlobalObjectConstants::SVGPaint DontDelete|Function 1
 SVGGradientElement        GlobalObjectConstants::SVGGradientElement DontDelete|Function 1
 SVGPreserveAspectRatio        GlobalObjectConstants::SVGPreserveAspectRatio DontDelete|Function 1
 SVGZoomAndPan        GlobalObjectConstants::SVGZoomAndPan DontDelete|Function 1
 SVGMarkerElement    GlobalObjectConstants::SVGMarkerElement DontDelete|Function 1
@end
*/

GlobalObject::GlobalObject(Document *doc) : GlobalObject(doc)
{
}

GlobalObject::~GlobalObject()
{
}

void GlobalObject::afterTimeout() const
{
    if(doc())
        doc()->updateRendering();
}

KJS::JSValue *GlobalObject::get(KJS::ExecState *exec, const KJS::Identifier &p) const
{
    kdDebug(26004) << "WebCore::GlobalObject (" << this << ")::get " << p.deprecatedString() << endl;

    KJS::JSValue *ret = GlobalObject::get(exec, p);
    if(ret->type() != KJS::UndefinedType)
        return ret;

    const KJS::HashEntry *entry = KJS::Lookup::findEntry(&GlobalObject::s_hashTable, p);
    if(entry)
    {
        switch(entry->value)
        {
            case GlobalObjectConstants::SVGException:
                return getSVGExceptionConstructor(exec);
            case GlobalObjectConstants::SVGLength:
                return getSVGLengthConstructor(exec);
            case GlobalObjectConstants::SVGAngle:
                return getSVGAngleConstructor(exec);
            case GlobalObjectConstants::SVGColor:
                return getSVGColorConstructor(exec);
            case GlobalObjectConstants::SVGPaint:
                return getSVGPaintConstructor(exec);
            case GlobalObjectConstants::SVGUnitTypes:
                return getSVGUnitTypesConstructor(exec);
            case GlobalObjectConstants::SVGTransform:
                return getSVGTransformConstructor(exec);
            case GlobalObjectConstants::SVGGradientElement:
                return getSVGGradientElementConstructor(exec);
            case GlobalObjectConstants::SVGPreserveAspectRatio:
                return getSVGPreserveAspectRatioConstructor(exec);
            case GlobalObjectConstants::SVGZoomAndPan:
                return getSVGZoomAndPanConstructor(exec);
            case GlobalObjectConstants::SVGMarkerElement:
                return getSVGMarkerElementConstructor(exec);
        }
    }

    // This isn't necessarily a bug. Some code uses if(!window.blah) window.blah=1
    // But it can also mean something isn't loaded or implemented...
    kdDebug(26004) << "GlobalObject::get property not found: " << p.deprecatedString() << endl;
    return KJS::jsUndefined();
}

// vim:ts=4:noet
#endif // SVG_SUPPORT