+(defparameter +format-db+
+ '(
+ (:format :d2x :make :nikon :pixels (4288 . 2848) :imager (23.7 . 15.6) :name "D2X")
+ (:format :d100 :make :nikon :pixels (3037 . 2024) :imager (23.7 . 15.6) :name "D100")
+ (:format :d70 :make :nikon :pixels (3008 . 2000) :imager (23.7 . 15.6) :name "D70")
+ (:format :d70s :make :nikon :pixels (3008 . 2000) :imager (23.7 . 15.6) :name "D70s")
+ (:format :d50 :make :nikon :pixels (3008 . 2000) :imager (23.7 . 15.6) :name "D70")
+ (:format :d1x :make :nikon :pixels (4028 . 1324) :imager (23.7 . 15.6) :name "D1X")
+ (:format :d2h :make :nikon :pixels (2464 . 1632) :imager (23.3 . 15.5) :name "D2H")
+ (:format :d2hs :make :nikon :pixels (2464 . 1632) :imager (23.3 . 15.5) :name "D2Hs")
+
+ (:format :300d :make :canon :pixels (3072 . 2048) :imager (22.7 . 15.1) :name "300D")
+ (:format :10d :make :canon :pixels (3072 . 2048) :imager (22.7 . 15.1) :name "10D")
+ (:format :d30 :make :canon :pixels (0 . 0) :imager (22.7 . 15.1) :name "D30")
+ (:format :d60 :make :canon :pixels (0 . 0) :imager (22.7 . 15.1) :name "D60")
+ (:format :350d :make :canon :pixels (3456 . 2304) :imager (22.2 . 14.8) :name "350D")
+ (:format :1d :make :canon :pixels (2464 . 1648) :imager (27 . 17.8) :name "1D")
+ (:format :20d :make :canon :pixels (3456 . 2304) :imager (22.5 . 15) :name "20D")
+ (:format :1dmkii :make :canon :pixels (3504 . 2336) :imager (28.7 . 19.1)
+ :name "1D Mark II" :nicks (:1d2 :1dii :1dmkii))
+ (:format :1ds :make :canon :pixels (4064 . 3328) :imager (36 . 24) :name "1Ds")
+ (:format :1dsmkii :make :canon :pixels (4992 . 3328) :imager (36 . 24)
+ :name "1Ds Mark II" :nicks (:1ds2 :1dsii))
+
+ (:format :35mm :imager (36 . 24) :name "35mm")
+
+ (:format :6x4.5cm :imager (60 . 45) :name "6x4.5cm" :nicks (:\645))
+ (:format :6x6cm :imager (60 . 60) :name "6x6cm" :nicks (:6x6))
+ (:format :6x7cm :imager (60 . 70) :name "6x7cm" :nicks (:6x7))
+ (:format :6x9cm :imager (60 . 90) :name "6x9cm" :nicks (:6x9))
+ (:format :6x12cm :imager (60 . 120) :name "6x12cm" :nicks (:6x12))
+
+ #.(make-output-format 4 5)
+ #.(make-output-format 5 7)
+ #.(make-output-format 8 10)
+ #.(make-output-format 11 13.75)
+ #.(make-output-format 11 16.5)
+ #.(make-output-format 13 16.25)
+ #.(make-output-format 13 19)
+ #.(make-output-format 16 20)
+ #.(make-output-format 16 24)
+ #.(make-output-format 18 22.5)
+ #.(make-output-format 18 24)
+ #.(make-output-format 24 30)
+ #.(make-output-format 24 36)
+ ))
+
+(defun format-match-p (format-spec format)
+ (when (or (eql format-spec (getf format :format))
+ (member format-spec (getf format :nicks)))
+ t))
+
+(defun find-format (format-spec)
+ (find format-spec +format-db+ :test 'format-match-p))
+
+(defun pixel-dimensions (sensor-spec &key (format :35mm))
+ "Returns the number of pixels for a format.