roentgen b75cab
/*
roentgen b75cab
 * Private Extended TIFF library interface.
roentgen b75cab
 *
roentgen b75cab
 *  uses private LIBTIFF interface.
roentgen b75cab
 *
roentgen b75cab
 *  The portions of this module marked "XXX" should be
roentgen b75cab
 *  modified to support your tags instead.
roentgen b75cab
 *
roentgen b75cab
 *  written by: Niles D. Ritter
roentgen b75cab
 *
roentgen b75cab
 */
roentgen b75cab
roentgen b75cab
#ifndef __xtiffiop_h
roentgen b75cab
#define __xtiffiop_h
roentgen b75cab
roentgen b75cab
#include "tiffiop.h"
roentgen b75cab
#include "xtiffio.h"
roentgen b75cab
roentgen b75cab
/**********************************************************************
roentgen b75cab
 *               User Configuration
roentgen b75cab
 **********************************************************************/
roentgen b75cab
roentgen b75cab
/* XXX - Define number of your extended tags here */
roentgen b75cab
#define NUM_XFIELD 3
roentgen b75cab
#define XFIELD_BASE (FIELD_LAST-NUM_XFIELD)
roentgen b75cab
roentgen b75cab
/*  XXX - Define your Tag Fields here  */
roentgen b75cab
#define	FIELD_EXAMPLE_MULTI     (XFIELD_BASE+0)
roentgen b75cab
#define	FIELD_EXAMPLE_SINGLE    (XFIELD_BASE+1)
roentgen b75cab
#define	FIELD_EXAMPLE_ASCII      (XFIELD_BASE+2)
roentgen b75cab
roentgen b75cab
roentgen b75cab
/* XXX - Define Private directory tag structure here */
roentgen b75cab
struct XTIFFDirectory {
roentgen b75cab
	uint16	 xd_num_multi; /* dir-count for the multi tag */
roentgen b75cab
	double*  xd_example_multi;
roentgen b75cab
	uint32   xd_example_single; 
roentgen b75cab
	char*    xd_example_ascii;
roentgen b75cab
};
roentgen b75cab
typedef struct XTIFFDirectory XTIFFDirectory;
roentgen b75cab
roentgen b75cab
/**********************************************************************
roentgen b75cab
 *    Nothing below this line should need to be changed by the user.
roentgen b75cab
 **********************************************************************/
roentgen b75cab
roentgen b75cab
struct xtiff {
roentgen b75cab
	TIFF 		*xtif_tif;	/* parent TIFF pointer */
roentgen b75cab
	uint32		xtif_flags;
roentgen b75cab
#define       XTIFFP_PRINT   0x00000001
roentgen b75cab
	XTIFFDirectory	xtif_dir;	/* internal rep of current directory */
roentgen b75cab
	TIFFVSetMethod	xtif_vsetfield;	/* inherited tag set routine */
roentgen b75cab
	TIFFVGetMethod	xtif_vgetfield;	/* inherited tag get routine */
roentgen b75cab
	TIFFPrintMethod	xtif_printdir;  /* inherited dir print method */
roentgen b75cab
};
roentgen b75cab
typedef struct xtiff xtiff;
roentgen b75cab
roentgen b75cab
roentgen b75cab
#define PARENT(xt,pmember) ((xt)->xtif_ ## pmember) 
roentgen b75cab
#define TIFFMEMBER(tf,pmember) ((tf)->tif_ ## pmember) 
roentgen b75cab
#define XTIFFDIR(tif) ((xtiff *)TIFFMEMBER(tif,clientdir))
roentgen b75cab
	
roentgen b75cab
/* Extended TIFF flags */
roentgen b75cab
#define XTIFF_INITIALIZED 0x80000000
roentgen b75cab
	
roentgen b75cab
#endif /* __xtiffiop_h */
roentgen b75cab
/*
roentgen b75cab
 * Local Variables:
roentgen b75cab
 * mode: c
roentgen b75cab
 * c-basic-offset: 8
roentgen b75cab
 * fill-column: 78
roentgen b75cab
 * End:
roentgen b75cab
 */