00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00026 #ifndef __vtkXMLShader_h
00027 #define __vtkXMLShader_h
00028
00029 #include "vtkObject.h"
00030
00031 class vtkXMLDataElement;
00032
00033 class VTK_IO_EXPORT vtkXMLShader : public vtkObject
00034 {
00035 public:
00036 static vtkXMLShader* New();
00037 vtkTypeRevisionMacro(vtkXMLShader, vtkObject);
00038 void PrintSelf(ostream& os, vtkIndent indent);
00039
00041
00042 vtkGetObjectMacro(RootElement, vtkXMLDataElement);
00043 void SetRootElement(vtkXMLDataElement*);
00045
00047 int GetLanguage();
00048
00050 int GetScope();
00051
00053 int GetLocation();
00054
00056 const char* GetName();
00057
00059 const char* GetEntry();
00060
00062 const char* GetCode();
00063
00066 const char** GetArgs();
00067
00070 static char* LocateFile(const char* filename);
00071
00072
00073 enum LanguageCodes
00074 {
00075 LANGUAGE_NONE=0,
00076 LANGUAGE_MIXED,
00077 LANGUAGE_CG,
00078 LANGUAGE_GLSL
00079 };
00080
00081 enum ScopeCodes
00082 {
00083 SCOPE_NONE=0,
00084 SCOPE_MIXED,
00085 SCOPE_VERTEX,
00086 SCOPE_FRAGMENT
00087 };
00088
00089 enum LocationCodes
00090 {
00091 LOCATION_NONE=0,
00092 LOCATION_INLINE,
00093 LOCATION_FILE,
00094 LOCATION_LIBRARY
00095 };
00096
00097 protected:
00098 vtkXMLShader();
00099 ~vtkXMLShader();
00100
00101
00102 void ReadCodeFromFile(const char* fullpath);
00103
00104 char* Code;
00105 vtkSetStringMacro(Code);
00106
00107 vtkXMLDataElement* RootElement;
00108 vtkXMLDataElement* SourceLibraryElement;
00109 void SetSourceLibraryElement(vtkXMLDataElement*);
00110
00111 char** Args;
00112 void CleanupArgs();
00113 private:
00114 vtkXMLShader(const vtkXMLShader&);
00115 void operator=(const vtkXMLShader&);
00116 };
00117
00118 #endif
00119