]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.1.37
authorfred <fred>
Tue, 26 Mar 2002 21:48:32 +0000 (21:48 +0000)
committerfred <fred>
Tue, 26 Mar 2002 21:48:32 +0000 (21:48 +0000)
lily/axis-group-element.cc
lily/axis-group-spanner.cc
lily/include/axis-group-element.hh
lily/include/axis-group-spanner.hh

index 0bce567acaaaf952045d94141c0d6f69903ef693..cd6000b464156d2b5ce33bb6fe81fd6279ff6d6e 100644 (file)
@@ -53,17 +53,40 @@ Axis_group_element::do_print() const
   Graphical_axis_group::do_print();
 }
 
-Axis_group_element::Axis_group_element(Axis a1, Axis a2)
-  : Graphical_axis_group (a1,a2)
+Axis_group_element::Axis_group_element()
 {
   set_elt_property (transparent_scm_sym, SCM_BOOL_T);
 }
 
-Axis_group_element::Axis_group_element ()
-  : Graphical_axis_group (X_AXIS, Y_AXIS)
+void
+Axis_group_element::set_axes (Axis a1, Axis a2)
 {
-  set_elt_property (transparent_scm_sym, SCM_BOOL_T);
+  Graphical_axis_group::set_axes (a1,a2);
+  dim_cache_[X_AXIS].set_empty ((a1 != X_AXIS && a2 != X_AXIS));
+  dim_cache_[Y_AXIS].set_empty ((a1 != Y_AXIS && a2 != Y_AXIS));
 }
 
 
+void
+Axis_group_element::do_substitute_element_pointer (Score_element*o,
+                                                  Score_element*n)
+{
+  int i;
+  while ((i = elem_l_arr_.find_i (o))>=0) 
+    if (n) 
+      elem_l_arr_[i] = n;
+    else
+      elem_l_arr_.del (i);
+}
+
+Interval
+Axis_group_element::do_height () const
+{
+  return Graphical_axis_group::extent (Y_AXIS);
+}
 
+Interval
+Axis_group_element::do_width () const
+{
+  return Graphical_axis_group::extent (X_AXIS);
+}
index c78cac0e118c7d7772e842c06d7245652a1d3e65..58214f51378b51387793665c6706196400957fbb 100644 (file)
@@ -131,5 +131,8 @@ Axis_group_spanner::do_print() const
 }
 
 
-
-
+Interval
+Axis_group_spanner::do_width () const
+{
+  return Spanner::do_width ();
+}
index ed80677fae0bd5acd93fde85955400e8e23f62af..d38c0d19609e012a8261bb3693a9b89a12aa97ee 100644 (file)
   This is a wrapper around Axis_group_administration
   */
 class Axis_group_element : public virtual Score_element,
-                          public Graphical_axis_group {
+                          public virtual Graphical_axis_group {
 protected:
   virtual void do_print() const;
   virtual Link_array<Score_element> get_extra_dependencies() const;
 
+  virtual Interval do_height () const;
+  virtual Interval do_width () const;  
 public:
+  virtual void do_substitute_element_pointer (Score_element*,Score_element*);
   virtual Link_array<Score_element> elem_l_arr() const;
-  Axis_group_element(Axis,Axis);
-  Axis_group_element();  
+  Axis_group_element ();
+  virtual void set_axes (Axis,Axis);
+
   virtual Link_array<Score_element> get_children ();
 };
 
index 138c58787a5da57e6337dd84e707929fe872c03d..40753a8a9a2267a68d8bcd27b24ac1a8682dd78a 100644 (file)
 
 /** An element which groups a line in a certain direction. The most
   useful example of this is the Vertical_group_spanner */
-class Axis_group_spanner : public Spanner, public virtual Axis_group_element
+class Axis_group_spanner : public virtual Axis_group_element,
+                          public virtual Spanner
+
 {
   void do_break_processing_if_unbroken();
 protected:
   virtual void do_break_processing();
   virtual void do_print() const;
+  virtual Interval do_width () const;
 
 public:
-  
+  VIRTUAL_COPY_CONS(Score_element);
 };
 
 #endif // SPAN_AXIS_GROUP_HH