1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include "SMILEnumType.h"
7 #include "nsSMILValue.h"
14 SMILEnumType::Init(nsSMILValue
& aValue
) const
16 NS_PRECONDITION(aValue
.IsNull(), "Unexpected value type");
22 SMILEnumType::Destroy(nsSMILValue
& aValue
) const
24 NS_PRECONDITION(aValue
.mType
== this, "Unexpected SMIL value");
26 aValue
.mType
= nsSMILNullType::Singleton();
30 SMILEnumType::Assign(nsSMILValue
& aDest
, const nsSMILValue
& aSrc
) const
32 NS_PRECONDITION(aDest
.mType
== aSrc
.mType
, "Incompatible SMIL types");
33 NS_PRECONDITION(aDest
.mType
== this, "Unexpected SMIL value");
34 aDest
.mU
.mUint
= aSrc
.mU
.mUint
;
39 SMILEnumType::IsEqual(const nsSMILValue
& aLeft
,
40 const nsSMILValue
& aRight
) const
42 NS_PRECONDITION(aLeft
.mType
== aRight
.mType
, "Incompatible SMIL types");
43 NS_PRECONDITION(aLeft
.mType
== this, "Unexpected type for SMIL value");
45 return aLeft
.mU
.mUint
== aRight
.mU
.mUint
;
49 SMILEnumType::Add(nsSMILValue
& aDest
, const nsSMILValue
& aValueToAdd
,
50 uint32_t aCount
) const
52 NS_PRECONDITION(aValueToAdd
.mType
== aDest
.mType
,
53 "Trying to add invalid types");
54 NS_PRECONDITION(aValueToAdd
.mType
== this, "Unexpected source type");
55 return NS_ERROR_FAILURE
; // enum values can't be added to each other
59 SMILEnumType::ComputeDistance(const nsSMILValue
& aFrom
,
60 const nsSMILValue
& aTo
,
61 double& aDistance
) const
63 NS_PRECONDITION(aFrom
.mType
== aTo
.mType
,"Trying to compare different types");
64 NS_PRECONDITION(aFrom
.mType
== this, "Unexpected source type");
65 return NS_ERROR_FAILURE
; // there is no concept of distance between enum values
69 SMILEnumType::Interpolate(const nsSMILValue
& aStartVal
,
70 const nsSMILValue
& aEndVal
,
72 nsSMILValue
& aResult
) const
74 NS_PRECONDITION(aStartVal
.mType
== aEndVal
.mType
,
75 "Trying to interpolate different types");
76 NS_PRECONDITION(aStartVal
.mType
== this,
77 "Unexpected types for interpolation");
78 NS_PRECONDITION(aResult
.mType
== this, "Unexpected result type");
79 return NS_ERROR_FAILURE
; // enum values do not interpolate
82 } // namespace mozilla