summaryrefslogtreecommitdiffstats
path: root/WebCore/html/HTMLAreaElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/html/HTMLAreaElement.cpp')
-rw-r--r--WebCore/html/HTMLAreaElement.cpp227
1 files changed, 0 insertions, 227 deletions
diff --git a/WebCore/html/HTMLAreaElement.cpp b/WebCore/html/HTMLAreaElement.cpp
deleted file mode 100644
index a865122..0000000
--- a/WebCore/html/HTMLAreaElement.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
- * (C) 1999 Antti Koivisto (koivisto@kde.org)
- * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.
- *
- * 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.
- */
-
-#include "config.h"
-#include "HTMLAreaElement.h"
-
-#include "Document.h"
-#include "FloatRect.h"
-#include "HTMLNames.h"
-#include "HitTestResult.h"
-#include "Length.h"
-#include "RenderObject.h"
-
-using namespace std;
-
-namespace WebCore {
-
-using namespace HTMLNames;
-
-HTMLAreaElement::HTMLAreaElement(Document *doc)
- : HTMLAnchorElement(areaTag, doc)
- , m_coords(0)
- , m_coordsLen(0)
- , m_lastSize(-1, -1)
- , m_shape(Unknown)
-{
-}
-
-HTMLAreaElement::~HTMLAreaElement()
-{
- delete [] m_coords;
-}
-
-void HTMLAreaElement::parseMappedAttribute(MappedAttribute *attr)
-{
- if (attr->name() == shapeAttr) {
- if (equalIgnoringCase(attr->value(), "default"))
- m_shape = Default;
- else if (equalIgnoringCase(attr->value(), "circle"))
- m_shape = Circle;
- else if (equalIgnoringCase(attr->value(), "poly"))
- m_shape = Poly;
- else if (equalIgnoringCase(attr->value(), "rect"))
- m_shape = Rect;
- } else if (attr->name() == coordsAttr) {
- delete [] m_coords;
- m_coords = newCoordsArray(attr->value().string(), m_coordsLen);
- } else if (attr->name() == altAttr || attr->name() == accesskeyAttr) {
- // Do nothing.
- } else
- HTMLAnchorElement::parseMappedAttribute(attr);
-}
-
-bool HTMLAreaElement::mapMouseEvent(int x, int y, const IntSize& size, HitTestResult& result)
-{
- if (m_lastSize != size) {
- region = getRegion(size);
- m_lastSize = size;
- }
-
- if (!region.contains(IntPoint(x, y)))
- return false;
-
- result.setInnerNode(this);
- result.setURLElement(this);
- return true;
-}
-
-IntRect HTMLAreaElement::getRect(RenderObject* obj) const
-{
- int dx, dy;
- obj->absolutePosition(dx, dy);
- Path p = getRegion(m_lastSize);
- p.translate(IntSize(dx, dy));
- return enclosingIntRect(p.boundingRect());
-}
-
-Path HTMLAreaElement::getRegion(const IntSize& size) const
-{
- if (!m_coords && m_shape != Default)
- return Path();
-
- int width = size.width();
- int height = size.height();
-
- // If element omits the shape attribute, select shape based on number of coordinates.
- Shape shape = m_shape;
- if (shape == Unknown) {
- if (m_coordsLen == 3)
- shape = Circle;
- else if (m_coordsLen == 4)
- shape = Rect;
- else if (m_coordsLen >= 6)
- shape = Poly;
- }
-
- Path path;
- switch (shape) {
- case Poly:
- if (m_coordsLen >= 6) {
- int numPoints = m_coordsLen / 2;
- path.moveTo(FloatPoint(m_coords[0].calcMinValue(width), m_coords[1].calcMinValue(height)));
- for (int i = 1; i < numPoints; ++i)
- path.addLineTo(FloatPoint(m_coords[i * 2].calcMinValue(width), m_coords[i * 2 + 1].calcMinValue(height)));
- path.closeSubpath();
- }
- break;
- case Circle:
- if (m_coordsLen >= 3) {
- Length radius = m_coords[2];
- int r = min(radius.calcMinValue(width), radius.calcMinValue(height));
- path.addEllipse(FloatRect(m_coords[0].calcMinValue(width) - r, m_coords[1].calcMinValue(height) - r, 2 * r, 2 * r));
- }
- break;
- case Rect:
- if (m_coordsLen >= 4) {
- int x0 = m_coords[0].calcMinValue(width);
- int y0 = m_coords[1].calcMinValue(height);
- int x1 = m_coords[2].calcMinValue(width);
- int y1 = m_coords[3].calcMinValue(height);
- path.addRect(FloatRect(x0, y0, x1 - x0, y1 - y0));
- }
- break;
- case Default:
- path.addRect(FloatRect(0, 0, width, height));
- break;
- case Unknown:
- break;
- }
-
- return path;
-}
-
-String HTMLAreaElement::accessKey() const
-{
- return getAttribute(accesskeyAttr);
-}
-
-void HTMLAreaElement::setAccessKey(const String& value)
-{
- setAttribute(accesskeyAttr, value);
-}
-
-String HTMLAreaElement::alt() const
-{
- return getAttribute(altAttr);
-}
-
-void HTMLAreaElement::setAlt(const String& value)
-{
- setAttribute(altAttr, value);
-}
-
-String HTMLAreaElement::coords() const
-{
- return getAttribute(coordsAttr);
-}
-
-void HTMLAreaElement::setCoords(const String& value)
-{
- setAttribute(coordsAttr, value);
-}
-
-KURL HTMLAreaElement::href() const
-{
- return document()->completeURL(getAttribute(hrefAttr));
-}
-
-void HTMLAreaElement::setHref(const String& value)
-{
- setAttribute(hrefAttr, value);
-}
-
-bool HTMLAreaElement::noHref() const
-{
- return !getAttribute(nohrefAttr).isNull();
-}
-
-void HTMLAreaElement::setNoHref(bool noHref)
-{
- setAttribute(nohrefAttr, noHref ? "" : 0);
-}
-
-String HTMLAreaElement::shape() const
-{
- return getAttribute(shapeAttr);
-}
-
-void HTMLAreaElement::setShape(const String& value)
-{
- setAttribute(shapeAttr, value);
-}
-
-bool HTMLAreaElement::isFocusable() const
-{
- return HTMLElement::isFocusable();
-}
-
-String HTMLAreaElement::target() const
-{
- return getAttribute(targetAttr);
-}
-
-void HTMLAreaElement::setTarget(const String& value)
-{
- setAttribute(targetAttr, value);
-}
-
-}