25 #ifndef AAX_CSTATEDISPLAYDELEGATE_H
26 #define AAX_CSTATEDISPLAYDELEGATE_H
32 #ifdef WINDOWS_VERSION
68 std::vector<AAX_CString> mStateStrings;
73 std::vector<AAX_CString> mStateStrings;
75 static bool StringTableSortFunc(
struct StringTable i,
struct StringTable j)
77 return (i.mStrLength < j.mStrLength);
80 std::vector<struct StringTable> mShortenedStrings;
86 mMinState = iMinState;
87 for (
int index = 0; iStateStrings[ index ] != 0; ++index )
88 mStateStrings.push_back(
AAX_CString( iStateStrings[ index ] ) );
94 mMinState = iOther.mMinState;
96 std::vector<AAX_CString>::const_iterator iter = iOther.mStateStrings.begin();
97 for ( ; iter != iOther.mStateStrings.end(); ++iter )
100 if ( iOther.mShortenedStrings.size() > 0 )
102 for (
int i = 0; i < (int)iOther.mShortenedStrings.size(); i++ )
103 mShortenedStrings.push_back( iOther.mShortenedStrings.at(i) );
107 template <
typename T>
110 struct StringTable shortendTable;
111 shortendTable.mStrLength = iStrLength;
112 for (
int index = 0; iStateStrings[ index ] != 0; ++index )
113 shortendTable.mStateStrings.push_back(
AAX_CString( iStateStrings[ index ] ) );
114 mShortenedStrings.push_back(shortendTable);
117 std::sort(mShortenedStrings.begin(), mShortenedStrings.end(), AAX_CStateDisplayDelegate::StringTableSortFunc );
120 template <
typename T>
126 template <
typename T>
129 T index = value - mMinState;
130 if ( index >= (T) 0 && index < (T) mStateStrings.size() )
132 *valueString = mStateStrings[ index ];
139 template <
typename T>
143 if ( mShortenedStrings.size() == 0 )
144 return this->ValueToString(value, valueString);
148 T index = value - mMinState;
150 if ( index < (T) 0 || index >= (T) mStateStrings.size() )
154 if ( mStateStrings[ index ].Length() < uint32_t(maxNumChars) )
156 *valueString = mStateStrings[ index ];
160 for (
int i = (
int)mShortenedStrings.size()-1; i >= 0; i-- )
162 struct StringTable shortStrings = mShortenedStrings.at(i);
163 if ( shortStrings.mStrLength <= maxNumChars )
165 if ( index >= (T) 0 && index < (T) shortStrings.mStateStrings.size() )
167 *valueString = shortStrings.mStateStrings[ index ];
174 struct StringTable shortestStrings = mShortenedStrings.at(0);
175 if ( index >= (T) 0 && index < (T) shortestStrings.mStateStrings.size() )
177 *valueString = shortestStrings.mStateStrings[ index ];
184 template <
typename T>
187 std::vector<AAX_CString>::const_iterator iter = mStateStrings.begin();
188 for ( T index = 0; iter != mStateStrings.end(); ++index, ++iter )
190 if (Compare(valueString,*iter))
192 *value = index + mMinState;
201 template <
typename T>
204 return valueString==stateString;
211 #endif //AAX_CSTATEDISPLAYDELEGATE_H
A generic display format conforming to AAX_IDisplayDelegate.
Definition: AAX_CStateDisplayDelegate.h:48
Classes for parameter value string conversion.
Definition: AAX_IDisplayDelegate.h:68
bool ValueToString(T value, AAX_CString *valueString) const
Converts a real parameter value to a string representation.
Definition: AAX_CStateDisplayDelegate.h:127
virtual bool Compare(const AAX_CString &valueString, const AAX_CString &stateString) const
Definition: AAX_CStateDisplayDelegate.h:202
Defines the display behavior for a parameter.
A generic AAX string class with similar functionality to std::string.
Definition: AAX_CString.h:35
bool StringToValue(const AAX_CString &valueString, T *value) const
Converts a string to a real parameter value.
Definition: AAX_CStateDisplayDelegate.h:185
AAX_IDisplayDelegate< T > * Clone() const
Constructs and returns a copy of the display delegate.
Definition: AAX_CStateDisplayDelegate.h:121
A generic AAX string class with similar functionality to std::string.
void AddShortenedStrings(const char *iStateStrings[], int iLength)
Definition: AAX_CStateDisplayDelegate.h:108