2 graphical-element.hh -- declare Graphical_element
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #ifndef GRAPHICAL_ELEMENT_HH
11 #define GRAPHICAL_ELEMENT_HH
14 #include "lily-proto.hh"
15 #include "interval.hh"
16 #include "virtual-methods.hh"
17 #include "dimension-cache.hh"
21 /** The 2d geometric aspects of a score-element. It was put in a
22 separate class, because Score_element got quite big.
24 class Graphical_element
28 Dimension_cache
*dim_cache_
[NO_AXES
];
31 Set this if anyone points to me, or if I point to anyone.
35 char const * name () const;
36 void set_empty (bool);
38 Graphical_element (Graphical_element
const&);
39 virtual ~Graphical_element ();
41 void invalidate_cache (Axis
);
42 Interval
extent (Axis
) const;
47 void translate (Offset
);
49 translate in one direction
52 void translate_axis (Real
, Axis
);
54 Real
relative_coordinate (Dimension_cache
*group
, Axis
) const;
55 Real
absolute_coordinate (Axis
) const;
57 Find the group-element which has both #this# and #s#
59 Dimension_cache
*common_group (Graphical_element
const* s
, Axis a
) const;
60 Dimension_cache
*common_group (Link_array
<Graphical_element
> elems
, Axis a
) const;
62 Graphical_element
*parent_l (Axis a
) const;
64 virtual void do_print () const;
67 #endif // GRAPHICAL_ELEMENT_HH