]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.1.14
authorfred <fred>
Sun, 24 Mar 2002 19:57:44 +0000 (19:57 +0000)
committerfred <fred>
Sun, 24 Mar 2002 19:57:44 +0000 (19:57 +0000)
lily/boxes.cc
lily/include/my-lily-parser.hh
lily/include/stem-grav.hh
lily/my-lily-parser.cc
lily/parser.y
lily/stem-grav.cc
lily/translator.cc

index 4a219a4864cbac2e299372ec8df701dee2fc630d..1bf7177336a380ca81c506c0f645fabe56d59860 100644 (file)
@@ -1,3 +1,11 @@
+/*
+  boxes.cc -- implement Box
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
 #include "boxes.hh"
 #include "varray.hh"
 
index d1a4b779144ee78e2d1adb3c6c5f5593981bf87d..b0666e160ade4a26948cad5e9cb0f85e0a4d58fb 100644 (file)
@@ -33,14 +33,12 @@ class My_lily_parser {
 
   void set_last_duration (Duration const *);
   void set_default_duration (Duration const *);
-  void set_last_abbrev (int type_i);
   void set_abbrev_beam (int type_i);
   void set_duration_mode (String s);
   friend int yyparse (void*);
 
 public:
   int abbrev_beam_type_i_;
-  int default_abbrev_type_i_;
   int default_octave_i_;
   Duration default_duration_;
   Plet plet_;
index 136e6e5095a543d230ed30a2f8344a2369ab93e0..b5a77589ec8519f0d6c55cc74f85c1aa48631a86 100644 (file)
 class Stem_engraver : public Engraver
 {
   Direction dir_;
+  int default_abbrev_i_;
   Stem *stem_p_;
   Rhythmic_req *rhythmic_req_l_;
   Abbreviation_req* abbrev_req_l_;
 protected:
+  virtual void do_creation_processing ();
   virtual void acknowledge_element (Score_elem_info);
   virtual void do_pre_move_processing ();
   virtual bool do_try_request (Request*);
index d03e29ffec6460d9193bf91b820bd380d531e682..bfa78512da7370199f6d8b9bfe8b4cdbce171402 100644 (file)
@@ -23,7 +23,6 @@ My_lily_parser::My_lily_parser (Sources * source_l)
   source_l_ = source_l;
   lexer_p_ = 0;
   abbrev_beam_type_i_ = 0;
-  default_abbrev_type_i_ = 0;
   default_duration_.durlog_i_ = 2;
   default_octave_i_ = 0;
   textstyle_str_="roman";              // in lexer?
@@ -145,18 +144,11 @@ My_lily_parser::set_abbrev_beam (int type_i)
   abbrev_beam_type_i_ = type_i;
 }
 
-void
-My_lily_parser::set_last_abbrev (int type_i)
-{
-  default_abbrev_type_i_ = type_i;
-}
-
 void
 My_lily_parser::set_default_duration (Duration const *d)
 {
   last_duration_mode_b_ = false;
   default_duration_ = *d;
-  set_last_abbrev (0);
 }
 
 
@@ -165,7 +157,6 @@ My_lily_parser::set_last_duration (Duration const *d)
 {
   if (last_duration_mode_b_)
     default_duration_ = *d;
-  set_last_abbrev (0);
 }
 
 
@@ -193,11 +184,11 @@ My_lily_parser::get_rest_element (String s,  Duration * duration_p)
 
   if (s=="s")
     { /* Space */
-    Skip_req * skip_p = new Skip_req;
-    skip_p->duration_ = *duration_p;
+      Skip_req * skip_p = new Skip_req;
+      skip_p->duration_ = *duration_p;
 
-    skip_p->set_spot (here_input());
-    velt_p->add (skip_p);
+      skip_p->set_spot (here_input());
+      velt_p->add (skip_p);
     }
   else 
     {
@@ -216,7 +207,7 @@ Chord *
 My_lily_parser::get_note_element (Note_req *rq, Duration * duration_p)
 {
   Chord*v = new Request_chord;
-  v->set_spot (here_input());
+  v->set_spot (here_input ());
 
   v->add (rq);
   
@@ -228,7 +219,7 @@ My_lily_parser::get_note_element (Note_req *rq, Duration * duration_p)
       duration_p->set_plet (1, 2);
     }
   rq->set_duration (*duration_p);
-  rq->set_spot (here_input());
+  rq->set_spot (here_input ());
   delete duration_p ;
   return v;
 }
index ed9a28aceb332d36258f1c3119ef58dd8fdcaab3..d7b2a0d4faada19162d32d4068241e164c38920f 100644 (file)
@@ -12,7 +12,7 @@
 #include <iostream.h>
 
 // mmm
-#define MUDELA_VERSION "0.1.5"
+#define MUDELA_VERSION "0.1.6"
 
 #include "scalar.hh"
 #include "translation-property.hh"
@@ -38,6 +38,7 @@
 #include "music-list.hh"
 #include "header.hh"
 #include "duration-convert.hh"
+#include "change-translator.hh"
 
 #ifndef NDEBUG
 #define YYDEBUG 1
@@ -210,7 +211,7 @@ yylex (YYSTYPE *s,  void * v_l)
 
 %type <scalar>  scalar
 %type <music>  Music transposed_music
-%type <music>  propertydef
+%type <music>  property_def translator_change
 %type <musiclist> Voice Voice_body
 %type <chord>  Chord Chord_body
 %type <paper>  paper_block paper_body
