-// dimensions.cc
+/*
+ dimensions.cc -- implement Dimension handling
-#include "dimensions.hh"
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
+*/
+
+#include "lily-guile.hh"
+#include "dimensions.hh"
#include "warn.hh"
-String
-print_dimen (Real r)
+LY_DEFINE (ly_pt, "ly:pt",
+ 1, 0, 0, (SCM num),
+ "@var{num} printer points")
{
- String s = to_string (r, "%.3f");
- if (s.index ("NaN") != -1)
- {
- warning (_ ("NaN"));
- s = "0.0";
- }
- s += "pt";
- return s;
+ SCM_ASSERT_TYPE(scm_is_number (num), num, SCM_ARG1, __FUNCTION__,
+ "number");
+ return scm_from_double (point_constant
+ * scm_to_double (num));
}
+LY_DEFINE (ly_cm, "ly:cm",
+ 1, 0, 0, (SCM num),
+ "@var{num} cm")
+{
+ SCM_ASSERT_TYPE(scm_is_number (num), num, SCM_ARG1, __FUNCTION__,
+ "number");
+ return scm_from_double (cm_constant
+ * scm_to_double (num));
+}
+
+LY_DEFINE (ly_inch, "ly:inch",
+ 1, 0, 0, (SCM num),
+ "@var{num} inches")
+{
+ SCM_ASSERT_TYPE(scm_is_number (num), num, SCM_ARG1, __FUNCTION__,
+ "number");
+ return scm_from_double (inch_constant
+ * scm_to_double (num));
+}
+
+LY_DEFINE (ly_mm, "ly:mm",
+ 1, 0, 0, (SCM num),
+ "@var{num} mm")
+{
+ SCM_ASSERT_TYPE(scm_is_number (num), num, SCM_ARG1, __FUNCTION__,
+ "number");
+ return scm_from_double (mm_constant
+ * scm_to_double (num));
+}
+
+LY_DEFINE (ly_bp, "ly:bp",
+ 1, 0, 0, (SCM num),
+ "@var{num} bigpoints (1/72th inch)")
+{
+ SCM_ASSERT_TYPE(scm_is_number (num), num, SCM_ARG1, __FUNCTION__,
+ "number");
+ return scm_from_double (bigpoint_constant
+ * scm_to_double (num));
+}
(cons (* factor (cadr x))
(caddr x))))
`(
- (fetaNumber 20
+ (fetaNumber ,(ly:pt 20)
#(
,(delay (ly:font-load "feta-alphabet11"))
,(delay (ly:font-load "feta-alphabet13"))
,(delay (ly:font-load "feta-alphabet23"))
,(delay (ly:font-load "feta-alphabet26"))))
- (fetaDynamic 20.0 #(
+ (fetaDynamic ,(ly:pt 20.0) #(
,(delay (ly:font-load "feta-alphabet11"))
,(delay (ly:font-load "feta-alphabet13"))
,(delay (ly:font-load "feta-alphabet14"))
,(delay (ly:font-load "feta-alphabet23"))
,(delay (ly:font-load "feta-alphabet26"))))
- (fetaMusic 20.0
+ (fetaMusic ,(ly:pt 20.0)
#(
,(delay (ly:font-load "bigcheese11"))
,(delay (ly:font-load "bigcheese13"))
(cons (* factor (cadr x))
(cddr x))))
`((#(roman upright medium)
- . (10.0 . #(,(delay (ly:font-load "cmr6"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "cmr6"))
,(delay (ly:font-load "cmr8"))
,(delay (ly:font-load "cmr10"))
,(delay (ly:font-load "cmr17")))))
(#(roman upright bold)
- . (10.0 . #(,(delay (ly:font-load "cmbx6"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "cmbx6"))
,(delay (ly:font-load "cmbx8"))
,(delay (ly:font-load "cmbx10"))
,(delay (ly:font-load "cmbx12")))))
(#(roman italic medium)
- . (10.0 . #(,(delay (ly:font-load "cmti7"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "cmti7"))
,(delay (ly:font-load "cmti10"))
,(delay (ly:font-load "cmti12")))))
(#(roman italic bold)
- . (10.0 . #(,(delay (ly:font-load "cmbxti8"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "cmbxti8"))
,(delay (ly:font-load "cmbxti10"))
,(delay (ly:font-load "cmbxti14")))))
(#(roman caps medium)
- . (10.0 . #(,(delay (ly:font-load "cmcsc10")))))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "cmcsc10")))))
(#(roman upright bold-narrow )
- . (10.0 . #(,(delay (ly:font-load "cmb10")))))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "cmb10")))))
(#(sans upright medium)
- . (10.0 . #(,(delay (ly:font-load "cmss8"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "cmss8"))
,(delay (ly:font-load "cmss10"))
,(delay (ly:font-load "cmss12"))
,(delay (ly:font-load "cmss17")))))
(#(typewriter upright medium)
- . (10.0 . #(,(delay (ly:font-load "cmtt8"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "cmtt8"))
,(delay (ly:font-load "cmtt10"))
,(delay (ly:font-load "cmtt12"))))))))
(font-family . ,(vector-ref (car x) 0)))
(cons (* factor (cadr x)) (cddr x))))
`((#(roman upright medium)
- . (10.0 . #(,(delay (ly:font-load "lmr6"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "lmr6"))
,(delay (ly:font-load "lmr8"))
,(delay (ly:font-load "lmr10"))
,(delay (ly:font-load "lmr17")))))
(#(roman upright bold)
- . (10.0 . #(,(delay (ly:font-load "lmbx6"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "lmbx6"))
,(delay (ly:font-load "lmbx8"))
,(delay (ly:font-load "lmbx10"))
,(delay (ly:font-load "lmbx12")))))
(#(roman italic medium)
- . (10.0 . #(,(delay (ly:font-load "lmri7"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "lmri7"))
,(delay (ly:font-load "lmri10"))
,(delay (ly:font-load "lmri12")))))
(#(roman italic bold)
- . (10.0 . #(,(delay (ly:font-load "lmbxi10")))))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "lmbxi10")))))
(#(roman caps medium)
- . (10.0 . #(,(delay (ly:font-load "lmcsc10")))))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "lmcsc10")))))
(#(roman upright bold-narrow )
- . (10.0 . #(,(delay (ly:font-load "lmb10")))))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "lmb10")))))
(#(sans upright medium)
- . (10.0 . #(,(delay (ly:font-load "lmss8"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "lmss8"))
,(delay (ly:font-load "lmss10"))
,(delay (ly:font-load "lmss12"))
,(delay (ly:font-load "lmss17")))))
(#(sans upright bold)
- . (10.0 . #(,(delay (ly:font-load "lmssbx10")))))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "lmssbx10")))))
(#(typewriter upright medium)
- . (10.0 . #(,(delay (ly:font-load "lmtt8"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "lmtt8"))
,(delay (ly:font-load "lmtt10"))
,(delay (ly:font-load "lmtt12"))))))))
(cons (* factor (cadr x)) (cddr x))))
`((#(roman upright medium)
- . (10.0 . #(,(delay (ly:font-load "ecrm6"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "ecrm6"))
,(delay (ly:font-load "ecrm8"))
,(delay (ly:font-load "ecrm10"))
,(delay (ly:font-load "ecrm17")))))
(#(roman upright bold)
- . (10.0 . #(,(delay (ly:font-load "ecbx6"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "ecbx6"))
,(delay (ly:font-load "ecbx8"))
,(delay (ly:font-load "ecbx10"))
,(delay (ly:font-load "ecbx12")))))
(#(roman italic medium)
- . (10.0 . #(,(delay (ly:font-load "ecti7"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "ecti7"))
,(delay (ly:font-load "ecti10"))
,(delay (ly:font-load "ecti12")))))
(#(roman italic bold)
- . (10.0 . #(,(delay (ly:font-load "ecbi8"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "ecbi8"))
,(delay (ly:font-load "ecbi10"))
,(delay (ly:font-load "ecbi14")))))
(#(roman caps medium)
- . (10.0 . #(,(delay (ly:font-load "eccc10")))))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "eccc10")))))
(#(roman slanted-caps medium)
- . (10.0 . #(,(delay (ly:font-load "ecsc10")))))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "ecsc10")))))
(#(roman upright bold-narrow )
- . (10.0 . #(,(delay (ly:font-load "ecrb10")))))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "ecrb10")))))
(#(sans upright medium)
- . (10.0 . #(,(delay (ly:font-load "ecss8"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "ecss8"))
,(delay (ly:font-load "ecss10"))
,(delay (ly:font-load "ecss12"))
,(delay (ly:font-load "ecss17")))))
(#(typewriter upright medium)
- . (10.0 . #(,(delay (ly:font-load "ectt8"))
+ . (,(ly:pt 10.0) . #(,(delay (ly:font-load "ectt8"))
,(delay (ly:font-load "ectt10"))
,(delay (ly:font-load "ectt12"))))))))
(font-shape . upright)
(font-series . medium)
(font-encoding . latin1))
- `(10.0 . #(,(delay (ly:font-load "uncr8a")))))
+ `(,(ly:pt 10.0) . #(,(delay (ly:font-load "uncr8a")))))
(add-font node
'((font-family . roman)
(font-shape . italic)
(font-series . medium)
(font-encoding . latin1))
- `(10.0 . #(,(delay (ly:font-load "uncri8a")))))
+ `(,(ly:pt 10.0) . #(,(delay (ly:font-load "uncri8a")))))
(add-font node
'((font-family . roman)
(font-shape . upright)
(font-series . bold)
(font-encoding . latin1))
- `(10.0 . #(,(delay (ly:font-load "uncb8a")))))
+ `(,(ly:pt 10.0) . #(,(delay (ly:font-load "uncb8a")))))
(add-font node
'((font-family . roman)
(font-shape . italic)
(font-series . bold)
(font-encoding . latin1))
- `(10.0 . #(,(delay (ly:font-load "uncbi8a"))))))
+ `(,(ly:pt 10.0) . #(,(delay (ly:font-load "uncbi8a"))))))
(define-public (make-cmr-tree factor)
(let ((n (make-font-tree-node 'font-encoding 'fetaMusic)))