FreeBSD manual
download PDF document: XpmRead.3.pdf
XpmRead(3) libXpm functions XpmRead(3)
NAME
XpmRead - read an XPM file
SYNOPSIS
int XpmReadFileToImage(Display *display, char *filename,
XImage **image_return, XImage **shapeimage_return,
XpmAttributes *attributes);
int XpmReadFileToPixmap(Display *display, Drawable d, char *filename,
Pixmap *pixmap_return, Pixmap *shapemask_return,
XpmAttributes *attributes);
int XpmReadFileToXpmImage(char *filename, XpmImage *image,
XpmInfo *info);
int XpmReadFileToBuffer(char *filename, char **buffer_return);
int XpmReadFileToData(char *filename, char ***data_return);
ARGUMENTS
display
Specifies the connection to the X server.
filename
Specifies the file name to use.
image_return
Returns the image which is created.
shapeimage_return
Returns the shape mask image which is created if the color None
is used.
attributes
Specifies the location of a structure to get and store
information (or NULL).
buffer_return
Returns the buffer created.
data_return
Returns the data array created.
image Specifies the image structure location.
info Specifies the location of a structure to store possible
information (or NULL).
DESCRIPTION
XpmReadFileToImage
The XpmReadFileToImage() function reads in a file in the XPM format.
If the file cannot be opened it returns XpmOpenFailed. If the file can
be opened but does not contain valid XPM data, it returns
XpmSize, the XpmCharsPerPixel, and possibly the XpmHotspot attributes
when returning. As a backward compatibility feature,
XpmReadFileToImage() also looks for the XpmReturnInfos attributes. As
specified in the table (page 12), if the data related to the attributes
XpmReturnExtensions, XpmReturnColorTable, and XpmReturnInfos cannot be
returned as requested because of insufficient memory storage,
XpmReadFileToImage() will change the valuemask to mention this and will
try to continue. So the caller should check on this before accessing
this data.
Note: The valuemask of the passed XpmAttributes must be set to some
valid value, at least zero, otherwise unpredictable errors can occur.
XpmReadFileToImage() allocates colors, as read from the file or
possibly overridden as specified in the XpmColorSymbols attributes.
The colors are allocated using the color settings for the visual
specified by the XpmColorKey attribute, which has the value XPM_MONO,
XPM_GRAY4, XPM_GRAY, or XPM_COLOR. If the XpmColorKey attribute is not
set it is determined by examining the type of visual. If no default
value exists for the specified visual, it first looks for other
defaults nearer to the monochrome visual type and secondly nearer to
the color visual type. If the color which is found is not valid
(cannot be parsed), it looks for another default one according to the
same algorithm. If allocating a color fails, and the closeness
attribute is set, it tries to find a color already in the colormap that
is closest to the desired color, and uses that. If the
alloc_close_colors attribute is set to False, the found close color is
not allocated but it is used anyway. This is especially useful for
applications which use a private colormap containing read/write cells
and have complete control over the colormap. On the other hand, since
in such a case there is no guarantee that the color pixel will not
change any time, this should be avoided when using the default
colormap. If no color can be found that is within closeness of the
Red, Green, and Blue components of the desired color, it reverts to
trying other default values as explained above. For finer control over
the closeness requirements of a particular icon, the red_closeness,
green_closeness, and blue_closeness attributes may be used instead of
the more general closeness attribute.
The RGB components are integers within the range 0 (black) to 65535
(white). A closeness of less than 10000, for example, will cause only
quite close colors to be matched, while a closeness of more than 50000
will allow quite dissimilar colors to match. Specifying a closeness of
more than 65535 will allow any color to match, thus forcing the icon to
be drawn in color no matter how bad the colormap is. The value 40000
seems to be about right for many situations requiring reasonable but
not perfect matches. With this setting the color must only be within
the same general area of the RGB cube as the desired color. If the
exactColors attribute is set it then returns XpmColorError, otherwise
it creates the images and returns XpmSuccess. If no color is found,
and no close color exists or is wanted, and all visuals have been
exhausted, XpmColorFailed is returned.
XpmReadFileToImage() returns the created image to image_return if not
NULL and possibly the created shapemask to shapeimage_return if not
NULL and the color None is used. If required it stores into the
XpmAttributes structure the list of the used pixels. When the image
depth is one, the image format is either as specified by the
bitmap_format attribute if set or ZPixmap. When the depth is different
piped result. It assumes that the specified file is compressed if the
given file name ends by '.Z' or '.gz'. In case the file name does not
end so, XpmReadFileToImage() looks for the given file name assuming it
is not a compressed file. And if instead of a file name NULL is passed
to XpmReadFileToImage(), it reads from the standard input.
XpmReadFileToPixmap
The XpmReadFileToPixmap() function creates X images using
XpmReadFileToImage() and thus returns the same errors. In addition on
success it then creates the related pixmaps, using XPutImage(3), which
are returned to pixmap_return and shapemask_return if not NULL, and
finally destroys the created images using XDestroyImage(3). When
finished the caller must free the pixmaps using XFreePixmap(3), the
allocated colors using XFreeColors(3) or the application equivalent
function when the standard Xlib functions are not used, and possibly
the data returned into the XpmAttributes using XpmFreeAttributes(3).
XpmReadFileToBuffer
XpmReadFileToBuffer() allocates and fills a buffer from a file.
XpmReadFileToBuffer() returns XpmOpenFailed if it cannot open the file,
returns XpmNoMemory if insufficient working storage is allocated, and
XpmSuccess otherwise. The allocated buffer returned by
XpmReadFileToBuffer() should be freed with XpmFree(3) when done.
As a convenience, the XpmReadFileToBuffer() and
XpmWriteFileFromBuffer(3) are provided to copy a file to a buffer and
to write a file from a buffer. Thus for instance one may decide to use
XpmReadFileToBuffer(), XpmCreatePixmapFromBuffer(3), and XpmFree(3)
instead of XpmReadFileToPixmap(). On some systems this may lead to a
performance improvement, since the parsing will be performed in memory,
but it uses more memory.
XpmReadFileToData
XpmReadFileToData() returns XpmOpenFailed if it cannot open the file,
XpmNoMemory if insufficient working storage is allocated,
XpmFileInvalid if this is not a valid XPM file, and XpmSuccess
otherwise. The allocated data returned by XpmReadFileToData() should
be freed with XpmFree(3) when done.
XpmReadFileToXpmImage
The XpmReadFileToXpmImage() function reads in a file in the XPM format.
If the file cannot be opened it returns XpmOpenFailed. If the file can
be opened but does not contain valid XPM data, it returns
XpmFileInvalid. If insufficient working storage is allocated, it
returns XpmNoMemory. On success it fills in the given XpmImage
structure and returns XpmSuccess.
SEE ALSO
XpmCreateBuffer(3), XpmCreateData(3), XpmCreateImage(3),
XpmCreatePixmap(3), XpmCreateXpmImage(3), XpmFreeAttributes(3),
XpmWrite(3)
X Version 11 libXpm 3.5.17 XpmRead(3)