]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/line-interface.cc (line): remove thickness from calling interface.
authorhanwen <hanwen>
Sun, 18 Jan 2004 19:47:20 +0000 (19:47 +0000)
committerhanwen <hanwen>
Sun, 18 Jan 2004 19:47:20 +0000 (19:47 +0000)
* lily/hairpin.cc: use Line_interface

* lily/line-interface.cc: new file. Line_interface for everything
with dotted/dashed lines.

* lily/tuplet-bracket.cc (make_bracket): use Line_interface.

* lily/ottava-bracket.cc (brew_molecule): new file, separate routine
for constructing ottava brackets.

* lily/lookup.cc: remove Lookup::horizontal_slope (): it is
functionally identical to beam.

15 files changed:
ChangeLog
lily/balloon.cc
lily/hairpin.cc
lily/include/line-interface.hh
lily/include/line-spanner.hh
lily/include/lookup.hh
lily/include/tuplet-bracket.hh
lily/line-interface.cc
lily/line-spanner.cc
lily/lookup.cc
lily/ottava-bracket.cc
lily/text-spanner.cc
lily/tuplet-bracket.cc
lily/volta-bracket.cc
scm/define-grobs.scm

index c3ee2c36a8c0d54fe359791136efab0afa398204..978247bfd5318054fd82fb40d7aa6acea9ecfda4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2004-01-18  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
+       * lily/line-interface.cc (line): remove thickness from calling interface.
+
        * lily/hairpin.cc: use Line_interface
 
        * lily/line-interface.cc: new file. Line_interface for everything
index dfb4d86f2ee84773b0a7c8cc46ce4f44b6671762..78938c99144d27b36a7135a03631a6b70b398565 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "text-item.hh"
 #include "grob.hh"
+#include "line-interface.hh"
 #include "lookup.hh"
 #include "font-interface.hh"
 #include "molecule.hh"
@@ -83,7 +84,7 @@ Balloon_interface::brew_molecule (SCM smob)
 
   Offset z2 = z1 + off;
   
-  fr.add_molecule (Lookup::line (0.1, z1, z2));
+  fr.add_molecule (Line_interface::line (me, z1, z2));
 
   text_mol->translate (z2);
   fr.add_molecule (*text_mol);
index 8dc7cda20d4c327b5889a5e037eaf679c7aec8ba..66a9931df86835aa33ae3802d17af9d9fc551d2d 100644 (file)
@@ -25,8 +25,6 @@ Hairpin::brew_molecule (SCM smob)
   Grob *me= unsmob_grob (smob);
   Spanner *spanner = dynamic_cast<Spanner*> (me);
 
