Update domain name to kpe.io
[cl-photo.git] / convert.lisp
old mode 100755 (executable)
new mode 100644 (file)
index f6daab1..bb50942
@@ -9,8 +9,11 @@
 ;;;;
 ;;;; $Id$
 ;;;;
-;;;; This file, part of cl-photo, is Copyright (c) 2005 by Kevin Rosenberg.
-;;;; Rights of modification and redistribution are in the LICENSE file.
+;;;; This file, part of cl-photo, is Copyright (c) 2005 by Kevin M. Rosenberg
+;;;;
+;;;; cl-photo users are granted the rights to distribute and use this software
+;;;; as governed by the terms of the GNU General Public License v2
+;;;; (http://www.gnu.org/licenses/gpl.html)
 ;;;;
 ;;;; *************************************************************************
 
 (defun inches->mm (d)
   (* d +inches->mm+))
 
-(defun format-dimensions (format)
-  "Returns format dimensions in mm."
-  (ecase format
-    (:aps-c (cons 22.7 15.1))
-    ((:aps :dx) (cons 24 16))
-    ((:35 :35mm) (cons 36 24))
-    ((:645 :6x4.5cm) (cons 60 45))
-    ((:6x6 :6x6cm) (cons 60 60))
-    ((:6x7 :6x7cm) (cons 60 70))
-    ((:6x9 :6x9cm) (cons 60 90))
-    ((:4x5 :4x5in) (cons (* 4 +inches->mm+) (* 5 +inches->mm+)))
-    ((:5x7 :5x7in) (cons (* 5 +inches->mm+) (* 7 +inches->mm+)))
-    ((:8x10 :8x10in) (cons (* 8 +inches->mm+) (* 10 +inches->mm+))) 
-    (:11x13.75in (cons (* 11 +inches->mm+) (* 13.75 +inches->mm+)))
-    (:11x16.5in (cons (* 11 +inches->mm+) (* 16.5 +inches->mm+)))
-    (:13x19in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
-    (:16x20in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
-    (:16x24in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
-    (:18x22.5in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
-    (:18x24in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
-    (:24x30in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
-    (:24x36in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
-    ))
+(declaim (inline mm->inches))
+(defun mm->inches (d)
+  (/ d +inches->mm+))
+
+(defun length->mm (d units)
+  "Convert a length in units to mm."
+  (ecase units
+    (:mm d)
+    (:inches (inches->mm d))
+    (:feet (inches->mm (* d 12)))
+    (:yards (inches->mm (* d 36)))
+    (:meters (* 1000 d))))
+
+(defun mm->length (d units)
+  "Convert a number of mm to units."
+  (ecase units
+    (:mm d)
+    (:inches (mm->inches d))
+    (:feet (/ (mm->inches d) 12))
+    (:yards (/ (mm->inches d) 36))
+    (:meters (/ d 1000))))
+
+