Rework the image property getter/setters

* doc/lispref/display.texi (Defining Images): Document the
renamed `image-get/set-property' functions.

* lisp/image.el (image--set-property): Rename from
image-set-property.
(image-property): Declare a setf form.
(image-property): Rename from `image-get-property'.
This commit is contained in:
Lars Ingebrigtsen 2016-02-22 12:50:40 +11:00
parent 1f7feecaee
commit 3007b422b6
4 changed files with 19 additions and 16 deletions

View file

@ -5444,19 +5444,17 @@ If none of the alternatives will work, then @var{symbol} is defined
as @code{nil}.
@end defmac
@defun image-set-property image property value
Set the value of @var{property} in @var{image} to @var{value}. If
@var{value} is @code{nil}, the property is removed completely.
@defun image-property image property
Return the value of @var{property} in @var{image}. Properties can be
set by using @code{setf}. Setting a property to @code{nil} will
remove the property from the image.
@end defun
@lisp
(image-set-property image :height 300)
@end lisp
@end defun
@defun image-get-property image property
Return the value of @var{property} in @var{image}.
@end defun
@defun find-image specs
This function provides a convenient way to find an image satisfying one
of a list of image specifications @var{specs}.

View file

@ -865,8 +865,8 @@ added. See the "SVG Images" section in the lispref manual for
details.
+++
*** New functions to access and set image parameters are provided:
`image-get-property' and `image-set-property'.
*** New setf-able function to access and set image parameters is
provided: `image-property'.
** Lisp mode

View file

@ -435,10 +435,9 @@ Image file names that are not absolute are searched for in the
(image-compute-scaling-factor image-scaling-factor)))
props)))
(defun image-set-property (image property value)
(defun image--set-property (image property value)
"Set PROPERTY in IMAGE to VALUE.
If VALUE is nil, PROPERTY is removed from IMAGE. IMAGE is
returned."
Internal use only."
(if (null value)
(while (cdr image)
;; IMAGE starts with the symbol `image', and the rest is a
@ -451,8 +450,13 @@ returned."
(plist-put (cdr image) property value))
image)
(defun image-get-property (image property)
"Return the value of PROPERTY in IMAGE."
(defun image-property (image property)
"Return the value of PROPERTY in IMAGE.
Properties can be set with
(setf (image-property IMAGE PROPERTY) VALUE)
If VALUE is nil, PROPERTY is removed from IMAGE."
(declare (gv-setter image--set-property))
(plist-get (cdr image) property))
(defun image-compute-scaling-factor (scaling)

View file

@ -1536,7 +1536,7 @@ The preference is a float determined from `shr-prefer-media-type'."
(- (nth 2 edges) (nth 0 edges))))))
(max-height (and edges
(truncate (* shr-max-image-proportion
(- (nth 3 edges) (nth 1 edges))))))
(- (nth 3 edges) (nth 1 edges))))))
svg image)
(when (and max-width
(> width max-width))
@ -1551,7 +1551,8 @@ The preference is a float determined from `shr-prefer-media-type'."
(svg-rectangle svg 0 0 width height :gradient "background"
:stroke-width 2 :stroke-color "black")
(let ((image (svg-image svg)))
(image-set-property image :ascent 100))))
(setf (image-property image :ascent) 100)
image)))
(defun shr-tag-pre (dom)
(let ((shr-folding-mode 'none)