1 /*=========================================================================
2  *
3  *  Copyright Insight Software Consortium
4  *
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *         http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef itkHSVColormapFunction_h
19 #define itkHSVColormapFunction_h
20 
21 #include "itkColormapFunction.h"
22 
23 namespace itk
24 {
25 namespace Function
26 {
27 /**
28  * \class HSVColormapFunction
29  * \brief Function object which maps a scalar value into an RGB colormap value.
30  *
31  * \image html HSVColormapFunction.png "HSV colormap."
32  *
33  * \author Nicholas Tustison, Hui Zhang, Gaetan Lehmann, Paul Yushkevich
34  * and James C. Gee
35  *
36  * This code was contributed in the Insight Journal paper:
37  *
38  * "Meeting Andy Warhol Somewhere Over the Rainbow: RGB Colormapping and ITK"
39  * http://www.insight-journal.org/browse/publication/285
40  * https://hdl.handle.net/1926/1452
41  *
42  * \ingroup ITKColormap
43  */
44 template< typename TScalar, typename TRGBPixel >
45 class ITK_TEMPLATE_EXPORT HSVColormapFunction:
46   public ColormapFunction< TScalar, TRGBPixel >
47 {
48 public:
49   ITK_DISALLOW_COPY_AND_ASSIGN(HSVColormapFunction);
50 
51   using Self = HSVColormapFunction;
52   using Superclass = ColormapFunction< TScalar, TRGBPixel >;
53   using Pointer = SmartPointer< Self >;
54   using ConstPointer = SmartPointer< const Self >;
55 
56   /** Method for creation through the object factory. */
57   itkNewMacro(Self);
58 
59   using RGBPixelType = typename Superclass::RGBPixelType;
60   using ScalarType = typename Superclass::ScalarType;
61   using RealType = typename Superclass::RealType;
62 
63   RGBPixelType operator()(const TScalar &) const override;
64 
65 protected:
66   HSVColormapFunction() = default;
67   ~HSVColormapFunction() override = default;
68 };
69 } // end namespace Function
70 } // end namespace itk
71 
72 #ifndef ITK_MANUAL_INSTANTIATION
73 #include "itkHSVColormapFunction.hxx"
74 #endif
75 
76 #endif
77