23 #include <SeExpr2/Vec.h>
24 #include <SeExpr2/Curve.h>
27 #ifdef SEEXPR_USE_ANIMLIB
28 #include <animlib/AnimCurve.h>
29 #include <animlib/AnimKeyframe.h>
33 inline void printVal(std::stringstream& stream,
double v){stream<<v;}
34 inline void printVal(std::stringstream& stream,
const SeExpr2::Vec3d& v){stream<<
"["<<v[0]<<
","<<v[1]<<
","<<v[2]<<
"]";}
36 #define UNUSED(x) (void)(x)
45 :name(name),startPos(startPos),endPos(endPos)
59 virtual std::string
str()
const{
return std::string(
"<unknown>");}
60 virtual void appendString(std::stringstream& stream)
const=0;
76 if (comment.find(
'.') != std::string::npos || comment.find(
'e') != std::string::npos)
79 if (sscanf(comment.c_str(),
"#%f,%f",&fmin,&fmax)==2)
88 if (sscanf(comment.c_str(),
"#%d,%d",&imin,&imax)==2)
97 std::string
str()
const{
99 s<<
name<<
" "<<
v<<
" in ["<<
min<<
","<<
max<<
"] subset "<<(
isInt?
"Integers":
"Reals");
106 if(
const NumberEditable* o=dynamic_cast<const NumberEditable*>(&other)){
107 return min==o->min &&
max==o->max &&
v==o->v &&
isInt==o->isInt &&
name==o->name;
125 int numParsed=sscanf(comment.c_str(),
"#%f,%f",&fmin,&fmax);
143 if(
const VectorEditable* o=dynamic_cast<const VectorEditable*>(&other)){
144 return min==o->min &&
max==o->max &&
v==o->v &&
name==o->name;
155 :
Editable(
"unknown",startPos,endPos),
v(val)
159 char namebuf[1024],typebuf[1024];
160 int parsed=sscanf(comment.c_str(),
"#%s %s",typebuf,namebuf);
172 stream<<
"\""<<
v<<
"\"";
182 if(
const StringEditable* o=dynamic_cast<const StringEditable*>(&other)){
183 return v==o->v &&
type==o->type &&
name==o->name;
201 void add(
double x,
const TVAL&
y,
int interp){
215 for(
size_t i=0,sz=
cvs.size();i<sz;i++){
217 stream<<
","<<cv.
_pos<<
",";
242 #ifdef SEEXPR_USE_ANIMLIB
243 animlib::AnimCurve
curve;
251 #ifdef SEEXPR_USE_ANIMLIB
252 ,
curve(animlib::AnimAttrID())
268 #ifdef SEEXPR_USE_ANIMLIB
271 stream<<
",\""<<animlib::AnimCurve::infinityTypeToString(
curve.getPreInfinity())<<
"\"";
272 stream<<
",\""<<animlib::AnimCurve::infinityTypeToString(
curve.getPostInfinity())<<
"\"";
273 stream<<
","<<
curve.isWeighted();
274 stream<<
",\""<<
link<<
"\"";
276 const animlib::AnimKeyframe& key=*
it;
277 stream<<
","<<key.getTime()<<
","<<key.getValue()<<
","<<key.getInWeight()<<
","<<key.getOutWeight()<<
","
278 <<key.getInAngle()<<
","<<key.getOutAngle()
279 <<
",\""<<animlib::AnimKeyframe::tangentTypeToString(key.getInTangentType())
280 <<
"\",\""<<animlib::AnimKeyframe::tangentTypeToString(key.getOutTangentType())
281 <<
"\","<<key.isWeightsLocked();
314 int parsed=sscanf(comment.c_str(),
"#%s",labelbuf);
329 for(
size_t i=0,sz=
colors.size();i<sz;i++){
358 std::cerr <<
"\nColorSwatchEditable:\n";
359 for(
unsigned int i=0; i<
colors.size(); i++){
360 std::cerr <<
colors[i][0] <<
", " <<
colors[i][1] <<
", "
361 <<
colors[i][2] << std::endl;
383 s<<
name<<
" deepWater";
virtual bool controlsMatch(const Editable &other) const
SeExpr2::CurveFuncX curve
virtual bool controlsMatch(const Editable &other) const
virtual void appendString(std::stringstream &stream) const =0
void change(int index, const SeExpr2::Vec3d &value)
Interpolation curve class for double->double and double->Vec3D.
NumberEditable(const std::string &name, int startPos, int endPos, double val)
bool parseComment(const std::string &comment)
parses a comment. if false is returned then delete the control from the editable
void appendString(std::stringstream &stream) const
virtual bool controlsMatch(const Editable &) const =0
void add(double x, const TVAL &y, int interp)
void appendString(std::stringstream &stream) const
VectorEditable(const std::string &name, int startPos, int endPos, const SeExpr2::Vec3d &val)
GenericCurveEditable< double > CurveEditable
void add(const SeExpr2::Vec3d &value)
void appendString(std::stringstream &stream) const
virtual bool controlsMatch(const Editable &other) const
void appendString(std::stringstream &stream) const
StringEditable(int startPos, int endPos, const std::string &val)
DeepWaterEditable(const std::string &name, int startPos, int endPos)
virtual bool controlsMatch(const Editable &other) const
For any rgb or hsl value(except for negative s values)
void appendString(std::stringstream &stream) const
virtual bool controlsMatch(const Editable &other) const
void printVal(std::stringstream &stream, double v)
The result is computed int int< br >< divstyle="margin-left:40px;"> Picks values randomly between loRange and hiRange based on supplied index(which is automatically hashed). 
virtual bool controlsMatch(const Editable &other) const
std::string animationSystemCurve
SeExpr2::Curve< TVAL >::CV CV
SeExpr2::Vec3d flowDirection
double directionalReflectionDamping
double directionalFactorExponent
SeExpr2::Curve< TVAL > Curve
</pre >< h3 > A simple variable reference</h3 > This is not a very interesting subclass of expression until we add some additional variables Variables on some applications may be very dynamic In this we only need x
bool parseComment(const std::string &comment)
parses a comment. if false is returned then delete the control from the editable
Curve::InterpType InterpType
virtual bool parseComment(const std::string &comment)=0
parses a comment. if false is returned then delete the control from the editable
bool parseComment(const std::string &comment)
parses a comment. if false is returned then delete the control from the editable
GenericCurveEditable(const std::string &name, int startPos, int endPos)
virtual std::string str() const
generated ExprParser cpp dev null OUTPUT ExprParser cpp DEPENDS y tab c ExprParser tab h endif((BISON_EXE STREQUAL"BISON_EXE-NOTFOUND") OR(FLEX_EXE STREQUAL"FLEX_EXE-NOTFOUND") OR(SED_EXE STREQUAL"SED_EXE-NOTFOUND")) INSTALL(DIRECTORY $
virtual bool controlsMatch(const Editable &other) const
void appendString(std::stringstream &stream) const
AnimCurveEditable(const std::string &name, int startPos, int endPos)
InterpType
Supported interpolation types.
void appendString(std::stringstream &stream) const
bool parseComment(const std::string &comment)
parses a comment. if false is returned then delete the control from the editable
you may not use this file except in compliance with the License and the following modification to it
bool parseComment(const std::string &comment)
parses a comment. if false is returned then delete the control from the editable
std::vector< SeExpr2::Vec3d > colors
bool parseComment(const std::string &)
parses a comment. if false is returned then delete the control from the editable
GenericCurveEditable< SeExpr2::Vec3d > ColorCurveEditable
void updatePositions(const Editable &other)
This is the same as the prman cellnoise function< br ></div >< br > float< b > float y< br > float< b > float y
ColorSwatchEditable(const std::string &name, int startPos, int endPos)
Editable(const std::string &name, int startPos, int endPos)
void setParams(const SeDeepWaterParams ¶msIn)
bool parseComment(const std::string &)
parses a comment. if false is returned then delete the control from the editable