78 lines
1.3 KiB
C
78 lines
1.3 KiB
C
|
|
||
|
|
||
|
#ifndef TDOUBLEKEYFRAME_INCLUDED
|
||
|
#define TDOUBLEKEYFRAME_INCLUDED
|
||
|
|
||
|
#include "tgeometry.h"
|
||
|
#include "tfilepath.h"
|
||
|
|
||
|
#undef DVAPI
|
||
|
#undef DVVAR
|
||
|
#ifdef TPARAM_EXPORTS
|
||
|
#define DVAPI DV_EXPORT_API
|
||
|
#define DVVAR DV_EXPORT_VAR
|
||
|
#else
|
||
|
#define DVAPI DV_IMPORT_API
|
||
|
#define DVVAR DV_IMPORT_VAR
|
||
|
#endif
|
||
|
|
||
|
class TOStream;
|
||
|
class TIStream;
|
||
|
class TUnit;
|
||
|
|
||
|
class DVAPI TDoubleKeyframe
|
||
|
{
|
||
|
public:
|
||
|
enum Type {
|
||
|
None = 0,
|
||
|
Constant,
|
||
|
Linear,
|
||
|
SpeedInOut,
|
||
|
EaseInOut,
|
||
|
EaseInOutPercentage,
|
||
|
Exponential,
|
||
|
Expression,
|
||
|
File,
|
||
|
SimilarShape
|
||
|
};
|
||
|
|
||
|
class DVAPI FileParams
|
||
|
{
|
||
|
public:
|
||
|
TFilePath m_path;
|
||
|
int m_fieldIndex;
|
||
|
FileParams() : m_path(), m_fieldIndex(0) {}
|
||
|
};
|
||
|
|
||
|
static inline bool isKeyframeBased(int type)
|
||
|
{
|
||
|
return type < TDoubleKeyframe::Expression && type != TDoubleKeyframe::SimilarShape;
|
||
|
}
|
||
|
|
||
|
//private:
|
||
|
Type m_type;
|
||
|
Type m_prevType;
|
||
|
double m_frame;
|
||
|
double m_value;
|
||
|
bool m_isKeyframe;
|
||
|
int m_step;
|
||
|
TPointD m_speedIn, m_speedOut;
|
||
|
|
||
|
bool m_linkedHandles;
|
||
|
string m_expressionText;
|
||
|
FileParams m_fileParams;
|
||
|
string m_unitName; // file/expression only
|
||
|
double m_similarShapeOffset;
|
||
|
|
||
|
void saveData(TOStream &os) const;
|
||
|
void loadData(TIStream &is);
|
||
|
|
||
|
public:
|
||
|
TDoubleKeyframe(double frame = 0, double value = 0);
|
||
|
~TDoubleKeyframe();
|
||
|
|
||
|
bool operator<(const TDoubleKeyframe &k) const { return m_frame < k.m_frame; }
|
||
|
};
|
||
|
|
||
|
#endif
|