]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/system-start-delimiter-engraver.cc
Web-ja: update introduction
[lilypond.git] / lily / system-start-delimiter-engraver.cc
index 7d8647051023099eec5019c699aeabb993b3b6e8..b7a210e86956e01ed9a66f63d73dabcd60b7c4f7 100644 (file)
@@ -1,10 +1,20 @@
 /*
-  System-start-delimiter-engraver.cc -- implement
-  System_start_delimiter_engraver
+  This file is part of LilyPond, the GNU music typesetter.
 
-  source file of the GNU LilyPond music typesetter
+  Copyright (C) 2005--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
-  (c) 2005--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "engraver.hh"
@@ -16,6 +26,8 @@
 #include "staff-symbol.hh"
 #include "system-start-delimiter.hh"
 
+#include "translator.icc"
+
 struct Bracket_nesting_node
 {
 public:
@@ -30,7 +42,7 @@ public:
 struct Bracket_nesting_group : public Bracket_nesting_node
 {
   Spanner *delimiter_;
-  vector<Bracket_nesting_node*> children_;
+  vector<Bracket_nesting_node *> children_;
   SCM symbol_;
 
   void from_list (SCM);
@@ -43,7 +55,6 @@ struct Bracket_nesting_group : public Bracket_nesting_node
   Bracket_nesting_group ();
 };
 
-
 struct Bracket_nesting_staff : public Bracket_nesting_node
 {
   Grob *staff_;
@@ -52,7 +63,6 @@ struct Bracket_nesting_staff : public Bracket_nesting_node
   virtual bool add_staff (Grob *);
 };
 
-
 Bracket_nesting_group::Bracket_nesting_group ()
 {
   symbol_ = SCM_EOL;
@@ -75,9 +85,9 @@ Bracket_nesting_group::create_grobs (Engraver *engraver, SCM default_type)
 {
   SCM type = scm_is_symbol (symbol_) ? symbol_ : default_type;
   delimiter_ = engraver->make_spanner (ly_symbol2string (type).c_str (),
-                                      SCM_EOL);
+                                       SCM_EOL);
 
-  for (vsize i = 0 ; i < children_.size (); i++)
+  for (vsize i = 0; i < children_.size (); i++)
     children_[i]->create_grobs (engraver, default_type);
 }
 
@@ -85,7 +95,7 @@ void
 Bracket_nesting_group::add_support (Grob *g)
 {
   Side_position_interface::add_support (g, delimiter_);
-  for (vsize i = 0 ; i < children_.size (); i++)
+  for (vsize i = 0; i < children_.size (); i++)
     children_[i]->add_support (g);
 }
 
@@ -98,7 +108,7 @@ void
 Bracket_nesting_group::set_bound (Direction d, Grob *g)
 {
   delimiter_->set_bound (d, g);
-  for (vsize i = 0 ; i < children_.size (); i++)
+  for (vsize i = 0; i < children_.size (); i++)
     children_[i]->set_bound (d, g);
 }
 
@@ -108,11 +118,10 @@ Bracket_nesting_group::set_nesting_support (Grob *parent)
   if (parent)
     Side_position_interface::add_support (delimiter_, parent);
 
-  for (vsize i = 0 ; i < children_.size (); i++)
+  for (vsize i = 0; i < children_.size (); i++)
     children_[i]->set_nesting_support (delimiter_);
 }
 
-
 void
 Bracket_nesting_group::from_list (SCM x)
 {
@@ -120,18 +129,18 @@ Bracket_nesting_group::from_list (SCM x)
     {
       SCM entry = scm_car (s);
       if (scm_is_pair (entry))
-       {
-         Bracket_nesting_group *node = new Bracket_nesting_group;
-         node->from_list (entry);
-         children_.push_back (node);
-       }
-      else if (entry == ly_symbol2scm ("SystemStartBrace")
-              || entry == ly_symbol2scm ("SystemStartBracket")
-              || entry == ly_symbol2scm ("SystemStartBar")
-              || entry == ly_symbol2scm ("SystemStartSquare"))
-       symbol_ = entry;
+        {
+          Bracket_nesting_group *node = new Bracket_nesting_group;
+          node->from_list (entry);
+          children_.push_back (node);
+        }
+      else if (scm_is_eq (entry, ly_symbol2scm ("SystemStartBrace"))
+               || scm_is_eq (entry, ly_symbol2scm ("SystemStartBracket"))
+               || scm_is_eq (entry, ly_symbol2scm ("SystemStartBar"))
+               || scm_is_eq (entry, ly_symbol2scm ("SystemStartSquare")))
+        symbol_ = entry;
       else
-       children_.push_back (new Bracket_nesting_staff (0));
+        children_.push_back (new Bracket_nesting_staff (0));
     }
 }
 
@@ -141,18 +150,15 @@ Bracket_nesting_group::add_staff (Grob *grob)
   for (vsize i = 0; i < children_.size (); i++)
     {
       if (children_[i]->add_staff (grob))
-       {
-         Pointer_group_interface::add_grob (delimiter_,
-                                            ly_symbol2scm ("elements"), grob);
-         return true;
-       }
+        {
+          Pointer_group_interface::add_grob (delimiter_,
+                                             ly_symbol2scm ("elements"), grob);
+          return true;
+        }
     }
   return false;
 }
 
-
-
-
 /****************/
 
 class System_start_delimiter_engraver : public Engraver
