/*
    Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
    Copyright (C) 2004, 2005 Rob Buis <buis@kde.org>
    Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
    Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.

    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., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.
*/

module svg {

    // TODO: no css::ViewCSS available!
    // TODO: Fix SVGSVGElement inheritance (css::DocumentCSS)! 
    // TODO: no events::DocumentEvent available!
    interface [Conditional=SVG] SVGSVGElement : SVGElement,
                                                SVGTests,
                                                SVGLangSpace,
                                                SVGExternalResourcesRequired,
                                                SVGStylable,
                                                SVGLocatable,
                                                SVGFitToViewBox,
                                                SVGZoomAndPan {
        readonly attribute SVGAnimatedLength x;
        readonly attribute SVGAnimatedLength y;
        readonly attribute SVGAnimatedLength width;
        readonly attribute SVGAnimatedLength height;
                 attribute core::DOMString contentScriptType
                     /*setter raises(DOMException)*/;
                 attribute core::DOMString contentStyleType
                     /*setter raises(DOMException)*/;
        readonly attribute [Immutable] SVGRect viewport;
        readonly attribute float pixelUnitToMillimeterX;
        readonly attribute float pixelUnitToMillimeterY;
        readonly attribute float screenPixelToMillimeterX;
        readonly attribute float screenPixelToMillimeterY;
                 attribute boolean useCurrentView
                     /*setter raises(DOMException)*/;
        // TODO    readonly attribute [Immutable] SVGViewSpec currentView;
                 attribute float currentScale
                     /*setter raises(DOMException)*/;
        readonly attribute SVGPoint currentTranslate;

        unsigned long suspendRedraw(in unsigned long maxWaitMilliseconds);
        void unsuspendRedraw(in unsigned long suspendHandleId);
        void unsuspendRedrawAll();
        void forceRedraw();
        void pauseAnimations();
        void unpauseAnimations();
        boolean animationsPaused();
        float getCurrentTime();
        void setCurrentTime(in float seconds);
        core::NodeList getIntersectionList(in SVGRect rect, 
                                           in SVGElement referenceElement);
        core::NodeList getEnclosureList(in SVGRect rect, 
                                        in SVGElement referenceElement);
        boolean checkIntersection(in SVGElement element, 
                                  in SVGRect rect);
        boolean checkEnclosure(in SVGElement element, 
                               in SVGRect rect);
        void deselectAll();

        SVGNumber createSVGNumber();
        SVGLength createSVGLength();
        SVGAngle createSVGAngle();
        SVGPoint createSVGPoint();
        SVGMatrix createSVGMatrix();
        SVGRect createSVGRect();
        SVGTransform createSVGTransform();
        SVGTransform createSVGTransformFromMatrix(in SVGMatrix matrix);
    };

}
