35 #ifndef ANA_COLOR_COLORTRAITS_H    36 #define ANA_COLOR_COLORTRAITS_H    52     void setup( 
const T & mini, 
const T & maxi );
   125   template<
typename T> 
inline   128     : _traitstype( pal, mini, maxi )
   132   template <
typename T> 
inline   135     return _traitstype.color( in );
   138   template <
typename T> 
inline   141     return _traitstype.neutralColor();
   146   template<
typename T> 
inline   148                                                  const T &, 
const T & )
   152   template <
typename T> 
inline   159   template <
typename T> 
inline   174   template <
typename T> 
inline   184   template <
typename T> 
inline   188     double fval0, fval1, val = 
static_cast<double>( in );
   191     fval0 = scale0 * val + decal0;
   192     if( fval0 > cmin0 && fval0 < cmax0 )
   194       ival0 = 
static_cast<int>( fval0 );
   196     else if( fval0 <= cmin0 )
   198     else if( fval0 >= cmax0 )
   204         colors->
dimY() == 1 )
   208         fval1 = scale1 * val + decal1;
   209         if( fval1 > cmin1 && fval1 < cmax1 )
   211           ival1 = 
static_cast<int>( fval1 );
   213         else if( fval1 <= cmin1 )
   215         else if( fval1 >= cmax1 )
   221     return (*colors)( ival0, ival1 );
   224   template <
typename T> 
inline   236     float fval0, fval1, val = 
static_cast<float>( in.
red() );
   238     fval0 = scale0 * val + decal0;
   239     if( fval0 > cmin0 && fval0 < cmax0 )
   241       ival0 = 
static_cast<int>( fval0 );
   243     else if( fval0 <= cmin0 )
   245     else if( fval0 >= cmax0 )
   251         colors->
dimY() == 1 )
   255         fval1 = scale1 * val + decal1;
   256         if( fval1 > cmin1 && fval1 < cmax1 )
   258           ival1 = 
static_cast<int>( fval1 );
   260         else if( fval1 <= cmin1 )
   262         else if( fval1 >= cmax1 )
   268     col[0] = (*colors)( ival0, ival1 )[0];
   270     val = 
static_cast<float>( in.
green() );
   272     fval0 = scale0 * val + decal0;
   273     if( fval0 > cmin0 && fval0 < cmax0 )
   275       ival0 = 
static_cast<int>( fval0 );
   277     else if( fval0 <= cmin0 )
   279     else if( fval0 >= cmax0 )
   285         colors->
dimY() == 1 )
   289         fval1 = scale1 * val + decal1;
   290         if( fval1 > cmin1 && fval1 < cmax1 ) {
   291           ival1 = 
static_cast<int>( fval1 );
   292         } 
else if( fval1 <= cmin1 )
   294         else if( fval1 >= cmax1 )
   300     col[1] = (*colors)( ival0, ival1 )[1];
   302     val = 
static_cast<float>( in.
blue() );
   304     fval0 = scale0 * val + decal0;
   305     if( fval0 > cmin0 && fval0 < cmax0 )
   307       ival0 = 
static_cast<int>( fval0 );
   309     else if( fval0 <= cmin0 )
   311     else if( fval0 >= cmax0 )
   317         colors->
dimY() == 1 )
   321         fval1 = scale1 * val + decal1;
   322         if( fval1 > cmin1 && fval1 < cmax1 ) {
   323           ival1 = 
static_cast<int>( fval1 );
   324         } 
else if( fval1 <= cmin1 )
   326         else if( fval1 >= cmax1 )
   332     col[2] = (*colors)( ival0, ival1 )[2];
   334     val = 
