// -*- C++ -*- #ifndef RITEXTURE_H #define RITEXTURE_H /* Copyright 1998 * Tue Oct 20 13:27:14 1998 Brian Smits (bes@phoenix.cs.utah.edu) * * RiTexture.H * * * * $Id: RiTexture.H,v 1.2 1999/10/01 18:27:12 bes Exp $ * */ #ifndef RICOMMON_H #include #endif #ifndef RIVECTOR3_H #include #endif #ifndef RIVECTOR2_H #include #endif #ifndef RIAFFINETMATRIX3_H #include #endif #ifndef RISPECTRUM_H #include #endif #ifndef RIMATERIAL_H #include #endif /*************************************************************** CLASS RiTexture DESCRIPTION ****************************************************************/ class RiTexture { public: // GROUP: Constructors and assignment //// Destructor virtual ~RiTexture(); // GROUP: Accessors //// virtual RiReal GetScalar(RiMaterialRegion &hit) = 0; //// virtual RiVector2 GetVector2(RiMaterialRegion &hit) = 0; //// virtual RiVector3 GetVector3(RiMaterialRegion &hit) = 0; //// virtual RiSpectrum GetSpectrum(RiMaterialRegion &hit) = 0; // GROUP: Members private: }; class RiScalarTextureProxy { public: RiScalarTextureProxy(); RiScalarTextureProxy(RiReal val); RiScalarTextureProxy(RiTexture *tex); RiReal GetValue(RiMaterialRegion &hit); private: bool textured; RiReal val; RiTexture *tex; }; class RiVector2TextureProxy { public: RiVector2TextureProxy(); RiVector2TextureProxy(RiVector2 val); RiVector2TextureProxy(RiTexture *tex); RiVector2 GetValue(RiMaterialRegion &hit); private: bool textured; RiVector2 val; RiTexture *tex; }; class RiVector3TextureProxy { friend class RiSpectrumTextureProxy; public: RiVector3TextureProxy(); RiVector3TextureProxy(RiVector3 val); RiVector3TextureProxy(RiTexture *tex); RiVector3 GetValue(RiMaterialRegion &hit); private: bool textured; RiVector3 val; RiTexture *tex; }; class RiSpectrumTextureProxy { public: RiSpectrumTextureProxy(); RiSpectrumTextureProxy(RiSpectrum val); RiSpectrumTextureProxy(RiReal red, RiReal green, RiReal blue); RiSpectrumTextureProxy(RiTexture *tex, bool rgbTexture = false); // RiSpectrumTextureProxy(const RiVector3TextureProxy &); RiSpectrum GetValue(RiMaterialRegion &hit); private: bool textured; bool rgbTexture; RiSpectrum val; RiTexture *tex; }; class Ri3DCheckerTexture : public RiTexture { public: // group: Constructors and assignment Ri3DCheckerTexture(const RiAffineTMatrix3 &placement, bool xOn = true, bool yOn = true, bool zOn = true); //// void SetColor1(const RiSpectrumTextureProxy &color1); //// void SetColor2(const RiSpectrumTextureProxy &color2); //// virtual RiReal GetScalar(RiMaterialRegion &hit); //// virtual RiVector2 GetVector2(RiMaterialRegion &hit); //// virtual RiVector3 GetVector3(RiMaterialRegion &hit); //// virtual RiSpectrum GetSpectrum(RiMaterialRegion &hit); private: RiSpectrumTextureProxy clr1; RiSpectrumTextureProxy clr2; RiAffineTMatrix3 texPlace; bool xOn, yOn, zOn; }; #endif /* RITEXTURE_H */