Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itkRGBPixel.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkRGBPixel.h,v $ 00005 Language: C++ 00006 Date: $Date: 2003/09/10 14:29:24 $ 00007 Version: $Revision: 1.29 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 #ifndef __itkRGBPixel_h 00018 #define __itkRGBPixel_h 00019 00020 // Undefine an eventual RGBPixel macro 00021 #ifdef RGBPixel 00022 #undef RGBPixel 00023 #endif 00024 00025 #include <itkIndent.h> 00026 #include <itkFixedArray.h> 00027 #include "vnl/vnl_math.h" 00028 00029 namespace itk 00030 { 00031 00050 template < typename TComponent = unsigned short > 00051 class RGBPixel: public FixedArray<TComponent,3> 00052 { 00053 public: 00055 typedef RGBPixel Self; 00056 typedef FixedArray<TComponent, 3> SuperClass; 00057 00059 itkStaticConstMacro(Dimension, unsigned int, 3); 00060 00062 typedef FixedArray<TComponent, 3> BaseArray; 00063 00065 typedef TComponent ComponentType; 00066 typedef typename SuperClass::ValueType ValueType; 00067 00069 RGBPixel() {Fill(0);} 00070 RGBPixel (const ComponentType& r) { Fill(r); } 00071 00073 RGBPixel(const Self& r): BaseArray(r) {} 00074 RGBPixel(const ComponentType r[3]): BaseArray(r) {} 00075 00077 Self& operator= (const Self& r); 00078 Self& operator= (const ComponentType r[3]); 00079 00081 Self operator+(const Self &vec) const; 00082 Self operator-(const Self &vec) const; 00083 const Self & operator+=(const Self &vec); 00084 const Self & operator-=(const Self &vec); 00085 Self operator*(const ComponentType &f) const; 00086 00087 00089 static int GetNumberOfComponents(){ return 3;} 00090 00092 ComponentType GetNthComponent(int c) const 00093 { return this->operator[](c); } 00094 00096 ComponentType GetScalarValue() const 00097 { 00098 return static_cast<ComponentType> (vcl_sqrt( 00099 static_cast<double>(this->operator[](0)) * static_cast<double>(this->operator[](0)) + 00100 static_cast<double>(this->operator[](1)) * static_cast<double>(this->operator[](1)) + 00101 static_cast<double>(this->operator[](2)) * static_cast<double>(this->operator[](2)))); 00102 } 00103 00105 void SetNthComponent(int c, const ComponentType& v) 00106 { this->operator[](c) = v; } 00107 00109 void SetRed( ComponentType red ) { this->operator[](0) = red;} 00110 00112 void SetGreen( ComponentType green ) {this->operator[](1) = green;} 00113 00115 void SetBlue( ComponentType blue ) {this->operator[](2) = blue;} 00116 00118 void Set( ComponentType red, ComponentType green, ComponentType blue ) 00119 { this->operator[](0) = red; this->operator[](1) = green; this->operator[](2) = blue;} 00120 00122 const ComponentType & GetRed( void ) const { return this->operator[](0);} 00123 00125 const ComponentType & GetGreen( void ) const { return this->operator[](1);} 00126 00128 const ComponentType & GetBlue( void ) const { return this->operator[](2);} 00129 00131 ComponentType GetLuminance( void ) const; 00132 }; 00133 00134 00135 template< typename TComponent > 00136 ITK_EXPORT std::ostream& operator<<(std::ostream& os, 00137 const RGBPixel<TComponent> & c); 00138 template< typename TComponent > 00139 ITK_EXPORT std::istream& operator>>(std::istream& is, 00140 RGBPixel<TComponent> & c); 00141 00142 } // end namespace itk 00143 00144 #ifndef ITK_MANUAL_INSTANTIATION 00145 #include "itkRGBPixel.txx" 00146 #endif 00147 00148 #endif

Generated at Sat Mar 31 02:28:05 2007 for ITK by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2000