• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 * Copyright 2006 Sony Computer Entertainment Inc.
3 *
4 * Licensed under the MIT Open Source License, for details please see license.txt or the website
5 * http://www.opensource.org/licenses/mit-license.php
6 *
7 */
8 
9 #ifndef __domFx_surface_init_common_h__
10 #define __domFx_surface_init_common_h__
11 
12 #include <dae/daeDocument.h>
13 #include <dom/domTypes.h>
14 #include <dom/domElements.h>
15 
16 #include <dom/domFx_surface_init_cube_common.h>
17 #include <dom/domFx_surface_init_volume_common.h>
18 #include <dom/domFx_surface_init_planar_common.h>
19 #include <dom/domFx_surface_init_from_common.h>
20 class DAE;
21 
22 /**
23  * The common set of initalization options for surfaces.  Choose which is
24  * appropriate for your surface based on type and other characteristics. described
25  * by the annotation docs on the child elements.
26  */
27 class domFx_surface_init_common : public daeElement
28 {
29 public:
getElementType()30 	virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::FX_SURFACE_INIT_COMMON; }
ID()31 	static daeInt ID() { return 168; }
typeID()32 	virtual daeInt typeID() const { return ID(); }
33 public:
34 	class domInit_as_null;
35 
36 	typedef daeSmartRef<domInit_as_null> domInit_as_nullRef;
37 	typedef daeTArray<domInit_as_nullRef> domInit_as_null_Array;
38 
39 /**
40  * This surface is intended to be initialized later externally by a "setparam"
41  * element.  If it is used before being initialized there is profile and platform
42  * specific behavior.  Most elements on the surface element containing this
43  * will be ignored including mip_levels, mipmap_generate, size, viewport_ratio,
44  * and format.
45  */
46 	class domInit_as_null : public daeElement
47 	{
48 	public:
getElementType()49 		virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::INIT_AS_NULL; }
ID()50 		static daeInt ID() { return 169; }
typeID()51 		virtual daeInt typeID() const { return ID(); }
52 
53 	protected:
54 		/**
55 		 * Constructor
56 		 */
domInit_as_null(DAE & dae)57 		domInit_as_null(DAE& dae) : daeElement(dae) {}
58 		/**
59 		 * Destructor
60 		 */
~domInit_as_null()61 		virtual ~domInit_as_null() {}
62 		/**
63 		 * Overloaded assignment operator
64 		 */
65 		virtual domInit_as_null &operator=( const domInit_as_null &cpy ) { (void)cpy; return *this; }
66 
67 	public: // STATIC METHODS
68 		/**
69 		 * Creates an instance of this class and returns a daeElementRef referencing it.
70 		 * @return a daeElementRef referencing an instance of this object.
71 		 */
72 		static DLLSPEC daeElementRef create(DAE& dae);
73 		/**
74 		 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
75 		 * If a daeMetaElement already exists it will return that instead of creating a new one.
76 		 * @return A daeMetaElement describing this COLLADA element.
77 		 */
78 		static DLLSPEC daeMetaElement* registerElement(DAE& dae);
79 	};
80 
81 	class domInit_as_target;
82 
83 	typedef daeSmartRef<domInit_as_target> domInit_as_targetRef;
84 	typedef daeTArray<domInit_as_targetRef> domInit_as_target_Array;
85 
86 /**
87  * Init as a target for depth, stencil, or color.  It does not need image
88  * data. Surface should not have mipmap_generate when using this.
89  */
90 	class domInit_as_target : public daeElement
91 	{
92 	public:
getElementType()93 		virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::INIT_AS_TARGET; }
ID()94 		static daeInt ID() { return 170; }
typeID()95 		virtual daeInt typeID() const { return ID(); }
96 
97 	protected:
98 		/**
99 		 * Constructor
100 		 */
domInit_as_target(DAE & dae)101 		domInit_as_target(DAE& dae) : daeElement(dae) {}
102 		/**
103 		 * Destructor
104 		 */
~domInit_as_target()105 		virtual ~domInit_as_target() {}
106 		/**
107 		 * Overloaded assignment operator
108 		 */
109 		virtual domInit_as_target &operator=( const domInit_as_target &cpy ) { (void)cpy; return *this; }
110 
111 	public: // STATIC METHODS
112 		/**
113 		 * Creates an instance of this class and returns a daeElementRef referencing it.
114 		 * @return a daeElementRef referencing an instance of this object.
115 		 */
116 		static DLLSPEC daeElementRef create(DAE& dae);
117 		/**
118 		 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
119 		 * If a daeMetaElement already exists it will return that instead of creating a new one.
120 		 * @return A daeMetaElement describing this COLLADA element.
121 		 */
122 		static DLLSPEC daeMetaElement* registerElement(DAE& dae);
123 	};
124 
125 
126 
127 protected:  // Elements
128 /**
129  * This surface is intended to be initialized later externally by a "setparam"
130  * element.  If it is used before being initialized there is profile and platform
131  * specific behavior.  Most elements on the surface element containing this
132  * will be ignored including mip_levels, mipmap_generate, size, viewport_ratio,
133  * and format. @see domInit_as_null
134  */
135 	domInit_as_nullRef elemInit_as_null;
136 /**
137  * Init as a target for depth, stencil, or color.  It does not need image
138  * data. Surface should not have mipmap_generate when using this. @see domInit_as_target
139  */
140 	domInit_as_targetRef elemInit_as_target;
141 /**
142  * Init a CUBE from a compound image such as DDS @see domInit_cube
143  */
144 	domFx_surface_init_cube_commonRef elemInit_cube;
145 /**
146  * Init a 3D from a compound image such as DDS @see domInit_volume
147  */
148 	domFx_surface_init_volume_commonRef elemInit_volume;
149 /**
150  * Init a 1D,2D,RECT,DEPTH from a compound image such as DDS @see domInit_planar
151  */
152 	domFx_surface_init_planar_commonRef elemInit_planar;
153 /**
154  * Initialize the surface one sub-surface at a time by specifying combinations
155  * of mip, face, and slice which make sense for a particular surface type.
156  * Each sub-surface is initialized by a common 2D image, not a complex compound
157  * image such as DDS. If not all subsurfaces are initialized, it is invalid
158  * and will result in profile and platform specific behavior unless mipmap_generate
159  * is responsible for initializing the remainder of the sub-surfaces @see
160  * domInit_from
161  */
162 	domFx_surface_init_from_common_Array elemInit_from_array;
163 	/**
164 	 * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
165 	 */
166 	daeElementRefArray _contents;
167 	/**
168 	 * Used to preserve order in elements that have a complex content model.
169 	 */
170 	daeUIntArray       _contentsOrder;
171 
172 	/**
173 	 * Used to store information needed for some content model objects.
174 	 */
175 	daeTArray< daeCharArray * > _CMData;
176 
177 
178 public:	//Accessors and Mutators
179 	/**
180 	 * Gets the init_as_null element.
181 	 * @return a daeSmartRef to the init_as_null element.
182 	 */
getInit_as_null()183 	const domInit_as_nullRef getInit_as_null() const { return elemInit_as_null; }
184 	/**
185 	 * Gets the init_as_target element.
186 	 * @return a daeSmartRef to the init_as_target element.
187 	 */
getInit_as_target()188 	const domInit_as_targetRef getInit_as_target() const { return elemInit_as_target; }
189 	/**
190 	 * Gets the init_cube element.
191 	 * @return a daeSmartRef to the init_cube element.
192 	 */
getInit_cube()193 	const domFx_surface_init_cube_commonRef getInit_cube() const { return elemInit_cube; }
194 	/**
195 	 * Gets the init_volume element.
196 	 * @return a daeSmartRef to the init_volume element.
197 	 */
getInit_volume()198 	const domFx_surface_init_volume_commonRef getInit_volume() const { return elemInit_volume; }
199 	/**
200 	 * Gets the init_planar element.
201 	 * @return a daeSmartRef to the init_planar element.
202 	 */
getInit_planar()203 	const domFx_surface_init_planar_commonRef getInit_planar() const { return elemInit_planar; }
204 	/**
205 	 * Gets the init_from element array.
206 	 * @return Returns a reference to the array of init_from elements.
207 	 */
getInit_from_array()208 	domFx_surface_init_from_common_Array &getInit_from_array() { return elemInit_from_array; }
209 	/**
210 	 * Gets the init_from element array.
211 	 * @return Returns a constant reference to the array of init_from elements.
212 	 */
getInit_from_array()213 	const domFx_surface_init_from_common_Array &getInit_from_array() const { return elemInit_from_array; }
214 	/**
215 	 * Gets the _contents array.
216 	 * @return Returns a reference to the _contents element array.
217 	 */
getContents()218 	daeElementRefArray &getContents() { return _contents; }
219 	/**
220 	 * Gets the _contents array.
221 	 * @return Returns a constant reference to the _contents element array.
222 	 */
getContents()223 	const daeElementRefArray &getContents() const { return _contents; }
224 
225 protected:
226 	/**
227 	 * Constructor
228 	 */
domFx_surface_init_common(DAE & dae)229 	domFx_surface_init_common(DAE& dae) : daeElement(dae), elemInit_as_null(), elemInit_as_target(), elemInit_cube(), elemInit_volume(), elemInit_planar(), elemInit_from_array() {}
230 	/**
231 	 * Destructor
232 	 */
~domFx_surface_init_common()233 	virtual ~domFx_surface_init_common() { daeElement::deleteCMDataArray(_CMData); }
234 	/**
235 	 * Overloaded assignment operator
236 	 */
237 	virtual domFx_surface_init_common &operator=( const domFx_surface_init_common &cpy ) { (void)cpy; return *this; }
238 
239 public: // STATIC METHODS
240 	/**
241 	 * Creates an instance of this class and returns a daeElementRef referencing it.
242 	 * @return a daeElementRef referencing an instance of this object.
243 	 */
244 	static DLLSPEC daeElementRef create(DAE& dae);
245 	/**
246 	 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
247 	 * If a daeMetaElement already exists it will return that instead of creating a new one.
248 	 * @return A daeMetaElement describing this COLLADA element.
249 	 */
250 	static DLLSPEC daeMetaElement* registerElement(DAE& dae);
251 };
252 
253 
254 #endif
255