@@ -472,7 +473,7 @@ paper_block:
 
 paper_body:
        /* empty */                     {
-               $$ = THIS->default_paper (); // paper / video / engrave
+               $$ = THIS->default_paper ();
        }
        | PAPER_IDENTIFIER      {
                $$ = $1->paperdef ();
@@ -581,20 +582,24 @@ Music:
                { THIS->lexer_p_->push_lyric_state (); }
        Music
                { $$ = $3; THIS->lexer_p_->pop_state (); }
-       | propertydef
+       | property_def
+       | translator_change
        ;
 
-propertydef:
+translator_change:
        TRANSLATOR STRING '=' STRING  {
-               /* kluge.  Could use Music just as well */
-               Translation_property * t = new Translation_property;
-               t-> translator_type_str_ = *$2;
-               t-> translator_id_str_ = *$4;
+               Change_translator * t = new Change_translator;
+               t-> change_to_type_str_ = *$2;
+               t-> change_to_id_str_ = *$4;
+
                $$ = t;
                delete $2;
                delete $4;
        }
-       | PROPERTY STRING '.' STRING '=' scalar {
+       ;
+
+property_def:
+       PROPERTY STRING '.' STRING '=' scalar   {
                Translation_property *t = new Translation_property;
                t-> translator_type_str_ = *$2;
                t-> var_str_ = *$4;
@@ -614,6 +619,10 @@ scalar:
 
 Chord:
        '<' Chord_body '>'      { $$  = $2; }
+       | MULTI INT Chord {
+               $$ = $3;
+               $$->multi_level_i_=$2;
+       }
        ;
 
 Chord_body:
@@ -621,9 +630,6 @@ Chord_body:
                $$ = new Chord;
                $$-> multi_level_i_ = 1;
        }
-       | Chord_body MULTI INT ';' {
-               $$->multi_level_i_=$3;
-       }
        | Chord_body Music {
                $$->add ($2);
        }
@@ -978,7 +984,7 @@ voice_command:
 
                        c' -> default_octave_i_ == 1
                */
-               /* why can't we have \oct{0} iso \oct{c'}*/
+               /* why can't we have \oct 0 iso \oct{c'}*/
                THIS->default_octave_i_ = 1; }
 /* cont */
        steno_melodic_req {
@@ -1052,15 +1058,17 @@ explicit_steno_duration:
 
 
 abbrev_type: 
-       ':' int {
+       ':'     {
+               $$ =0;
+       }
+       | ':' int {
                if (!Duration::duration_type_b ($2))
                        THIS->parser_error ("Not a duration");
                else if ($2 < 8)
                        THIS->parser_error ("Can't abbreviate");
-               else
-                       THIS->set_last_abbrev ($2);
-               $$ = THIS->default_abbrev_type_i_;
+               $$ = $2;
        }
+
        ;
 
 music_elt:
index 2d81cc58f25eaa3e6c7ff5fcce9e6301fbe2af97..c2114bf972dd6df31291a4e14783a44429d1b220 100644 (file)
@@ -17,9 +17,20 @@ Stem_engraver::Stem_engraver()
 {
   abbrev_req_l_ = 0;
   stem_p_ = 0;
+  default_abbrev_i_ = 16;
   dir_ = CENTER;
 }
 
+void
+Stem_engraver::do_creation_processing ()
+{
+  Scalar prop = get_property ("abbrev");
+  if (prop && prop.isnum ()) 
+    {
+      default_abbrev_i_  = prop;
+    }
+}
+
 void
 Stem_engraver::acknowledge_element(Score_elem_info i)
 {
@@ -31,10 +42,18 @@ Stem_engraver::acknowledge_element(Score_elem_info i)
          Rhythmic_req * r = i.req_l_->musical()->rhythmic();
          stem_p_ = new Stem;
          int durlog_i = r->duration_.durlog_i_;
-         stem_p_->flag_i_ = Duration_convert::type2_i(durlog_i);
+         stem_p_->flag_i_ = durlog_i;
+
+         
          if (abbrev_req_l_)
-           stem_p_->abbrev_flag_i_ = intlog2 (abbrev_req_l_->type_i_) 
-             - (durlog_i>? 2);
+           {
+             int t = abbrev_req_l_->type_i_;
+             if (!t)
+               t = default_abbrev_i_;
+             else
+               default_abbrev_i_ = t;
+             stem_p_->abbrev_flag_i_ = intlog2 (t) - (durlog_i>? 2);
+           }
          announce_element (Score_elem_info (stem_p_, r));
        }
       stem_p_->add (h);
index 636123a950d32420ad9d1c51a29863303663cc28..58b4c589178f09a50610562213b83339187d61fa 100644 (file)
@@ -24,6 +24,7 @@ Translator::Translator ()
 }
 
 Translator::Translator (Translator const &s)
+  : Input (s)
 {
   status = ORPHAN;
   daddy_trans_l_ =0;
@@ -55,8 +56,16 @@ Translator::now_moment () const
 void
 Translator::add_processing ()
 {
-  if (status == ORPHAN)
-    status = VIRGIN;
+  if (status > ORPHAN)
+    return;
+  
+  do_add_processing ();
+  status = VIRGIN;
+}
+
+void
+Translator::do_add_processing ()
+{
 }
 
 void
@@ -65,7 +74,7 @@ Translator::print () const
 #ifndef NPRINT
   DOUT << name () << " {";
   if (name () != type_str_)
-    DOUT << "type= " << type_str_;
+    DOUT << "type = " << type_str_;
   for (Dictionary_iter<Scalar> i (properties_dict_); i.ok (); i++)
     {
       DOUT << i.key () << "=" << i.val () <<"\n";
@@ -107,8 +116,12 @@ Translator::post_move_processing()
 void
 Translator::removal_processing()
 {
+  if (status == ORPHAN)
+    return;
   creation_processing();
   do_removal_processing();
+  // elegancy ...
+  // status = ORPHAN;
 }