\hypertarget{a01926}{}\doxysection{AAX\+\_\+\+CRange\+Taper\+Delegate\texorpdfstring{$<$}{<} T, Real\+Precision \texorpdfstring{$>$}{>} Class Template Reference}
\label{a01926}\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}


{\ttfamily \#include $<$AAX\+\_\+\+CRange\+Taper\+Delegate.\+h$>$}



Inheritance diagram for AAX\+\_\+\+CRange\+Taper\+Delegate\texorpdfstring{$<$}{<} T, Real\+Precision \texorpdfstring{$>$}{>}\+:
% FIG 0


Collaboration diagram for AAX\+\_\+\+CRange\+Taper\+Delegate\texorpdfstring{$<$}{<} T, Real\+Precision \texorpdfstring{$>$}{>}\+:
% FIG 1


\doxysubsection{Description}
\subsubsection*{template$<$typename T, int32\+\_\+t Real\+Precision = 1000$>$\newline
class AAX\+\_\+\+CRange\+Taper\+Delegate$<$ T, Real\+Precision $>$}
A piecewise-\/linear taper conforming to \mbox{\hyperlink{a02338}{AAX\+\_\+\+ITaper\+Delegate}}. 

This taper spaces a parameter\textquotesingle{}s real values between its minimum and maximum using a series of linear regions to create the full mapping between the parameter\textquotesingle{}s real and normalized values.

Here is an example of how this taper can be used\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keywordtype}{float}\ rangePoints[]\ =\ \{\ 0.0,\ 1.0,\ 100.0,\ 1000.0,\ 2000.0\ \};}
\DoxyCodeLine{\textcolor{keywordtype}{double}\ rangeSteps[]\ =\ \{\ 0.1,\ 1.0,\ 10.0,\ 25.0\ \};\ \textcolor{comment}{//\ number\ of\ steps\ per\ range:\ 10,\ 99,\ 90,\ 40\ }}
\DoxyCodeLine{\textcolor{keyword}{const}\ \textcolor{keywordtype}{long}\ cNumRanges\ =\ \textcolor{keyword}{sizeof}(rangeSteps)/\textcolor{keyword}{sizeof}(rangeSteps[0]);}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{long}\ numSteps\ =\ 0;}
\DoxyCodeLine{\textcolor{keywordflow}{for}\ (\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ cNumRanges;\ i++)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \ numSteps\ +=\ (rangePoints[i+1]\ -\/\ rangePoints[i])\ /\ rangeSteps[i];}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{a01926}{AAX\_CRangeTaperDelegate<float>}}\ nonLinearTaper(rangePoints,\ rangeSteps,\ cNumRanges);}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{float}\ controlValue\ =\ 1.5;}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{double}\ normalized\ =\ nonLinearTaper.RealToNormalized(controlValue);}
\DoxyCodeLine{\textcolor{keywordtype}{float}\ real\ =\ nonLinearTaper.NormalizedToReal(normalized);}

\end{DoxyCode}


\begin{DoxyParagraph}{Real\+Precision}
In addition to its type templatization, this taper includes a precision template parameter. Real\+Precision is a multiplier that works in conjunction with the round() function to limit the precision of the real values provided by this taper. For example, if Real\+Precision is 1000, it will round to the closest 0.\+001 when doing any sort of value conversion. If Real\+Precision is 1, it will round to the nearest integer. If Real\+Precision is 1000000, it will round to the nearest 0.\+000001. This is particularly useful for preventing things like 1.\+9999999 truncating down to 1 instead of rounding up to 2.
\end{DoxyParagraph}
To accomplish this behavior, the taper multiplies its unrounded parameter values by Real\+Precision, rounds the result to the nearest valid value, then divides Real\+Precision back out.

