X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fbezier.hh;h=98886105ee2e959699490f0455d13b1b69f08242;hb=0eb5d4ab7a8c5c147c7eaffe8752696c3728d6f0;hp=47890afca282bb42045d8cda90003774fbf06e6a;hpb=bb36bac02a64770871780231ecc709cb18b20932;p=lilypond.git diff --git a/lily/include/bezier.hh b/lily/include/bezier.hh index 47890afca2..98886105ee 100644 --- a/lily/include/bezier.hh +++ b/lily/include/bezier.hh @@ -1,46 +1,56 @@ /* bezier.hh -- declare Bezier and Bezier_bow - (c) 1998--2000 Jan Nieuwenhuizen + (c) 1998--2007 Jan Nieuwenhuizen */ #ifndef BEZIER_HH #define BEZIER_HH - -#include "real.hh" -#include "drul-array.hh" #include "interval.hh" -#include "axes.hh" #include "offset.hh" -#include "array.hh" #include "polynomial.hh" /** - Simple bezier curve - */ + Simple bezier curve +*/ class Bezier { public: - Bezier (); - + void assert_sanity () const; + void scale (Real x, Real y); + void reverse (); void rotate (Real); void translate (Offset); - void flip (Axis); - void check_sanity () const; + Real get_other_coordinate (Axis a, Real x) const; - Array solve_point (Axis, Real coordinate) const; - Array solve_derivative (Offset) const; - Interval extent (Axis)const; + vector solve_point (Axis, Real coordinate) const; + vector solve_derivative (Offset) const; + Interval extent (Axis) const; + Interval control_point_extent (Axis) const; + Polynomial polynomial (Axis)const; Offset curve_point (Real t) const; - - void reverse (); + Real curve_coordinate (Real t, Axis) const; static const int CONTROL_COUNT = 4; - Offset control_[CONTROL_COUNT]; + + /* + Bezier curves always have 4 control points. Making this into an + vector<> gives unnecessary overhead, and makes debugging a royal + pain. */ + + Offset control_[4]; }; +void scale (vector *array, Real xscale, Real yscale); +void rotate (vector *array, Real phi); +void translate (vector *array, Offset o); + +Bezier slur_shape (Real width, Real height_limit, + Real height_proportion); +Real slur_height (Real width, Real height_limit, Real height_proportion); +void get_slur_indent_height (Real *indent, Real *height, Real width, Real h_inf, Real r_0); #endif // BEZIER_HH