-  Real line = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));  
-  
   SCM s = me->get_grob_property ("grow-direction");
   if (!is_direction (s))
     {
@@ -103,7 +101,6 @@ Hairpin::brew_molecule (SCM smob)
 
   bool continued = broken[Direction (-grow_dir)];
   Real height = gh_scm2double (me->get_grob_property ("height"));
-  Real thick = line * gh_scm2double (me->get_grob_property ("thickness"));
 
   Real starth, endh;
   if (grow_dir < 0)
@@ -122,12 +119,10 @@ Hairpin::brew_molecule (SCM smob)
    */
 
   Molecule mol;
-  mol  = Line_interface::dashed_line (me,
-                                     thick,
+  mol  = Line_interface::line (me,
                                      Offset (0, starth),
                                      Offset (width, endh));
-  mol.add_molecule (Line_interface::dashed_line (me,
-                                                thick,
+  mol.add_molecule (Line_interface::line (me,
                                                 Offset (0, -starth),
                                                 Offset (width, -endh)));
 
index f81d9f68c191b12c102211de4982b27e5ff9283d..0bf56707a09bf0cafdaf22a7a6c4fa668b6b4fe7 100644 (file)
@@ -14,11 +14,12 @@ source file of the GNU LilyPond music typesetter
 
 struct Line_interface
 {
-  static Molecule dashed_line (Grob *me, Real thick, Offset from, Offset to);
+  static Molecule line (Grob *me, Offset from, Offset to);
   static bool has_interface (Grob*);
   static Molecule make_dashed_line (Real th, Offset from, Offset to, Real, Real);
-
+  static Molecule make_line (Real th, Offset from, Offset to);
 };
+
 #endif /* LINE_INTERFACE_HH */
 
 
index a3d32d7c62fbaa86676eeca13812f68ccef8cde9..d120bb8d4259f1bc8212c67e10135114796ce0cd 100644 (file)
@@ -17,8 +17,7 @@ class Line_spanner
 public:
   DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM));
   DECLARE_SCHEME_CALLBACK(after_line_breaking, (SCM));  
-  static Molecule line_molecule (Grob* me, Real thick,
-                                Offset f, Offset t);
+  static Molecule line_molecule (Grob* me, Offset f, Offset t);
   static bool has_interface (Grob*);
 
 private:
index 959b278a8dac17bf47caa6d648077028943fc041..e4bcbb7244557d53016b68c2015fb10bf7d92bd3 100644 (file)
@@ -31,7 +31,6 @@ struct Lookup
   static Molecule filled_box (Box b);
   static Molecule round_filled_box (Box b, Real blotdiameter);
   static Molecule repeat_slash (Real w, Real slope, Real th);
-  static Molecule line (Real th, Offset from, Offset to);
   static Molecule horizontal_line (Interval w, Real th);
   static Molecule triangle (Interval, Real, Real);
 };
index 46ff0bd0069c78f1faef34cbf244a9e74912e356..004e1485a3d2f380fda373b0736c15023ee82a0b 100644 (file)
@@ -33,7 +33,7 @@ public:
 
   DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM ));
   static Molecule make_bracket (Grob *me,  Axis protusion_axis,
-                               Offset dz, Real thick, Drul_array<Real> height,
+                               Offset dz,  Drul_array<Real> height,
                                Real gap, Drul_array<Real> widen,
                                Drul_array<Real> shorten);
   static Direction get_default_dir (Grob*);
index cac08cc08e607b2191d83e12851377f2fbd9de2c..e3660924f8d60ab246a18198c43f9eec628f67ab 100644 (file)
@@ -12,7 +12,7 @@ source file of the GNU LilyPond music typesetter
 #include "grob.hh"
 #include "staff-symbol-referencer.hh"
 #include "lookup.hh"
-
+#include "paper-def.hh"
 
 
 Molecule
@@ -42,12 +42,38 @@ Line_interface::make_dashed_line (Real thick, Offset from, Offset to,
   m.translate (from);
   return m;
 }
+
+Molecule
+Line_interface::make_line (Real th, Offset from, Offset to)
+{
+  SCM at = scm_list_n (ly_symbol2scm ("draw-line"),
+                       gh_double2scm (th), 
+                       gh_double2scm (from[X_AXIS]),
+                       gh_double2scm (from[Y_AXIS]),
+                       gh_double2scm (to[X_AXIS]),
+                       gh_double2scm (to[Y_AXIS]),
+                       SCM_UNDEFINED);
+
+  Box box;
+  box.add_point (from);
+  box.add_point (to);
+
+  box[X_AXIS].widen (th/2);
+  box[Y_AXIS].widen (th/2);  
+
+  return Molecule (box, at);
+}
+
+
 /*
   TODO: read THICK from ME
  */
 Molecule
-Line_interface::dashed_line (Grob *me, Real thick, Offset from, Offset to)
+Line_interface::line (Grob *me, Offset from, Offset to)
 {
+  Real thick = me->get_paper()->get_realvar (ly_symbol2scm ("linethickness"));  
+  thick *= robust_scm2double (me->get_grob_property ("thickness"), 1.0); // todo: staff sym referencer? 
+  
   SCM type = me->get_grob_property ("style");
   if (type == ly_symbol2scm ("dotted-line")
       || type == ly_symbol2scm ("dashed-line"))
@@ -67,7 +93,7 @@ Line_interface::dashed_line (Grob *me, Real thick, Offset from, Offset to)
     }
   else
     {
-      return Lookup::line (thick, from, to);
+      return make_line (thick, from, to);
     }
 }
 
index c6b0ff9df89eb8ad76c0b15683140976a4241f93..578206975d47e5e2991f1dcacd0e760554ffd9cd 100644 (file)
 #include "lookup.hh"
 #include "line-interface.hh"
 
-/*
-  TODO: convert all Molecule functions to taking arguments of the form
-
-  Offset FROM, Offset TO.
-
-
-  TODO:
-
-  Introduce line-interface that allows dots/dashes/etc. to be set as
-  grob-properties. Make arbitrary paths.
-  
- */
-
-
 Molecule
