\property Voice.Porrectus \override #'solid = ##t
\property Voice.Porrectus \override #'add-stem = ##t
\property Voice.Porrectus \override #'stem-direction = #-1
+ \property Voice.Porrectus \override #'line-thickness = #0.5
\key es \major
\clef "vaticana_fa2"
c!1 des! e! f! ges!
a! b!
\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
\property Voice.NoteHead \override #'style = #'vaticana_virga
- ces' b! ces'! \~ ges! \~ fes!
+ ces' b! des'! \~ ges! \~ fes!
\breathe
\clef "vaticana_fa1"
\property Voice.NoteHead \override #'style = #'vaticana_quilisma
\property Voice.Porrectus \override #'add-stem = ##t
\property Voice.Porrectus \override #'stem-direction = #1
\property Voice.Porrectus \override #'line-thickness = #0.7
- % \property Voice.Porrectus \override #'porrectus-width = #3.0
+% \property Voice.Porrectus \override #'auto-properties = ##t
+% \property Voice.Porrectus \override #'porrectus-width = #3.0
\key a \major
% IMPORTANT NOTE:
e2 f g
\clef "mensural_g"
- % FIXME: In the second and all subsequent lines of score, the
- % stems and accidentals of the junked notes keep visible on
- % porrectus grobs. Is this an initialization bug in the line
- % breaking algorithm?
-
bes'! \~ as'! \~ cis''!
bes'! \~ fis'! as'! \~ ges'!
\property Staff.forceClef = ##t
*
* TODO: Hufnagel support.
*
- * TODO: Fine-tuning of vaticana-style porrectus shape; in particular,
- * ensure solidity if solid is set to #t and thickness is very small.
- *
- * TODO: For white mensural (i.e. #'style=#'mensural, #'solid=##f)
- * porrectus grobs, it is possible to automatically determine all
- * porrectus specific properties (add-stem, stem-direction) solely
- * from the duration of the contributing notes and time-signature.
- * Introduce a boolean grob property called auto-config, so that, if
- * turned on, lily automatically sets the properties add-stem and
- * stem-direction properly.
- *
* TODO: The following issues are currently not handled by this
- * engraver: (1) accidentals placement, (2) avoiding line breaking
- * inbetween porrectus, (3) spacing. (Han-Wen says: for (2), look at
- * beam engraver.) For example, currently only the accidental for the
- * second note (cp. the above FIXME) is printed. These issues should
- * be resolved by some sort of ligature context that encloses use of
- * this engraver, using syntax like: \ligature { e \~ c }.
+ * engraver: (1) accidentals placement, (2) spacing. For example,
+ * currently only the accidental for the second note (cp. the above
+ * FIXME) is printed. These issues should be resolved by some sort of
+ * ligature context that encloses use of this engraver, using syntax
+ * like: \ligature { e \~ c }.
*
* TODO: Do not allow a series of adjacent porrectus requests, as in:
* e \~ d \~ c.
*
* TODO: Junk duplicate (or rather triple) implementation of
- * create_ledger_line in porrectus.cc, custos.cc and note-head.cc. */
+ * create_ledger_line in porrectus.cc, custos.cc and note-head.cc.
+ */
#include "staff-symbol-referencer.hh"
#include "porrectus.hh"
#include "rhythmic-head.hh"
#include "item.hh"
#include "engraver.hh"
+#include "score-engraver.hh"
#include "pqueue.hh"
+#include "warn.hh"
// TODO: PHead_melodic_tuple is duplicated code from tie-engraver.cc.
// Maybe put this into public class?
protected:
virtual bool try_music (Music *req_l);
+ virtual void process_music ();
virtual void create_grobs ();
virtual void stop_translation_timestep ();
virtual void start_translation_timestep ();
return false;
}
+void
+Porrectus_engraver::process_music ()
+{
+ if (porrectus_req_l_)
+ {
+ // TODO: Move code that forbids breaking into ligature music
+ // wrapper?
+ Score_engraver *engraver = 0;
+ for (Translator *translator = daddy_grav_l ();
+ translator && !engraver;
+ translator = translator->daddy_trans_l_)
+ {
+ engraver = dynamic_cast<Score_engraver*> (translator);
+ }
+
+ if (!engraver)
+ programming_error ("No score engraver!");
+ else
+ engraver->forbid_breaks ();
+ }
+}
+
void
Porrectus_engraver::acknowledge_grob (Grob_info info_l_)
{