| /*
|
| * Copyright 2006 Sony Computer Entertainment Inc.
|
| *
|
| * Licensed under the MIT Open Source License, for details please see license.txt or the website
|
| * http://www.opensource.org/licenses/mit-license.php
|
| *
|
| */ |
| |
| #ifndef __domFx_surface_init_common_h__ |
| #define __domFx_surface_init_common_h__ |
| |
| #include <dae/daeDocument.h> |
| #include <dom/domTypes.h> |
| #include <dom/domElements.h> |
| |
| #include <dom/domFx_surface_init_cube_common.h> |
| #include <dom/domFx_surface_init_volume_common.h> |
| #include <dom/domFx_surface_init_planar_common.h> |
| #include <dom/domFx_surface_init_from_common.h> |
| class DAE; |
| |
| /** |
| * The common set of initalization options for surfaces. Choose which is |
| * appropriate for your surface based on type and other characteristics. described |
| * by the annotation docs on the child elements. |
| */ |
| class domFx_surface_init_common : public daeElement |
| { |
| public: |
| virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::FX_SURFACE_INIT_COMMON; } |
| static daeInt ID() { return 168; } |
| virtual daeInt typeID() const { return ID(); } |
| public: |
| class domInit_as_null; |
| |
| typedef daeSmartRef<domInit_as_null> domInit_as_nullRef; |
| typedef daeTArray<domInit_as_nullRef> domInit_as_null_Array; |
| |
| /** |
| * This surface is intended to be initialized later externally by a "setparam" |
| * element. If it is used before being initialized there is profile and platform |
| * specific behavior. Most elements on the surface element containing this |
| * will be ignored including mip_levels, mipmap_generate, size, viewport_ratio, |
| * and format. |
| */ |
| class domInit_as_null : public daeElement |
| { |
| public: |
| virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::INIT_AS_NULL; } |
| static daeInt ID() { return 169; } |
| virtual daeInt typeID() const { return ID(); } |
| |
| protected: |
| /** |
| * Constructor |
| */ |
| domInit_as_null(DAE& dae) : daeElement(dae) {} |
| /** |
| * Destructor |
| */ |
| virtual ~domInit_as_null() {} |
| /** |
| * Overloaded assignment operator |
| */ |
| virtual domInit_as_null &operator=( const domInit_as_null &cpy ) { (void)cpy; return *this; } |
| |
| public: // STATIC METHODS |
| /** |
| * Creates an instance of this class and returns a daeElementRef referencing it. |
| * @return a daeElementRef referencing an instance of this object. |
| */ |
| static DLLSPEC daeElementRef create(DAE& dae); |
| /** |
| * Creates a daeMetaElement object that describes this element in the meta object reflection framework. |
| * If a daeMetaElement already exists it will return that instead of creating a new one. |
| * @return A daeMetaElement describing this COLLADA element. |
| */ |
| static DLLSPEC daeMetaElement* registerElement(DAE& dae); |
| }; |
| |
| class domInit_as_target; |
| |
| typedef daeSmartRef<domInit_as_target> domInit_as_targetRef; |
| typedef daeTArray<domInit_as_targetRef> domInit_as_target_Array; |
| |
| /** |
| * Init as a target for depth, stencil, or color. It does not need image |
| * data. Surface should not have mipmap_generate when using this. |
| */ |
| class domInit_as_target : public daeElement |
| { |
| public: |
| virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::INIT_AS_TARGET; } |
| static daeInt ID() { return 170; } |
| virtual daeInt typeID() const { return ID(); } |
| |
| protected: |
| /** |
| * Constructor |
| */ |
| domInit_as_target(DAE& dae) : daeElement(dae) {} |
| /** |
| * Destructor |
| */ |
| virtual ~domInit_as_target() {} |
| /** |
| * Overloaded assignment operator |
| */ |
| virtual domInit_as_target &operator=( const domInit_as_target &cpy ) { (void)cpy; return *this; } |
| |
| public: // STATIC METHODS |
| /** |
| * Creates an instance of this class and returns a daeElementRef referencing it. |
| * @return a daeElementRef referencing an instance of this object. |
| */ |
| static DLLSPEC daeElementRef create(DAE& dae); |
| /** |
| * Creates a daeMetaElement object that describes this element in the meta object reflection framework. |
| * If a daeMetaElement already exists it will return that instead of creating a new one. |
| * @return A daeMetaElement describing this COLLADA element. |
| */ |
| static DLLSPEC daeMetaElement* registerElement(DAE& dae); |
| }; |
| |
| |
| |
| protected: // Elements |
| /** |
| * This surface is intended to be initialized later externally by a "setparam" |
| * element. If it is used before being initialized there is profile and platform |
| * specific behavior. Most elements on the surface element containing this |
| * will be ignored including mip_levels, mipmap_generate, size, viewport_ratio, |
| * and format. @see domInit_as_null |
| */ |
| domInit_as_nullRef elemInit_as_null; |
| /** |
| * Init as a target for depth, stencil, or color. It does not need image |
| * data. Surface should not have mipmap_generate when using this. @see domInit_as_target |
| */ |
| domInit_as_targetRef elemInit_as_target; |
| /** |
| * Init a CUBE from a compound image such as DDS @see domInit_cube |
| */ |
| domFx_surface_init_cube_commonRef elemInit_cube; |
| /** |
| * Init a 3D from a compound image such as DDS @see domInit_volume |
| */ |
| domFx_surface_init_volume_commonRef elemInit_volume; |
| /** |
| * Init a 1D,2D,RECT,DEPTH from a compound image such as DDS @see domInit_planar |
| */ |
| domFx_surface_init_planar_commonRef elemInit_planar; |
| /** |
| * Initialize the surface one sub-surface at a time by specifying combinations |
| * of mip, face, and slice which make sense for a particular surface type. |
| * Each sub-surface is initialized by a common 2D image, not a complex compound |
| * image such as DDS. If not all subsurfaces are initialized, it is invalid |
| * and will result in profile and platform specific behavior unless mipmap_generate |
| * is responsible for initializing the remainder of the sub-surfaces @see |
| * domInit_from |
| */ |
| domFx_surface_init_from_common_Array elemInit_from_array; |
| /** |
| * Used to preserve order in elements that do not specify strict sequencing of sub-elements. |
| */ |
| daeElementRefArray _contents; |
| /** |
| * Used to preserve order in elements that have a complex content model. |
| */ |
| daeUIntArray _contentsOrder; |
| |
| /** |
| * Used to store information needed for some content model objects. |
| */ |
| daeTArray< daeCharArray * > _CMData; |
| |
| |
| public: //Accessors and Mutators |
| /** |
| * Gets the init_as_null element. |
| * @return a daeSmartRef to the init_as_null element. |
| */ |
| const domInit_as_nullRef getInit_as_null() const { return elemInit_as_null; } |
| /** |
| * Gets the init_as_target element. |
| * @return a daeSmartRef to the init_as_target element. |
| */ |
| const domInit_as_targetRef getInit_as_target() const { return elemInit_as_target; } |
| /** |
| * Gets the init_cube element. |
| * @return a daeSmartRef to the init_cube element. |
| */ |
| const domFx_surface_init_cube_commonRef getInit_cube() const { return elemInit_cube; } |
| /** |
| * Gets the init_volume element. |
| * @return a daeSmartRef to the init_volume element. |
| */ |
| const domFx_surface_init_volume_commonRef getInit_volume() const { return elemInit_volume; } |
| /** |
| * Gets the init_planar element. |
| * @return a daeSmartRef to the init_planar element. |
| */ |
| const domFx_surface_init_planar_commonRef getInit_planar() const { return elemInit_planar; } |
| /** |
| * Gets the init_from element array. |
| * @return Returns a reference to the array of init_from elements. |
| */ |
| domFx_surface_init_from_common_Array &getInit_from_array() { return elemInit_from_array; } |
| /** |
| * Gets the init_from element array. |
| * @return Returns a constant reference to the array of init_from elements. |
| */ |
| const domFx_surface_init_from_common_Array &getInit_from_array() const { return elemInit_from_array; } |
| /** |
| * Gets the _contents array. |
| * @return Returns a reference to the _contents element array. |
| */ |
| daeElementRefArray &getContents() { return _contents; } |
| /** |
| * Gets the _contents array. |
| * @return Returns a constant reference to the _contents element array. |
| */ |
| const daeElementRefArray &getContents() const { return _contents; } |
| |
| protected: |
| /** |
| * Constructor |
| */ |
| domFx_surface_init_common(DAE& dae) : daeElement(dae), elemInit_as_null(), elemInit_as_target(), elemInit_cube(), elemInit_volume(), elemInit_planar(), elemInit_from_array() {} |
| /** |
| * Destructor |
| */ |
| virtual ~domFx_surface_init_common() { daeElement::deleteCMDataArray(_CMData); } |
| /** |
| * Overloaded assignment operator |
| */ |
| virtual domFx_surface_init_common &operator=( const domFx_surface_init_common &cpy ) { (void)cpy; return *this; } |
| |
| public: // STATIC METHODS |
| /** |
| * Creates an instance of this class and returns a daeElementRef referencing it. |
| * @return a daeElementRef referencing an instance of this object. |
| */ |
| static DLLSPEC daeElementRef create(DAE& dae); |
| /** |
| * Creates a daeMetaElement object that describes this element in the meta object reflection framework. |
| * If a daeMetaElement already exists it will return that instead of creating a new one. |
| * @return A daeMetaElement describing this COLLADA element. |
| */ |
| static DLLSPEC daeMetaElement* registerElement(DAE& dae); |
| }; |
| |
| |
| #endif |