00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
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
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
00160
00161
protected:
00162 vtkAbstractPaletteMaterial (
void);
00163 ~vtkAbstractPaletteMaterial();
00164
00165
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
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
00338
00339
00340
00341