1 #pragma once
2 
3 #include <QString>
4 #include <QVariant>
5 
6 #include "util/class.h"
7 #include "effects/effectmanifestparameter.h"
8 
9 class EngineEffectParameter {
10   public:
EngineEffectParameter(EffectManifestParameterPointer parameter)11     EngineEffectParameter(EffectManifestParameterPointer parameter)
12             : m_pParameter(parameter) {
13         // NOTE(rryan): This is just to set the parameter values to sane
14         // defaults. When an effect is loaded into the engine it is supposed to
15         // immediately send a parameter update. Some effects will go crazy if
16         // their parameters are not within the manifest's minimum/maximum bounds
17         // so just to be safe we read the min/max/default from the manifest
18         // here.
19         m_minimum = m_pParameter->getMinimum();
20         m_maximum = m_pParameter->getMaximum();
21         m_defaultValue = m_pParameter->getDefault();
22         m_value = m_defaultValue;
23     }
~EngineEffectParameter()24     virtual ~EngineEffectParameter() { }
25 
26     ///////////////////////////////////////////////////////////////////////////
27     // Parameter Information
28     ///////////////////////////////////////////////////////////////////////////
29 
id()30     const QString& id() const {
31         return m_pParameter->id();
32     }
name()33     const QString& name() const {
34         return m_pParameter->name();
35     }
description()36     const QString& description() const {
37         return m_pParameter->description();
38     }
39 
40     ///////////////////////////////////////////////////////////////////////////
41     // Value Settings
42     ///////////////////////////////////////////////////////////////////////////
43 
value()44     inline double value() const {
45         return m_value;
46     }
setValue(const double value)47     inline void setValue(const double value) {
48         m_value = value;
49     }
toInt()50     inline int toInt() const {
51         return static_cast<int>(m_value);
52     }
toBool()53     inline int toBool() const {
54         return m_value > 0.0;
55     }
56 
defaultValue()57     inline double defaultValue() const {
58         return m_defaultValue;
59     }
setDefaultValue(const double default_value)60     inline void setDefaultValue(const double default_value) {
61         m_defaultValue = default_value;
62     }
63 
minimum()64     inline double minimum() const {
65         return m_minimum;
66     }
setMinimum(const double minimum)67     inline void setMinimum(const double minimum) {
68         m_minimum = minimum;
69     }
70 
maximum()71     inline double maximum() const {
72         return m_maximum;
73     }
setMaximum(const double maximum)74     inline void setMaximum(const double maximum) {
75         m_maximum = maximum;
76     }
77 
78   private:
79     EffectManifestParameterPointer m_pParameter;
80     double m_value;
81     double m_defaultValue;
82     double m_minimum;
83     double m_maximum;
84 
85     DISALLOW_COPY_AND_ASSIGN(EngineEffectParameter);
86 };
87