@@ -163,14 +169,15 @@ public:
 protected:
   Bracket_nesting_group *nesting_;
 
-  DECLARE_ACKNOWLEDGER (system_start_delimiter);
-  DECLARE_ACKNOWLEDGER (staff_symbol);
+  void acknowledge_system_start_delimiter (Grob_info);
+  void acknowledge_staff_symbol (Grob_info);
 
   void process_music ();
   virtual void finalize ();
 };
 
-System_start_delimiter_engraver::System_start_delimiter_engraver ()
+System_start_delimiter_engraver::System_start_delimiter_engraver (Context *c)
+  : Engraver (c)
 {
   nesting_ = 0;
 }
@@ -187,7 +194,7 @@ System_start_delimiter_engraver::process_music ()
       nesting_->from_list (hierarchy);
       nesting_->create_grobs (this, delimiter_name);
       nesting_->set_bound (LEFT,
-                          unsmob_grob (get_property ("currentCommandColumn")));
+                           unsmob<Grob> (get_property ("currentCommandColumn")));
     }
 }
 
@@ -197,7 +204,7 @@ System_start_delimiter_engraver::finalize ()
   if (nesting_)
     {
       nesting_->set_bound (RIGHT,
-                          unsmob_grob (get_property ("currentCommandColumn")));
+                           unsmob<Grob> (get_property ("currentCommandColumn")));
       nesting_->set_nesting_support (0);
 
       delete nesting_;
@@ -223,29 +230,32 @@ System_start_delimiter_engraver::acknowledge_system_start_delimiter (Grob_info i
   nesting_->add_support (inf.grob ());
 }
 
-#include "translator.icc"
 
-ADD_ACKNOWLEDGER (System_start_delimiter_engraver, staff_symbol);
-ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_delimiter);
+void
+System_start_delimiter_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (System_start_delimiter_engraver, staff_symbol);
+  ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_delimiter);
+}
 
 ADD_TRANSLATOR (System_start_delimiter_engraver,
-               /* doc */
-               "Create a system start delimiter (i.e., a"
-               " @code{SystemStartBar}, @code{SystemStartBrace},"
-               " @code{SystemStartBracket} or @code{SystemStartSquare}"
-               " spanner).",
-
-               /* create */
-               "SystemStartSquare "
-               "SystemStartBrace "
-               "SystemStartBracket "
-               "SystemStartBar ",
-
-               /* read */
-               "systemStartDelimiter "
-               "systemStartDelimiterHierarchy "
-               "currentCommandColumn ",
-
-               /* write */
-               ""
-               );
+                /* doc */
+                "Create a system start delimiter (i.e., a"
+                " @code{SystemStartBar}, @code{SystemStartBrace},"
+                " @code{SystemStartBracket} or @code{SystemStartSquare}"
+                " spanner).",
+
+                /* create */
+                "SystemStartSquare "
+                "SystemStartBrace "
+                "SystemStartBracket "
+                "SystemStartBar ",
+
+                /* read */
+                "systemStartDelimiter "
+                "systemStartDelimiterHierarchy "
+                "currentCommandColumn ",
+
+                /* write */
+                ""
+               );