X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Falign-interface.hh;h=45963a7a00f6d5f946153f98b38602db4e017701;hb=58ff15e68c0d00ee54ca9f5565d6bc3c8304c076;hp=457629455fff9750491a20be6aa07c5814e5e105;hpb=5f14b2141454dd5d1c557c95923c5a33a984a480;p=lilypond.git diff --git a/lily/include/align-interface.hh b/lily/include/align-interface.hh index 457629455f..45963a7a00 100644 --- a/lily/include/align-interface.hh +++ b/lily/include/align-interface.hh @@ -1,33 +1,55 @@ /* - align-interface.hh -- declare Align_interface - - source file of the GNU LilyPond music typesetter - - (c) 2000--2004 Han-Wen Nienhuys - - */ + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2000--2010 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 #define ALIGN_INTERFACE_HH #include "lily-proto.hh" -#include "lily-guile.hh" - -struct Align_interface { - DECLARE_SCHEME_CALLBACK (alignment_callback, (SCM element, SCM axis)); - DECLARE_SCHEME_CALLBACK (fixed_distance_alignment_callback, (SCM element, SCM axis)); - static void align_to_fixed_distance (Grob*,Axis a); - static void align_elements_to_extents (Grob*,Axis a); - static void set_axis (Grob*,Axis); - static Axis axis (Grob*) ; - static void add_element (Grob*,Grob*, SCM callback); - static int get_count (Grob*,Grob*); - - static bool has_interface (Grob*); +#include "std-vector.hh" +#include "grob-interface.hh" + +class Align_interface +{ +public: + DECLARE_SCHEME_CALLBACK (align_to_minimum_distances, (SCM)); + DECLARE_SCHEME_CALLBACK (align_to_ideal_distances, (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(); + + static Real get_pure_child_y_translation (Grob *, Grob *child, int start, int end); + +protected: + static vector internal_get_minimum_translations (Grob *, vector const&, + Axis a, + bool include_fixed_spacing, + bool pure, int start, int end); }; -Grob *find_fixed_alignment_parent (Grob *g); - - #endif /* ALIGN_INTERFACE_HH */