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_REMAPVALUE_H__
11 #define __MayaDM_REMAPVALUE_H__
12 #include "MayaDMTypes.h"
13 #include "MayaDMConnectables.h"
14 #include "MayaDMDependNode.h"
15 namespace MayaDM
16 {
17 class RemapValue : public DependNode
18 {
19 public:
20 	struct Value{
21 		float value_Position;
22 		float value_FloatValue;
23 		unsigned int value_Interp;
writeValue24 		void write(FILE* file) const
25 		{
26 			fprintf(file,"%f ", value_Position);
27 			fprintf(file,"%f ", value_FloatValue);
28 			fprintf(file,"%i", value_Interp);
29 		}
30 	};
31 	struct Color{
32 		float color_Position;
33 		float3 color_Color;
34 		unsigned int color_Interp;
writeColor35 		void write(FILE* file) const
36 		{
37 			fprintf(file,"%f ", color_Position);
38 			color_Color.write(file);
39 			fprintf(file, " ");
40 			fprintf(file,"%i", color_Interp);
41 		}
42 	};
43 public:
44 
RemapValue()45 	RemapValue():DependNode(){}
46 	RemapValue(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true)
47 		:DependNode(file, name, parent, "remapValue", shared, create){}
~RemapValue()48 	virtual ~RemapValue(){}
49 
setInputValue(float i_)50 	void setInputValue(float i_)
51 	{
52 		if(i_ == 0.0) return;
53 		fprintf(mFile,"\tsetAttr \".i\" %f;\n", i_);
54 	}
setInputMin(float imn)55 	void setInputMin(float imn)
56 	{
57 		if(imn == 0) return;
58 		fprintf(mFile,"\tsetAttr \".imn\" %f;\n", imn);
59 	}
setInputMax(float imx)60 	void setInputMax(float imx)
61 	{
62 		if(imx == 1) return;
63 		fprintf(mFile,"\tsetAttr \".imx\" %f;\n", imx);
64 	}
setOutputMin(float omn)65 	void setOutputMin(float omn)
66 	{
67 		if(omn == 0) return;
68 		fprintf(mFile,"\tsetAttr \".omn\" %f;\n", omn);
69 	}
setOutputMax(float omx)70 	void setOutputMax(float omx)
71 	{
72 		if(omx == 1) return;
73 		fprintf(mFile,"\tsetAttr \".omx\" %f;\n", omx);
74 	}
setValue(size_t vl_i,const Value & vl)75 	void setValue(size_t vl_i,const Value& vl)
76 	{
77 		fprintf(mFile,"\tsetAttr \".vl[%i]\" ",vl_i);
78 		vl.write(mFile);
79 		fprintf(mFile,";\n");
80 	}
setValue(size_t vl_start,size_t vl_end,Value * vl)81 	void setValue(size_t vl_start,size_t vl_end,Value* vl)
82 	{
83 		fprintf(mFile,"\tsetAttr \".vl[%i:%i]\" ", vl_start,vl_end);
84 		size_t size = (vl_end-vl_start)*1+1;
85 		for(size_t i=0;i<size;++i)
86 		{
87 			vl[i].write(mFile);
88 			fprintf(mFile,"\n");
89 		}
90 		fprintf(mFile,";\n");
91 	}
startValue(size_t vl_start,size_t vl_end)92 	void startValue(size_t vl_start,size_t vl_end)const
93 	{
94 		fprintf(mFile,"\tsetAttr \".vl[%i:%i]\"",vl_start,vl_end);
95 		fprintf(mFile," -type \"Value\" ");
96 	}
appendValue(const Value & vl)97 	void appendValue(const Value& vl)const
98 	{
99 		fprintf(mFile," ");
100 		vl.write(mFile);
101 	}
endValue()102 	void endValue()const
103 	{
104 		fprintf(mFile,";\n");
105 	}
setValue_Position(size_t vl_i,float vlp)106 	void setValue_Position(size_t vl_i,float vlp)
107 	{
108 		if(vlp == 0.0) return;
109 		fprintf(mFile,"\tsetAttr \".vl[%i].vlp\" %f;\n", vl_i,vlp);
110 	}
setValue_FloatValue(size_t vl_i,float vlfv)111 	void setValue_FloatValue(size_t vl_i,float vlfv)
112 	{
113 		if(vlfv == 0.0) return;
114 		fprintf(mFile,"\tsetAttr \".vl[%i].vlfv\" %f;\n", vl_i,vlfv);
115 	}
setValue_Interp(size_t vl_i,unsigned int vli)116 	void setValue_Interp(size_t vl_i,unsigned int vli)
117 	{
118 		if(vli == 0) return;
119 		fprintf(mFile,"\tsetAttr \".vl[%i].vli\" %i;\n", vl_i,vli);
120 	}
setColor(size_t cl_i,const Color & cl)121 	void setColor(size_t cl_i,const Color& cl)
122 	{
123 		fprintf(mFile,"\tsetAttr \".cl[%i]\" ",cl_i);
124 		cl.write(mFile);
125 		fprintf(mFile,";\n");
126 	}
setColor(size_t cl_start,size_t cl_end,Color * cl)127 	void setColor(size_t cl_start,size_t cl_end,Color* cl)
128 	{
129 		fprintf(mFile,"\tsetAttr \".cl[%i:%i]\" ", cl_start,cl_end);
130 		size_t size = (cl_end-cl_start)*1+1;
131 		for(size_t i=0;i<size;++i)
132 		{
133 			cl[i].write(mFile);
134 			fprintf(mFile,"\n");
135 		}
136 		fprintf(mFile,";\n");
137 	}
startColor(size_t cl_start,size_t cl_end)138 	void startColor(size_t cl_start,size_t cl_end)const
139 	{
140 		fprintf(mFile,"\tsetAttr \".cl[%i:%i]\"",cl_start,cl_end);
141 		fprintf(mFile," -type \"Color\" ");
142 	}
appendColor(const Color & cl)143 	void appendColor(const Color& cl)const
144 	{
145 		fprintf(mFile," ");
146 		cl.write(mFile);
147 	}
endColor()148 	void endColor()const
149 	{
150 		fprintf(mFile,";\n");
151 	}
setColor_Position(size_t cl_i,float clp)152 	void setColor_Position(size_t cl_i,float clp)
153 	{
154 		if(clp == 0.0) return;
155 		fprintf(mFile,"\tsetAttr \".cl[%i].clp\" %f;\n", cl_i,clp);
156 	}
setColor_Color(size_t cl_i,const float3 & clc)157 	void setColor_Color(size_t cl_i,const float3& clc)
158 	{
159 		fprintf(mFile,"\tsetAttr \".cl[%i].clc\" -type \"float3\" ",cl_i);
160 		clc.write(mFile);
161 		fprintf(mFile,";\n");
162 	}
setColor_ColorR(size_t cl_i,float clcr)163 	void setColor_ColorR(size_t cl_i,float clcr)
164 	{
165 		if(clcr == 0.0) return;
166 		fprintf(mFile,"\tsetAttr \".cl[%i].clc.clcr\" %f;\n", cl_i,clcr);
167 	}
setColor_ColorG(size_t cl_i,float clcg)168 	void setColor_ColorG(size_t cl_i,float clcg)
169 	{
170 		if(clcg == 0.0) return;
171 		fprintf(mFile,"\tsetAttr \".cl[%i].clc.clcg\" %f;\n", cl_i,clcg);
172 	}
setColor_ColorB(size_t cl_i,float clcb)173 	void setColor_ColorB(size_t cl_i,float clcb)
174 	{
175 		if(clcb == 0.0) return;
176 		fprintf(mFile,"\tsetAttr \".cl[%i].clc.clcb\" %f;\n", cl_i,clcb);
177 	}
setColor_Interp(size_t cl_i,unsigned int cli)178 	void setColor_Interp(size_t cl_i,unsigned int cli)
179 	{
180 		if(cli == 0) return;
181 		fprintf(mFile,"\tsetAttr \".cl[%i].cli\" %i;\n", cl_i,cli);
182 	}
getInputValue()183 	void getInputValue()const
184 	{
185 		fprintf(mFile,"\"%s.i\"",mName.c_str());
186 	}
getInputMin()187 	void getInputMin()const
188 	{
189 		fprintf(mFile,"\"%s.imn\"",mName.c_str());
190 	}
getInputMax()191 	void getInputMax()const
192 	{
193 		fprintf(mFile,"\"%s.imx\"",mName.c_str());
194 	}
getOutputMin()195 	void getOutputMin()const
196 	{
197 		fprintf(mFile,"\"%s.omn\"",mName.c_str());
198 	}
getOutputMax()199 	void getOutputMax()const
200 	{
201 		fprintf(mFile,"\"%s.omx\"",mName.c_str());
202 	}
getValue(size_t vl_i)203 	void getValue(size_t vl_i)const
204 	{
205 		fprintf(mFile,"\"%s.vl[%i]\"",mName.c_str(),vl_i);
206 	}
getValue()207 	void getValue()const
208 	{
209 
210 		fprintf(mFile,"\"%s.vl\"",mName.c_str());
211 	}
getValue_Position(size_t vl_i)212 	void getValue_Position(size_t vl_i)const
213 	{
214 		fprintf(mFile,"\"%s.vl[%i].vlp\"",mName.c_str(),vl_i);
215 	}
getValue_Position()216 	void getValue_Position()const
217 	{
218 
219 		fprintf(mFile,"\"%s.vl.vlp\"",mName.c_str());
220 	}
getValue_FloatValue(size_t vl_i)221 	void getValue_FloatValue(size_t vl_i)const
222 	{
223 		fprintf(mFile,"\"%s.vl[%i].vlfv\"",mName.c_str(),vl_i);
224 	}
getValue_FloatValue()225 	void getValue_FloatValue()const
226 	{
227 
228 		fprintf(mFile,"\"%s.vl.vlfv\"",mName.c_str());
229 	}
getValue_Interp(size_t vl_i)230 	void getValue_Interp(size_t vl_i)const
231 	{
232 		fprintf(mFile,"\"%s.vl[%i].vli\"",mName.c_str(),vl_i);
233 	}
getValue_Interp()234 	void getValue_Interp()const
235 	{
236 
237 		fprintf(mFile,"\"%s.vl.vli\"",mName.c_str());
238 	}
getColor(size_t cl_i)239 	void getColor(size_t cl_i)const
240 	{
241 		fprintf(mFile,"\"%s.cl[%i]\"",mName.c_str(),cl_i);
242 	}
getColor()243 	void getColor()const
244 	{
245 
246 		fprintf(mFile,"\"%s.cl\"",mName.c_str());
247 	}
getColor_Position(size_t cl_i)248 	void getColor_Position(size_t cl_i)const
249 	{
250 		fprintf(mFile,"\"%s.cl[%i].clp\"",mName.c_str(),cl_i);
251 	}
getColor_Position()252 	void getColor_Position()const
253 	{
254 
255 		fprintf(mFile,"\"%s.cl.clp\"",mName.c_str());
256 	}
getColor_Color(size_t cl_i)257 	void getColor_Color(size_t cl_i)const
258 	{
259 		fprintf(mFile,"\"%s.cl[%i].clc\"",mName.c_str(),cl_i);
260 	}
getColor_Color()261 	void getColor_Color()const
262 	{
263 
264 		fprintf(mFile,"\"%s.cl.clc\"",mName.c_str());
265 	}
getColor_ColorR(size_t cl_i)266 	void getColor_ColorR(size_t cl_i)const
267 	{
268 		fprintf(mFile,"\"%s.cl[%i].clc.clcr\"",mName.c_str(),cl_i);
269 	}
getColor_ColorR()270 	void getColor_ColorR()const
271 	{
272 
273 		fprintf(mFile,"\"%s.cl.clc.clcr\"",mName.c_str());
274 	}
getColor_ColorG(size_t cl_i)275 	void getColor_ColorG(size_t cl_i)const
276 	{
277 		fprintf(mFile,"\"%s.cl[%i].clc.clcg\"",mName.c_str(),cl_i);
278 	}
getColor_ColorG()279 	void getColor_ColorG()const
280 	{
281 
282 		fprintf(mFile,"\"%s.cl.clc.clcg\"",mName.c_str());
283 	}
getColor_ColorB(size_t cl_i)284 	void getColor_ColorB(size_t cl_i)const
285 	{
286 		fprintf(mFile,"\"%s.cl[%i].clc.clcb\"",mName.c_str(),cl_i);
287 	}
getColor_ColorB()288 	void getColor_ColorB()const
289 	{
290 
291 		fprintf(mFile,"\"%s.cl.clc.clcb\"",mName.c_str());
292 	}
getColor_Interp(size_t cl_i)293 	void getColor_Interp(size_t cl_i)const
294 	{
295 		fprintf(mFile,"\"%s.cl[%i].cli\"",mName.c_str(),cl_i);
296 	}
getColor_Interp()297 	void getColor_Interp()const
298 	{
299 
300 		fprintf(mFile,"\"%s.cl.cli\"",mName.c_str());
301 	}
getOutValue()302 	void getOutValue()const
303 	{
304 		fprintf(mFile,"\"%s.ov\"",mName.c_str());
305 	}
getOutColor()306 	void getOutColor()const
307 	{
308 		fprintf(mFile,"\"%s.oc\"",mName.c_str());
309 	}
getOutColorR()310 	void getOutColorR()const
311 	{
312 		fprintf(mFile,"\"%s.oc.ocr\"",mName.c_str());
313 	}
getOutColorG()314 	void getOutColorG()const
315 	{
316 		fprintf(mFile,"\"%s.oc.ocg\"",mName.c_str());
317 	}
getOutColorB()318 	void getOutColorB()const
319 	{
320 		fprintf(mFile,"\"%s.oc.ocb\"",mName.c_str());
321 	}
322 protected:
323 	RemapValue(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)324 		:DependNode(file, name, parent, nodeType, shared, create) {}
325 
326 };
327 }//namespace MayaDM
328 #endif//__MayaDM_REMAPVALUE_H__
329