00001 /* 00002 * Copyright 2006 Sony Computer Entertainment Inc. 00003 * 00004 * Licensed under the MIT Open Source License, for details please see license.txt or the website 00005 * http://www.opensource.org/licenses/mit-license.php 00006 * 00007 */ 00008 00009 #ifndef __domGlsl_surface_type_h__ 00010 #define __domGlsl_surface_type_h__ 00011 00012 #include <dae/daeDocument.h> 00013 #include <dom/domTypes.h> 00014 #include <dom/domElements.h> 00015 00016 #include <dom/domFx_surface_common.h> 00017 #include <dom/domFx_annotate_common.h> 00018 #include <dom/domFx_code_profile.h> 00019 #include <dom/domFx_include_common.h> 00020 #include <dom/domGlsl_setparam_simple.h> 00021 class DAE; 00022 00027 class domGlsl_surface_type_complexType : public domFx_surface_common_complexType 00028 { 00029 public: 00030 class domGenerator; 00031 00032 typedef daeSmartRef<domGenerator> domGeneratorRef; 00033 typedef daeTArray<domGeneratorRef> domGenerator_Array; 00034 00038 class domGenerator : public daeElement 00039 { 00040 public: 00041 virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::GENERATOR; } 00042 static daeInt ID() { return 105; } 00043 virtual daeInt typeID() const { return ID(); } 00044 public: 00045 class domName; 00046 00047 typedef daeSmartRef<domName> domNameRef; 00048 typedef daeTArray<domNameRef> domName_Array; 00049 00053 class domName : public daeElement 00054 { 00055 public: 00056 virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::NAME; } 00057 static daeInt ID() { return 106; } 00058 virtual daeInt typeID() const { return ID(); } 00059 protected: // Attribute 00060 xsNCName attrSource; 00061 00062 protected: // Value 00066 xsNCName _value; 00067 00068 public: //Accessors and Mutators 00073 xsNCName getSource() const { return attrSource; } 00078 void setSource( xsNCName atSource ) { *(daeStringRef*)&attrSource = atSource; _validAttributeArray[0] = true; } 00079 00084 xsNCName getValue() const { return _value; } 00089 void setValue( xsNCName val ) { *(daeStringRef*)&_value = val; } 00090 00091 protected: 00095 domName(DAE& dae) : daeElement(dae), attrSource(), _value() {} 00099 virtual ~domName() {} 00103 virtual domName &operator=( const domName &cpy ) { (void)cpy; return *this; } 00104 00105 public: // STATIC METHODS 00110 static DLLSPEC daeElementRef create(DAE& dae); 00116 static DLLSPEC daeMetaElement* registerElement(DAE& dae); 00117 }; 00118 00119 00120 00121 protected: // Elements 00126 domFx_annotate_common_Array elemAnnotate_array; 00131 domFx_code_profile_Array elemCode_array; 00136 domFx_include_common_Array elemInclude_array; 00140 domNameRef elemName; 00145 domGlsl_setparam_simple_Array elemSetparam_array; 00149 daeElementRefArray _contents; 00153 daeUIntArray _contentsOrder; 00154 00158 daeTArray< daeCharArray * > _CMData; 00159 00160 00161 public: //Accessors and Mutators 00166 domFx_annotate_common_Array &getAnnotate_array() { return elemAnnotate_array; } 00171 const domFx_annotate_common_Array &getAnnotate_array() const { return elemAnnotate_array; } 00176 domFx_code_profile_Array &getCode_array() { return elemCode_array; } 00181 const domFx_code_profile_Array &getCode_array() const { return elemCode_array; } 00186 domFx_include_common_Array &getInclude_array() { return elemInclude_array; } 00191 const domFx_include_common_Array &getInclude_array() const { return elemInclude_array; } 00196 const domNameRef getName() const { return elemName; } 00201 domGlsl_setparam_simple_Array &getSetparam_array() { return elemSetparam_array; } 00206 const domGlsl_setparam_simple_Array &getSetparam_array() const { return elemSetparam_array; } 00211 daeElementRefArray &getContents() { return _contents; } 00216 const daeElementRefArray &getContents() const { return _contents; } 00217 00218 protected: 00222 domGenerator(DAE& dae) : daeElement(dae), elemAnnotate_array(), elemCode_array(), elemInclude_array(), elemName(), elemSetparam_array() {} 00226 virtual ~domGenerator() { daeElement::deleteCMDataArray(_CMData); } 00230 virtual domGenerator &operator=( const domGenerator &cpy ) { (void)cpy; return *this; } 00231 00232 public: // STATIC METHODS 00237 static DLLSPEC daeElementRef create(DAE& dae); 00243 static DLLSPEC daeMetaElement* registerElement(DAE& dae); 00244 }; 00245 00246 00247 00248 protected: // Element 00252 domGeneratorRef elemGenerator; 00253 00254 public: //Accessors and Mutators 00259 const domGeneratorRef getGenerator() const { return elemGenerator; } 00260 protected: 00264 domGlsl_surface_type_complexType(DAE& dae, daeElement* elt) : domFx_surface_common_complexType(dae, elt), elemGenerator() {} 00268 virtual ~domGlsl_surface_type_complexType() {} 00272 virtual domGlsl_surface_type_complexType &operator=( const domGlsl_surface_type_complexType &cpy ) { (void)cpy; return *this; } 00273 }; 00274 00278 class domGlsl_surface_type : public daeElement, public domGlsl_surface_type_complexType 00279 { 00280 public: 00281 virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::GLSL_SURFACE_TYPE; } 00282 static daeInt ID() { return 107; } 00283 virtual daeInt typeID() const { return ID(); } 00284 protected: 00288 domGlsl_surface_type(DAE& dae) : daeElement(dae), domGlsl_surface_type_complexType(dae, this) {} 00292 virtual ~domGlsl_surface_type() {} 00296 virtual domGlsl_surface_type &operator=( const domGlsl_surface_type &cpy ) { (void)cpy; return *this; } 00297 00298 public: // STATIC METHODS 00303 static DLLSPEC daeElementRef create(DAE& dae); 00309 static DLLSPEC daeMetaElement* registerElement(DAE& dae); 00310 }; 00311 00312 00313 #endif