X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fcurve.h;h=433b00a270be09ac058d1e99619019ef902e9b8e;hb=6698f5f686bef82b0c9568558c83a3b9b3344700;hp=dd63439f08500db8dde2521f6df6fc3e48442984;hpb=6edccc3070b813157ffcd4014ec8dd7fa6ed9ce7;p=ardour.git diff --git a/libs/ardour/ardour/curve.h b/libs/ardour/ardour/curve.h index dd63439f08..433b00a270 100644 --- a/libs/ardour/ardour/curve.h +++ b/libs/ardour/ardour/curve.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2001-2003 Paul Davis + Copyright (C) 2001-2007 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,6 +21,7 @@ #define __ardour_curve_h__ #include +#include #include #include #include @@ -30,50 +31,26 @@ namespace ARDOUR { -struct CurvePoint : public ControlEvent -{ - double coeff[4]; - - CurvePoint (double w, double v) - : ControlEvent (w, v) { - - coeff[0] = coeff[1] = coeff[2] = coeff[3] = 0.0; - } - - ~CurvePoint() {} -}; - -class Curve : public AutomationList +class Curve : public boost::noncopyable { public: - Curve (double min_yval, double max_yval, double defaultvalue, bool nostate = false); - ~Curve (); - Curve (const Curve& other); - Curve (const Curve& other, double start, double end); - Curve (const XMLNode&); + Curve (const AutomationList& al); bool rt_safe_get_vector (double x0, double x1, float *arg, int32_t veclen); void get_vector (double x0, double x1, float *arg, int32_t veclen); - AutomationEventList::iterator closest_control_point_before (double xval); - AutomationEventList::iterator closest_control_point_after (double xval); - void solve (); - static sigc::signal CurveCreated; - - protected: - ControlEvent* point_factory (double,double) const; - ControlEvent* point_factory (const ControlEvent&) const; - private: - AutomationList::iterator last_bound; - double unlocked_eval (double where); double multipoint_eval (double x); void _get_vector (double x0, double x1, float *arg, int32_t veclen); + void on_list_dirty() { _dirty = true; } + + bool _dirty; + const AutomationList& _list; }; } // namespace ARDOUR