X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fslur-configuration.hh;h=be30352676bd072e8690369134340df854def5d2;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=b1b9f9a6e55033009f86c9f6b63a63252a2ce5d7;hpb=9f3572d98bb948c9689cd1f75401a029451fa001;p=lilypond.git diff --git a/lily/include/slur-configuration.hh b/lily/include/slur-configuration.hh index b1b9f9a6e5..be30352676 100644 --- a/lily/include/slur-configuration.hh +++ b/lily/include/slur-configuration.hh @@ -1,17 +1,28 @@ /* - slur-configuration.hh -- declare Slur_configuration + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2004--2015 Han-Wen Nienhuys - (c) 2004--2006 Han-Wen Nienhuys + 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 SLUR_CONFIGURATION_HH #define SLUR_CONFIGURATION_HH #include "bezier.hh" +#include "lily-proto.hh" #include "std-vector.hh" -#include "main.hh" class Slur_configuration { @@ -22,23 +33,50 @@ public: Drul_array attachment_; Bezier curve_; Real height_; - int index_; + enum Slur_scorers + { + INITIAL_SCORE, + SLOPE, + EDGES, + EXTRA_ENCOMPASS, + ENCOMPASS, + NUM_SCORERS, + }; + + int next_scorer_todo; + Slur_configuration (); Real score () const { return score_; } - string card () const { return score_card_; } - void add_score (Real, string); - + string card () const { return score_card_; } + void add_score (Real, const string&); + void generate_curve (Slur_score_state const &state, Real r0, Real h_inf, - vector const &); - void calculate_score (Slur_score_state const &); + vector const &); + void run_next_scorer (Slur_score_state const &); + bool done () const; + static Slur_configuration *new_config (Drul_array const &offs, int idx); + protected: void score_extra_encompass (Slur_score_state const &); void score_slopes (Slur_score_state const &); void score_edges (Slur_score_state const &); void score_encompass (Slur_score_state const &); + + friend class Slur_configuration_less; +}; + +// Comparator for a queue of Beam_configuration*. +class Slur_configuration_less +{ +public: + bool operator () (Slur_configuration *const &l, Slur_configuration *const &r) + { + // Invert + return l->score_ > r->score_; + } }; #endif /* SLUR_CONFIGURATION_HH */