00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkXMLMaterial.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00026 #ifndef __vtkXMLMaterial_h 00027 #define __vtkXMLMaterial_h 00028 00029 #include "vtkObject.h" 00030 00031 class vtkXMLDataElement; 00032 class vtkXMLMaterialInternals; 00033 class vtkXMLShader; 00034 00035 class VTK_IO_EXPORT vtkXMLMaterial : public vtkObject 00036 { 00037 public: 00038 static vtkXMLMaterial* New(); 00039 vtkTypeMacro(vtkXMLMaterial, vtkObject); 00040 void PrintSelf(ostream& os, vtkIndent indent); 00041 00046 static vtkXMLMaterial* CreateInstance(const char* name); 00047 00049 int GetNumberOfProperties(); 00050 00052 int GetNumberOfTextures(); 00053 00055 int GetNumberOfVertexShaders(); 00056 00058 int GetNumberOfFragmentShaders(); 00059 00061 vtkXMLDataElement* GetProperty(int id=0); 00062 00064 vtkXMLDataElement* GetTexture(int id=0); 00065 00067 vtkXMLShader* GetVertexShader(int id=0); 00068 00070 vtkXMLShader* GetFragmentShader(int id=0); 00071 00073 00074 vtkGetObjectMacro(RootElement, vtkXMLDataElement); 00075 void SetRootElement(vtkXMLDataElement*); 00077 00080 int GetShaderLanguage(); 00081 00083 int GetShaderStyle(); 00084 00085 protected: 00086 vtkXMLMaterial(); 00087 ~vtkXMLMaterial(); 00088 00089 vtkXMLDataElement* RootElement; 00090 vtkXMLMaterialInternals* Internals; 00091 private: 00092 vtkXMLMaterial(const vtkXMLMaterial&); // Not implemented. 00093 void operator=(const vtkXMLMaterial&); // Not implemented. 00094 }; 00095 00096 #endif 00097