With just StopChunk(), PropChunk(), and ParseIFF(), you can write a viable
ILBM display program. Since IFFParse knows all about IFF structure and
scoping, such a display program would have the added ability to parse
complex FORMs, LISTs, and CATs and attempt to find imagery buried within.
Such an ILBM reader might appear as follows:
iff = AllocIFF();
iff->iff_Stream = Open ("shuttle dog", MODE_OLDFILE);
InitIFFasDOS (iff);
OpenIFF (iff, IFFF_READ);
PropChunk (iff, ID_ILBM, ID_BMHD);
PropChunk (iff, ID_ILBM, ID_CMAP);
PropChunk (iff, ID_ILBM, ID_CAMG);
StopChunk (iff, ID_ILBM, ID_BODY);
ParseIFF (iff, IFFPARSE_SCAN);
if (bmhdprop = FindProp (iff, ID_ILBM, ID_BMHD))
configurescreen (bmhdprop);
else
bye ("No BMHD, no picture.");
if (cmapprop = FindProp (iff, ID_ILBM, ID_CMAP))
setcolors (cmapprop);
else
usedefaultcolors ();
if (camgprop = FindProp (iff, ID_ILBM, ID_CAMG))
setdisplaymodes (camgprop);
decodebody (iff);
showpicture ();
CloseIFF (iff);
Close (iff->iff_Stream);
FreeIFF (iff);
Open the Library.
-----------------
Application programs must always open iffparse.library before using
the functions outlined above.
Only Example Programs Skip Error Checking.
------------------------------------------
Error checking is not used in the example above for the sake of
clarity. A real application should always check for errors.