Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _MITKSHADERREPOSITORY_H_
00019 #define _MITKSHADERREPOSITORY_H_
00020
00021 #include "mitkCommon.h"
00022 #include "itkObject.h"
00023 #include "itkObjectFactory.h"
00024 #include <vtkXMLDataElement.h>
00025
00026 #include "mitkBaseRenderer.h"
00027 #include "mitkDataNode.h"
00028
00029 namespace mitk {
00030
00040 class MITK_CORE_EXPORT ShaderRepository : public itk::Object
00041 {
00042 public:
00043
00044 mitkClassMacro( ShaderRepository, itk::Object );
00045
00046 itkNewMacro( Self );
00047
00048 static ShaderRepository *GetGlobalShaderRepository();
00049
00050 class Shader : public itk::Object
00051 {
00052 public:
00053
00054 mitkClassMacro( Shader, itk::Object );
00055 itkNewMacro( Self );
00056
00057 class Uniform : public itk::Object
00058 {
00059 public:
00060
00061 mitkClassMacro( Uniform, itk::Object );
00062 itkNewMacro( Self );
00063
00064 enum Type
00065 {
00066 glsl_none,
00067 glsl_float,
00068 glsl_vec2,
00069 glsl_vec3,
00070 glsl_vec4,
00071 glsl_int,
00072 glsl_ivec2,
00073 glsl_ivec3,
00074 glsl_ivec4
00075 };
00076
00080 Uniform();
00081
00085 ~Uniform();
00086
00087 Type type;
00088 std::string name;
00089
00090 int defaultInt[4];
00091 float defaultFloat[4];
00092
00093 void LoadFromXML(vtkXMLDataElement *e);
00094 };
00095
00096 std::list<Uniform::Pointer> uniforms;
00097
00101 Shader();
00102
00106 ~Shader();
00107
00108 std::string name;
00109 std::string path;
00110
00111 void LoadPropertiesFromPath();
00112
00113 Uniform *GetUniform(char * ) { return 0; }
00114
00115 std::list<Uniform::Pointer> *GetUniforms()
00116 {
00117 return &uniforms;
00118 }
00119 };
00120
00121
00122
00123 protected:
00124
00125 std::list<Shader::Pointer> shaders;
00126
00127 void LoadShaders();
00128
00132 ShaderRepository();
00133
00137 ~ShaderRepository();
00138
00139 public:
00140
00141 std::list<Shader::Pointer> *GetShaders()
00142 {
00143 return &shaders;
00144 }
00145
00146 Shader *GetShader(const char *id);
00147
00148
00152 void AddDefaultProperties(mitk::DataNode* node, mitk::BaseRenderer* renderer, bool overwrite);
00153
00157 void ApplyProperties(mitk::DataNode* node, vtkActor *actor, mitk::BaseRenderer* renderer,itk::TimeStamp &MTime);
00158
00161 void LoadShader(std::string filename);
00162
00163
00164 };
00165
00166 }
00167 #endif