13 #ifndef __CL_SimpleChannel_h__
14 #define __CL_SimpleChannel_h__
55 bool clamp_slopes =
true);
69 void splitAndFindSlopeLengths(
fpreal t,
109 return x0 + u*(x1 + u*(
x2 + u*x3));
154 static void getMonotoneSlopeSDDE2ViaConic
161 void display()
const;
289 bool canEval()
const;
309 bool isAtHardKey(
fpreal gtime)
const;
311 int getSegmentIdx(
fpreal ltime)
const;
319 { mySegmentExpressions[
index] = expr; }
322 {
return mySegmentInSlopesAuto[
index]; }
324 {
return mySegmentOutSlopesAuto[
index]; }
348 bool insertKeyFrame(
fpreal global_time,
bool auto_slope =
true);
353 bool destroyKeyFrame(
fpreal global_time);
358 bool destroyKeyFrames(
fpreal gtime_start,
fpreal gtime_end);
366 bool destroySegments(
int start_idx,
int end_idx);
402 bool setKeyAutoSlope(
fpreal gtime,
bool auto_slope,
406 bool setRawValues(
fpreal from,
410 bool auto_slope =
true);
443 void setTolerance(
fpreal tolerance) { myTolerance = tolerance; }
497 void moveKeysWithDeltas(
502 void smoothAutoSlopesForSegments(
507 void smoothAutoSlopes(
bool force =
false);
511 void trimStart(
float gtime);
514 void trimEnd(
float gtime);
528 static void setAutoSplit(
bool onoff);
533 {
return theDefaultSegmentType; }
536 {
return theDefaultSplitSegmentType; }
541 static fpreal theTolerance;
542 static constexpr
fpreal theDefaultAccelRatio = 1.0 / 3.0;
545 static bool theAutoSplit;
553 return length * ratio * SYSsqrt( slope*slope + 1 );
563 bool is_end_segment);
567 bool is_end_segment);
571 void splitSegment(
fpreal gtime,
bool auto_slope =
true);
573 void changeSegmentLength(
int index,
575 bool scale_accels =
true);
586 void insertSegment(
int index,
590 void removeSegment(
int index);
595 bool clamp_slopes =
true);
599 void removeSegments(
int start_index,
int end_index);
602 void recomputeBezierCoeffs(
int start_index = 0,
int end_index = -1);
610 void shiftKey(
int index,
fpreal t,
bool recompute_coeffs =
true);
const UT_Array< CL_SimpleSegment > & getSegments() const
fpreal getPostSlope() const
GLsizei GLenum const void * indices
#define SYS_DEPRECATED(__V__)
GA_API const UT_StringHolder accel
imath_half_bits_t half
if we're in a C-only context, alias the half bits type to half
const UT_Array< UT_StringHolder > & getSegmentExpressions() const
CL_ChannelBehavior getPreType() const
int getNSegments() const
Returns the number of segments including the end segment.
GLsizei const GLfloat * value
void setPostType(CL_ChannelBehavior type)
static CL_SimpleSegmentType getDefaultSegmentType()
GLboolean GLboolean GLboolean GLboolean a
GLuint GLsizei GLsizei * length
UT_StringHolder getSegmentExpression(int index) const
void setPreType(CL_ChannelBehavior type)
GLfloat GLfloat GLfloat v2
GLfloat GLfloat GLfloat GLfloat v3
void setStart(fpreal start)
fpreal getEndValue() const
constexpr auto in(type t, int set) -> bool
UT_SharedPtr< const CL_SimpleChannel > CL_SimpleChannelConstPtr
const CL_SimpleSegment & getSegment(int index) const
void setType(CL_SimpleSegmentType type)
GLint GLint GLsizei GLint GLenum GLenum type
void setDefaultValue(fpreal value)
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
int getSegmentInSlopeAuto(int index) const
void setSegmentInSlopeAuto(int index, bool value)
void setSegmentOutSlopeAuto(int index, bool value)
void setSegmentExpression(int index, const UT_StringHolder &expr)
fpreal localTime(fpreal t) const
fpreal getTolerance() const
void setExtraData(int index, fpreal data)
void setPreSlope(fpreal slope)
HUSD_API bool eval(VtValue &val, T &ret_val)
GLboolean GLboolean GLboolean b
CL_SimpleSegmentType getType() const
fpreal getDefaultValue() const
void setPreValue(fpreal value)
UT_SharedPtr< CL_SimpleChannel > CL_SimpleChannelPtr
static CL_SimpleSegmentType getDefaultSegmentSplitType()
fpreal evalP(fpreal u) const
SIM_API const UT_StringHolder force
GLenum GLsizei GLsizei GLint * values
static void setChannelTolerance(fpreal tol)
CL_ChannelBehavior getPostType() const
fpreal getPreValue() const
static fpreal getChannelTolerance()
LeafData & operator=(const LeafData &)=delete
void setPostSlope(fpreal slope)
fpreal globalTime(fpreal t) const
int getSegmentOutSlopeAuto(int index) const
fpreal getPreSlope() const
void OIIO_UTIL_API split(string_view str, std::vector< string_view > &result, string_view sep=string_view(), int maxsplit=-1)
fpreal getPostValue() const
static bool getAutoSplit()
CL_SimpleSegment & getSegment(int index)
void setPostValue(fpreal value)
fpreal getStartValue() const