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