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 itkCustomColormapFunction_h 19 #define itkCustomColormapFunction_h 20 21 #include "itkColormapFunction.h" 22 23 #include <vector> 24 25 namespace itk 26 { 27 namespace Function 28 { 29 /** 30 * \class CustomColormapFunction 31 * \brief Function object which maps a scalar value into an RGB colormap value. 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 CustomColormapFunction: 46 public ColormapFunction< TScalar, TRGBPixel > 47 { 48 public: 49 ITK_DISALLOW_COPY_AND_ASSIGN(CustomColormapFunction); 50 51 using Self = CustomColormapFunction; 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 using ChannelType = std::vector< RealType >; 64 65 RGBPixelType operator()(const TScalar &) const override; 66 SetRedChannel(ChannelType red)67 void SetRedChannel(ChannelType red) 68 { 69 m_RedChannel = red; 70 } 71 GetRedChannel()72 ChannelType GetRedChannel() const 73 { 74 return m_RedChannel; 75 } 76 SetGreenChannel(ChannelType green)77 void SetGreenChannel(ChannelType green) 78 { 79 m_GreenChannel = green; 80 } 81 GetGreenChannel()82 ChannelType GetGreenChannel() const 83 { 84 return m_GreenChannel; 85 } 86 SetBlueChannel(ChannelType blue)87 void SetBlueChannel(ChannelType blue) 88 { 89 m_BlueChannel = blue; 90 } 91 GetBlueChannel()92 ChannelType GetBlueChannel() const 93 { 94 return m_BlueChannel; 95 } 96 97 protected: 98 CustomColormapFunction() = default; 99 ~CustomColormapFunction() override = default; 100 101 private: 102 ChannelType m_RedChannel; 103 ChannelType m_GreenChannel; 104 ChannelType m_BlueChannel; 105 }; 106 } // end namespace Function 107 } // end namespace itk 108 109 #ifndef ITK_MANUAL_INSTANTIATION 110 #include "itkCustomColormapFunction.hxx" 111 #endif 112 113 #endif 114