X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fbezier.hh;h=681c8c1816450f23bd4b075dbc8551a1ee0b848e;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=1f9bd2d2523c1bde1304a8eebe302e1e360f7a85;hpb=1384ea3714bfd327c32d7bdbf3e194f5ab473d66;p=lilypond.git diff --git a/lily/include/bezier.hh b/lily/include/bezier.hh index 1f9bd2d252..681c8c1816 100644 --- a/lily/include/bezier.hh +++ b/lily/include/bezier.hh @@ -1,54 +1,74 @@ /* - bezier.hh -- declare Bezier and Bezier_bow + This file is part of LilyPond, the GNU music typesetter. - (c) 1998--2000 Jan Nieuwenhuizen + Copyright (C) 1998--2015 Jan Nieuwenhuizen + + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #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: void assert_sanity () const; - void flip (Axis); + void scale (Real x, Real y); void reverse (); void rotate (Real); void translate (Offset); + void subdivide (Real, Bezier *, Bezier *) const; + Bezier extract (Real, Real) 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 get_other_coordinates (Axis a, Real x) const; + vector solve_point (Axis, Real coordinate) const; + Real minmax (Axis, Real, Real, Direction) 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; + Real slope_at_point (Real t) const; + Real curve_coordinate (Real t, Axis) const; static const int CONTROL_COUNT = 4; /* Bezier curves always have 4 control points. Making this into an - Array<> gives unnecessary overhead, and makes debugging a royal + vector<> gives unnecessary overhead, and makes debugging a royal pain. */ - Offset control_[4]; }; -void flip (Array* arr_p, Axis a); -void rotate (Array* arr_p, Real phi); -void translate (Array* arr_p, Offset o); +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