-zigzag_molecule (Grob *me, Real thick, 
+zigzag_molecule (Grob *me, 
                 Offset from,
                 Offset to)
 {
   Offset dz = to -from;
   Real dx = dz[X_AXIS];
   Real dy = dz[Y_AXIS];
+
+  Real thick = me->get_paper()->get_realvar (ly_symbol2scm ("linethickness"));  
+  thick *= robust_scm2double (me->get_grob_property ("thickness"), 1.0); // todo: staff sym referencer? 
   
   Real staff_space = Staff_symbol_referencer::staff_space (me);
   SCM ws = me->get_grob_property ("zigzag-width");
@@ -104,7 +93,7 @@ Line_spanner::after_line_breaking (SCM  g)
 
 
 Molecule
-Line_spanner::line_molecule (Grob *me, Real thick,
+Line_spanner::line_molecule (Grob *me, 
                             Offset from,
                             Offset to)
 {
@@ -118,8 +107,8 @@ Line_spanner::line_molecule (Grob *me, Real thick,
          || (type == ly_symbol2scm ("trill") && dz[Y_AXIS] != 0)))
     {
       return  (type == ly_symbol2scm ("zigzag"))
-       ? zigzag_molecule (me, thick, from, to)
-       : Line_interface::dashed_line (me, thick, from, to);
+       ? zigzag_molecule (me, from, to)
+       : Line_interface::line (me, from, to);
     }
   else if (gh_symbol_p (type)
           && type == ly_symbol2scm ("trill"))
@@ -201,11 +190,6 @@ Line_spanner::brew_molecule (SCM smob)
   Offset my_off;
   Offset his_off;
   
-  Real thick = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));  
-
-  SCM s = me->get_grob_property ("thickness");
-  if (gh_number_p (s))
-    thick *= gh_scm2double (s);
 
   if (bound[RIGHT]->break_status_dir())
     {
@@ -262,7 +246,7 @@ Line_spanner::brew_molecule (SCM smob)
       dz = (dz.length () - 2*gap) *dir;
       
   
-      Molecule l (line_molecule (me, thick, Offset(0, 0), dz));
+      Molecule l (line_molecule (me, Offset(0, 0), dz));
 
       l.translate (dir * gap +  p1
                   - Offset (me->relative_coordinate (commonx, X_AXIS),
@@ -297,7 +281,7 @@ Line_spanner::brew_molecule (SCM smob)
       ofxy = dxy * (off/dxy.length ());
       dxy -= 2*ofxy;
   
-      Molecule line = line_molecule (me, thick, Offset (0,0),dxy);
+      Molecule line = line_molecule (me, Offset (0,0),dxy);
 
       line.translate_axis (bound[LEFT]->extent (bound[LEFT], X_AXIS).length ()/2, X_AXIS); 
       line.translate (ofxy - my_off + his_off);
index 4bb7c2d8a6be10202d00f0d628797283a34d0c38..4182cd434da55332b45f36fc7809a0139b36b6d1 100644 (file)
@@ -6,13 +6,11 @@
   (c)  1997--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
   Jan Nieuwenhuizen <janneke@gnu.org>
-
-  TODO
-      Glissando
 */
 #include <math.h>
 #include <ctype.h>
 
+#include "line-interface.hh"
 #include "warn.hh"
 #include "dimensions.hh"
 #include "bezier.hh"
@@ -97,26 +95,6 @@ Lookup::dashed_slur (Bezier b, Real thick, Real dash)
   return   Molecule (box, at);
 }
 
-Molecule
-Lookup::line (Real th, Offset from, Offset to)
-{
-  SCM at = scm_list_n (ly_symbol2scm ("draw-line"),
-                       gh_double2scm (th), 
-                       gh_double2scm (from[X_AXIS]),
-                       gh_double2scm (from[Y_AXIS]),
-                       gh_double2scm (to[X_AXIS]),
-                       gh_double2scm (to[Y_AXIS]),
-                       SCM_UNDEFINED);
-
-  Box box;
-  box.add_point (from);
-  box.add_point (to);
-
-  box[X_AXIS].widen (th/2);
-  box[Y_AXIS].widen (th/2);  
-
-  return Molecule (box, at);
-}
 
 
 Molecule
@@ -275,7 +253,7 @@ Lookup::round_filled_polygon (Array<Offset> points, Real blotdiameter)
   if (points.size () == 1)
     return dot (points[0], 0.5 * blotdiameter);
   if (points.size () == 2)
-    return line (blotdiameter, points[0], points[1]);
+    return Line_interface::make_line (blotdiameter, points[0], points[1]);
 
   /* shrink polygon in size by 0.5 * blotdiameter */
   Array<Offset> shrinked_points;
@@ -346,8 +324,6 @@ Lookup::round_filled_polygon (Array<Offset> points, Real blotdiameter)
 
 /*
   TODO: deprecate?
-
-  should use rounded corners.
  */
 Molecule
 Lookup::frame (Box b, Real thick, Real blot)
index f72ccf9adcf11ecbede01d48043d8d69f91e36af..bd64057891a766ae3216e85fb6f1804a7bfd5ba5 100644 (file)
@@ -97,9 +97,6 @@ Ottava_bracket::brew_molecule (SCM smob)
   Interval bracket_span_points = span_points;
   bracket_span_points[LEFT] += text_offset;
   
-  Real thick = paper->get_realvar (ly_symbol2scm ("linethickness"));  
-  thick *= robust_scm2double (me->get_grob_property ("thickness"), 1.0);
-
   Drul_array<Real> edge_height = robust_scm2interval (me->get_grob_property ("edge-height"),
                                                      Interval (1.0, 1.0));
 
@@ -118,7 +115,7 @@ Ottava_bracket::brew_molecule (SCM smob)
   if (!bracket_span_points.is_empty ())
     b = Tuplet_bracket::make_bracket (me,
                                      Y_AXIS, Offset (bracket_span_points.length (), 0),
-                                     thick, edge_height,
+                                      edge_height,
                                      0.0,
                                      flare, shorten);
   
index 9b4bcadaab64f1f55e5cbfd41778bf95f57a88a9..b575850ed4cf7dd2f8dabc3124f6068eee54038f 100644 (file)
@@ -32,8 +32,6 @@ MAKE_SCHEME_CALLBACK (Text_spanner, brew_molecule, 1);
 
 /*
   TODO: this function is too long
-
-
 */
 SCM
 Text_spanner::brew_molecule (SCM smob) 
@@ -105,13 +103,6 @@ Text_spanner::brew_molecule (SCM smob)
        }
       while (flip (&d) != LEFT);
     }
-
-  Real thick = paper->get_realvar (ly_symbol2scm ("linethickness"));  
-  SCM st = me->get_grob_property ("thickness");
-  if (gh_number_p (st))
-    {
-      thick *=  gh_scm2double (st);
-    }
   
   Drul_array<Real> edge_height = robust_scm2interval (me->get_grob_property ("edge-height"),
                                                      Interval (1.0, 1.0));
@@ -130,8 +121,7 @@ Text_spanner::brew_molecule (SCM smob)
 
          Real dy = - dir * edge_height[d] ;
          if (dy)
-           edge_line[d] = Line_spanner::line_molecule (me, thick, Offset(0,0),
-                                                       Offset (dx, dy));
+           edge_line[d] = Line_spanner::line_molecule (me, Offset(0,0), Offset (dx, dy));
        }
       while (flip (&d) != LEFT);
     }
