From: fred Date: Sun, 24 Mar 2002 19:53:29 +0000 (+0000) Subject: lilypond-0.1.7 X-Git-Tag: release/1.5.59~4136 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=9d2872b06bdd8dbf8d3880fe1f7cb0b4c5768779;p=lilypond.git lilypond-0.1.7 --- diff --git a/lily/include/axis-group.hh b/lily/include/axis-group.hh new file mode 100644 index 0000000000..bdf758cb42 --- /dev/null +++ b/lily/include/axis-group.hh @@ -0,0 +1,53 @@ +/* +axis-group.hh -- declare Axis_group_administration, Axis_group_element + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#ifndef Axis_group_administration_HH +#define Axis_group_administration_HH + +#include "parray.hh" +#include "axes.hh" +#include "real.hh" +#include "lily-proto.hh" +#include "score-elem.hh" +/** + Do the dirty work for Axis_group_element. + */ +struct Axis_group_administration { + Link_array elem_l_arr_; + + Interval extent(Axis)const; + void print() const ; + Axis_group_administration(Axis_group_administration const&); + Axis_group_administration(){} + void remove_all(Axis a1,Axis a2); + + bool contains_b(Score_elem const *)const; + void add_element(Score_elem*, Axis_group_element*, Axis a1, Axis a2); + void remove_element(Score_elem*, Axis a1, Axis a2); +}; + +/** + Treat a group of elements a unity in either or both axis sense . + This is a wrapper around Axis_group_administration + */ +class Axis_group_element : public virtual Score_elem { +protected: + Axis_group_administration axis_admin_; + virtual void do_print()const; + virtual Link_array get_extra_dependencies()const; + virtual void do_unlink(); + +public: + virtual void remove_all()=0; + virtual void add_element(Score_elem*)=0; + virtual void remove_element(Score_elem*)=0; + virtual bool contains_b(Score_elem const *)const; + DECLARE_MY_RUNTIME_TYPEINFO; +}; +#endif // Axis_group_administration_HH diff --git a/lily/include/elem-group.hh b/lily/include/elem-group.hh index 9569dcd90c..baf3010c09 100644 --- a/lily/include/elem-group.hh +++ b/lily/include/elem-group.hh @@ -1,5 +1,5 @@ /* - elem-group.hh -- declare Horizontal_vertical_group + elem-group.hh -- declare Horizontal_vertical_group_element source file of the GNU LilyPond music typesetter @@ -11,49 +11,36 @@ #define ELEM_GROUP_HH #include "score-elem.hh" +#include "axis-group.hh" -class Elbement_group: public virtual Score_elem { + + +/** + Treat a group of elements a unity in horizontal sense . + A column is a typical Vertical_group. + */ +class Horizontal_group_element : public virtual Axis_group_element { protected: - Link_array elem_l_arr_; - - virtual void do_print() const ; -public: - Elbement_group(Elbement_group const&); - Elbement_group(); - bool contains_b(Score_elem const *)const; - void add_element(Score_elem*); - DECLARE_MY_RUNTIME_TYPEINFO; -}; + virtual void remove_all(); + virtual Interval do_width()const; -class Horizontal_group : public Elbement_group { public: DECLARE_MY_RUNTIME_TYPEINFO; - Horizontal_group(){} - void add_element(Score_elem*); - Horizontal_group(Horizontal_group const&); - void remove_element(Score_elem*); + virtual void add_element(Score_elem*); + virtual void remove_element(Score_elem*); -protected: - virtual Horizontal_group * horizontal_group() { return this; } - virtual void do_substitute_dependency(Score_elem*,Score_elem*); - virtual void do_print() const ; - virtual void translate_x(Real); - virtual Interval do_width()const; }; - -class Vertical_group : public Elbement_group { +/** + Like Horizontal_group_element, but in X direction + */ +class Vertical_group_element : public virtual Axis_group_element { protected: - virtual void translate_y(Real); - virtual void do_print() const ; virtual Interval do_height()const; - virtual void do_substitute_dependency(Score_elem*,Score_elem*); - virtual Vertical_group * vertical_group() { return this; } + virtual void remove_all(); + public: - void add_element(Score_elem*); - void remove_element(Score_elem*); - - Vertical_group(Vertical_group const &); - Vertical_group(){} + virtual void add_element(Score_elem*); + virtual void remove_element(Score_elem*); DECLARE_MY_RUNTIME_TYPEINFO; }; @@ -61,18 +48,16 @@ public: dimensions are the unions of the dimensions of what it contains. Translation means translating the contents. */ -class Horizontal_vertical_group : public Vertical_group, - public Horizontal_group +class Horizontal_vertical_group_element : public Vertical_group_element, + public Horizontal_group_element { protected: - virtual Horizontal_vertical_group* elem_group() { return this; } + virtual void remove_all(); public: - Horizontal_vertical_group(); - bool contains_b(Score_elem const *)const; - DECLARE_MY_RUNTIME_TYPEINFO; - virtual void do_substitute_dependency(Score_elem*,Score_elem*); - virtual void do_print() const; - void add_element(Score_elem*); + virtual void add_element(Score_elem*); + virtual void remove_element(Score_elem*); + + DECLARE_MY_RUNTIME_TYPEINFO; }; #endif // ELEM_GROUP_HH