15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2004, 2005, 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org>
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org>
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version.
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful,
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details.
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA.
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef SVGImageElement_h
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define SVGImageElement_h
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
24e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "SVGNames.h"
2553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/svg/SVGAnimatedBoolean.h"
2653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/svg/SVGAnimatedLength.h"
2753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/svg/SVGAnimatedPreserveAspectRatio.h"
2853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/svg/SVGExternalResourcesRequired.h"
29591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "core/svg/SVGGraphicsElement.h"
3053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/svg/SVGImageLoader.h"
3153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/svg/SVGURIReference.h"
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore {
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdochclass SVGImageElement FINAL : public SVGGraphicsElement,
3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)                              public SVGExternalResourcesRequired,
3753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)                              public SVGURIReference {
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
3951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    static PassRefPtr<SVGImageElement> create(Document&);
408abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)
418abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    bool currentFrameHasSingleSecurityOrigin() const;
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
4451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    explicit SVGImageElement(Document&);
4502772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isValid() const { return SVGTests::isValid(); }
47fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch    virtual bool supportsFocus() const OVERRIDE { return hasFocusEventListeners(); }
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool isSupportedAttribute(const QualifiedName&);
50926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE;
52926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet*) OVERRIDE;
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void svgAttributeChanged(const QualifiedName&);
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)    virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE;
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
58591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    virtual RenderObject* createRenderer(RenderStyle*);
59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
608abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)    virtual const AtomicString imageSourceURL() const OVERRIDE;
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void addSubresourceAttributeURLs(ListHashSet<KURL>&) const;
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool haveLoadedRequiredResources();
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool selfHasRelativeLengths() const;
661e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    virtual void didMoveToNewDocument(Document& oldDocument) OVERRIDE;
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGImageElement)
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DECLARE_ANIMATED_LENGTH(X, x)
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DECLARE_ANIMATED_LENGTH(Y, y)
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DECLARE_ANIMATED_LENGTH(Width, width)
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DECLARE_ANIMATED_LENGTH(Height, height)
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DECLARE_ANIMATED_PRESERVEASPECTRATIO(PreserveAspectRatio, preserveAspectRatio)
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DECLARE_ANIMATED_STRING(Href, href)
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    END_DECLARE_ANIMATED_PROPERTIES
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    SVGImageLoader m_imageLoader;
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
811e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)DEFINE_NODE_TYPE_CASTS(SVGImageElement, hasTagName(SVGNames::imageTag));
82e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif
86