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