25 #ifndef AAX_CPARAMETER_H
26 #define AAX_CPARAMETER_H
290 template <
typename T>
293 mAutomatable(automatable),
297 mTaperDelegate(taperDelegate.Clone()),
298 mDisplayDelegate(displayDelegate.Clone()),
299 mAutomationDelegate(0),
301 mDefaultValue(defaultValue)
303 size_t len = strlen(identifier);
346 template <
typename T>
350 SetAutomationDelegate(0);
352 delete mTaperDelegate;
354 delete mDisplayDelegate;
355 mDisplayDelegate = 0;
358 template <
typename T>
364 template <
typename T>
370 template <
typename T>
377 template <
typename T>
380 uint32_t stringLength = name.
Length();
381 mShortenedNames[stringLength] = name;
384 template <
typename T>
388 if ((iNumCharacters >= int32_t(mName.Length())) || (mShortenedNames.empty()) || (0 > iNumCharacters))
391 std::map<uint32_t, AAX_CString>::const_iterator iter = mShortenedNames.upper_bound(static_cast<uint32_t>(iNumCharacters));
394 if (iter == mShortenedNames.begin())
402 template <
typename T>
405 mShortenedNames.clear();
413 double newNormalizedValue = mTaperDelegate->RealToNormalized(newValue);
419 if ( mAutomationDelegate )
427 mAutomationDelegate->PostSetValueRequest(Identifier(), newNormalizedValue );
438 UpdateNormalizedValue(newNormalizedValue);
442 template <
typename T>
445 T newValue = mTaperDelegate->NormalizedToReal(newNormalizedValue);
446 if (mNeedNotify || (mValue != newValue))
453 if (mAutomationDelegate)
454 mAutomationDelegate->PostCurrentValue(Identifier(), newNormalizedValue);
552 T newDefaultValue = mTaperDelegate->NormalizedToReal(newNormalizedDefault);
553 SetDefaultValue(newDefaultValue);
559 double normalizedDefault = mTaperDelegate->RealToNormalized(mDefaultValue);
560 return normalizedDefault;
566 newDefaultValue = mTaperDelegate->ConstrainRealValue(newDefaultValue);
567 mDefaultValue = newDefaultValue;
573 return mDefaultValue;
579 SetValue(mDefaultValue);
585 mNumSteps = numSteps;
597 double numSteps = (double) this->GetNumberOfSteps ();
598 if ( numSteps < 2.0 )
601 double value = this->GetNormalizedValue ();
602 double valuePerStep = 1.0 / ( numSteps - 1.0 );
603 double curStep = ( value / valuePerStep ) + 0.5;
606 else if ( curStep > (
double) ( numSteps - 1.0 ) )
607 curStep = (double) ( numSteps - 1.0 );
609 return (uint32_t) curStep;
615 double numSteps = (double) this->GetNumberOfSteps ();
616 if ( numSteps < 2.0 )
619 double valuePerStep = 1.0 / ( numSteps - 1.0 );
620 double value = valuePerStep * (double) iStep;
623 else if ( value > 1.0 )
626 this->SetNormalizedValue ( value );
632 mControlType = iControlType;
644 mOrientation = iOrientation;
656 T newValue = mTaperDelegate->NormalizedToReal(normalizedNewValue);
664 return mTaperDelegate->RealToNormalized(val);
671 return mDisplayDelegate->ValueToString(GetValue(), valueString);
677 return mDisplayDelegate->ValueToString(GetValue(), valueString);
680 template <
typename T>
685 if (!mDisplayDelegate->StringToValue(valueString, &value))
689 *normalizedValue = mTaperDelegate->RealToNormalized(value);
692 if ((value > mTaperDelegate->GetMaximumValue()) || (value < mTaperDelegate->GetMinimumValue()))
698 template <
typename T>
701 T value = mTaperDelegate->NormalizedToReal(normalizedValue);
702 if (!mDisplayDelegate->ValueToString(value, &valueString))
706 if ((value > mTaperDelegate->GetMaximumValue()) || (value < mTaperDelegate->GetMinimumValue()))
711 template <
typename T>
714 T value = mTaperDelegate->NormalizedToReal(normalizedValue);
715 if (!mDisplayDelegate->ValueToString(value, iMaxNumChars, &valueString))
719 if ((value > mTaperDelegate->GetMaximumValue()) || (value < mTaperDelegate->GetMinimumValue()))
728 if (!mDisplayDelegate->StringToValue(newValueString, &newValue))
737 double normalizeValue = this->GetNormalizedValue ();
744 if ( iPreserveValue )
745 this->SetValue ( mValue );
746 else this->UpdateNormalizedValue ( normalizeValue );
756 if (mAutomationDelegate != 0)
757 mAutomationDelegate->PostCurrentValue(mIdentifier, this->GetNormalizedValue());
763 return mTaperDelegate;
769 return mDisplayDelegate;
782 if ( mAutomationDelegate )
784 mAutomationDelegate->UnregisterParameter ( mIdentifier );
788 mAutomationDelegate = iAutomationDelegate;
789 if ( mAutomationDelegate )
797 if (mAutomationDelegate)
798 mAutomationDelegate->PostTouchRequest( Identifier() );
805 if (mAutomationDelegate)
806 mAutomationDelegate->PostReleaseRequest( Identifier() );
809 #endif //AAX_CParameter_H
bool GetValueAsFloat(float *value) const
Retrieves the parameter's value as a float.
Definition: AAX_CParameter.h:486
const AAX_ITaperDelegate< T > * TaperDelegate() const
Returns a reference to the parameter's taper delegate.
Definition: AAX_CParameter.h:761
std::map< uint32_t, AAX_CString > mShortenedNames
Definition: AAX_CParameter.h:267
void SetOrientation(AAX_EParameterOrientation iOrientation)
Sets the orientation of this parameter.
Definition: AAX_CParameter.h:642
Definition: AAX_Enums.h:489
bool SetValueWithBool(bool value)
Sets the parameter's value as a bool.
Definition: AAX_CParameter.h:510
AAX_EParameterType
FIC stuff that I can't include without DAE library dependence.
Definition: AAX_Enums.h:487
Defines the display behavior for a parameter.
Definition: AAX_IDisplayDelegate.h:52
Definition: AAX_CParameter.h:67
T GetValue() const
Returns the parameter's value.
Definition: AAX_CParameter.h:462
Definition: AAX_CParameter.h:64
void SetNormalizedValue(double normalizedNewValue)
Sets a parameter value using it's normalized representation.
Definition: AAX_CParameter.h:654
bool SetValueFromString(const AAX_CString &newValueString)
Converts a string to a real parameter value and sets the parameter to this value. ...
Definition: AAX_CParameter.h:725
uint32_t GetNumberOfSteps() const
Returns the number of discrete steps used by the parameter.
Definition: AAX_CParameter.h:589
void UpdateNormalizedValue(double newNormalizedValue)
Sets the parameter's state given a normalized value.
Definition: AAX_CParameter.h:443
uint32_t mNumSteps
Definition: AAX_CParameter.h:269
T mValue
Definition: AAX_CParameter.h:277
Generic implementation of an AAX_IParameter.
Definition: AAX_CParameter.h:59
virtual AAX_ITaperDelegate * Clone() const =0
Constructs and returns a copy of the taper delegate.
bool GetValueAsInt32(int32_t *value) const
Retrieves the parameter's value as an int32_t.
Definition: AAX_CParameter.h:478
Defines the taper conversion behavior for a parameter.
#define AAX_ASSERT(condition)
Asserts that a condition is true, and logs an error if the condition is false. Debug builds only...
Definition: AAX_Assert.h:186
bool mNeedNotify
Definition: AAX_CParameter.h:275
void SetAutomationDelegate(AAX_IAutomationDelegate *iAutomationDelegate)
Sets the automation delegate (if one is required)
Definition: AAX_CParameter.h:779
void SetToDefaultValue()
Restores the state of this parameter to its default value.
Definition: AAX_CParameter.h:577
AAX_ITaperDelegate< T > * mTaperDelegate
Definition: AAX_CParameter.h:272
Definition: AAX_CParameter.h:68
int32_t AAX_EParameterOrientation
Typedef for a bitfield of AAX_EParameterOrientationBits values.
Definition: AAX_Enums.h:519
AAX_CParamID Identifier() const
Returns the parameter's unique identifier.
Definition: AAX_CParameter.h:359
Definition: AAX_CParameter.h:66
Interface allowing an AAX plug-in to interact with the host's automation system.
Definition: AAX_CParameter.h:74
Classes for parameter value string conversion.
Definition: AAX_IDisplayDelegate.h:68
void SetTaperDelegate(AAX_ITaperDelegateBase &taperDelegate, bool iPreserveValue=true)
Set the parameter's taper delegate.
Definition: AAX_CParameter.h:735
Definition: AAX_Enums.h:490
bool Automatable() const
Returns true if the parameter is automatable, false if it is not.
Definition: AAX_CParameter.h:773
Classes for conversion to and from normalized parameter values.
Definition: AAX_ITaperDelegate.h:88
void SetNormalizedDefaultValue(double normalizedDefault)
Sets the parameter's default value using its normalized representation.
Definition: AAX_CParameter.h:550
double GetNormalizedValue() const
Returns the normalized representation of the parameter's current real value.
Definition: AAX_CParameter.h:661
AAX_IDisplayDelegate< T > * mDisplayDelegate
Definition: AAX_CParameter.h:273
Definition: AAX_CParameter.h:75
const AAX_CString & ShortenedName(int32_t iNumCharacters) const
Returns the parameter's shortened display name.
Definition: AAX_CParameter.h:385
bool GetValueAsDouble(double *value) const
Retrieves the parameter's value as a double.
Definition: AAX_CParameter.h:494
AAX_EParameterOrientation GetOrientation() const
Returns the orientation of this parameter.
Definition: AAX_CParameter.h:648
Interface allowing an AAX plug-in to interact with the host's event system.
Definition: AAX_IAutomationDelegate.h:46
char mIdentifier[eParemeterDefaultMaxIdentifierSize]
Definition: AAX_CParameter.h:265
Definition: AAX_Enums.h:500
bool SetValueWithString(const AAX_IString &value)
Sets the parameter's value as a string.
Definition: AAX_CParameter.h:542
Type
Definition: AAX_CParameter.h:63
A simple string container that can be passed across a binary boundary. This class, for simplicity, is not versioned and thus can never change.
Definition: AAX_IString.h:40
Defines the display behavior for a parameter.
uint32_t GetStepValue() const
Returns the current step for the current value of the parameter.
Definition: AAX_CParameter.h:595
bool GetValueAsBool(bool *value) const
Retrieves the parameter's value as a bool.
Definition: AAX_CParameter.h:469
virtual AAX_IDisplayDelegate * Clone() const =0
Constructs and returns a copy of the display delegate.
T GetDefaultValue() const
Returns the parameter's default value.
Definition: AAX_CParameter.h:571
void AddShortenedName(const AAX_CString &name)
Sets the parameter's shortened display name.
Definition: AAX_CParameter.h:378
double GetNormalizedDefaultValue() const
Returns the normalized representation of the parameter's real default value.
Definition: AAX_CParameter.h:557
AAX_EParameterOrientation mOrientation
Definition: AAX_CParameter.h:271
void SetNumberOfSteps(uint32_t numSteps)
Sets the number of discrete steps for this parameter.
Definition: AAX_CParameter.h:583
A generic AAX string class with similar functionality to std::string.
Definition: AAX_CString.h:35
bool SetValueWithInt32(int32_t value)
Sets the parameter's value as an int32_t.
Definition: AAX_CParameter.h:518
void SetType(AAX_EParameterType iControlType)
Sets the type of this parameter.
Definition: AAX_CParameter.h:630
Definition: AAX_CParameter.h:65
AAX_CString mName
Definition: AAX_CParameter.h:266
bool mAutomatable
Definition: AAX_CParameter.h:268
bool GetNormalizedValueFromString(const AAX_CString &valueString, double *normalizedValue) const
Converts a given string to a normalized parameter value.
Definition: AAX_CParameter.h:681
bool GetStringFromNormalizedValue(double normalizedValue, AAX_CString &valueString) const
Converts a normalized parameter value to a string representing the corresponding real value...
Definition: AAX_CParameter.h:699
void Release()
Signals the automation system that a control has been released.
Definition: AAX_CParameter.h:802
bool GetValueAsString(AAX_IString *value) const
Retrieves the parameter's value as a string.
Definition: AAX_CParameter.h:502
void SetDisplayDelegate(AAX_IDisplayDelegateBase &displayDelegate)
Set the parameter's display delegate.
Definition: AAX_CParameter.h:750
const AAX_CString & Name() const
Returns the parameter's display name.
Definition: AAX_CParameter.h:371
virtual uint32_t Length() const
Definition: AAX_CParameter.h:73
void ClearShortenedNames()
Clears the internal list of shortened display names.
Definition: AAX_CParameter.h:403
void SetName(const AAX_CString &name)
Sets the parameter's display name.
Definition: AAX_CParameter.h:365
void Touch()
Signals the automation system that a control has been touched.
Definition: AAX_CParameter.h:794
virtual AAX_Result RegisterParameter(AAX_CParamID iParameterID)=0
void SetDefaultValue(T newDefaultValue)
Set the parameter's default value.
Definition: AAX_CParameter.h:564
AAX_EParameterType mControlType
Definition: AAX_CParameter.h:270
virtual ~AAX_CParameter()
Virtual destructor used to delete all locally allocated pointers.
Definition: AAX_CParameter.h:347
bool SetValueWithFloat(float value)
Sets the parameter's value as a float.
Definition: AAX_CParameter.h:526
T mDefaultValue
Definition: AAX_CParameter.h:278
const char * AAX_CParamID
Parameter identifier.
Definition: AAX.h:128
void SetStepValue(uint32_t iStep)
Returns the current step for the current value of the parameter.
Definition: AAX_CParameter.h:613
The base interface for all normalizable plug-in parameters.
Definition: AAX_IParameter.h:52
Definition: AAX_CParameter.h:72
A generic AAX string class with similar functionality to std::string.
Declarations for cross-platform AAX_ASSERT, AAX_TRACE and related facilities.
void SetValue(T newValue)
Initiates a host request to set the parameter's value.
Definition: AAX_CParameter.h:411
The base interface for all normalizable plug-in parameters.
Defines the taper conversion behavior for a parameter.
Definition: AAX_ITaperDelegate.h:72
const AAX_IDisplayDelegate< T > * DisplayDelegate() const
Returns a reference to the parameter's display delegate.
Definition: AAX_CParameter.h:767
AAX_IAutomationDelegate * mAutomationDelegate
Definition: AAX_CParameter.h:274
AAX_EParameterType GetType() const
Returns the type of this parameter as an AAX_EParameterType.
Definition: AAX_CParameter.h:636
bool GetValueString(AAX_CString *valueString) const
Serializes the parameter value into a string.
Definition: AAX_CParameter.h:669
bool SetValueWithDouble(double value)
Sets the parameter's value as a double.
Definition: AAX_CParameter.h:534
Defaults
Definition: AAX_CParameter.h:71