2
Copyright (c) 2008-2009 NetAllied Systems GmbH
4
This file is part of MayaDataModel.
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
10
#ifndef __MayaDM_STROKE_H__
11
#define __MayaDM_STROKE_H__
12
#include "MayaDMTypes.h"
13
#include "MayaDMConnectables.h"
14
#include "MayaDMPfxGeometry.h"
17
class Stroke : public PfxGeometry
23
void write(FILE* file) const
25
fprintf(file,"%i ", samples);
26
fprintf(file,"%i", opposite);
30
float pressureScale_Position;
31
float pressureScale_FloatValue;
32
unsigned int pressureScale_Interp;
33
void write(FILE* file) const
35
fprintf(file,"%f ", pressureScale_Position);
36
fprintf(file,"%f ", pressureScale_FloatValue);
37
fprintf(file,"%i", pressureScale_Interp);
42
Stroke():PfxGeometry(){}
43
Stroke(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true)
44
:PfxGeometry(file, name, parent, "stroke", shared, create){}
47
void setSampleDensity(double sdn)
49
if(sdn == 1.0) return;
50
fprintf(mFile,"\tsetAttr \".sdn\" %f;\n", sdn);
52
void setSmoothing(double smo)
54
if(smo == 0.0) return;
55
fprintf(mFile,"\tsetAttr \".smo\" %f;\n", smo);
57
void setPerspective(bool per)
60
fprintf(mFile,"\tsetAttr \".per\" %i;\n", per);
62
void setUseNormal(bool usn)
65
fprintf(mFile,"\tsetAttr \".usn\" %i;\n", usn);
67
void setNormal(const double3& nml)
69
fprintf(mFile,"\tsetAttr \".nml\" -type \"double3\" ");
73
void setNormalX(double nmx)
75
if(nmx == 0.0) return;
76
fprintf(mFile,"\tsetAttr \".nml.nmx\" %f;\n", nmx);
78
void setNormalY(double nmy)
80
if(nmy == 0.0) return;
81
fprintf(mFile,"\tsetAttr \".nml.nmy\" %f;\n", nmy);
83
void setNormalZ(double nmz)
85
if(nmz == 1.0) return;
86
fprintf(mFile,"\tsetAttr \".nml.nmz\" %f;\n", nmz);
88
void setMinClip(double mnc)
90
if(mnc == 0.0) return;
91
fprintf(mFile,"\tsetAttr \".mnc\" %f;\n", mnc);
93
void setMaxClip(double mxc)
95
if(mxc == 1.0) return;
96
fprintf(mFile,"\tsetAttr \".mxc\" %f;\n", mxc);
98
void setPathCurve(size_t pcv_i,const PathCurve& pcv)
100
fprintf(mFile,"\tsetAttr \".pcv[%i]\" ",pcv_i);
102
fprintf(mFile,";\n");
104
void setPathCurve(size_t pcv_start,size_t pcv_end,PathCurve* pcv)
106
fprintf(mFile,"\tsetAttr \".pcv[%i:%i]\" ", pcv_start,pcv_end);
107
size_t size = (pcv_end-pcv_start)*1+1;
108
for(size_t i=0;i<size;++i)
113
fprintf(mFile,";\n");
115
void startPathCurve(size_t pcv_start,size_t pcv_end)const
117
fprintf(mFile,"\tsetAttr \".pcv[%i:%i]\"",pcv_start,pcv_end);
118
fprintf(mFile," -type \"PathCurve\" ");
120
void appendPathCurve(const PathCurve& pcv)const
125
void endPathCurve()const
127
fprintf(mFile,";\n");
129
void setSamples(size_t pcv_i,int smp)
132
fprintf(mFile,"\tsetAttr \".pcv[%i].smp\" %i;\n", pcv_i,smp);
134
void setOpposite(size_t pcv_i,bool opp)
136
if(opp == false) return;
137
fprintf(mFile,"\tsetAttr \".pcv[%i].opp\" %i;\n", pcv_i,opp);
139
void setOutPoint(size_t opt_i,const double3& opt)
141
fprintf(mFile,"\tsetAttr \".opt[%i]\" -type \"double3\" ",opt_i);
143
fprintf(mFile,";\n");
145
void setOutPoint(size_t opt_start,size_t opt_end,double* opt)
147
fprintf(mFile,"\tsetAttr \".opt[%i:%i]\" ", opt_start,opt_end);
148
size_t size = (opt_end-opt_start)*3+3;
149
for(size_t i=0;i<size;++i)
151
fprintf(mFile,"%f",opt[i]);
152
if(i+1<size) fprintf(mFile," ");
154
fprintf(mFile,";\n");
156
void startOutPoint(size_t opt_start,size_t opt_end)const
158
fprintf(mFile,"\tsetAttr \".opt[%i:%i]\"",opt_start,opt_end);
160
void appendOutPoint(double opt)const
162
fprintf(mFile," %f",opt);
164
void endOutPoint()const
166
fprintf(mFile,";\n");
168
void setOutPointX(size_t opt_i,double ox)
170
if(ox == 0.0) return;
171
fprintf(mFile,"\tsetAttr \".opt[%i].ox\" %f;\n", opt_i,ox);
173
void setOutPointY(size_t opt_i,double oy)
175
if(oy == 0.0) return;
176
fprintf(mFile,"\tsetAttr \".opt[%i].oy\" %f;\n", opt_i,oy);
178
void setOutPointZ(size_t opt_i,double oz)
180
if(oz == 0.0) return;
181
fprintf(mFile,"\tsetAttr \".opt[%i].oz\" %f;\n", opt_i,oz);
183
void setPressureMap1(unsigned int spm1)
185
if(spm1 == 0) return;
186
fprintf(mFile,"\tsetAttr \".spm1\" %i;\n", spm1);
188
void setPressureMin1(double ps1)
190
if(ps1 == 0.0) return;
191
fprintf(mFile,"\tsetAttr \".ps1\" %f;\n", ps1);
193
void setPressureMax1(double px1)
195
if(px1 == 1.0) return;
196
fprintf(mFile,"\tsetAttr \".px1\" %f;\n", px1);
198
void setPressureMap2(unsigned int spm2)
200
if(spm2 == 0) return;
201
fprintf(mFile,"\tsetAttr \".spm2\" %i;\n", spm2);
203
void setPressureMin2(double ps2)
205
if(ps2 == 0.0) return;
206
fprintf(mFile,"\tsetAttr \".ps2\" %f;\n", ps2);
208
void setPressureMax2(double px2)
210
if(px2 == 1.0) return;
211
fprintf(mFile,"\tsetAttr \".px2\" %f;\n", px2);
213
void setPressureMap3(unsigned int spm3)
215
if(spm3 == 0) return;
216
fprintf(mFile,"\tsetAttr \".spm3\" %i;\n", spm3);
218
void setPressureMin3(double ps3)
220
if(ps3 == 0.0) return;
221
fprintf(mFile,"\tsetAttr \".ps3\" %f;\n", ps3);
223
void setPressureMax3(double px3)
225
if(px3 == 1.0) return;
226
fprintf(mFile,"\tsetAttr \".px3\" %f;\n", px3);
228
void setPressureScale(size_t psc_i,const PressureScale& psc)
230
fprintf(mFile,"\tsetAttr \".psc[%i]\" ",psc_i);
232
fprintf(mFile,";\n");
234
void setPressureScale(size_t psc_start,size_t psc_end,PressureScale* psc)
236
fprintf(mFile,"\tsetAttr \".psc[%i:%i]\" ", psc_start,psc_end);
237
size_t size = (psc_end-psc_start)*1+1;
238
for(size_t i=0;i<size;++i)
243
fprintf(mFile,";\n");
245
void startPressureScale(size_t psc_start,size_t psc_end)const
247
fprintf(mFile,"\tsetAttr \".psc[%i:%i]\"",psc_start,psc_end);
248
fprintf(mFile," -type \"PressureScale\" ");
250
void appendPressureScale(const PressureScale& psc)const
255
void endPressureScale()const
257
fprintf(mFile,";\n");
259
void setPressureScale_Position(size_t psc_i,float pscp)
261
if(pscp == 0.0) return;
262
fprintf(mFile,"\tsetAttr \".psc[%i].pscp\" %f;\n", psc_i,pscp);
264
void setPressureScale_FloatValue(size_t psc_i,float pscfv)
266
if(pscfv == 0.0) return;
267
fprintf(mFile,"\tsetAttr \".psc[%i].pscfv\" %f;\n", psc_i,pscfv);
269
void setPressureScale_Interp(size_t psc_i,unsigned int psci)
271
if(psci == 0) return;
272
fprintf(mFile,"\tsetAttr \".psc[%i].psci\" %i;\n", psc_i,psci);
274
void setPressure(size_t psr_i,double psr)
276
if(psr == 0.0) return;
277
fprintf(mFile,"\tsetAttr \".psr[%i]\" %f;\n", psr_i,psr);
279
void setPressure(size_t psr_start,size_t psr_end,double* psr)
281
fprintf(mFile,"\tsetAttr \".psr[%i:%i]\" ", psr_start,psr_end);
282
size_t size = (psr_end-psr_start)*1+1;
283
for(size_t i=0;i<size;++i)
285
fprintf(mFile,"%f",psr[i]);
286
if(i+1<size) fprintf(mFile," ");
288
fprintf(mFile,";\n");
290
void startPressure(size_t psr_start,size_t psr_end)const
292
fprintf(mFile,"\tsetAttr \".psr[%i:%i]\"",psr_start,psr_end);
294
void appendPressure(double psr)const
296
fprintf(mFile," %f",psr);
298
void endPressure()const
300
fprintf(mFile,";\n");
302
void getSampleDensity()const
304
fprintf(mFile,"\"%s.sdn\"",mName.c_str());
306
void getSmoothing()const
308
fprintf(mFile,"\"%s.smo\"",mName.c_str());
310
void getPerspective()const
312
fprintf(mFile,"\"%s.per\"",mName.c_str());
314
void getUseNormal()const
316
fprintf(mFile,"\"%s.usn\"",mName.c_str());
318
void getNormal()const
320
fprintf(mFile,"\"%s.nml\"",mName.c_str());
322
void getNormalX()const
324
fprintf(mFile,"\"%s.nml.nmx\"",mName.c_str());
326
void getNormalY()const
328
fprintf(mFile,"\"%s.nml.nmy\"",mName.c_str());
330
void getNormalZ()const
332
fprintf(mFile,"\"%s.nml.nmz\"",mName.c_str());
334
void getMinClip()const
336
fprintf(mFile,"\"%s.mnc\"",mName.c_str());
338
void getMaxClip()const
340
fprintf(mFile,"\"%s.mxc\"",mName.c_str());
342
void getPathCurve(size_t pcv_i)const
344
fprintf(mFile,"\"%s.pcv[%i]\"",mName.c_str(),pcv_i);
346
void getPathCurve()const
349
fprintf(mFile,"\"%s.pcv\"",mName.c_str());
351
void getCurve(size_t pcv_i)const
353
fprintf(mFile,"\"%s.pcv[%i].crv\"",mName.c_str(),pcv_i);
358
fprintf(mFile,"\"%s.pcv.crv\"",mName.c_str());
360
void getSamples(size_t pcv_i)const
362
fprintf(mFile,"\"%s.pcv[%i].smp\"",mName.c_str(),pcv_i);
364
void getSamples()const
367
fprintf(mFile,"\"%s.pcv.smp\"",mName.c_str());
369
void getOpposite(size_t pcv_i)const
371
fprintf(mFile,"\"%s.pcv[%i].opp\"",mName.c_str(),pcv_i);
373
void getOpposite()const
376
fprintf(mFile,"\"%s.pcv.opp\"",mName.c_str());
378
void getOutPoint(size_t opt_i)const
380
fprintf(mFile,"\"%s.opt[%i]\"",mName.c_str(),opt_i);
382
void getOutPoint()const
385
fprintf(mFile,"\"%s.opt\"",mName.c_str());
387
void getOutPointX(size_t opt_i)const
389
fprintf(mFile,"\"%s.opt[%i].ox\"",mName.c_str(),opt_i);
391
void getOutPointX()const
394
fprintf(mFile,"\"%s.opt.ox\"",mName.c_str());
396
void getOutPointY(size_t opt_i)const
398
fprintf(mFile,"\"%s.opt[%i].oy\"",mName.c_str(),opt_i);
400
void getOutPointY()const
403
fprintf(mFile,"\"%s.opt.oy\"",mName.c_str());
405
void getOutPointZ(size_t opt_i)const
407
fprintf(mFile,"\"%s.opt[%i].oz\"",mName.c_str(),opt_i);
409
void getOutPointZ()const
412
fprintf(mFile,"\"%s.opt.oz\"",mName.c_str());
414
void getOutNormal(size_t onm_i)const
416
fprintf(mFile,"\"%s.onm[%i]\"",mName.c_str(),onm_i);
418
void getOutNormal()const
421
fprintf(mFile,"\"%s.onm\"",mName.c_str());
423
void getOutNormalX(size_t onm_i)const
425
fprintf(mFile,"\"%s.onm[%i].onx\"",mName.c_str(),onm_i);
427
void getOutNormalX()const
430
fprintf(mFile,"\"%s.onm.onx\"",mName.c_str());
432
void getOutNormalY(size_t onm_i)const
434
fprintf(mFile,"\"%s.onm[%i].ony\"",mName.c_str(),onm_i);
436
void getOutNormalY()const
439
fprintf(mFile,"\"%s.onm.ony\"",mName.c_str());
441
void getOutNormalZ(size_t onm_i)const
443
fprintf(mFile,"\"%s.onm[%i].onz\"",mName.c_str(),onm_i);
445
void getOutNormalZ()const
448
fprintf(mFile,"\"%s.onm.onz\"",mName.c_str());
450
void getPressureMap1()const
452
fprintf(mFile,"\"%s.spm1\"",mName.c_str());
454
void getPressureMin1()const
456
fprintf(mFile,"\"%s.ps1\"",mName.c_str());
458
void getPressureMax1()const
460
fprintf(mFile,"\"%s.px1\"",mName.c_str());
462
void getPressureMap2()const
464
fprintf(mFile,"\"%s.spm2\"",mName.c_str());
466
void getPressureMin2()const
468
fprintf(mFile,"\"%s.ps2\"",mName.c_str());
470
void getPressureMax2()const
472
fprintf(mFile,"\"%s.px2\"",mName.c_str());
474
void getPressureMap3()const
476
fprintf(mFile,"\"%s.spm3\"",mName.c_str());
478
void getPressureMin3()const
480
fprintf(mFile,"\"%s.ps3\"",mName.c_str());
482
void getPressureMax3()const
484
fprintf(mFile,"\"%s.px3\"",mName.c_str());
486
void getPressureScale(size_t psc_i)const
488
fprintf(mFile,"\"%s.psc[%i]\"",mName.c_str(),psc_i);
490
void getPressureScale()const
493
fprintf(mFile,"\"%s.psc\"",mName.c_str());
495
void getPressureScale_Position(size_t psc_i)const
497
fprintf(mFile,"\"%s.psc[%i].pscp\"",mName.c_str(),psc_i);
499
void getPressureScale_Position()const
502
fprintf(mFile,"\"%s.psc.pscp\"",mName.c_str());
504
void getPressureScale_FloatValue(size_t psc_i)const
506
fprintf(mFile,"\"%s.psc[%i].pscfv\"",mName.c_str(),psc_i);
508
void getPressureScale_FloatValue()const
511
fprintf(mFile,"\"%s.psc.pscfv\"",mName.c_str());
513
void getPressureScale_Interp(size_t psc_i)const
515
fprintf(mFile,"\"%s.psc[%i].psci\"",mName.c_str(),psc_i);
517
void getPressureScale_Interp()const
520
fprintf(mFile,"\"%s.psc.psci\"",mName.c_str());
522
void getPressure(size_t psr_i)const
524
fprintf(mFile,"\"%s.psr[%i]\"",mName.c_str(),psr_i);
526
void getPressure()const
529
fprintf(mFile,"\"%s.psr\"",mName.c_str());
531
void getUvSetName(size_t uvsetn_i)const
533
fprintf(mFile,"\"%s.uvsetn[%i]\"",mName.c_str(),uvsetn_i);
535
void getUvSetName()const
538
fprintf(mFile,"\"%s.uvsetn\"",mName.c_str());
541
Stroke(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true)
542
:PfxGeometry(file, name, parent, nodeType, shared, create) {}
546
#endif//__MayaDM_STROKE_H__