static_cast<float>( std::sqrt( in.
red() * in.
red()
   338     fval0 = scale0 * val + decal0;
   339     if( fval0 > cmin0 && fval0 < cmax0 ) {
   340       ival0 = 
static_cast<int>( fval0 );
   341     } 
else if( fval0 <= cmin0 )
   343     else if( fval0 >= cmax0 )
   349         colors->
dimY() == 1 )
   353         fval1 = scale1 * val + decal1;
   354         if( fval1 > cmin1 && fval1 < cmax1 ) {
   355           ival1 = 
static_cast<int>( fval1 );
   356         } 
else if( fval1 <= cmin1 )
   358         else if( fval1 >= cmax1 )
   364     col[3] = (*colors)( ival0, ival1 )[3];
   377     float fval0, fval1, val = 
static_cast<float>( in.
red() );
   379     fval0 = scale0 * val + decal0;
   380     if( fval0 > cmin0 && fval0 < cmax0 )
   382       ival0 = 
static_cast<int>( fval0 );
   384     else if( fval0 <= cmin0 )
   386     else if( fval0 >= cmax0 )
   392         colors->
dimY() == 1 )
   396         fval1 = scale1 * val + decal1;
   397         if( fval1 > cmin1 && fval1 < cmax1 )
   399           ival1 = 
static_cast<int>( fval1 );
   401         else if( fval1 <= cmin1 )
   403         else if( fval1 >= cmax1 )
   409     col[0] = (*colors)( ival0, ival1 )[0];
   411     val = 
static_cast<float>( in.
green() );
   413     fval0 = scale0 * val + decal0;
   414     if( fval0 > cmin0 && fval0 < cmax0 )
   416       ival0 = 
static_cast<int>( fval0 );
   418     else if( fval0 <= cmin0 )
   420     else if( fval0 >= cmax0 )
   426         colors->
dimY() == 1 )
   430         fval1 = scale1 * val + decal1;
   431         if( fval1 > cmin1 && fval1 < cmax1 )
   433           ival1 = 
static_cast<int>( fval1 );
   435         else if( fval1 <= cmin1 )
   437         else if( fval1 >= cmax1 )
   443     col[1] = (*colors)( ival0, ival1 )[1];
   445     val = 
static_cast<float>( in.
blue() );
   447     fval0 = scale0 * val + decal0;
   448     if( fval0 > cmin0 && fval0 < cmax0 )
   450       ival0 = 
static_cast<int>( fval0 );
   452     else if( fval0 <= cmin0 )
   454     else if( fval0 >= cmax0 )
   460         colors->
dimY() == 1 )
   464         fval1 = scale1 * val + decal1;
   465         if( fval1 > cmin1 && fval1 < cmax1 )
   467           ival1 = 
static_cast<int>( fval1 );
   469         else if( fval1 <= cmin1 )
   471         else if( fval1 >= cmax1 )
   477     col[2] = (*colors)( ival0, ival1 )[2];
   479     val = 
static_cast<float>( in.
alpha() );
   481     fval0 = scale0 * val + decal0;
   482     if( fval0 > cmin0 && fval0 < cmax0 )
   484       ival0 = 
static_cast<int>( fval0 );
   486     else if( fval0 <= cmin0 )
   488     else if( fval0 >= cmax0 )
   494         colors->
dimY() == 1 )
   498         fval1 = scale1 * val + decal1;
   499         if( fval1 > cmin1 && fval1 < cmax1 )
   501           ival1 = 
static_cast<int>( fval1 );
   503         else if( fval1 <= cmin1 )
   505         else if( fval1 >= cmax1 )
   511     col[3] = (*colors)( ival0, ival1 )[3];
 
ColorScalarPaletteTraits< T > traitstype
 
switch to the right color traits type 
 
ColorScalarPaletteTraits(const AObjectPalette *pal, const T &mini, const T &maxi)
 
const uint8_t & blue() const
 
ColorTraits(const AObjectPalette *, const T &mini, const T &maxi)
 
const uint8_t & red() const
 
T neutralColor() const
returns a black / transparent / zero color 
 
AimsRGBA color(const T &) const
 
const uint8_t & alpha() const
 
ColorNoPaletteTraits(const AObjectPalette *, const T &mini, const T &maxi)
 
AimsRGBA color(const T &) const
 
void setup(const T &mini, const T &maxi)
 
const uint8_t & green() const
 
const uint8_t & blue() const
 
AimsRGBA color(const T &) const
 
Converter value -> RGBA (high-level) 
 
int palette1DMapping() const
 
const uint8_t & green() const
 
const uint8_t & red() const