%PDF- %PDF-
Direktori : /usr/local/share/emacs/27.2/lisp/image/ |
Current File : //usr/local/share/emacs/27.2/lisp/image/exif.elc |
;ELC ;;; Compiled ;;; in Emacs version 27.2 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'cl-lib) #@38 Alist of tag values and their names. (defvar exif-tag-alist '((11 processing-software) (271 make) (272 model) (274 orientation) (282 x-resolution) (283 y-resolution) (296 resolution-unit) (305 software) (306 date-time) (315 artist)) (#$ . 426)) #@114 Alist of Exif orientation codes. These are mapped onto rotation values and whether the image is mirrored or not. (defconst exif--orientation '((1 0 nil) (2 0 t) (3 180 nil) (4 180 t) (5 90 nil) (6 90 t) (7 270 nil) (8 270 t)) (#$ . 678)) (define-error 'exif-error "Invalid Exif data") #@167 Parse FILE (a JPEG file) and return the Exif data, if any. The return value is a list of Exif items. If the data is invalid, an `exif-error' is signaled. (fn FILE) (defalias 'exif-parse-file #[257 "\300\301!r\211q\210\302\303\304\305\306!\307\"\310$\216\311\312!\210\313!\210\314 *\207" [generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 set-buffer-multibyte nil insert-file-contents-literally exif-parse-buffer] 8 (#$ . 970)]) #@197 Parse BUFFER (which should be a JPEG file) and return the Exif data, if any. The return value is a list of Exif items. If the data is invalid, an `exif-error' is signaled. (fn &optional BUFFER) (defalias 'exif-parse-buffer #[256 "\211\206 p\262r\211q\210\203I \302\303!r\211q\210\304\305\306\307\310!\311\"\312$\216\313\314!\210prq\210\315ed $\210)\316\317 \236A\211\205? \320!\262\262*\262\202W \316\317 \236A\211\205U \320!\262)\207" [enable-multibyte-characters buffer-file-coding-system generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 set-buffer-multibyte nil encode-coding-region 65505 exif--parse-jpeg exif--parse-exif-chunk] 8 (#$ . 1480)]) #@115 Return the orientation (in degrees) in EXIF. If the orientation isn't present in the data, return nil. (fn EXIF) (defalias 'exif-orientation #[257 "\301\302\303\304\305$\306\"\211\236A@\207" [exif--orientation plist-get cl-find orientation :key #[257 "\300\301\"\207" [plist-get :tag-name] 4 "\n\n(fn E)"] :value] 7 (#$ . 2222)]) (defalias 'exif--parse-jpeg #[0 "\300\301!\302U\204 \303\304\305\"\210\306\211\211\300\301!\262\300\301!\262\307U\204. \310\301Z!BB\262\202 \211\237\207" [exif--read-number-be 2 65496 signal exif-error "Not a valid JPEG file" nil 65498 exif--read-chunk] 7]) #@13 (fn DATA) (defalias 'exif--parse-exif-chunk #[257 "\300\301!r\211q\210\302\303\304\305\306!\307\"\310$\216\311\312!\210c\210eb\210\313\314!\315\316\317\320\321\303\211&\232\2042 \322\323\324\"\210e`|\210\313\310!\211\325\267\202G \312\202N \326\202N \322\323\327\330\"\"\331\310\"\332U\204\\ \322\323\333\"\210\331\310\"\211TdV\203l \322\323\334\"\210\211Tb\210\335!\262\266\202*\207" [generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 set-buffer-multibyte nil exif--read-chunk 6 string 69 120 105 102 signal exif-error "Not a valid Exif chunk" #s(hash-table size 2 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("MM" 63 "II" 67)) t format "Invalid endian-ness %s" exif--read-number 42 "Invalid TIFF header length" "Invalid IFD (directory) offset" exif--parse-directory] 10 (#$ . 2829)]) #@15 (fn NUMBER) (defalias 'exif--field-format #[257 "\211\300\267\202 \301\302B\207\303\302B\207\304\305B\207\306\307B\207\310\311B\207\312\302B\207" [#s(hash-table size 5 test eql rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (1 6 2 10 3 14 4 18 5 22)) byte 1 ascii short 2 long 4 rational 8 unknown] 3 (#$ . 3725)]) #@11 (fn LE) (defalias 'exif--parse-directory #[257 "\301\302\"\303\211\211\211\211\211S\211\262\304Y\203\225 \301\302 \"\262\301\302 \"\262\305!\262\301\306 \"A_\262\301\306 \"\262\307\310\236A@\311 \312\n@\313\314\f\306V\203p T \\dV\203c \315\316\317\"\210T\fT\\{\202\206 @\320=\203\204 \321\fS#\202\206 @#\257\nB\262\202\n \211\237\266\207\301\306\"\211\304V\203\273 \211TdV\203\257 \315\316\322\"\210\211Tb\210\323!\244\202\274 \262\207" [exif-tag-alist exif--read-number 2 nil 0 exif--field-format 4 :tag :tag-name :format :format-type :value exif--process-value signal exif-error "Premature end of file" ascii exif--direct-ascii-value "Invalid IFD (directory) next-offset" exif--parse-directory] 22 (#$ . 4058)]) #@115 Make VALUE into a zero-terminated string. VALUE is an integer representing BYTES characters. (fn VALUE BYTES LE) (defalias 'exif--direct-ascii-value #[771 "\300\301!r\211q\210\302\303\304\305\306!\307\"\310$\216\311\312!\210\203= \303\211W\2038 \211\313\314\315_\"\316\"c\266\211T\262\202 \266\202` \303\211W\203^ \211\313\314SZ\315_\"\316\"c\266\211T\262\202? \266\303c\210\317 *\207" [generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 set-buffer-multibyte nil logand lsh -8 255 buffer-string] 12 (#$ . 4832)]) #@65 Do type-based post-processing of the value. (fn VALUE TYPE LE) (defalias 'exif--process-value #[771 "\300\267\2026 \301\302GS#\207\303\304!r\211q\210\305\302\306\307\310!\311\"\312$\216\313\314!\210c\210eb\210\315\316\"\315\316\"*B\207\207" [#s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (quote 6 ascii 6 rational 14)) substring 0 generate-new-buffer " *temp*" make-byte-code "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 set-buffer-multibyte nil exif--read-number 4] 10 (#$ . 5443)]) #@78 Return BYTES octets from the buffer and advance point that much. (fn BYTES) (defalias 'exif--read-chunk #[257 "`\\dV\203 \300\301\302\"\210``\\{u\210\207" [signal exif-error "Premature end of file"] 4 (#$ . 6010)]) #@118 Read BYTES octets from the buffer as a chunk of big-endian bytes. Advance point to after the read bytes. (fn BYTES) (defalias 'exif--read-number-be #[257 "`\\dV\203 \300\301\302\"\210\303\303\211W\203) \211\304_g\\\262\305u\266\211T\262\202 \266\211\207" [signal exif-error "Premature end of file" 0 256 1] 7 (#$ . 6237)]) #@118 Read BYTES octets from the buffer as a chunk of low-endian bytes. Advance point to after the read bytes. (fn BYTES) (defalias 'exif--read-number-le #[257 "`\\dV\203 \300\301\302\"\210\303\303\211W\203, \211g\304\305\"_\\\262\306u\266\211T\262\202 \266\211\207" [signal exif-error "Premature end of file" 0 expt 256 1] 9 (#$ . 6578)]) #@143 Read BYTES octets from the buffer with endianness determined by LOWER-ENDIAN. Advance point to after the read bytes. (fn BYTES LOWER-ENDIAN) (defalias 'exif--read-number #[514 "\211\203 \300!\207\301!\207" [exif--read-number-le exif--read-number-be] 4 (#$ . 6931)]) (provide 'exif)