| #pragma once |
| |
| #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; |
| } |
| |
| |
| 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; |
| std::string m_expressionText; |
| FileParams m_fileParams; |
| std::string m_unitName; |
| 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 |