Next: Pixmap Attributes, Previous: Pixmap Interaction, Up: Pixmap Object [Contents][Index]

#### 15.6.4 Other Pixmap Routines

A pixmap file (usually with extension `.xpm`) is an ASCII file that contains the definition of the pixmap as a `char` pointer array that can be included directly into a C (or C++) source file.

To set the actual pixmap being displayed, use one of the following routines:

    void fl_set_pixmap_file(FL_OBJECT *obj, const char *file);
    void fl_set_pixmap_data(FL_OBJECT *obj, char **data);

In the first routine, you specify the pixmap by the filename `file` that contains it. In the second routine, you `#include` the pixmap at compile time and use the pixmap data (an array of `char` pointers) directly. Note that both of these functions do not free the old pixmaps associated with the object. If you’re writing a pixmap browser type applications, be sure to free the old pixmaps by calling

    void fl_free_pixmap_pixmap(FL_OBJECT *obj);

on the pixmap object prior to calling these two routines. This function, in addition to freeing the pixmap and the mask, also frees the colors the pixmap allocated.

To obtain the pixmap ID currently being displayed, the following routine can be used

    Pixmap fl_get_pixmap_pixmap(FL_OBJECT *obj, Pixmap *id,
                                Pixmap *mask);

In some situations, you might already have a pixmap resource ID, e.g., from `fl_read_pixmapfile()` (see below in the "Remarks" subsection). Then you can use the following routine to change the the pixmap

    void fl_set_pixmap_pixmap(FL_OBJECT *obj, Pixmap id,
                              Pixmap mask);

where `mask` is used for transparency (see `fl_read_pixmapfile()`). Use 0 for mask if no special clipping attributes are desired.

This routine does not free the pixmap ID nor the mask already associated with the object. Thus if you no longer need the old pixmaps, they should be freed prior to changing the pixmaps using the function `fl_free_pixmap_pixmap()`.

Pixmaps are by default displayed centered inside the bounding box. However, this can be changed using the following routine

    void fl_set_pixmap_align(FL_OBJECT *obj, int align,
                             int dx, int dy);

where `align` is the same as that used for labels, see Label Attributes and Fonts for a list. `dx` and `dy` are extra margins to leave in addition to the object border width. By default, `dx` and `dy` are set to 3. Note that although you can place a pixmap outside of the bounding box, it probably is not a good idea.

Next: Pixmap Attributes, Previous: Pixmap Interaction, Up: Pixmap Object [Contents][Index]