NVIDIA Iray API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ibsdf_measurement.h
Go to the documentation of this file.
1 //*****************************************************************************
2 // Copyright 1986, 2014 NVIDIA Corporation. All rights reserved.
3 //*****************************************************************************
6 //*****************************************************************************
7 
8 #ifndef MI_NEURAYLIB_IBSDF_MEASUREMENT_H
9 #define MI_NEURAYLIB_IBSDF_MEASUREMENT_H
10 
12 
13 namespace mi {
14 
15 class IBsdf_isotropic_data;
16 
21 class IBsdf_measurement :
34  public base::Interface_declare<0xa05e5a42,0x3f74,0x4ad9,0x8e,0xa9,0x17,0x4f,0x97,0x52,0x39,0x8a,
35  IScene_element>
36 {
37 public:
46  virtual Sint32 reset_file( const char* filename) = 0;
47 
55  virtual const char* get_filename() const = 0;
56 
63  virtual const char* get_original_filename() const = 0;
64 
72  virtual Sint32 set_reflection( const IBsdf_isotropic_data* bsdf_data) = 0;
73 
79  virtual const base::IInterface* get_reflection() const = 0;
80 
94  template<class T>
95  const T* get_reflection() const
96  {
97  const base::IInterface* ptr_iinterface = get_reflection();
98  if( !ptr_iinterface)
99  return 0;
100  const T* ptr_T = static_cast<const T*>( ptr_iinterface->get_interface( typename T::IID()));
101  ptr_iinterface->release();
102  return ptr_T;
103  }
104 
112  virtual Sint32 set_transmission( const IBsdf_isotropic_data* bsdf_data) = 0;
113 
119  virtual const base::IInterface* get_transmission() const = 0;
120 
134  template<class T>
135  const T* get_transmission() const
136  {
137  const base::IInterface* ptr_iinterface = get_transmission();
138  if( !ptr_iinterface)
139  return 0;
140  const T* ptr_T = static_cast<const T*>( ptr_iinterface->get_interface( typename T::IID()));
141  ptr_iinterface->release();
142  return ptr_T;
143  }
144 };
145  // end group mi_neuray_misc
147 
148 } // namespace mi
149 
150 #endif // MI_NEURAYLIB_IBSDF_MEASUREMENT_H