lilypond-1.3.55
authorfred <fred>
Tue, 26 Mar 2002 23:22:23 +0000 (23:22 +0000)
committerfred <fred>
Tue, 26 Mar 2002 23:22:23 +0000 (23:22 +0000)
CHANGES
VERSION
lily/bar.cc
lily/span-bar.cc

diff --git a/CHANGES b/CHANGES
index 496aaedfee965bc22744698bcd91b4cb02db1ef7..6495aaa3aae0c230951b4b0b0b90355d99635aca 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,11 +1,34 @@
-1.3.53.uu1
-==========
+1.3.54.hwn2
+===========
+
+* Experimental property collapse for most score-elements.  (notable
+exceptions: Scripts, pedals). Change all Score_element constructors to
+take a basic-property list. The suffix of a property list may be
+shared by several score-elements, for instance all default G-clefs in
+a score share the following settings
+  
+          (breakable . #t)
+          (break-align-symbol . Clef_item)
+          (visibility-lambda . ,begin-of-line-visible) 
+
+This should reduce memory usage further. 
+
+* Magically fixed the disappearing Lyrics problem.
+
+* Removed used_b_ field from Score_element.  
+
+* Massive search-replace patch: store pointers and properties
+separately, in preparation of property collapse.
+
+
+1.3.54
+======
 
 * Bugfix: don't crash on tuplet spanners that don't contain any notes.
 
-* Small cleanup of Dimension_cache: removed a few redundant
-fields. Slightly lower memory usage. Dimension_cache is now a `dumb'
-struct again.
+* Cleanup of Dimension_cache: removed a few redundant
+fields. Slightly lower memory usage (32 bytes per
+score-element). Dimension_cache is now a `dumb' struct again.
 
 * Add array index to priority field of text scripts to ensure that
 order is unique, and sensible.
diff --git a/VERSION b/VERSION
index c3ec2ace94040b1b89bebe2f4d4a052925a8a160..4f9a3e72629fd9b41ae66332bf06bfb4b58c5f5a 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=54
+PATCH_LEVEL=55
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
index 99f65c026ecabd64f111efc1d4efdeed0ca5a658..ec2b812b3e8066eeebc3561cbd7c21c074e87869 100644 (file)
@@ -18,9 +18,9 @@
 #include "debug.hh"
 #include "all-font-metrics.hh"
 
-Bar::Bar ()
+Bar::Bar (SCM s)
+  : Item (s)
 {
-  set_elt_property ("breakable", SCM_BOOL_T);
 }
 
 
@@ -124,6 +124,7 @@ void
 Bar::before_line_breaking ()
 {
   SCM g = get_elt_property ("glyph");
+  SCM orig = g;
   Direction bsd = break_status_dir ();
   if (gh_string_p (g))
     {
@@ -146,7 +147,7 @@ Bar::before_line_breaking ()
       set_elt_property ("transparent", SCM_BOOL_T);
       set_extent_callback (0, X_AXIS);      
     }
-  else
+  else if (! gh_equal_p  (g, orig))
     set_elt_property ("glyph", g);
 }
   
index c5f29de20fadfba00b1bb743d57519b6e727085f..741d7c00f0d450484d5267eaeab1890e1e7ae1e8 100644 (file)
@@ -18,7 +18,7 @@
 void
 Span_bar::add_bar (Score_element*b)
 {
-  Group_interface gi (this);
+  Pointer_group_interface gi (this);
   gi.add_element (b);
 
   add_dependency (b);
@@ -26,7 +26,7 @@ Span_bar::add_bar (Score_element*b)
 
 
 Interval
-Span_bar::width_callback (Score_element const *se, Axis a)
+Span_bar::width_callback (Score_element const *se, Axis )
 {
   Span_bar*  s= dynamic_cast<Span_bar*> ((Score_element*)se);
   String gl = ly_scm2string (s->get_elt_property ("glyph"));
@@ -58,7 +58,7 @@ Span_bar::after_line_breaking ()
 void
 Span_bar::evaluate_empty ()
 { 
-  if (!gh_pair_p (get_elt_property ("elements")))
+  if (!gh_pair_p (get_elt_pointer ("elements")))
     {
       set_elt_property ("transparent", SCM_BOOL_T);
       set_extent_callback (0, X_AXIS);
@@ -74,6 +74,7 @@ Span_bar::evaluate_empty ()
     }
   else {
     String type_str = ly_scm2string (gl);
+    String orig = type_str;
     if (type_str == "|:") 
       {
        type_str= ".|";
@@ -86,8 +87,8 @@ Span_bar::evaluate_empty ()
       {
        type_str= ".|.";
       }
-
-    set_elt_property ("glyph", ly_str02scm (type_str.ch_C()));
+    if (orig != type_str)
+      set_elt_property ("glyph", ly_str02scm (type_str.ch_C()));
   }
 }
 
@@ -110,9 +111,10 @@ Span_bar::get_bar_size () const
   return iv.length ();
 }
 
-Span_bar::Span_bar ()
+Span_bar::Span_bar (SCM s)
+  : Bar (s)
 {
-  group (this).set_interface ();
+  Pointer_group_interface(this).set_interface ();
   set_extent_callback (width_callback, X_AXIS);
   
   // dim_cache_[Y_AXIS]->set_extent_callback (Axis_group_interface::group_extent_callback);