X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Falign-interface.hh;h=655d894d08ac95f122264b60e9ceac41ab65f232;hb=9e781b7dc83b60a543ce218aa1a5f139f74c760f;hp=4f1d3491419a228a2604d6bf789345d82d8738d8;hpb=16cb456cabf477f6d398ff731aa0f10b60913394;p=lilypond.git diff --git a/lily/include/align-interface.hh b/lily/include/align-interface.hh index 4f1d349141..655d894d08 100644 --- a/lily/include/align-interface.hh +++ b/lily/include/align-interface.hh @@ -1,9 +1,20 @@ /* - align-interface.hh -- declare Align_interface + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2000--2014 Han-Wen Nienhuys - (c) 2000--2007 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 ALIGN_INTERFACE_HH @@ -13,26 +24,33 @@ #include "std-vector.hh" #include "grob-interface.hh" -struct Align_interface +class Align_interface { - DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM)); - DECLARE_SCHEME_CALLBACK (stretch_after_break, (SCM element)); - static void align_to_fixed_distance (Grob *, Axis a); - static void align_elements_to_extents (Grob *, Axis a); - static vector get_extents_aligned_translates (Grob *, vector const&, - Axis a, - bool safe, int start, int end); +public: + DECLARE_SCHEME_CALLBACK (align_to_minimum_distances, (SCM)); + DECLARE_SCHEME_CALLBACK (align_to_ideal_distances, (SCM)); + DECLARE_SCHEME_CALLBACK (full_score_pure_minimum_translations, (SCM)); + static void align_elements_to_minimum_distances (Grob *, Axis a); + static void align_elements_to_ideal_distances (Grob *); + static vector get_minimum_translations (Grob *, vector const &, Axis a); + static vector get_minimum_translations_without_min_dist (Grob *, vector const &, Axis a); + static vector get_pure_minimum_translations (Grob *, vector const &, + Axis a, int start, int end); static void set_ordered (Grob *); static Axis axis (Grob *); static void add_element (Grob *, Grob *); static int get_count (Grob *, Grob *); - DECLARE_GROB_INTERFACE(); + DECLARE_GROB_INTERFACE (); static Real get_pure_child_y_translation (Grob *, Grob *child, int start, int end); -}; -Grob *find_fixed_alignment_parent (Grob *g); +protected: + static vector internal_get_minimum_translations (Grob *, vector const &, + Axis a, + bool include_fixed_spacing, + bool pure, int start, int end); +}; #endif /* ALIGN_INTERFACE_HH */