r10458:
[cl-photo.git] / cameras.lisp
index 293b21955a108dcc153716bf4c2d018c59254b34..515c61effeae7d0b3f4ff0d068a9108782584dd0 100644 (file)
     (: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 :d50 :make "Nikon" :pixels (3008 . 2000) :imager (23.7 . 15.6) :name "D50")
     (: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 :d30 :make "Canon" :pixels (2160 . 1440) :imager (22 . 14.9) :name "D30")
     (:format :d60 :make "Canon" :pixels (3072 . 2048) :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")
@@ -127,7 +127,7 @@ the number of megapixels of the sensor.
 FORMAT should be defined if the CAMERA-SPEC is the number of megapixels
 so the proper aspect ratio is used."
   (etypecase sensor-spec
-    (keyword
+    ((or string keyword)
      (getf (find-format sensor-spec) :pixels))
     (number
      (sensor-dimensions-megapixels format sensor-spec))))
@@ -136,6 +136,12 @@ so the proper aspect ratio is used."
   "Returns the imager dimensions in mm of a FORMAT."
   (getf (find-format format-spec) :imager))
 
+(defun pixel-size (format-spec) 
+  "Return pixel size in micrometers."
+  (let ((pixel-dim (pixel-dimensions format-spec))
+       (imager-dim (imager-dimensions format-spec)))
+    (values (* 1000 (/ (car imager-dim) (car pixel-dim)))
+           (* 1000 (/ (cdr imager-dim) (cdr pixel-dim))))))
 (defun output-dimensions (format-spec)
   "Returns the output dimensions in mm of a FORMAT."
   (getf (find-format format-spec) :output))