1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10; Package: photo -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
5 ;;;; Name: convert.lisp
6 ;;;; Purpose: Conversions functions for cl-photo
7 ;;;; Programmer: Kevin M. Rosenberg
8 ;;;; Date Started: April 2005
12 ;;;; This file, part of cl-photo, is Copyright (c) 2005 by Kevin M. Rosenberg
14 ;;;; cl-photo users are granted the rights to distribute and use this software
15 ;;;; as governed by the terms of the GNU General Public License v2
16 ;;;; (http://www.gnu.org/licenses/gpl.html)
18 ;;;; *************************************************************************
22 (defconstant +radian->degrees+ (/ 360d0 pi 2))
23 (defconstant +inches->mm+ 25.4d0)
25 (declaim (inline diagonal))
27 (sqrt (+ (* x x) (* y y))))
29 (declaim (inline radians->degrees))
30 (defun radians->degrees (r)
31 (* +radian->degrees+ r))
33 (declaim (inline degrees->radians))
34 (defun degrees->radians (r)
35 (/ r +radian->degrees+))
37 (declaim (inline mm->feet))
39 (/ d +inches->mm+ 12))
41 (declaim (inline feet->mm))
43 (* d 12 +inches->mm+))
45 (declaim (inline inches->mm))
49 (defun format-dimensions (format)
50 "Returns format dimensions in mm."
52 (:aps-c (cons 22.7 15.1))
53 ((:aps :dx) (cons 24 16))
54 ((:35 :35mm) (cons 36 24))
55 ((:645 :6x4.5cm) (cons 60 45))
56 ((:6x6 :6x6cm) (cons 60 60))
57 ((:6x7 :6x7cm) (cons 60 70))
58 ((:6x9 :6x9cm) (cons 60 90))
59 ((:4x5 :4x5in) (cons (* 4 +inches->mm+) (* 5 +inches->mm+)))
60 ((:5x7 :5x7in) (cons (* 5 +inches->mm+) (* 7 +inches->mm+)))
61 ((:8x10 :8x10in) (cons (* 8 +inches->mm+) (* 10 +inches->mm+)))
62 (:11x13.75in (cons (* 11 +inches->mm+) (* 13.75 +inches->mm+)))
63 (:11x16.5in (cons (* 11 +inches->mm+) (* 16.5 +inches->mm+)))
64 (:13x19in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
65 (:16x20in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
66 (:16x24in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
67 (:18x22.5in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
68 (:18x24in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
69 (:24x30in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))
70 (:24x36in (cons (* 13 +inches->mm+) (* 19 +inches->mm+)))