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_REMAPCOLOR_H__ 11 #define __MayaDM_REMAPCOLOR_H__ 12 #include "MayaDMTypes.h" 13 #include "MayaDMConnectables.h" 14 #include "MayaDMDependNode.h" 15 namespace MayaDM 16 { 17 class RemapColor : public DependNode 18 { 19 public: 20 struct Red{ 21 float red_Position; 22 float red_FloatValue; 23 unsigned int red_Interp; writeRed24 void write(FILE* file) const 25 { 26 fprintf(file,"%f ", red_Position); 27 fprintf(file,"%f ", red_FloatValue); 28 fprintf(file,"%i", red_Interp); 29 } 30 }; 31 struct Green{ 32 float green_Position; 33 float green_FloatValue; 34 unsigned int green_Interp; writeGreen35 void write(FILE* file) const 36 { 37 fprintf(file,"%f ", green_Position); 38 fprintf(file,"%f ", green_FloatValue); 39 fprintf(file,"%i", green_Interp); 40 } 41 }; 42 struct Blue{ 43 float blue_Position; 44 float blue_FloatValue; 45 unsigned int blue_Interp; writeBlue46 void write(FILE* file) const 47 { 48 fprintf(file,"%f ", blue_Position); 49 fprintf(file,"%f ", blue_FloatValue); 50 fprintf(file,"%i", blue_Interp); 51 } 52 }; 53 public: 54 RemapColor()55 RemapColor():DependNode(){} 56 RemapColor(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true) 57 :DependNode(file, name, parent, "remapColor", shared, create){} ~RemapColor()58 virtual ~RemapColor(){} 59 setColor(const float3 & cl)60 void setColor(const float3& cl) 61 { 62 fprintf(mFile,"\tsetAttr \".cl\" -type \"float3\" "); 63 cl.write(mFile); 64 fprintf(mFile,";\n"); 65 } setColorR(float cr)66 void setColorR(float cr) 67 { 68 if(cr == 0.5) return; 69 fprintf(mFile,"\tsetAttr \".cl.cr\" %f;\n", cr); 70 } setColorG(float cg)71 void setColorG(float cg) 72 { 73 if(cg == 0.5) return; 74 fprintf(mFile,"\tsetAttr \".cl.cg\" %f;\n", cg); 75 } setColorB(float cb)76 void setColorB(float cb) 77 { 78 if(cb == 0.5) return; 79 fprintf(mFile,"\tsetAttr \".cl.cb\" %f;\n", cb); 80 } setInputMin(float imn)81 void setInputMin(float imn) 82 { 83 if(imn == 0) return; 84 fprintf(mFile,"\tsetAttr \".imn\" %f;\n", imn); 85 } setInputMax(float imx)86 void setInputMax(float imx) 87 { 88 if(imx == 1) return; 89 fprintf(mFile,"\tsetAttr \".imx\" %f;\n", imx); 90 } setOutputMin(float omn)91 void setOutputMin(float omn) 92 { 93 if(omn == 0) return; 94 fprintf(mFile,"\tsetAttr \".omn\" %f;\n", omn); 95 } setOutputMax(float omx)96 void setOutputMax(float omx) 97 { 98 if(omx == 1) return; 99 fprintf(mFile,"\tsetAttr \".omx\" %f;\n", omx); 100 } setRed(size_t r_i,const Red & r)101 void setRed(size_t r_i,const Red& r) 102 { 103 fprintf(mFile,"\tsetAttr \".r[%i]\" ",r_i); 104 r.write(mFile); 105 fprintf(mFile,";\n"); 106 } setRed(size_t r_start,size_t r_end,Red * r)107 void setRed(size_t r_start,size_t r_end,Red* r) 108 { 109 fprintf(mFile,"\tsetAttr \".r[%i:%i]\" ", r_start,r_end); 110 size_t size = (r_end-r_start)*1+1; 111 for(size_t i=0;i<size;++i) 112 { 113 r[i].write(mFile); 114 fprintf(mFile,"\n"); 115 } 116 fprintf(mFile,";\n"); 117 } startRed(size_t r_start,size_t r_end)118 void startRed(size_t r_start,size_t r_end)const 119 { 120 fprintf(mFile,"\tsetAttr \".r[%i:%i]\"",r_start,r_end); 121 fprintf(mFile," -type \"Red\" "); 122 } appendRed(const Red & r)123 void appendRed(const Red& r)const 124 { 125 fprintf(mFile," "); 126 r.write(mFile); 127 } endRed()128 void endRed()const 129 { 130 fprintf(mFile,";\n"); 131 } setRed_Position(size_t r_i,float rp)132 void setRed_Position(size_t r_i,float rp) 133 { 134 if(rp == 0.0) return; 135 fprintf(mFile,"\tsetAttr \".r[%i].rp\" %f;\n", r_i,rp); 136 } setRed_FloatValue(size_t r_i,float rfv)137 void setRed_FloatValue(size_t r_i,float rfv) 138 { 139 if(rfv == 0.0) return; 140 fprintf(mFile,"\tsetAttr \".r[%i].rfv\" %f;\n", r_i,rfv); 141 } setRed_Interp(size_t r_i,unsigned int ri)142 void setRed_Interp(size_t r_i,unsigned int ri) 143 { 144 if(ri == 0) return; 145 fprintf(mFile,"\tsetAttr \".r[%i].ri\" %i;\n", r_i,ri); 146 } setGreen(size_t g_i,const Green & g)147 void setGreen(size_t g_i,const Green& g) 148 { 149 fprintf(mFile,"\tsetAttr \".g[%i]\" ",g_i); 150 g.write(mFile); 151 fprintf(mFile,";\n"); 152 } setGreen(size_t g_start,size_t g_end,Green * g)153 void setGreen(size_t g_start,size_t g_end,Green* g) 154 { 155 fprintf(mFile,"\tsetAttr \".g[%i:%i]\" ", g_start,g_end); 156 size_t size = (g_end-g_start)*1+1; 157 for(size_t i=0;i<size;++i) 158 { 159 g[i].write(mFile); 160 fprintf(mFile,"\n"); 161 } 162 fprintf(mFile,";\n"); 163 } startGreen(size_t g_start,size_t g_end)164 void startGreen(size_t g_start,size_t g_end)const 165 { 166 fprintf(mFile,"\tsetAttr \".g[%i:%i]\"",g_start,g_end); 167 fprintf(mFile," -type \"Green\" "); 168 } appendGreen(const Green & g)169 void appendGreen(const Green& g)const 170 { 171 fprintf(mFile," "); 172 g.write(mFile); 173 } endGreen()174 void endGreen()const 175 { 176 fprintf(mFile,";\n"); 177 } setGreen_Position(size_t g_i,float gp)178 void setGreen_Position(size_t g_i,float gp) 179 { 180 if(gp == 0.0) return; 181 fprintf(mFile,"\tsetAttr \".g[%i].gp\" %f;\n", g_i,gp); 182 } setGreen_FloatValue(size_t g_i,float gfv)183 void setGreen_FloatValue(size_t g_i,float gfv) 184 { 185 if(gfv == 0.0) return; 186 fprintf(mFile,"\tsetAttr \".g[%i].gfv\" %f;\n", g_i,gfv); 187 } setGreen_Interp(size_t g_i,unsigned int gi)188 void setGreen_Interp(size_t g_i,unsigned int gi) 189 { 190 if(gi == 0) return; 191 fprintf(mFile,"\tsetAttr \".g[%i].gi\" %i;\n", g_i,gi); 192 } setBlue(size_t b_i,const Blue & b)193 void setBlue(size_t b_i,const Blue& b) 194 { 195 fprintf(mFile,"\tsetAttr \".b[%i]\" ",b_i); 196 b.write(mFile); 197 fprintf(mFile,";\n"); 198 } setBlue(size_t b_start,size_t b_end,Blue * b)199 void setBlue(size_t b_start,size_t b_end,Blue* b) 200 { 201 fprintf(mFile,"\tsetAttr \".b[%i:%i]\" ", b_start,b_end); 202 size_t size = (b_end-b_start)*1+1; 203 for(size_t i=0;i<size;++i) 204 { 205 b[i].write(mFile); 206 fprintf(mFile,"\n"); 207 } 208 fprintf(mFile,";\n"); 209 } startBlue(size_t b_start,size_t b_end)210 void startBlue(size_t b_start,size_t b_end)const 211 { 212 fprintf(mFile,"\tsetAttr \".b[%i:%i]\"",b_start,b_end); 213 fprintf(mFile," -type \"Blue\" "); 214 } appendBlue(const Blue & b)215 void appendBlue(const Blue& b)const 216 { 217 fprintf(mFile," "); 218 b.write(mFile); 219 } endBlue()220 void endBlue()const 221 { 222 fprintf(mFile,";\n"); 223 } setBlue_Position(size_t b_i,float bp)224 void setBlue_Position(size_t b_i,float bp) 225 { 226 if(bp == 0.0) return; 227 fprintf(mFile,"\tsetAttr \".b[%i].bp\" %f;\n", b_i,bp); 228 } setBlue_FloatValue(size_t b_i,float bfv)229 void setBlue_FloatValue(size_t b_i,float bfv) 230 { 231 if(bfv == 0.0) return; 232 fprintf(mFile,"\tsetAttr \".b[%i].bfv\" %f;\n", b_i,bfv); 233 } setBlue_Interp(size_t b_i,unsigned int bi)234 void setBlue_Interp(size_t b_i,unsigned int bi) 235 { 236 if(bi == 0) return; 237 fprintf(mFile,"\tsetAttr \".b[%i].bi\" %i;\n", b_i,bi); 238 } getColor()239 void getColor()const 240 { 241 fprintf(mFile,"\"%s.cl\"",mName.c_str()); 242 } getColorR()243 void getColorR()const 244 { 245 fprintf(mFile,"\"%s.cl.cr\"",mName.c_str()); 246 } getColorG()247 void getColorG()const 248 { 249 fprintf(mFile,"\"%s.cl.cg\"",mName.c_str()); 250 } getColorB()251 void getColorB()const 252 { 253 fprintf(mFile,"\"%s.cl.cb\"",mName.c_str()); 254 } getInputMin()255 void getInputMin()const 256 { 257 fprintf(mFile,"\"%s.imn\"",mName.c_str()); 258 } getInputMax()259 void getInputMax()const 260 { 261 fprintf(mFile,"\"%s.imx\"",mName.c_str()); 262 } getOutputMin()263 void getOutputMin()const 264 { 265 fprintf(mFile,"\"%s.omn\"",mName.c_str()); 266 } getOutputMax()267 void getOutputMax()const 268 { 269 fprintf(mFile,"\"%s.omx\"",mName.c_str()); 270 } getRed(size_t r_i)271 void getRed(size_t r_i)const 272 { 273 fprintf(mFile,"\"%s.r[%i]\"",mName.c_str(),r_i); 274 } getRed()275 void getRed()const 276 { 277 278 fprintf(mFile,"\"%s.r\"",mName.c_str()); 279 } getRed_Position(size_t r_i)280 void getRed_Position(size_t r_i)const 281 { 282 fprintf(mFile,"\"%s.r[%i].rp\"",mName.c_str(),r_i); 283 } getRed_Position()284 void getRed_Position()const 285 { 286 287 fprintf(mFile,"\"%s.r.rp\"",mName.c_str()); 288 } getRed_FloatValue(size_t r_i)289 void getRed_FloatValue(size_t r_i)const 290 { 291 fprintf(mFile,"\"%s.r[%i].rfv\"",mName.c_str(),r_i); 292 } getRed_FloatValue()293 void getRed_FloatValue()const 294 { 295 296 fprintf(mFile,"\"%s.r.rfv\"",mName.c_str()); 297 } getRed_Interp(size_t r_i)298 void getRed_Interp(size_t r_i)const 299 { 300 fprintf(mFile,"\"%s.r[%i].ri\"",mName.c_str(),r_i); 301 } getRed_Interp()302 void getRed_Interp()const 303 { 304 305 fprintf(mFile,"\"%s.r.ri\"",mName.c_str()); 306 } getGreen(size_t g_i)307 void getGreen(size_t g_i)const 308 { 309 fprintf(mFile,"\"%s.g[%i]\"",mName.c_str(),g_i); 310 } getGreen()311 void getGreen()const 312 { 313 314 fprintf(mFile,"\"%s.g\"",mName.c_str()); 315 } getGreen_Position(size_t g_i)316 void getGreen_Position(size_t g_i)const 317 { 318 fprintf(mFile,"\"%s.g[%i].gp\"",mName.c_str(),g_i); 319 } getGreen_Position()320 void getGreen_Position()const 321 { 322 323 fprintf(mFile,"\"%s.g.gp\"",mName.c_str()); 324 } getGreen_FloatValue(size_t g_i)325 void getGreen_FloatValue(size_t g_i)const 326 { 327 fprintf(mFile,"\"%s.g[%i].gfv\"",mName.c_str(),g_i); 328 } getGreen_FloatValue()329 void getGreen_FloatValue()const 330 { 331 332 fprintf(mFile,"\"%s.g.gfv\"",mName.c_str()); 333 } getGreen_Interp(size_t g_i)334 void getGreen_Interp(size_t g_i)const 335 { 336 fprintf(mFile,"\"%s.g[%i].gi\"",mName.c_str(),g_i); 337 } getGreen_Interp()338 void getGreen_Interp()const 339 { 340 341 fprintf(mFile,"\"%s.g.gi\"",mName.c_str()); 342 } getBlue(size_t b_i)343 void getBlue(size_t b_i)const 344 { 345 fprintf(mFile,"\"%s.b[%i]\"",mName.c_str(),b_i); 346 } getBlue()347 void getBlue()const 348 { 349 350 fprintf(mFile,"\"%s.b\"",mName.c_str()); 351 } getBlue_Position(size_t b_i)352 void getBlue_Position(size_t b_i)const 353 { 354 fprintf(mFile,"\"%s.b[%i].bp\"",mName.c_str(),b_i); 355 } getBlue_Position()356 void getBlue_Position()const 357 { 358 359 fprintf(mFile,"\"%s.b.bp\"",mName.c_str()); 360 } getBlue_FloatValue(size_t b_i)361 void getBlue_FloatValue(size_t b_i)const 362 { 363 fprintf(mFile,"\"%s.b[%i].bfv\"",mName.c_str(),b_i); 364 } getBlue_FloatValue()365 void getBlue_FloatValue()const 366 { 367 368 fprintf(mFile,"\"%s.b.bfv\"",mName.c_str()); 369 } getBlue_Interp(size_t b_i)370 void getBlue_Interp(size_t b_i)const 371 { 372 fprintf(mFile,"\"%s.b[%i].bi\"",mName.c_str(),b_i); 373 } getBlue_Interp()374 void getBlue_Interp()const 375 { 376 377 fprintf(mFile,"\"%s.b.bi\"",mName.c_str()); 378 } getOutColor()379 void getOutColor()const 380 { 381 fprintf(mFile,"\"%s.oc\"",mName.c_str()); 382 } getOutColorR()383 void getOutColorR()const 384 { 385 fprintf(mFile,"\"%s.oc.ocr\"",mName.c_str()); 386 } getOutColorG()387 void getOutColorG()const 388 { 389 fprintf(mFile,"\"%s.oc.ocg\"",mName.c_str()); 390 } getOutColorB()391 void getOutColorB()const 392 { 393 fprintf(mFile,"\"%s.oc.ocb\"",mName.c_str()); 394 } 395 protected: 396 RemapColor(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)397 :DependNode(file, name, parent, nodeType, shared, create) {} 398 399 }; 400 }//namespace MayaDM 401 #endif//__MayaDM_REMAPCOLOR_H__ 402