Rounding will be disabled if Real\+Precision is set to a value less than 1 \doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{a01926_a91bd04f35a1aaaa0bec997da03baec0c}{AAX\+\_\+\+CRange\+Taper\+Delegate}} (T $\ast$range, double $\ast$ranges\+Steps, unsigned long num\+Ranges, bool use\+Smart\+Rounding=true)
\begin{DoxyCompactList}\small\item\em Constructs a Range Taper with specified minimum and maximum values. \end{DoxyCompactList}\item 
\mbox{\hyperlink{a01926_a4c2f8d8cad37e465c16008628d8a9282}{AAX\+\_\+\+CRange\+Taper\+Delegate}} (const \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}} \&rhs)
\item 
\mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}} \& \mbox{\hyperlink{a01926_abb6a95a43a8614a1c83fc84208d2e8f1}{operator=}} (\mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}} \&rhs)
\item 
\mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$ $\ast$ \mbox{\hyperlink{a01926_a787f7649ff4b94af1642bfa0198007a2}{Clone}} () const \mbox{\hyperlink{a00542_ac2f24a5172689ae684344abdcce55463}{AAX\+\_\+\+OVERRIDE}}
\begin{DoxyCompactList}\small\item\em Constructs and returns a copy of the taper delegate. \end{DoxyCompactList}\item 
T \mbox{\hyperlink{a01926_a94f30f1ae6f4be57d2fe44928fb4a467}{Get\+Minimum\+Value}} () const \mbox{\hyperlink{a00542_ac2f24a5172689ae684344abdcce55463}{AAX\+\_\+\+OVERRIDE}}
\begin{DoxyCompactList}\small\item\em Returns the taper\textquotesingle{}s minimum real value. \end{DoxyCompactList}\item 
T \mbox{\hyperlink{a01926_a37653711483325931180ed54234b63ec}{Get\+Maximum\+Value}} () const \mbox{\hyperlink{a00542_ac2f24a5172689ae684344abdcce55463}{AAX\+\_\+\+OVERRIDE}}
\begin{DoxyCompactList}\small\item\em Returns the taper\textquotesingle{}s maximum real value. \end{DoxyCompactList}\item 
T \mbox{\hyperlink{a01926_aecea5b86d9f5c6a5b1af87ba04d8473d}{Constrain\+Real\+Value}} (T value) const \mbox{\hyperlink{a00542_ac2f24a5172689ae684344abdcce55463}{AAX\+\_\+\+OVERRIDE}}
\begin{DoxyCompactList}\small\item\em Applies a contraint to the value and returns the constrained value. \end{DoxyCompactList}\item 
T \mbox{\hyperlink{a01926_a50b58efa795c9973ab199d4f5bb31de4}{Normalized\+To\+Real}} (double normalized\+Value) const \mbox{\hyperlink{a00542_ac2f24a5172689ae684344abdcce55463}{AAX\+\_\+\+OVERRIDE}}
\begin{DoxyCompactList}\small\item\em Converts a normalized value to a real value. \end{DoxyCompactList}\item 
double \mbox{\hyperlink{a01926_a457a42ac3e78debf4c595ac1afeec7cf}{Real\+To\+Normalized}} (T real\+Value) const \mbox{\hyperlink{a00542_ac2f24a5172689ae684344abdcce55463}{AAX\+\_\+\+OVERRIDE}}
\begin{DoxyCompactList}\small\item\em Normalizes a real parameter value. \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{DoxyCompactItemize}
\item 
virtual \mbox{\hyperlink{a02338}{AAX\+\_\+\+ITaper\+Delegate}} $\ast$ \mbox{\hyperlink{a02338_a710ff3aae07de10dfebe7c027e4b33e2}{Clone}} () const =0
\begin{DoxyCompactList}\small\item\em Constructs and returns a copy of the taper delegate. \end{DoxyCompactList}\item 
virtual T \mbox{\hyperlink{a02338_a9b14f7d73d614b6c012ed03fadb9f0eb}{Get\+Maximum\+Value}} () const =0
\begin{DoxyCompactList}\small\item\em Returns the taper\textquotesingle{}s maximum real value. \end{DoxyCompactList}\item 
virtual T \mbox{\hyperlink{a02338_ac51bda25adc6f4ce320c0dd41fa332c7}{Get\+Minimum\+Value}} () const =0
\begin{DoxyCompactList}\small\item\em Returns the taper\textquotesingle{}s minimum real value. \end{DoxyCompactList}\item 
virtual T \mbox{\hyperlink{a02338_a1de7acdc2b3e114b6686bf845c2465f1}{Constrain\+Real\+Value}} (T value) const =0
\begin{DoxyCompactList}\small\item\em Applies a contraint to the value and returns the constrained value. \end{DoxyCompactList}\item 
virtual T \mbox{\hyperlink{a02338_a0aea0765b42855205bfab84673a2de33}{Normalized\+To\+Real}} (double normalized\+Value) const =0
\begin{DoxyCompactList}\small\item\em Converts a normalized value to a real value. \end{DoxyCompactList}\item 
virtual double \mbox{\hyperlink{a02338_ab017fe7e1c1dcf6191f8b4e8b09f8add}{Real\+To\+Normalized}} (T real\+Value) const =0
\begin{DoxyCompactList}\small\item\em Normalizes a real parameter value. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions inherited from \mbox{\hyperlink{a02334}{AAX\+\_\+\+ITaper\+Delegate\+Base}}}
\begin{DoxyCompactItemize}
\item 
virtual \mbox{\hyperlink{a02334_a38bf3326334b9bc248c62faff2492d38}{$\sim$\+AAX\+\_\+\+ITaper\+Delegate\+Base}} ()
\begin{DoxyCompactList}\small\item\em Virtual destructor. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
T \mbox{\hyperlink{a01926_a67b913916d7296ad69bf262363704e6f}{Round}} (double i\+Value) const
\item 
T \mbox{\hyperlink{a01926_a4b0c76eb0cd262598dbe5118068fbefb}{Smart\+Round}} (double value) const
\end{DoxyCompactItemize}


