Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

vtkAbstractPaletteMaterial.h

Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- 00002 * 00003 * $Id: vtkAbstractPaletteMaterial.h,v 1.1 2004/06/02 11:35:08 xpxqx Exp $ 00004 * 00005 * Copyright (c) 2004 Sean McInerney 00006 * All rights reserved. 00007 * 00008 * See Copyright.txt or http://vtkextensions.sourceforge.net/Copyright.html 00009 * for details. 00010 * 00011 * This software is distributed WITHOUT ANY WARRANTY; without even 00012 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 * PURPOSE. See the above copyright notice for more information. 00014 * 00015 */ 00016 #ifndef VTK_ABSTRACT_PALETTE_MATERIAL_H_ 00017 # define VTK_ABSTRACT_PALETTE_MATERIAL_H_ 00018 # include "vtkPaletteElement.h" 00019 00020 00021 # define VTK_PALETTE_COLOR_NONE 0x00 00022 # define VTK_PALETTE_COLOR_ALPHA 0x01 00023 # define VTK_PALETTE_COLOR_RGB 0x02 00024 # define VTK_PALETTE_COLOR_HSV 0x04 00025 # define VTK_PALETTE_COLOR_HSL 0x08 00026 # define VTK_PALETTE_COLOR_RGBA ( VTK_PALETTE_COLOR_RGB | VTK_PALETTE_COLOR_ALPHA ) 00027 # define VTK_PALETTE_COLOR_HSVA ( VTK_PALETTE_COLOR_HSV | VTK_PALETTE_COLOR_ALPHA ) 00028 # define VTK_PALETTE_COLOR_HSLA ( VTK_PALETTE_COLOR_HSL | VTK_PALETTE_COLOR_ALPHA ) 00029 # define VTK_PALETTE_COLOR_CSS 0x10 00030 # define VTK_PALETTE_COLOR_XREF 0x20 00031 # define VTK_PALETTE_COLOR_USER 0x40 00032 00033 00034 VTK_EXTENSIONS_PALETTE_NAMESPACE_BEGIN 00035 00046 class VTK_EXTENSIONS_PALETTE_EXPORT vtkAbstractPaletteMaterial 00047 : public vtkPaletteElement 00048 { 00049 public: 00050 vtkTypeRevisionMacro (vtkAbstractPaletteMaterial, vtkPaletteElement); 00051 00054 vtkGetMacro(Type, int); 00055 vtkSetMacro(Type, int); 00060 vtkGetObjectMacro(XRef, vtkAbstractPaletteMaterial); 00061 vtkSetObjectMacro(XRef, vtkAbstractPaletteMaterial); 00066 virtual void GetColor (double& c0, double& c1, double& c2) = 0; 00067 virtual void SetColor (double c0, double c1, double c2) = 0; 00068 void GetColor (double v[3]); 00069 void SetColor (double v[3]); 00074 virtual double GetOpacity (void) = 0; 00075 virtual void SetOpacity (double) = 0; 00080 virtual void GetAmbientColor (double& c0, double& c1, double& c2)= 0; 00081 virtual void SetAmbientColor (double c0, double c1, double c2)= 0; 00082 void GetAmbientColor (double v[3]); 00083 void SetAmbientColor (double v[3]); 00088 virtual void GetDiffuseColor (double& c0, double& c1, double& c2)= 0; 00089 virtual void SetDiffuseColor (double c0, double c1, double c2)= 0; 00090 void GetDiffuseColor (double v[3]); 00091 void SetDiffuseColor (double v[3]); 00096 virtual void GetSpecularColor (double& c0, double& c1, double& c2)=0; 00097 virtual void SetSpecularColor (double c0, double c1, double c2)=0; 00098 void GetSpecularColor (double v[3]); 00099 void SetSpecularColor (double v[3]); 00104 virtual double GetSpecularPower (void) = 0; 00105 virtual void SetSpecularPower (double) = 0; 00108 //BTX 00112 static void ConvertColor (double const& c0, 00113 double const& c1, 00114 double const& c2, 00115 double const& opacity, 00116 vtkAbstractPaletteMaterial* & o); 00117 00119 static void ConvertColor (unsigned char const& c0, 00120 unsigned char const& c1, 00121 unsigned char const& c2, 00122 unsigned char const& opacity, 00123 vtkAbstractPaletteMaterial* & o); 00124 00126 static void ConvertColor (vtkColorWord const& color, 00127 vtkAbstractPaletteMaterial* & o); 00128 00130 static void ConvertColor (vtkAbstractPaletteMaterial* const& o, 00131 double & c0, 00132 double & c1, 00133 double & c2, 00134 double & opacity); 00135 00137 static void ConvertColor (vtkAbstractPaletteMaterial* const& o, 00138 unsigned char & c0, 00139 unsigned char & c1, 00140 unsigned char & c2, 00141 unsigned char & opacity); 00142 00144 static void ConvertColor (vtkAbstractPaletteMaterial* const& o, 00145 vtkColorWord & color); 00148 static const vtkXMLChType* const typeString; 00149 static const vtkXMLChType* const xrefString; 00150 00151 static const vtkXMLChType* const RGBString; 00152 static const vtkXMLChType* const HSVString; 00153 static const vtkXMLChType* const HSLString; 00154 static const vtkXMLChType* const RGBAString; 00155 static const vtkXMLChType* const HSVAString; 00156 static const vtkXMLChType* const HSLAString; 00157 static const vtkXMLChType* const CSSString; 00158 static const vtkXMLChType* const XREFString; 00159 //ETX 00160 00161 protected: 00162 vtkAbstractPaletteMaterial (void); 00163 ~vtkAbstractPaletteMaterial(); 00164 00165 //BTX 00166 void MarshalAttributes (ostream&); 00167 00168 void UnmarshalAttribute (const vtkXMLChType* const& attr, 00169 const vtkXMLChType* const& value); 00170 00171 int Type; 00172 vtkAbstractPaletteMaterial* XRef; 00173 //ETX 00174 00175 private: 00181 vtkAbstractPaletteMaterial (const vtkAbstractPaletteMaterial&); 00182 void operator= (const vtkAbstractPaletteMaterial&); 00184 }; 00185 00186 // ---------------------------------------------------------------------------- 00187 inline void 00188 vtkAbstractPaletteMaterial::GetColor (double a[3]) 00189 { 00190 this->GetColor(a[0], a[1], a[2]); 00191 } 00192 00193 inline void 00194 vtkAbstractPaletteMaterial::SetColor (double a[3]) 00195 { 00196 this->SetColor(a[0], a[1], a[2]); 00197 } 00198 00199 inline void 00200 vtkAbstractPaletteMaterial::GetAmbientColor (double a[3]) 00201 { 00202 this->GetAmbientColor(a[0], a[1], a[2]); 00203 } 00204 00205 inline void 00206 vtkAbstractPaletteMaterial::SetAmbientColor (double a[3]) 00207 { 00208 this->SetAmbientColor(a[0], a[1], a[2]); 00209 } 00210 00211 inline void 00212 vtkAbstractPaletteMaterial::GetDiffuseColor (double a[3]) 00213 { 00214 this->GetDiffuseColor(a[0], a[1], a[2]); 00215 } 00216 00217 inline void 00218 vtkAbstractPaletteMaterial::SetDiffuseColor (double a[3]) 00219 { 00220 this->SetDiffuseColor(a[0], a[1], a[2]); 00221 } 00222 00223 inline void 00224 vtkAbstractPaletteMaterial::GetSpecularColor (double a[3]) 00225 { 00226 this->GetSpecularColor(a[0], a[1], a[2]); 00227 } 00228 00229 inline void 00230 vtkAbstractPaletteMaterial::SetSpecularColor (double a[3]) 00231 { 00232 this->SetSpecularColor(a[0], a[1], a[2]); 00233 } 00234 00235 // ---------------------------------------------------------------------------- 00236 inline void 00237 vtkAbstractPaletteMaterial:: 00238 ConvertColor (double const& a0, 00239 double const& a1, 00240 double const& a2, 00241 double const& a3, 00242 vtkAbstractPaletteMaterial* & aObject) 00243 { 00244 if (aObject != NULL) 00245 { 00246 aObject->SetColor(a0, a1, a2); 00247 aObject->SetOpacity(a3); 00248 } 00249 } 00250 00251 inline void 00252 vtkAbstractPaletteMaterial:: 00253 ConvertColor (unsigned char const& a0, 00254 unsigned char const& a1, 00255 unsigned char const& a2, 00256 unsigned char const& a3, 00257 vtkAbstractPaletteMaterial* & aObject) 00258 { 00259 double c0 = double(a0) / double(VTK_EXTENSIONS_UINT8_MAX); 00260 double c1 = double(a1) / double(VTK_EXTENSIONS_UINT8_MAX); 00261 double c2 = double(a2) / double(VTK_EXTENSIONS_UINT8_MAX); 00262 double c3 = double(a3) / double(VTK_EXTENSIONS_UINT8_MAX); 00263 00264 vtkAbstractPaletteMaterial::ConvertColor(c0, c1, c2, c3, aObject); 00265 } 00266 00267 inline void 00268 vtkAbstractPaletteMaterial:: 00269 ConvertColor (vtkColorWord const& aColor, 00270 vtkAbstractPaletteMaterial* & aObject) 00271 { 00272 vtkAbstractPaletteMaterial:: 00273 ConvertColor( VTK_EXTENSIONS_GET_COLORBYTE(aColor, 0), 00274 VTK_EXTENSIONS_GET_COLORBYTE(aColor, 1), 00275 VTK_EXTENSIONS_GET_COLORBYTE(aColor, 2), 00276 VTK_EXTENSIONS_GET_COLORBYTE(aColor, 3), 00277 aObject ); 00278 } 00279 00280 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00281 inline void 00282 vtkAbstractPaletteMaterial:: 00283 ConvertColor (vtkAbstractPaletteMaterial* const& aObject, 00284 double & a0, 00285 double & a1, 00286 double & a2, 00287 double & a3) 00288 { 00289 if (aObject != NULL) 00290 { 00291 aObject->GetColor(a0, a1, a2); 00292 a3 = aObject->GetOpacity(); 00293 } 00294 else 00295 { 00296 a0 = a1 = a2 = a3 = 1.0; 00297 } 00298 } 00299 00300 inline void 00301 vtkAbstractPaletteMaterial:: 00302 ConvertColor (vtkAbstractPaletteMaterial* const& aObject, 00303 unsigned char & a0, 00304 unsigned char & a1, 00305 unsigned char & a2, 00306 unsigned char & a3) 00307 { 00308 double c0, c1, c2, c3; 00309 00310 vtkAbstractPaletteMaterial::ConvertColor(aObject, c0, c1, c2, c3); 00311 00312 a0 = (unsigned char)( (c0>1.0 ? 1.0 : (c0<0.0 ? 0.0 : c0)) * 00313 double(VTK_EXTENSIONS_UINT8_MAX) + 0.5 ); 00314 a1 = (unsigned char)( (c1>1.0 ? 1.0 : (c1<0.0 ? 0.0 : c1)) * 00315 double(VTK_EXTENSIONS_UINT8_MAX) + 0.5 ); 00316 a2 = (unsigned char)( (c2>1.0 ? 1.0 : (c2<0.0 ? 0.0 : c2)) * 00317 double(VTK_EXTENSIONS_UINT8_MAX) + 0.5 ); 00318 a3 = (unsigned char)( (c3>1.0 ? 1.0 : (c3<0.0 ? 0.0 : c3)) * 00319 double(VTK_EXTENSIONS_UINT8_MAX) + 0.5 ); 00320 } 00321 00322 inline void 00323 vtkAbstractPaletteMaterial:: 00324 ConvertColor (vtkAbstractPaletteMaterial* const& aObject, 00325 vtkColorWord & aColor) 00326 { 00327 vtkAbstractPaletteMaterial:: 00328 ConvertColor( aObject, 00329 ((unsigned char *) &aColor)[0], 00330 ((unsigned char *) &aColor)[1], 00331 ((unsigned char *) &aColor)[2], 00332 ((unsigned char *) &aColor)[3] ); 00333 } 00334 00335 VTK_EXTENSIONS_PALETTE_NAMESPACE_END 00336 00337 #endif /* VTK_ABSTRACT_PALETTE_MATERIAL_H_ */ 00338 /* 00339 * End of: $Id: vtkAbstractPaletteMaterial.h,v 1.1 2004/06/02 11:35:08 xpxqx Exp $. 00340 * 00341 */

Generated on Tue Aug 10 03:37:04 2004 for vtkExtensions by doxygen 1.3.7