Dialogic 6.2 Manuale Utente

Pagina di 441
Developing a Fax Application
November 2009
88
    if ((n = BfvTiffReadImage(&args_tiff)) <= 0)
 
        break;
 
    process_image(buf,n);
 
    }
 
    args_tiff.tp = tp;
 
    BfvTiffClose(&args_tiff);}
    my_ifd_func(tp, ifd_ptr, arg)
 
    {
 
/* Does nothing,just returns */
 
return (0);
 
}
The BfvTiffWriteImage and BfvTiffWriteIFD functions are used 
to write a new TIFF file. BfvTiffWriteImage receives data from a 
user-supplied buffer until the end of the page is reached. The 
BfvTiffWriteIFD function is called repeatedly with IFD entry 
information. The application can use fseek to move to locations in the 
TIFF file to determine the proper offsets to use for a given tag (using 
the TIFF_FP(tp) macro to get the file pointer) and 
BfvTiffWriteRes to help write the resolution as is often needed.
The presence of a certain set of tags is required to produce a valid 
TIFF-F file; BfvTiffWriteIFD automatically takes care of the 
STRIPOFFSETS 
and STRIPBYTECOUNTS tags, but the application is 
responsible for all other tags. 
A sample program to write a TIFF-F file follows:
main()
 
{
 
    TFILE *tp;
 
    unsigned char buf[1024];
 
    int n;
 
    struct ifd_field ifd_field;
 
    struct args_tiff args_tiff;
    BT_ZERO(args_tiff);
 
    args_tiff.fname = "filename";
 
    args_tiff.fmode = "w";
 
    tp = BfvTiffOpen(&args_tiff);
    for (;;)
 
    {
 
        if ((n = get_image_data(buf)) <= 0)
 
            break;
 
    args_tiff.tp = tp;
 
    args_tiff.buf = buf;
 
    args_tiff.size = n;
 
    if (BfvTiffWriteImage(&args_tiff) != 0)
 
        break;
 
    }
 
    args_tiff.tp = tp;
 
    args_tiff.buf = NULL;
 
    args_tiff.size = 0