Fri, 16 Jan 2015 04:50:19 +0100
Replace accessor implementation with direct member state manipulation, by
request https://trac.torproject.org/projects/tor/ticket/9701#comment:32
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim:set ts=2 sw=2 sts=2 et cindent: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef DynamicsCompressorNode_h_
8 #define DynamicsCompressorNode_h_
10 #include "AudioNode.h"
11 #include "AudioParam.h"
13 namespace mozilla {
14 namespace dom {
16 class AudioContext;
18 class DynamicsCompressorNode : public AudioNode
19 {
20 public:
21 explicit DynamicsCompressorNode(AudioContext* aContext);
23 NS_DECL_ISUPPORTS_INHERITED
24 NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DynamicsCompressorNode, AudioNode)
26 virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
28 AudioParam* Threshold() const
29 {
30 return mThreshold;
31 }
33 AudioParam* Knee() const
34 {
35 return mKnee;
36 }
38 AudioParam* Ratio() const
39 {
40 return mRatio;
41 }
43 AudioParam* Reduction() const
44 {
45 return mReduction;
46 }
48 AudioParam* Attack() const
49 {
50 return mAttack;
51 }
53 // Called GetRelease to prevent clashing with the nsISupports::Release name
54 AudioParam* GetRelease() const
55 {
56 return mRelease;
57 }
59 virtual const char* NodeType() const
60 {
61 return "DynamicsCompressorNode";
62 }
64 virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
65 virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
67 private:
68 static void SendThresholdToStream(AudioNode* aNode);
69 static void SendKneeToStream(AudioNode* aNode);
70 static void SendRatioToStream(AudioNode* aNode);
71 static void SendAttackToStream(AudioNode* aNode);
72 static void SendReleaseToStream(AudioNode* aNode);
74 private:
75 nsRefPtr<AudioParam> mThreshold;
76 nsRefPtr<AudioParam> mKnee;
77 nsRefPtr<AudioParam> mRatio;
78 nsRefPtr<AudioParam> mReduction;
79 nsRefPtr<AudioParam> mAttack;
80 nsRefPtr<AudioParam> mRelease;
81 };
83 }
84 }
86 #endif