/*
* Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org>
* Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org>
+ * Copyright (C) 2014 Samsung Electronics. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
namespace WebCore {
+class ExceptionState;
+class SVGViewSpec;
+
enum SVGZoomAndPanType {
SVGZoomAndPanUnknown = 0,
SVGZoomAndPanDisable,
return static_cast<SVGZoomAndPanType>(number);
}
- static bool parseZoomAndPan(const LChar*& start, const LChar* end, SVGZoomAndPanType&);
- static bool parseZoomAndPan(const UChar*& start, const UChar* end, SVGZoomAndPanType&);
+ bool parseZoomAndPan(const LChar*& start, const LChar* end);
+ bool parseZoomAndPan(const UChar*& start, const UChar* end);
- template<class SVGElementTarget>
- static bool parseAttribute(SVGElementTarget* target, const QualifiedName& name, const AtomicString& value)
+ bool parseAttribute(const QualifiedName& name, const AtomicString& value)
{
- ASSERT(target);
if (name == SVGNames::zoomAndPanAttr) {
- SVGZoomAndPanType zoomAndPan = SVGZoomAndPanUnknown;
+ m_zoomAndPan = SVGZoomAndPanUnknown;
if (!value.isEmpty()) {
if (value.is8Bit()) {
const LChar* start = value.characters8();
- parseZoomAndPan(start, start + value.length(), zoomAndPan);
+ parseZoomAndPan(start, start + value.length());
} else {
const UChar* start = value.characters16();
- parseZoomAndPan(start, start + value.length(), zoomAndPan);
+ parseZoomAndPan(start, start + value.length());
}
}
- target->setZoomAndPan(zoomAndPan);
return true;
}
return false;
}
- SVGZoomAndPanType zoomAndPan() const { return SVGZoomAndPanUnknown; }
+ // SVGZoomAndPan JS API.
+ static SVGZoomAndPanType zoomAndPan(SVGZoomAndPan* object) { return object->m_zoomAndPan; }
+ static void setZoomAndPan(SVGZoomAndPan* object, unsigned short value, ExceptionState&) { object->setZoomAndPan(value); }
+ static void setZoomAndPan(SVGViewSpec*, unsigned short, ExceptionState&);
+
+ void setZoomAndPan(unsigned short value) { m_zoomAndPan = parseFromNumber(value); }
+ SVGZoomAndPanType zoomAndPan() const { return m_zoomAndPan; }
+
+protected:
+ SVGZoomAndPan();
+ void resetZoomAndPan();
- // These methods only exist to allow us to compile V8/JSSVGZoomAndPan.*.
- // These are never called, and thus ASSERT_NOT_REACHED.
- void ref();
- void deref();
- void setZoomAndPan(unsigned short);
+private:
+ SVGZoomAndPanType m_zoomAndPan;
};
} // namespace WebCore