aboutsummaryrefslogtreecommitdiffstats
path: root/include/lengths
diff options
context:
space:
mode:
Diffstat (limited to 'include/lengths')
-rw-r--r--include/lengths150
1 files changed, 150 insertions, 0 deletions
diff --git a/include/lengths b/include/lengths
new file mode 100644
index 0000000..2c1d447
--- /dev/null
+++ b/include/lengths
@@ -0,0 +1,150 @@
+
+###########################################################################
+# #
+# lengths #
+# #
+# Jeffrey H. Kingston #
+# 30 October 2002 #
+# #
+# This file offers two symbols for converting between PostScript #
+# lengths and Lout lengths. This has been a messy area and the two #
+# symbols in this file, @LoutLengths and @PSLengths, are my attempt #
+# to put a final end to the mess. #
+# #
+# A Lout length is, and has always been, a number followed by #
+# a one-letter unit of measurement: i c p m s v f d. #
+# #
+# A PostScript length is, and has always been, a number followed #
+# by a space followed by a two-letter unit of measurement, one of #
+# in cm pt em sp vs ft dg. #
+# #
+# To the ordinary user who reads the User's Guide, all lengths #
+# now look like Lout lengths. However, internally some of these #
+# lengths are used by Lout and others are passed to PostScript. #
+# Based on the two symbols @PSLengths and @LoutLengths defined #
+# below, an option x which could contain a length of either kind #
+# can be classified as one of three types: #
+# #
+# Type of option How to handle it #
+# ------------------------------------------------------------------- #
+# Option was never advertised named x { ... } #
+# as taking a PostScript length #
+# #
+# Option was advertised as import @LoutLengths named x { ... } #
+# possibly taking a PostScript #
+# length, but its value is used #
+# by Lout #
+# #
+# Option whose value has to be import @PSLengths named x { ... } #
+# passed to PostScript #
+# ------------------------------------------------------------------- #
+# #
+# Either kind of import allows either kind of length to be given; #
+# @LoutLengths makes sure the final result is suitable for passing #
+# to Lout, while @PSLengths makes sure the final result is suitable #
+# for passing to PostScript. If things had been done right from the #
+# start, there would be no need for @LoutLengths, but for backward #
+# compatibility we will continue to use it basically forever. #
+# #
+###########################################################################
+
+
+###########################################################################
+# #
+# @LoutLengths #
+# #
+# Convert PostScript lengths into Lout lengths. #
+# #
+###########################################################################
+
+export in cm pt em sp vs ft dg
+def @LoutLengths
+{
+ def in left x { x"i" }
+ def cm left x { x"c" }
+ def pt left x { x"p" }
+ def em left x { x"m" }
+ def sp left x { x"s" }
+ def vs left x { x"b" }
+ def ft left x { x"f" }
+ def dg left x { x"d" }
+}
+
+
+###########################################################################
+# #
+# @PSLengths #
+# #
+# Convert Lout lengths into PostScript (also PDF) lengths. #
+# PDF is no longer supported but this code was there already so #
+# it's been carried over. #
+# #
+###########################################################################
+
+export i c p m s v f d
+def @PSLengths
+{
+ def i left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" in" }
+ PDF @Yield { "__mul(__in, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def c left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" cm" }
+ PDF @Yield { "__mul(__cm, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def p left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" pt" }
+ PDF @Yield { "__mul(__pt, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def m left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" em" }
+ PDF @Yield { "__mul(__em, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def s left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" sp" }
+ PDF @Yield { "__mul(__louts, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def v left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" vs" }
+ PDF @Yield { "__mul(__loutv, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def f left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" ft" }
+ PDF @Yield { "__mul(__loutf, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def d left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" dg" }
+ PDF @Yield { "__mul(__loutd, "x")" }
+ PlainText @Yield ""
+ }
+ }
+}