X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Faxis-group-interface.hh;h=fa662020967bfbe57f6234c2ef9cded251b94225;hb=99503a78627620112cabb61bb9f1cee3fe9dfcb4;hp=3d72a99494eae311437be103feaa96d5103f5862;hpb=736088f09a0b77acc84f6e1a54cddb8bad3d94c1;p=lilypond.git diff --git a/lily/include/axis-group-interface.hh b/lily/include/axis-group-interface.hh index 3d72a99494..fa66202096 100644 --- a/lily/include/axis-group-interface.hh +++ b/lily/include/axis-group-interface.hh @@ -1,46 +1,68 @@ -/* - axis-group-interface.hh -- declare Axis_group_interface - - source file of the GNU LilyPond music typesetter - - (c) 2000 Han-Wen Nienhuys - - */ +/* + This file is part of LilyPond, the GNU music typesetter. -#ifndef AXIS_GROUP_INTERFACE_HH -#define AXIS_GROUP_INTERFACE_HH + Copyright (C) 2000--2011 Han-Wen Nienhuys -#include "group-interface.hh" + 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. -/** - Treat a group of elements as a union. This sets the parent of any S - added to ELT_L_ to ELT_L_. + 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. - Properties: - - axes -- list of axis (number) in which this group works + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . +*/ - transparent -- an Axis_group is transparent by default +#ifndef AXIS_GROUP_INTERFACE_HH +#define AXIS_GROUP_INTERFACE_HH - elements -- contains list of pointers to other elements +#include "std-vector.hh" +#include "lily-proto.hh" +#include "grob-interface.hh" +#include "skyline.hh" - interfaces -- Axis_group is added to this list. -*/ -struct Axis_group_interface +struct Axis_group_interface { - Score_element *elt_l_; - Axis_group_interface (Score_element*); - - static Interval group_extent_callback (Score_element const*,Axis); - static Interval relative_group_extent (Axis, Score_element * common, SCM list); - - void add_element (Score_element*); - void set_axes (Axis,Axis); - bool axis_b (Axis)const; - Link_array get_children (); - bool has_interface_b (); - void set_interface (); - + static SCM generic_group_extent (Grob *me, Axis a); + static Interval pure_group_height (Grob *me, int start, int end); + DECLARE_SCHEME_CALLBACK (width, (SCM smob)); + DECLARE_SCHEME_CALLBACK (calc_x_common, (SCM smob)); + DECLARE_SCHEME_CALLBACK (calc_y_common, (SCM smob)); + DECLARE_SCHEME_CALLBACK (height, (SCM smob)); + DECLARE_SCHEME_CALLBACK (pure_height, (SCM smob, SCM start, SCM end)); + DECLARE_SCHEME_CALLBACK (calc_skylines, (SCM smob)); + DECLARE_SCHEME_CALLBACK (combine_skylines, (SCM smob)); + DECLARE_SCHEME_CALLBACK (print, (SCM smob)); + DECLARE_SCHEME_CALLBACK (adjacent_pure_heights, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_staff_staff_spacing, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_pure_staff_staff_spacing, (SCM, SCM, SCM)); + DECLARE_SCHEME_CALLBACK (calc_pure_relevant_grobs, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_pure_relevant_items, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_pure_relevant_spanners, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_pure_y_common, (SCM)); + static Interval relative_group_extent (vector const &list, + Grob *common, Axis); + static Interval relative_pure_height (Grob *me, int start, int end); + static Interval combine_pure_heights (Grob *me, SCM, int, int); + static Interval sum_partial_pure_heights (Grob *me, int, int); + static Interval begin_of_line_pure_height (Grob *me, int); + static Interval rest_of_line_pure_height (Grob *me, int, int); + static Interval part_of_line_pure_height (Grob *me, bool begin, int, int); + + static Skyline_pair skyline_spacing (Grob *me, vector elements); + static void add_element (Grob *me, Grob *); + static void set_axes (Grob *, Axis, Axis); + static bool has_axis (Grob *, Axis); + static void get_children (Grob *, vector *); + static Interval staff_extent (Grob *me, Grob *ref, Axis, Grob *staff, Axis); + static SCM calc_common (Grob *, Axis); + static Real minimum_distance (Grob*, Grob*, Axis); + static SCM calc_maybe_pure_staff_staff_spacing (Grob*, bool, int, int); + DECLARE_GROB_INTERFACE(); }; #endif /* AXIS_GROUP_INTERFACE_HH */