Function: image-transform-properties
image-transform-properties is a byte-compiled function defined in
image-mode.el.gz.
Signature
(image-transform-properties SPEC)
Documentation
Return rescaling/rotation properties for image SPEC.
These properties are determined by the Image mode variables
image-transform-resize and image-transform-rotation. The
return value is suitable for appending to an image spec.
Source Code
;; Defined in /usr/src/emacs/lisp/image-mode.el.gz
(defun image-transform-properties (spec)
"Return rescaling/rotation properties for image SPEC.
These properties are determined by the Image mode variables
`image-transform-resize' and `image-transform-rotation'. The
return value is suitable for appending to an image spec."
(setq image-transform-scale 1.0)
(when (or (not (memq image-transform-resize '(nil t)))
(/= image-transform-rotation 0.0))
;; Note: `image-size' looks up and thus caches the untransformed
;; image. There's no easy way to prevent that.
(let* ((size (image-size spec t))
(edges (window-inside-pixel-edges (get-buffer-window)))
(resized
(cond
((numberp image-transform-resize)
(unless (= image-transform-resize 1)
(setq image-transform-scale image-transform-resize)
(cons nil (floor (* image-transform-resize (cdr size))))))
((eq image-transform-resize 'fit-width)
(image-transform-fit-width
(car size) (cdr size)
(- (nth 2 edges) (nth 0 edges))))
((eq image-transform-resize 'fit-height)
(let ((res (image-transform-fit-width
(cdr size) (car size)
(- (nth 3 edges) (nth 1 edges)))))
(cons (cdr res) (car res)))))))
`(,@(when (car resized)
(list :width (car resized)))
,@(when (cdr resized)
(list :height (cdr resized)))
,@(unless (= 0.0 image-transform-rotation)
(list :rotation image-transform-rotation))
,@(when image--transform-smoothing
(list :transform-smoothing
(string= image--transform-smoothing "smooth")))))))