beautypg.com

Dialogic 6.2 User Manual

Page 88

background image

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