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 andLWIMTYP_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 toLWIMTYP_RGB24
when the localtype
field contains any of the RGB types, andLWIMTYP_GREY8
when it contained eitherLWIMTYP_GREYFP
orLWIMTYP_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 callsendData
, 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.