1 /*
2     Copyright (c) 2008-2009 NetAllied Systems GmbH
3 
4     This file is part of MayaDataModel.
5 
6     Licensed under the MIT Open Source License,
7     for details please see LICENSE file or the website
8     http://www.opensource.org/licenses/mit-license.php
9 */
10 #ifndef __MayaDM_RENDERLAYER_H__
11 #define __MayaDM_RENDERLAYER_H__
12 #include "MayaDMTypes.h"
13 #include "MayaDMConnectables.h"
14 #include "MayaDMDependNode.h"
15 namespace MayaDM
16 {
17 class RenderLayer : public DependNode
18 {
19 public:
20 	struct RenderInfo{
21 		short identification;
22 		bool renderable;
23 		unsigned char drawColor;
writeRenderInfo24 		void write(FILE* file) const
25 		{
26 			fprintf(file,"%i ", identification);
27 			fprintf(file,"%i ", renderable);
28 			fprintf(file,"%i", drawColor);
29 		}
30 	};
31 	struct RenderPassInfo{
32 		bool beauty;
33 		bool color;
34 		bool ambient;
35 		bool diffuse;
36 		bool specular;
37 		bool shadow;
writeRenderPassInfo38 		void write(FILE* file) const
39 		{
40 			fprintf(file,"%i ", beauty);
41 			fprintf(file,"%i ", color);
42 			fprintf(file,"%i ", ambient);
43 			fprintf(file,"%i ", diffuse);
44 			fprintf(file,"%i ", specular);
45 			fprintf(file,"%i", shadow);
46 		}
47 	};
48 	struct MentalRayControls{
49 		bool globalIllum;
writeMentalRayControls50 		void write(FILE* file) const
51 		{
52 			fprintf(file,"%i", globalIllum);
53 		}
54 	};
55 	struct Adjustments{
writeAdjustments56 		void write(FILE* file) const
57 		{
58 		}
59 	};
60 	struct OutAdjustments{
writeOutAdjustments61 		void write(FILE* file) const
62 		{
63 		}
64 	};
65 public:
66 
RenderLayer()67 	RenderLayer():DependNode(){}
68 	RenderLayer(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true)
69 		:DependNode(file, name, parent, "renderLayer", shared, create){}
~RenderLayer()70 	virtual ~RenderLayer(){}
71 
setGlobal(bool g)72 	void setGlobal(bool g)
73 	{
74 		if(g == false) return;
75 		fprintf(mFile,"\tsetAttr \".g\" %i;\n", g);
76 	}
setRenderInfo(const RenderInfo & ri)77 	void setRenderInfo(const RenderInfo& ri)
78 	{
79 		fprintf(mFile,"\tsetAttr \".ri\" ");
80 		ri.write(mFile);
81 		fprintf(mFile,";\n");
82 	}
setIdentification(short rlid)83 	void setIdentification(short rlid)
84 	{
85 		if(rlid == 0) return;
86 		fprintf(mFile,"\tsetAttr \".ri.rlid\" %i;\n", rlid);
87 	}
setRenderable(bool rndr)88 	void setRenderable(bool rndr)
89 	{
90 		if(rndr == true) return;
91 		fprintf(mFile,"\tsetAttr \".ri.rndr\" %i;\n", rndr);
92 	}
setDrawColor(unsigned char c)93 	void setDrawColor(unsigned char c)
94 	{
95 		if(c == 0) return;
96 		fprintf(mFile,"\tsetAttr \".ri.c\" %i;\n", c);
97 	}
setLayerParent(short rlp)98 	void setLayerParent(short rlp)
99 	{
100 		if(rlp == 0) return;
101 		fprintf(mFile,"\tsetAttr \".rlp\" %i;\n", rlp);
102 	}
setLayerChildren(size_t rlc_i,short rlc)103 	void setLayerChildren(size_t rlc_i,short rlc)
104 	{
105 		if(rlc == 0) return;
106 		fprintf(mFile,"\tsetAttr \".rlc[%i]\" %i;\n", rlc_i,rlc);
107 	}
setLayerChildren(size_t rlc_start,size_t rlc_end,short * rlc)108 	void setLayerChildren(size_t rlc_start,size_t rlc_end,short* rlc)
109 	{
110 		fprintf(mFile,"\tsetAttr \".rlc[%i:%i]\" ", rlc_start,rlc_end);
111 		size_t size = (rlc_end-rlc_start)*1+1;
112 		for(size_t i=0;i<size;++i)
113 		{
114 			fprintf(mFile,"%i",rlc[i]);
115 			if(i+1<size) fprintf(mFile," ");
116 		}
117 		fprintf(mFile,";\n");
118 	}
startLayerChildren(size_t rlc_start,size_t rlc_end)119 	void startLayerChildren(size_t rlc_start,size_t rlc_end)const
120 	{
121 		fprintf(mFile,"\tsetAttr \".rlc[%i:%i]\"",rlc_start,rlc_end);
122 	}
appendLayerChildren(short rlc)123 	void appendLayerChildren(short rlc)const
124 	{
125 		fprintf(mFile," %i",rlc);
126 	}
endLayerChildren()127 	void endLayerChildren()const
128 	{
129 		fprintf(mFile,";\n");
130 	}
setRenderPassInfo(const RenderPassInfo & rp)131 	void setRenderPassInfo(const RenderPassInfo& rp)
132 	{
133 		fprintf(mFile,"\tsetAttr \".rp\" ");
134 		rp.write(mFile);
135 		fprintf(mFile,";\n");
136 	}
setBeauty(bool b)137 	void setBeauty(bool b)
138 	{
139 		if(b == true) return;
140 		fprintf(mFile,"\tsetAttr \".rp.b\" %i;\n", b);
141 	}
setColor(bool cp)142 	void setColor(bool cp)
143 	{
144 		if(cp == false) return;
145 		fprintf(mFile,"\tsetAttr \".rp.cp\" %i;\n", cp);
146 	}
setAmbient(bool am)147 	void setAmbient(bool am)
148 	{
149 		if(am == false) return;
150 		fprintf(mFile,"\tsetAttr \".rp.am\" %i;\n", am);
151 	}
setDiffuse(bool di)152 	void setDiffuse(bool di)
153 	{
154 		if(di == false) return;
155 		fprintf(mFile,"\tsetAttr \".rp.di\" %i;\n", di);
156 	}
setSpecular(bool sp)157 	void setSpecular(bool sp)
158 	{
159 		if(sp == false) return;
160 		fprintf(mFile,"\tsetAttr \".rp.sp\" %i;\n", sp);
161 	}
setShadow(bool s)162 	void setShadow(bool s)
163 	{
164 		if(s == false) return;
165 		fprintf(mFile,"\tsetAttr \".rp.s\" %i;\n", s);
166 	}
setMentalRayControls(const MentalRayControls & mrc)167 	void setMentalRayControls(const MentalRayControls& mrc)
168 	{
169 		fprintf(mFile,"\tsetAttr \".mrc\" ");
170 		mrc.write(mFile);
171 		fprintf(mFile,";\n");
172 	}
setGlobalIllum(bool gp)173 	void setGlobalIllum(bool gp)
174 	{
175 		if(gp == false) return;
176 		fprintf(mFile,"\tsetAttr \".mrc.gp\" %i;\n", gp);
177 	}
setAdjustments(size_t adjs_i,const Adjustments & adjs)178 	void setAdjustments(size_t adjs_i,const Adjustments& adjs)
179 	{
180 		fprintf(mFile,"\tsetAttr \".adjs[%i]\" ",adjs_i);
181 		adjs.write(mFile);
182 		fprintf(mFile,";\n");
183 	}
setAdjustments(size_t adjs_start,size_t adjs_end,Adjustments * adjs)184 	void setAdjustments(size_t adjs_start,size_t adjs_end,Adjustments* adjs)
185 	{
186 		fprintf(mFile,"\tsetAttr \".adjs[%i:%i]\" ", adjs_start,adjs_end);
187 		size_t size = (adjs_end-adjs_start)*1+1;
188 		for(size_t i=0;i<size;++i)
189 		{
190 			adjs[i].write(mFile);
191 			fprintf(mFile,"\n");
192 		}
193 		fprintf(mFile,";\n");
194 	}
startAdjustments(size_t adjs_start,size_t adjs_end)195 	void startAdjustments(size_t adjs_start,size_t adjs_end)const
196 	{
197 		fprintf(mFile,"\tsetAttr \".adjs[%i:%i]\"",adjs_start,adjs_end);
198 		fprintf(mFile," -type \"Adjustments\" ");
199 	}
appendAdjustments(const Adjustments & adjs)200 	void appendAdjustments(const Adjustments& adjs)const
201 	{
202 		fprintf(mFile," ");
203 		adjs.write(mFile);
204 	}
endAdjustments()205 	void endAdjustments()const
206 	{
207 		fprintf(mFile,";\n");
208 	}
setOutAdjustments(size_t oajs_i,const OutAdjustments & oajs)209 	void setOutAdjustments(size_t oajs_i,const OutAdjustments& oajs)
210 	{
211 		fprintf(mFile,"\tsetAttr \".oajs[%i]\" ",oajs_i);
212 		oajs.write(mFile);
213 		fprintf(mFile,";\n");
214 	}
setOutAdjustments(size_t oajs_start,size_t oajs_end,OutAdjustments * oajs)215 	void setOutAdjustments(size_t oajs_start,size_t oajs_end,OutAdjustments* oajs)
216 	{
217 		fprintf(mFile,"\tsetAttr \".oajs[%i:%i]\" ", oajs_start,oajs_end);
218 		size_t size = (oajs_end-oajs_start)*1+1;
219 		for(size_t i=0;i<size;++i)
220 		{
221 			oajs[i].write(mFile);
222 			fprintf(mFile,"\n");
223 		}
224 		fprintf(mFile,";\n");
225 	}
startOutAdjustments(size_t oajs_start,size_t oajs_end)226 	void startOutAdjustments(size_t oajs_start,size_t oajs_end)const
227 	{
228 		fprintf(mFile,"\tsetAttr \".oajs[%i:%i]\"",oajs_start,oajs_end);
229 		fprintf(mFile," -type \"OutAdjustments\" ");
230 	}
appendOutAdjustments(const OutAdjustments & oajs)231 	void appendOutAdjustments(const OutAdjustments& oajs)const
232 	{
233 		fprintf(mFile," ");
234 		oajs.write(mFile);
235 	}
endOutAdjustments()236 	void endOutAdjustments()const
237 	{
238 		fprintf(mFile,";\n");
239 	}
setAttributeOverrideScript(const string & aos)240 	void setAttributeOverrideScript(const string& aos)
241 	{
242 		if(aos == "NULL") return;
243 		fprintf(mFile,"\tsetAttr \".aos\" -type \"string\" ");
244 		aos.write(mFile);
245 		fprintf(mFile,";\n");
246 	}
setDisplayOrder(short do_)247 	void setDisplayOrder(short do_)
248 	{
249 		if(do_ == 0) return;
250 		fprintf(mFile,"\tsetAttr \".do\" %i;\n", do_);
251 	}
setPsdBlendMode(short bm)252 	void setPsdBlendMode(short bm)
253 	{
254 		if(bm == 0) return;
255 		fprintf(mFile,"\tsetAttr \".bm\" %i;\n", bm);
256 	}
setPsdAlphaChannel(short ac)257 	void setPsdAlphaChannel(short ac)
258 	{
259 		if(ac == 0) return;
260 		fprintf(mFile,"\tsetAttr \".ac\" %i;\n", ac);
261 	}
getGlobal()262 	void getGlobal()const
263 	{
264 		fprintf(mFile,"\"%s.g\"",mName.c_str());
265 	}
getRenderInfo()266 	void getRenderInfo()const
267 	{
268 		fprintf(mFile,"\"%s.ri\"",mName.c_str());
269 	}
getIdentification()270 	void getIdentification()const
271 	{
272 		fprintf(mFile,"\"%s.ri.rlid\"",mName.c_str());
273 	}
getRenderable()274 	void getRenderable()const
275 	{
276 		fprintf(mFile,"\"%s.ri.rndr\"",mName.c_str());
277 	}
getDrawColor()278 	void getDrawColor()const
279 	{
280 		fprintf(mFile,"\"%s.ri.c\"",mName.c_str());
281 	}
getLayerParent()282 	void getLayerParent()const
283 	{
284 		fprintf(mFile,"\"%s.rlp\"",mName.c_str());
285 	}
getLayerChildren(size_t rlc_i)286 	void getLayerChildren(size_t rlc_i)const
287 	{
288 		fprintf(mFile,"\"%s.rlc[%i]\"",mName.c_str(),rlc_i);
289 	}
getLayerChildren()290 	void getLayerChildren()const
291 	{
292 
293 		fprintf(mFile,"\"%s.rlc\"",mName.c_str());
294 	}
getRenderPassInfo()295 	void getRenderPassInfo()const
296 	{
297 		fprintf(mFile,"\"%s.rp\"",mName.c_str());
298 	}
getBeauty()299 	void getBeauty()const
300 	{
301 		fprintf(mFile,"\"%s.rp.b\"",mName.c_str());
302 	}
getColor()303 	void getColor()const
304 	{
305 		fprintf(mFile,"\"%s.rp.cp\"",mName.c_str());
306 	}
getAmbient()307 	void getAmbient()const
308 	{
309 		fprintf(mFile,"\"%s.rp.am\"",mName.c_str());
310 	}
getDiffuse()311 	void getDiffuse()const
312 	{
313 		fprintf(mFile,"\"%s.rp.di\"",mName.c_str());
314 	}
getSpecular()315 	void getSpecular()const
316 	{
317 		fprintf(mFile,"\"%s.rp.sp\"",mName.c_str());
318 	}
getShadow()319 	void getShadow()const
320 	{
321 		fprintf(mFile,"\"%s.rp.s\"",mName.c_str());
322 	}
getMentalRayControls()323 	void getMentalRayControls()const
324 	{
325 		fprintf(mFile,"\"%s.mrc\"",mName.c_str());
326 	}
getGlobalIllum()327 	void getGlobalIllum()const
328 	{
329 		fprintf(mFile,"\"%s.mrc.gp\"",mName.c_str());
330 	}
getAdjustments(size_t adjs_i)331 	void getAdjustments(size_t adjs_i)const
332 	{
333 		fprintf(mFile,"\"%s.adjs[%i]\"",mName.c_str(),adjs_i);
334 	}
getAdjustments()335 	void getAdjustments()const
336 	{
337 
338 		fprintf(mFile,"\"%s.adjs\"",mName.c_str());
339 	}
getPlug(size_t adjs_i)340 	void getPlug(size_t adjs_i)const
341 	{
342 		fprintf(mFile,"\"%s.adjs[%i].plg\"",mName.c_str(),adjs_i);
343 	}
getPlug()344 	void getPlug()const
345 	{
346 
347 		fprintf(mFile,"\"%s.adjs.plg\"",mName.c_str());
348 	}
getValue(size_t adjs_i)349 	void getValue(size_t adjs_i)const
350 	{
351 		fprintf(mFile,"\"%s.adjs[%i].val\"",mName.c_str(),adjs_i);
352 	}
getValue()353 	void getValue()const
354 	{
355 
356 		fprintf(mFile,"\"%s.adjs.val\"",mName.c_str());
357 	}
getOutAdjustments(size_t oajs_i)358 	void getOutAdjustments(size_t oajs_i)const
359 	{
360 		fprintf(mFile,"\"%s.oajs[%i]\"",mName.c_str(),oajs_i);
361 	}
getOutAdjustments()362 	void getOutAdjustments()const
363 	{
364 
365 		fprintf(mFile,"\"%s.oajs\"",mName.c_str());
366 	}
getOutPlug(size_t oajs_i)367 	void getOutPlug(size_t oajs_i)const
368 	{
369 		fprintf(mFile,"\"%s.oajs[%i].opg\"",mName.c_str(),oajs_i);
370 	}
getOutPlug()371 	void getOutPlug()const
372 	{
373 
374 		fprintf(mFile,"\"%s.oajs.opg\"",mName.c_str());
375 	}
getOutValue(size_t oajs_i)376 	void getOutValue(size_t oajs_i)const
377 	{
378 		fprintf(mFile,"\"%s.oajs[%i].ovl\"",mName.c_str(),oajs_i);
379 	}
getOutValue()380 	void getOutValue()const
381 	{
382 
383 		fprintf(mFile,"\"%s.oajs.ovl\"",mName.c_str());
384 	}
getShadingGroupOverride()385 	void getShadingGroupOverride()const
386 	{
387 		fprintf(mFile,"\"%s.sgo\"",mName.c_str());
388 	}
getAttributeOverrideScript()389 	void getAttributeOverrideScript()const
390 	{
391 		fprintf(mFile,"\"%s.aos\"",mName.c_str());
392 	}
getImageRendered()393 	void getImageRendered()const
394 	{
395 		fprintf(mFile,"\"%s.ird\"",mName.c_str());
396 	}
getRecycleImage()397 	void getRecycleImage()const
398 	{
399 		fprintf(mFile,"\"%s.rci\"",mName.c_str());
400 	}
getImageName()401 	void getImageName()const
402 	{
403 		fprintf(mFile,"\"%s.img\"",mName.c_str());
404 	}
getDisplayOrder()405 	void getDisplayOrder()const
406 	{
407 		fprintf(mFile,"\"%s.do\"",mName.c_str());
408 	}
getPsdBlendMode()409 	void getPsdBlendMode()const
410 	{
411 		fprintf(mFile,"\"%s.bm\"",mName.c_str());
412 	}
getPsdAlphaChannel()413 	void getPsdAlphaChannel()const
414 	{
415 		fprintf(mFile,"\"%s.ac\"",mName.c_str());
416 	}
417 protected:
418 	RenderLayer(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true)
DependNode(file,name,parent,nodeType,shared,create)419 		:DependNode(file, name, parent, nodeType, shared, create) {}
420 
421 };
422 }//namespace MayaDM
423 #endif//__MayaDM_RENDERLAYER_H__
424