- (: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)
- ))
+ (:format :s1pro :make "FujiFilm" :pixels (3040 . 2016) :imager (23 . 15.5)
+ :name "FinePix S1 Pro")
+ (:format :s2pro :make "FujiFilm" :pixels (4256 . 2848) :imager (23 . 15.5)
+ :name "FinePix S2 Pro")
+ (:format :s3pro :make "FujiFilm" :pixels (4256 . 2848) :imager (23 . 15.5)
+ :name "FinePix S2 Pro")
+
+ (:format :dcs100 :make "Kodak" :pixels (1280 . 1024) :imager (20.5 . 16.4) :name "DCS 100")
+ (:format :dcs200 :make "Kodak" :pixels (1524 . 1008) :imager (14 . 9.3) :name "DCS 200")
+ (:format :dcs315 :make "Kodak" :pixels (1520 . 1008) :imager nil :name "DCS 315")
+ (:format :dcs330 :make "Kodak" :pixels (2008 . 1504) :imager nil :name "DCS 330")
+ (:format :dcs420 :make "Kodak" :pixels (1524 . 1012) :imager (14 . 9.3) :name "DCS 420")
+ (:format :dcs460 :make "Kodak" :pixels (3060 . 2036) :imager (27.6 . 18.4) :name "DCS 460")
+ (:format :dcs520 :make "Kodak" :pixels (1728 . 1152) :imager (22.8 . 15.5) :name "DCS 520")
+ (:format :dcs560 :make "Kodak" :pixels (3040 . 2008) :imager (27.6 . 18.4) :name "DCS 560")
+ (:format :dcs620 :make "Kodak" :pixels (1728 . 1152) :imager (22.8 . 15.5) :name "DCS 620")
+ (:format :dcs660 :make "Kodak" :pixels (3040 . 2008) :imager (27.6 . 18.4) :name "DCS 660")
+ (:format :dcs720x :make "Kodak" :pixels (1728 . 1152) :imager (22.8 . 15.5) :name "DCS 720x")
+ (:format :dcs760 :make "Kodak" :pixels (3040 . 2008) :imager (27.6 . 18.4) :name "DCS 760")
+ (:format :dcsslr/n :make "Kodak" :pixels (4500 . 3000) :imager (36 . 24) :name "DCS SLR/n")
+ (:format :dcsslr/c :make "Kodak" :pixels (4500 . 3000) :imager (36 . 24) :name "DCS SLR/n")
+ (:format :dcs14n :make "Kodak" :pixels (4536 . 3024) :imager (36 . 24) :name "DCS 14n")
+
+ (:format :maxxum7d :make "Konica Minolta" :pixels (3008 . 2000) :imager (23.5 . 15.5)
+ :name "Maxxum 7D")
+
+ (:format :d1 :make "Nikon" :pixels (2000 . 1312) :imager (23.7 . 15.6) :name "D1")
+ (:format :d1x :make "Nikon" :pixels (4028 . 1324) :imager (23.7 . 15.6) :name "D1X")
+ (:format :d100 :make "Nikon" :pixels (3037 . 2024) :imager (23.7 . 15.6) :name "D100")
+ (:format :d50 :make "Nikon" :pixels (3008 . 2000) :imager (23.7 . 15.6) :name "D50")
+ (: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 :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 :d2x :make "Nikon" :pixels (4288 . 2848) :imager (23.7 . 15.6) :name "D2X")
+
+ (:format :*ist-d :make "Pentax" :pixels (3008 . 2008) :imager (36 . 24)
+ :name "*ist D")
+ (:format :*ist-ds :make "Pentax" :pixels (3008 . 2008) :imager (36 . 24)
+ :name "*ist DS")
+
+ (:format :sd9 :make "Sigma" :pixels (2268 . 1512) :imager (20.7 . 13.8)
+ :name "SD9")
+ (:format :sd10 :make "Sigma" :pixels (2268 . 1512) :imager (20.7 . 13.8)
+ :name "SD10")
+
+ (: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 sort-formats (formats)
+ (sort formats
+ (lambda (a b)
+ (block nil
+ (cond
+ ((and (null (getf a :make)) (getf b :make))
+ (return nil))
+ ((and (getf a :make) (null (getf b :make)))
+ (return t))
+ ((string-lessp (getf a :make) (getf b :make))
+ (return t))
+ ((string-greaterp (getf a :make) (getf b :make))
+ (return nil)))
+ (when (and (getf a :name) (getf b :name))
+ (cond
+ ((string-lessp (getf a :name) (getf b :name))
+ (return t))
+ ((string-greaterp (getf a :name) (getf b :name))
+ (return nil))))))))
+
+(defvar *digital-cameras*
+ (sort-formats (loop for format in +format-db+
+ when (getf format :pixels)
+ collect format)))
+
+(defvar *cameras*
+ (sort-formats (loop for format in +format-db+
+ when (getf format :imager)
+ collect format)))
+