ImageSaver
Availability LightWave 6.0
Component Layout
Header lwimageio.h
Image savers write image files. Each of them typically supports a single format.
When a saver's activation function is called, it should try to open the output file
named in the local structure. If the open fails, the saver can set local->result
to IPSTAT_BADFILE and return immediately. Otherwise, the saver creates and
initializes an image protocol and calls sendData to tell LightWave it's ready to
receive image data. LightWave then calls the saver's callbacks to transfer the data. sendData
doesn't return until LightWave calls the saver's done callback.
Activation Function
XCALL_( int ) MyImageSaver( long version, GlobalFunc *global,
LWImageSaverLocal *local, void *serverData );
The local argument to an image saver's activation function is an
LWImageSaverLocal.
typedef struct st_LWImageSaverLocal {
void *priv_data;
int result;
LWImageType type;
const char *filename;
LWMonitor *monitor;
int (*sendData) (void *, LWImageProtocolID, int flags);
} LWImageSaverLocal;
- priv_data
- Pass this to the sendData function. It's an opaque pointer to data used
internally by LightWave.
result
- Set this to indicate whether the image was saved successfully. The result codes are
IPSTAT_OK
- The image was saved successfully.
- IPSTAT_BADFILE
- The saver couldn't open the file.
- IPSTAT_ABORT
- Use this to indicate that the user cancelled the save operation. This can happen if you
use the monitor to indicate the progress of a lengthy image saving operation.
- IPSTAT_FAILED
- An error occurred during saving.
type
- The kind of pixel data to be saved. Pixel types are listed on the Image I/O page. The most common types will be LWIMTYP_RGBAFP
for color images and LWIMTYP_GREYFP for grayscale images. Use this to decide what
kind of pixel data you want to receive. If your file format supports 24-bit color and
8-bit grayscale, for example, you would set your image protocol type to LWIMTYP_RGB24
when the local type field contains any of the RGB types, and LWIMTYP_GREY8
when it contained either LWIMTYP_GREYFP or LWIMTYP_GREY8.
filename
- The name of the image file to write.
monitor
- A monitor for displaying the progress of the save to the user. You don't have to use
this, but you're encouraged to if your image saving takes an unusual amount of time. This
is the same structure returned by the monitor global.
result = sendData( priv_data, protocol, flags )
- Call this when you're ready to begin receiving image data from LightWave. This will be
after you've filled in the fields of an appropriate LWImageProtocol structure, which is
described on the Image I/O page. The only flag
currently defined is IMGF_REVERSE, which instructs LightWave to send scanlines in
bottom-to-top order. When you call sendData, LightWave calls the functions you
provided in your image protocol structure to actually save the image. sendData
won't return until the image is saved.
Example
The iff sample is a complete IFF ILBM loader and saver. |