]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/graphical-element.hh
release: 1.1.18
[lilypond.git] / lily / include / graphical-element.hh
index b74fe14535108f73c0da083bb93f6cb37c6e4542..465fe357001ac384593a6245aa98350615349e46 100644 (file)
 #include "lily-proto.hh"
 #include "interval.hh"
 #include "virtual-methods.hh"
+#include "dimension-cache.hh"
+
+
 
 /** The 2d geometric aspects of a score-element.  It was put in a
   separate class, because Score_element got quite big.
-
   */
 class Graphical_element 
 {
   void init ();
-  /** Is this element dimensionless?.
-    This is private to guarantee correctness of the cache
-   */
-  bool empty_b_;
-  
-  Offset offset_;
-  Interval cached_dimension_a_[NO_AXES];
-  bool cached_valid_b_a_[NO_AXES];
 public:
+  Dimension_cache dim_cache_[NO_AXES];
 
+  char const * name () const;
   void set_empty (bool);
-
   bool empty_b () const;
   
-  
-  
-  Graphical_axis_group * axis_group_l_a_[NO_AXES];
-  
   Graphical_element ();
   Graphical_element (Graphical_element const&);
+  virtual ~Graphical_element ();
   
   void invalidate_cache (Axis);
   Interval extent (Axis) const;
-  Interval width() const;
-  Interval height() const;
  
   /**
     translate the symbol. The symbol does not have to be created yet. 
@@ -58,13 +48,17 @@ public:
     
   void translate_axis (Real, Axis);
 
-  Real relative_coordinate (Graphical_axis_group*group, Axis) const;
+  Real relative_coordinate (Dimension_cache*group, Axis) const;
   Offset absolute_offset() const;
   Real absolute_coordinate (Axis) const;
   /**
     Find the group-element which has both #this# and #s#
    */
-  Graphical_axis_group*common_group (Graphical_element const* s, Axis a) const;
+  Dimension_cache*common_group (Graphical_element const* s, Axis a) const;
+  Dimension_cache*common_group (Link_array<Graphical_element> elems, Axis a) const;
+  
+  Graphical_element *parent_l (Axis a) const;
+  
   void unlink ();
   void junk_links ();
   virtual void do_print () const;