18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                  2004, 2005, 2007 Rob Buis <buis@kde.org>
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    This library is free software; you can redistribute it and/or
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    modify it under the terms of the GNU Library General Public
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    License as published by the Free Software Foundation; either
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    version 2 of the License, or (at your option) any later version.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    This library is distributed in the hope that it will be useful,
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    but WITHOUT ANY WARRANTY; without even the implied warranty of
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Library General Public License for more details.
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    You should have received a copy of the GNU Library General Public License
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    along with this library; see the file COPYING.LIB.  If not, write to
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Boston, MA 02110-1301, USA.
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef SVGLocatable_h
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SVGLocatable_h
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG)
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ExceptionCode.h"
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
308a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockclass AffineTransform;
318a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockclass FloatRect;
328a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockclass SVGElement;
338a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
348a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockclass SVGLocatable {
358a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockpublic:
368a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    SVGLocatable();
378a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    virtual ~SVGLocatable();
388a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
398a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    // 'SVGLocatable' functions
408a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    virtual SVGElement* nearestViewportElement() const = 0;
418a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    virtual SVGElement* farthestViewportElement() const = 0;
428a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
438a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    virtual FloatRect getBBox() const = 0;
448a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    virtual AffineTransform getCTM() const = 0;
458a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    virtual AffineTransform getScreenCTM() const = 0;
468a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    AffineTransform getTransformToElement(SVGElement*, ExceptionCode&) const;
478a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
488a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    static SVGElement* nearestViewportElement(const SVGElement*);
498a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    static SVGElement* farthestViewportElement(const SVGElement*);
508a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
518a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockprotected:
528a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    static FloatRect getBBox(const SVGElement*);
538a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    static AffineTransform getCTM(const SVGElement*);
548a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    static AffineTransform getScreenCTM(const SVGElement*);
558a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block};
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(SVG)
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // SVGLocatable_h
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// vim:ts=4:noet
63