Repeat INSENSITIVE colors instead of relying on inheritance
[ardour.git] / libs / canvas / canvas / curve.h
index d05107640cc2a2efea17d8b11663de62016e665b..fad1119b39b6479118d7641b5f5b841fa9b2fbec 100644 (file)
 
 #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<Cairo::Context>) 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