\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{a01926_a91bd04f35a1aaaa0bec997da03baec0c}\label{a01926_a91bd04f35a1aaaa0bec997da03baec0c}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!AAX\_CRangeTaperDelegate@{AAX\_CRangeTaperDelegate}}
\index{AAX\_CRangeTaperDelegate@{AAX\_CRangeTaperDelegate}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{AAX\_CRangeTaperDelegate()}{AAX\_CRangeTaperDelegate()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision$>$ \\
\mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\mbox{\hyperlink{a01926}{\+::\+AAX\+\_\+\+CRange\+Taper\+Delegate}} (\begin{DoxyParamCaption}\item[{T $\ast$}]{range,  }\item[{double $\ast$}]{ranges\+Steps,  }\item[{unsigned long}]{num\+Ranges,  }\item[{bool}]{use\+Smart\+Rounding = {\ttfamily true} }\end{DoxyParamCaption})}



Constructs a Range Taper with specified minimum and maximum values. 

\begin{DoxyNote}{Note}
The parameter\textquotesingle{}s default value should lie within the min to max range.
\end{DoxyNote}

\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em range} & An array of range endpoints along the taper\textquotesingle{}s mapping range \\
\hline
\mbox{\texttt{ in}}  & {\em ranges\+Steps} & Step values for each region in the taper\textquotesingle{}s stepwise-\/linear map. No values in this array may be zero. \\
\hline
\mbox{\texttt{ in}}  & {\em num\+Ranges} & The total number of linear regions in the taper\textquotesingle{}s map \\
\hline
\mbox{\texttt{ in}}  & {\em use\+Smart\+Rounding} & \\
\hline
\end{DoxyParams}
\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{a00878__todo000023}{Todo}}]Document use\+Smart\+Rounding parameter \end{DoxyRefDesc}
\mbox{\Hypertarget{a01926_a4c2f8d8cad37e465c16008628d8a9282}\label{a01926_a4c2f8d8cad37e465c16008628d8a9282}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!AAX\_CRangeTaperDelegate@{AAX\_CRangeTaperDelegate}}
\index{AAX\_CRangeTaperDelegate@{AAX\_CRangeTaperDelegate}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{AAX\_CRangeTaperDelegate()}{AAX\_CRangeTaperDelegate()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision$>$ \\
\mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\mbox{\hyperlink{a01926}{\+::\+AAX\+\_\+\+CRange\+Taper\+Delegate}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$ \&}]{rhs }\end{DoxyParamCaption})}



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{a01926_abb6a95a43a8614a1c83fc84208d2e8f1}\label{a01926_abb6a95a43a8614a1c83fc84208d2e8f1}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!operator=@{operator=}}
\index{operator=@{operator=}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision$>$ \\
\mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$ \& \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\+::operator= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$ \&}]{rhs }\end{DoxyParamCaption})}

