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