18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *           (C) 1999 Antti Koivisto (koivisto@kde.org)
42fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2004, 2008, 2009, 2011 Apple Inc. All rights reserved.
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details.
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA.
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef HTMLAreaElement_h
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define HTMLAreaElement_h
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTMLAnchorElement.h"
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "IntSize.h"
28231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <wtf/OwnArrayPtr.h>
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass HitTestResult;
33d0825bca7fe65beaee391d30da42e937db621564Steve Blockclass HTMLImageElement;
348f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qianclass Path;
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass HTMLAreaElement : public HTMLAnchorElement {
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    static PassRefPtr<HTMLAreaElement> create(const QualifiedName&, Document*);
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    bool isDefault() const { return m_shape == Default; }
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    bool mapMouseEvent(int x, int y, const IntSize&, HitTestResult&);
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    IntRect computeRect(RenderObject*) const;
452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    Path computePath(RenderObject*) const;
46ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
47ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    // The parent map's image.
48d0825bca7fe65beaee391d30da42e937db621564Steve Block    HTMLImageElement* imageElement() const;
49d0825bca7fe65beaee391d30da42e937db621564Steve Block
500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate:
51231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    HTMLAreaElement(const QualifiedName&, Document*);
52231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
53e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block    virtual void parseMappedAttribute(Attribute*);
54231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    virtual bool supportsFocus() const;
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual String target() const;
56d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool isKeyboardFocusable(KeyboardEvent*) const;
57a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    virtual bool isMouseFocusable() const;
58d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool isFocusable() const;
59d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual void updateFocusAppearance(bool /*restorePreviousSelection*/);
602fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    virtual void setFocus(bool);
61d0825bca7fe65beaee391d30da42e937db621564Steve Block
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    enum Shape { Default, Poly, Rect, Circle, Unknown };
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Path getRegion(const IntSize&) const;
648f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
658f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    OwnPtr<Path> m_region;
66231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    OwnArrayPtr<Length> m_coords;
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    int m_coordsLen;
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    IntSize m_lastSize;
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Shape m_shape;
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} //namespace
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
75