#ifndef TTONECURVEPARAM_H #define TTONECURVEPARAM_H #include "tcommon.h" #include "tparamset.h" #include "tstroke.h" #include "tnotanimatableparam.h" #include #ifdef WIN32 #pragma warning(disable : 4251) #endif #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 DVAPI TToneCurveParam : public TParam { PERSIST_DECLARATION(TToneCurveParam) TParamSetP m_rgbaParamSet; TParamSetP m_rgbParamSet; TParamSetP m_rParamSet; TParamSetP m_gParamSet; TParamSetP m_bParamSet; TParamSetP m_aParamSet; TBoolParamP m_isLinear; enum ToneChannel { RGBA = 0, RGB, Red, Green, Blue, Alpha } m_toneChannel; public: TToneCurveParam(); TToneCurveParam(const TToneCurveParam &src); ~TToneCurveParam() {} TParamSetP getParamSet(ToneChannel channel) const; TParamSetP getCurrentParamSet() const; TBoolParamP getIsLinearParam() const { return m_isLinear; } void setCurrentChannel(ToneChannel channel); ToneChannel getCurrentChannel() const { return m_toneChannel; } TParam *clone() const { return new TToneCurveParam(*this); } void copy(TParam *src); void addObserver(TParamObserver *); void removeObserver(TParamObserver *); QList getValue(double frame) const; void setValue(double frame, const QList &value, bool undoing = false); void setDefaultValue(const QList &value); bool isLinear() const; void setIsLinear(bool isLinear); void addValue(double frame, const QList &value, int index); void removeValue(double frame, int index); // virtual void enableNotification(bool on) {} // virtual bool isNotificationEnabled() const { return true;} string getValueAlias(double frame, int precision); bool isAnimatable() const { return true; }; bool isKeyframe(double frame) const; void deleteKeyframe(double frame); void clearKeyframes(); void assignKeyframe(double frame, const TSmartPointerT &src, double srcFrame, bool changedOnly = false); void getKeyframes(std::set &frames) const; bool hasKeyframes() const; int getNextKeyframe(double frame) const; int getPrevKeyframe(double frame) const; double keyframeIndexToFrame(int index) const; void loadData(TIStream &is); void saveData(TOStream &os); }; #ifdef WIN32 template class DVAPI TSmartPointerT; template class DVAPI TDerivedSmartPointerT; #endif class DVAPI TToneCurveParamP : public TDerivedSmartPointerT { public: TToneCurveParamP() {} TToneCurveParamP(TToneCurveParam *p) : TDerivedSmartPointerT(p) {} TToneCurveParamP(const TParamP &p) : TDerivedSmartPointerT(p) {} operator TParamP() const { return TParamP(m_pointer); } }; #endif