+1.3.22.hwn2
+===========
+
+* Symbols opposite to stem (eg marcato) now get the proper glyph.
+
+* Breathing marks now have a direction by default.
+
+* Do set generic script properties.
+
+* Also put tuplet brackets under notes.
+
+* Score_element_info: only store origin of element, but not the path
+to parent translators. Saves a little memory, and removes some complexity.
+
+
+1.3.22.hwn1
+===========
+
+* Autobeaming in time sigs that don't have 1/4 beats fixed.
+
+* (De)crescendi should now work. (Thanks Michael)
+
+* Better error reporting for conflicting time signatures.
+
+* Line_number_engraver: output locations of note head
+definitions. Very handy when entering complicated scores.
+
+* Rewrote multi measure rest support: now they are entered as spanners
+(\commandspanrequest \start "rest"). RXXXX is an abbreviation for
+\commandspanrequest \start "rest" SXXXX \commandspanrequest \stop "rest".
+
+* Removed support of percent style repetitions.
+
+* Put texts outside the staff.
+
1.3.21.mb1
==========
* Getopt bugfix: don't assert on certain errors.
.* TODO
. * use hash tabs iso. alist_ for elt property?
. * fix tremolos.
+. * ROADMAP file.
+. * change ) c4 to c4-)
. * internationalize GUILE msgs.
-gg
. * unbroken marks.
. * write smobifying howto.
-. * tuplet spanner dir
. * \property autoBeamOverRest (boolean). Don't stop for rests when autobeaming.
?
. * put property test files in refman.
. * alignment within @itemize
. * interstaff stems
. * junk dstream output.
-. * agressive type-checking for SCM stuff.
+. * Change website to be index to documentation.
. * \prop slurdir in grace notes
+. * \eltproperty "=Context" "Elt_name" "prop-name" #value
. * script columns
. * Must stop before this music ends:
verse=\lyrics {
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=3
-PATCH_LEVEL=22
+PATCH_LEVEL=23
MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
bool
Breathing_sign_engraver::do_try_music (Music*r_l)
{
- if (Breathing_sign_req * b= dynamic_cast <Breathing_sign_req *> (r_l)) {
- breathing_sign_req_l_ = b;
- return true;
- }
+ if (Breathing_sign_req * b= dynamic_cast <Breathing_sign_req *> (r_l))
+ {
+ breathing_sign_req_l_ = b;
+ return true;
+ }
return false;
}
void
Breathing_sign_engraver::do_process_requests()
{
- if(breathing_sign_req_l_) {
- breathing_sign_p_ = new Breathing_sign;
- Staff_symbol_referencer_interface st (breathing_sign_p_);
- st.set_interface ();
+ if(breathing_sign_req_l_)
+ {
+ breathing_sign_p_ = new Breathing_sign;
+ breathing_sign_p_->set_elt_property ("break-aligned", SCM_BOOL_T);
+ Staff_symbol_referencer_interface st (breathing_sign_p_);
+ st.set_interface ();
- announce_element (Score_element_info (breathing_sign_p_, breathing_sign_req_l_));
- }
+ announce_element (Score_element_info (breathing_sign_p_, breathing_sign_req_l_));
+ }
}
void
Breathing_sign_engraver::do_pre_move_processing()
{
- if(breathing_sign_p_) {
- typeset_element(breathing_sign_p_);
- breathing_sign_p_ = 0;
- }
+ if(breathing_sign_p_)
+ {
+ typeset_element(breathing_sign_p_);
+ breathing_sign_p_ = 0;
+ }
}
void
Breathing_sign_engraver::do_post_move_processing()
{
- breathing_sign_req_l_ = 0;
+ breathing_sign_req_l_ = 0;
}
ADD_THIS_TRANSLATOR(Breathing_sign_engraver);
{
Staff_symbol_referencer_interface si (this);
- Real dl = si.staff_space();
- Interval i1(0, dl / 6), i2(-dl / 2, dl / 2);
+ Real space = si.staff_space();
+ Interval i1(0, space / 6), i2(-space / 2, space / 2);
Box b(i1, i2);
Molecule *output = new Molecule (lookup_l()->filledbox(b));
-
+
return output;
}
void
Breathing_sign::do_post_processing()
{
- Real dl = Staff_symbol_referencer_interface (this).staff_space();
-
- translate_axis(2.0 * dl * directional_element(this).get (), Y_AXIS);
+ Real space = staff_symbol_referencer (this).staff_space();
+ Direction d = directional_element (this). get ();
+ if (!d)
+ {
+ d = UP;
+ directional_element(this).set (d);
+ }
+
+ translate_axis(2.0 * space * d, Y_AXIS);
}
virtual Molecule*do_brew_molecule_p() const;
public:
Time_signature () ;
+
+ /*
+ TODO: make this SCM!
+ */
Array<int> args_;
VIRTUAL_COPY_CONS(Score_element);
set_elt_property ("breakable", SCM_BOOL_T);
}
+// ugh.!
Molecule*
Time_signature::do_brew_molecule_p () const
{