A graphics port.
An image identifier, a file, an external-image, or an image.
A boolean.
A keyword, or nil
.
One of the keywords :with-alpha
and :without-alpha
, or a boolean.
The function load-image
loads an image identified by
id
via the
image-translation-table
using the image load function registered with it. It returns an image object with the representation slot initialized. The
gp
argument specifies a graphics port used to identify the library. It also specifies the resource in which colors are defined and if necessary allocated for the image. If
id
is in the table but the translation is not an external image, and the image loader returns an external image as the second value, that external image replaces the translation in the table. The default value of
image-translation-table
is *default-image-translation-table*.
id
can be an image, which is just associated with the port
gp
and returned if it is a Plain Image or if
editable
is nil
. Otherwise a new Plain Image object is returned, as described below.
id can also be a string or pathname denoting a file, and in this case the image is loaded according to type , as described below.
The cache argument controls whether the image translation is cached. See the convert-external-image function for more details.
type
tells load-image
that the image is in a particular graphics format. Currently the only recognized value is :bmp
, which means the image is a Bitmap. Other values of
type
cause load-image
to load the image according to the file type of
id,
if
id
denotes a file, as described for read-external-image. See Drawing - Graphics Ports for a discussion of image handling. The default value of
type
is nil
.
editable controls whether the image image is a Plain Image suitable for use with the Image Access API. The values of editable have the following effects:
The image is not editable.
The image is editable, but does not have an alpha channel.
The image is editable, but does not have an alpha channel if the source of the image has an alpha channel (for example, a TIFF file with alpha channel).
The image is editable and has an alpha channel. It will be fully opaque when loading files without an alpha channel.
Given an image my-image , call
(load-image
port
my-image
:editable t)
to create an image guaranteed to work with make-image-access. The default value of
editable
is nil
.
Normally the image is freed automatically, when gp is destroyed. However there are circumstances where you need to explicitly free an image, for example when you want it to go away before the port. If the image is not freed, a memory leak occurs.
Note:
gp
must already be created at the time load-image
is called. If you need to delay loading the image, for example if you are computing the image dynamically, then you can call load-image
in the
create-callback
of the port or even in its first
display-callback
.
In LispWorks 4.4 there is a keyword argument :force-plain
with the same effect as :editable
. :force-plain
is still accepted in LispWorks 7.1 for backwards compatibility, but you should now use :editable
instead.
convert-external-image
*default-image-translation-table*
load-icon-image
make-image
make-image-access
Drawing - Graphics Ports
CAPI User Guide and Reference Manual (Macintosh version) - 3 Aug 2017