summaryrefslogtreecommitdiffstats
path: root/dom/svg/SVGAngle.cpp
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /dom/svg/SVGAngle.cpp
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'dom/svg/SVGAngle.cpp')
-rw-r--r--dom/svg/SVGAngle.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/dom/svg/SVGAngle.cpp b/dom/svg/SVGAngle.cpp
new file mode 100644
index 000000000..83d5f7ce1
--- /dev/null
+++ b/dom/svg/SVGAngle.cpp
@@ -0,0 +1,123 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "SVGAngle.h"
+#include "nsSVGAngle.h"
+#include "mozilla/dom/SVGAngleBinding.h"
+
+using namespace mozilla;
+using namespace mozilla::dom;
+
+NS_SVG_VAL_IMPL_CYCLE_COLLECTION_WRAPPERCACHED(SVGAngle, mSVGElement)
+
+NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(SVGAngle, AddRef)
+NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(SVGAngle, Release)
+
+JSObject*
+SVGAngle::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
+{
+ return SVGAngleBinding::Wrap(aCx, this, aGivenProto);
+}
+
+uint16_t
+SVGAngle::UnitType() const
+{
+ if (mType == AnimValue) {
+ return mVal->mAnimValUnit;
+ }
+ return mVal->mBaseValUnit;
+}
+
+float
+SVGAngle::Value() const
+{
+ if (mType == AnimValue) {
+ return mVal->GetAnimValue();
+ }
+ return mVal->GetBaseValue();
+}
+
+void
+SVGAngle::SetValue(float aValue, ErrorResult& rv)
+{
+ if (mType == AnimValue) {
+ rv.Throw(NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR);
+ return;
+ }
+ bool isBaseVal = mType == BaseValue;
+ mVal->SetBaseValue(aValue, isBaseVal ? mSVGElement.get() : nullptr,
+ isBaseVal);
+}
+
+float
+SVGAngle::ValueInSpecifiedUnits() const
+{
+ if (mType == AnimValue) {
+ return mVal->mAnimVal;
+ }
+ return mVal->mBaseVal;
+}
+
+void
+SVGAngle::SetValueInSpecifiedUnits(float aValue, ErrorResult& rv)
+{
+ if (mType == AnimValue) {
+ rv.Throw(NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR);
+ return;
+ } else if (mType == BaseValue) {
+ mVal->SetBaseValueInSpecifiedUnits(aValue, mSVGElement);
+ } else {
+ mVal->mBaseVal = aValue;
+ }
+}
+
+void
+SVGAngle::NewValueSpecifiedUnits(uint16_t unitType,
+ float valueInSpecifiedUnits,
+ ErrorResult& rv)
+{
+ if (mType == AnimValue) {
+ rv.Throw(NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR);
+ return;
+ }
+ rv = mVal->NewValueSpecifiedUnits(unitType, valueInSpecifiedUnits,
+ mType == BaseValue ? mSVGElement.get()
+ : nullptr);
+}
+
+void
+SVGAngle::ConvertToSpecifiedUnits(uint16_t unitType, ErrorResult& rv)
+{
+ if (mType == AnimValue) {
+ rv.Throw(NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR);
+ return;
+ }
+ rv = mVal->ConvertToSpecifiedUnits(unitType, mType == BaseValue ?
+ mSVGElement.get() : nullptr);
+}
+
+void
+SVGAngle::SetValueAsString(const nsAString& aValue, ErrorResult& rv)
+{
+ if (mType == AnimValue) {
+ rv.Throw(NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR);
+ return;
+ }
+ bool isBaseVal = mType == BaseValue;
+ rv = mVal->SetBaseValueString(aValue, isBaseVal ? mSVGElement.get() : nullptr,
+ isBaseVal);
+}
+
+void
+SVGAngle::GetValueAsString(nsAString& aValue)
+{
+ if (mType == AnimValue) {
+ mVal->GetAnimValueString(aValue);
+ } else {
+ mVal->GetBaseValueString(aValue);
+ }
+}
+