]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/dimensions.cc
* lily/pfb.cc (LY_DEFINE): ly:ttf->pfa, new function.
[lilypond.git] / lily / dimensions.cc
index 1023450ee4b6ab0b8d7eccadf1eeba3626034486..6cdbf449d1554daed77f2b1a5079a5950724d7ee 100644 (file)
@@ -1,19 +1,62 @@
-// dimensions.cc
+/*
+  dimensions.cc --  implement Dimension handling
 
+  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 "debug.hh"
-#include "string.hh"
+#include "warn.hh"
+
+LY_DEFINE (ly_pt, "ly:pt",
+           1, 0, 0, (SCM num),
+           "@var{num} printer points")
+{
+  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));
+}
 
-String
-print_dimen (Real r)
+LY_DEFINE (ly_inch, "ly:inch",
+           1, 0, 0, (SCM num),
+           "@var{num} inches")
 {
-  String s = to_str (r, "%.3f");
-  if (s.index_i ("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 (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));
+}