\mbox{\Hypertarget{a01926_a787f7649ff4b94af1642bfa0198007a2}\label{a01926_a787f7649ff4b94af1642bfa0198007a2}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!Clone@{Clone}}
\index{Clone@{Clone}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{Clone()}{Clone()}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision$>$ \\
\mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$ $\ast$ \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\+::\+Clone (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



Constructs and returns a copy of the taper delegate. 

In general, this method\textquotesingle{}s implementation can use a simple copy constructor\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{AAX\_CSubclassTaperDelegate<T>*\ \ AAX\_CSubclassTaperDelegate<T>::Clone()\textcolor{keyword}{\ const}}
\DoxyCodeLine{\textcolor{keyword}{}\{}
\DoxyCodeLine{\ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{new}\ AAX\_CSubclassTaperDelegate(*\textcolor{keyword}{this});}
\DoxyCodeLine{\}}

\end{DoxyCode}
 

Implements \mbox{\hyperlink{a02338_a710ff3aae07de10dfebe7c027e4b33e2}{AAX\+\_\+\+ITaper\+Delegate$<$ T $>$}}.

\mbox{\Hypertarget{a01926_a94f30f1ae6f4be57d2fe44928fb4a467}\label{a01926_a94f30f1ae6f4be57d2fe44928fb4a467}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!GetMinimumValue@{GetMinimumValue}}
\index{GetMinimumValue@{GetMinimumValue}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{GetMinimumValue()}{GetMinimumValue()}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision = 1000$>$ \\
T \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\+::\+Get\+Minimum\+Value (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Returns the taper\textquotesingle{}s minimum real value. 



Implements \mbox{\hyperlink{a02338_ac51bda25adc6f4ce320c0dd41fa332c7}{AAX\+\_\+\+ITaper\+Delegate$<$ T $>$}}.

\mbox{\Hypertarget{a01926_a37653711483325931180ed54234b63ec}\label{a01926_a37653711483325931180ed54234b63ec}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!GetMaximumValue@{GetMaximumValue}}
\index{GetMaximumValue@{GetMaximumValue}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{GetMaximumValue()}{GetMaximumValue()}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision = 1000$>$ \\
T \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\+::\+Get\+Maximum\+Value (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Returns the taper\textquotesingle{}s maximum real value. 



Implements \mbox{\hyperlink{a02338_a9b14f7d73d614b6c012ed03fadb9f0eb}{AAX\+\_\+\+ITaper\+Delegate$<$ T $>$}}.

\mbox{\Hypertarget{a01926_aecea5b86d9f5c6a5b1af87ba04d8473d}\label{a01926_aecea5b86d9f5c6a5b1af87ba04d8473d}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!ConstrainRealValue@{ConstrainRealValue}}
\index{ConstrainRealValue@{ConstrainRealValue}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{ConstrainRealValue()}{ConstrainRealValue()}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision$>$ \\
T \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\+::\+Constrain\+Real\+Value (\begin{DoxyParamCaption}\item[{T}]{value }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



Applies a contraint to the value and returns the constrained value. 

This method is useful if the taper requires a contraint beyond simple minimum and maximum real value limits.

\begin{DoxyNote}{Note}
This is the function that should actually enforces the constraints in Normalize\+To\+Real() and \mbox{\hyperlink{a01926_a457a42ac3e78debf4c595ac1afeec7cf}{Real\+To\+Normalized()}}.
\end{DoxyNote}

\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em value} & The unconstrained value \\
\hline
\end{DoxyParams}


Implements \mbox{\hyperlink{a02338_a1de7acdc2b3e114b6686bf845c2465f1}{AAX\+\_\+\+ITaper\+Delegate$<$ T $>$}}.

\mbox{\Hypertarget{a01926_a50b58efa795c9973ab199d4f5bb31de4}\label{a01926_a50b58efa795c9973ab199d4f5bb31de4}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!NormalizedToReal@{NormalizedToReal}}
\index{NormalizedToReal@{NormalizedToReal}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{NormalizedToReal()}{NormalizedToReal()}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision$>$ \\
T \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\+::\+Normalized\+To\+Real (\begin{DoxyParamCaption}\item[{double}]{normalized\+Value }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



Converts a normalized value to a real value. 

This is where the actual taper algorithm is implemented.

This function should perform the exact inverse of \mbox{\hyperlink{a01926_a457a42ac3e78debf4c595ac1afeec7cf}{Real\+To\+Normalized()}}, to within the roundoff precision of the individual taper implementation.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em normalized\+Value} & The normalized value that will be converted \\
\hline
\end{DoxyParams}


Implements \mbox{\hyperlink{a02338_a0aea0765b42855205bfab84673a2de33}{AAX\+\_\+\+ITaper\+Delegate$<$ T $>$}}.

\mbox{\Hypertarget{a01926_a457a42ac3e78debf4c595ac1afeec7cf}\label{a01926_a457a42ac3e78debf4c595ac1afeec7cf}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!RealToNormalized@{RealToNormalized}}
\index{RealToNormalized@{RealToNormalized}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{RealToNormalized()}{RealToNormalized()}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision$>$ \\
double \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\+::\+Real\+To\+Normalized (\begin{DoxyParamCaption}\item[{T}]{real\+Value }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



Normalizes a real parameter value. 

This is where the actual taper algorithm is implemented.

This function should perform the exact inverse of \mbox{\hyperlink{a01926_a50b58efa795c9973ab199d4f5bb31de4}{Normalized\+To\+Real()}}, to within the roundoff precision of the individual taper implementation.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em real\+Value} & The real parameter value that will be normalized \\
\hline
\end{DoxyParams}


Implements \mbox{\hyperlink{a02338_ab017fe7e1c1dcf6191f8b4e8b09f8add}{AAX\+\_\+\+ITaper\+Delegate$<$ T $>$}}.

\mbox{\Hypertarget{a01926_a67b913916d7296ad69bf262363704e6f}\label{a01926_a67b913916d7296ad69bf262363704e6f}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!Round@{Round}}
\index{Round@{Round}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{Round()}{Round()}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision$>$ \\
T \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\+::\+Round (\begin{DoxyParamCaption}\item[{double}]{i\+Value }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [protected]}}

\mbox{\Hypertarget{a01926_a4b0c76eb0cd262598dbe5118068fbefb}\label{a01926_a4b0c76eb0cd262598dbe5118068fbefb}} 
\index{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}!SmartRound@{SmartRound}}
\index{SmartRound@{SmartRound}!AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$@{AAX\_CRangeTaperDelegate$<$ T, RealPrecision $>$}}
\doxysubsubsection{\texorpdfstring{SmartRound()}{SmartRound()}}
{\footnotesize\ttfamily template$<$typename T , int32\+\_\+t Real\+Precision$>$ \\
T \mbox{\hyperlink{a01926}{AAX\+\_\+\+CRange\+Taper\+Delegate}}$<$ T, Real\+Precision $>$\+::\+Smart\+Round (\begin{DoxyParamCaption}\item[{double}]{value }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [protected]}}

\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{a00878__todo000024}{Todo}}]Document \end{DoxyRefDesc}


The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{a00665}{AAX\+\_\+\+CRange\+Taper\+Delegate.\+h}}\end{DoxyCompactItemize}
