X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fcanvas%2Fcanvas%2Fcurve.h;h=fad1119b39b6479118d7641b5f5b841fa9b2fbec;hb=d92686afb4105b84b014372b6feb0ccc454a5171;hp=d05107640cc2a2efea17d8b11663de62016e665b;hpb=58a30da03d31f5a30faddd76efe4e76b242f6687;p=ardour.git diff --git a/libs/canvas/canvas/curve.h b/libs/canvas/canvas/curve.h index d05107640c..fad1119b39 100644 --- a/libs/canvas/canvas/curve.h +++ b/libs/canvas/canvas/curve.h @@ -21,21 +21,26 @@ #include "canvas/visibility.h" +#include "canvas/interpolated_curve.h" #include "canvas/poly_item.h" #include "canvas/fill.h" namespace ArdourCanvas { -class LIBCANVAS_API Curve : public PolyItem, public Fill +class XFadeCurve; + +class LIBCANVAS_API Curve : public PolyItem, public InterpolatedCurve { -public: - Curve (Group *); + public: + Curve (Canvas*); + Curve (Item*); - enum SplineType { - CatmullRomUniform, - CatmullRomCentripetal, + enum CurveFill { + None, + Inside, + Outside, }; - + void compute_bounding_box () const; void render (Rect const & area, Cairo::RefPtr) const; void set (Points const &); @@ -43,19 +48,17 @@ public: void set_points_per_segment (uint32_t n); bool covers (Duple const &) const; + void set_fill_mode (CurveFill cf) { curve_fill = cf; } private: Points samples; Points::size_type n_samples; uint32_t points_per_segment; - SplineType curve_type; + CurveFill curve_fill; - double map_value (double) const; void interpolate (); - - static void interpolate (const Points& coordinates, uint32_t points_per_segment, SplineType, bool closed, Points& results); }; - + } #endif