@@ -160,8 +150,7 @@ Text_spanner::brew_molecule (SCM smob)
 
   if (!span_points.is_empty ())
     {
-      Molecule l =Line_spanner::line_molecule (me, thick,
-                                              Offset (span_points[LEFT], 0),
+      Molecule l =Line_spanner::line_molecule (me, Offset (span_points[LEFT], 0),
                                               Offset (span_points[RIGHT], 0));
       m.add_molecule (l);
     }
@@ -169,9 +158,6 @@ Text_spanner::brew_molecule (SCM smob)
   return m.smobbed_copy ();
 }
 
-
-
-
 ADD_INTERFACE (Text_spanner,"text-spanner-interface",
               "generic text spanner",
               "text-repeat-if-broken dash-period if-text-padding dash-fraction edge-height bracket-flare edge-text shorten-pair style thickness enclose-bounds width-correct");
index 4b4d76383f738dea14d7c21a63b7374749e3a40e..a499f296907b2d98681ef5488be1ea74f403f83d 100644 (file)
@@ -196,12 +196,6 @@ Tuplet_bracket::brew_molecule (SCM smob)
   
   if (bracket_visibility)      
     {
-      Real  lt =  pap->get_realvar (ly_symbol2scm ("linethickness"));
-
-      SCM thick = me->get_grob_property ("thickness");
-      if (gh_number_p (thick))
-       lt *= gh_scm2double (thick);
-
       SCM gap = me->get_grob_property ("gap");
       
       SCM fl = me->get_grob_property ("bracket-flare");
@@ -222,7 +216,7 @@ Tuplet_bracket::brew_molecule (SCM smob)
       while (flip (&d) != LEFT);
       
       Molecule brack = make_bracket (me, Y_AXIS,
-                                    Offset (w, ry - ly), lt,
+                                    Offset (w, ry - ly), 
                                     height,
                                     gh_scm2double (gap),
                                     flare,
@@ -245,7 +239,7 @@ Molecule
 Tuplet_bracket::make_bracket (Grob *me,        // for line properties.
                              Axis protusion_axis,
                              Offset dz,
-                             Real thick, Drul_array<Real> height,
+                             Drul_array<Real> height,
                              Real gap,
                              Drul_array<Real> flare,
                              Drul_array<Real> shorten)
@@ -275,10 +269,10 @@ Tuplet_bracket::make_bracket (Grob *me,   // for line properties.
 
   Molecule m;
   do {
-    m.add_molecule (Line_interface::dashed_line (me, thick, straight_corners[d],
+    m.add_molecule (Line_interface::line (me, straight_corners[d],
                                                 gap_corners[d]));
     
-    m.add_molecule (Line_interface::dashed_line (me, thick, straight_corners[d],
+    m.add_molecule (Line_interface::line (me,  straight_corners[d],
                                                 flare_corners[d]));
   } while (flip (&d) != LEFT);
 
index 195b0a7d600e909be576cedea7d6f273e8bec6c2..740054f775599ca51e4a048c00da99a92fb49231 100644 (file)
@@ -11,6 +11,7 @@
 #include "box.hh"
 #include "warn.hh"
 #include "font-interface.hh"
+#include "line-interface.hh"
 #include "molecule.hh"
 #include "paper-column.hh"
 #include "paper-def.hh"
@@ -66,7 +67,6 @@ Volta_bracket_interface::brew_molecule (SCM smob)
      && strcmp(cs,":|:")!=0 && strcmp(cs,".|")!=0);
 
   Paper_def * paper =me->get_paper ();
-  Real staff_thick = paper->get_realvar (ly_symbol2scm ("linethickness"));  
   Real half_space = 0.5;
 
   Item * bound = dynamic_cast<Spanner*> (me)->get_bound (LEFT);
@@ -90,16 +90,15 @@ Volta_bracket_interface::brew_molecule (SCM smob)
 
   Real w = dynamic_cast<Spanner*> (me)->spanner_length () - left - half_space;
   Real h =  gh_scm2double (me->get_grob_property ("height"));
-  Real t =  staff_thick * gh_scm2double (me->get_grob_property ("thickness"));
 
   Molecule start,end ;
   if (!no_vertical_start)
-    start = Lookup::line (t, Offset (0,0), Offset (0, h)); 
+    start = Line_interface::line (me, Offset (0,0), Offset (0, h)); 
   
   if (!no_vertical_end)
-    end = Lookup::line (t, Offset (w, 0), Offset (w,h));
+    end = Line_interface::line (me, Offset (w, 0), Offset (w,h));
 
-  Molecule mol = Lookup::line (t, Offset (0, h), Offset (w,h));
+  Molecule mol = Line_interface::line (me, Offset (0, h), Offset (w,h));
   mol.add_molecule (start);
   mol.add_molecule (end);
 
index 41b052e13808aef40422f495ab2bb70864a79b24..c30a1637acac5e741738033c398dedabadd2a3b7 100644 (file)
        (minimum-space . 5)
        (font-family . number)
        (font-size . -4)
-       (meta . ((interfaces . (volta-bracket-interface text-interface side-position-interface font-interface spanner-interface))))
+       (meta . ((interfaces . (volta-bracket-interface line-interface text-interface side-position-interface font-interface spanner-interface))))
        ))
     
     (VerticalAlignment