| AWARE [SYSTEMS] | Imaging expertise for the Delphi developer | |||||||
![]() |
TIFF and LibTiff Mailing List Archive | |||||||
LibTiff Mailing List
TIFF and LibTiff Mailing List Archive Contact
The TIFF Mailing List Homepage |
Thread2005.05.19 13:53 "Re: Looking for the definitions of (MS Specific?) tags [part 1]", by Ulf ZibisHi Joris, Kevin and all, > > I looked at the TIFF spec for standard tags, and > > googled for many more. > > There is a directory of 'known' tags, here: > http://www.awaresystems.be/imaging/tiff/tifftags.html the requested MS-tags are not listed in awaresystems directory. I have explored some new tags, which are used by Microsoft for the faxconsole, which is included in Windows XP. I dissassembled and iterpreted the TIFF-files myself, so I can't guerantee that the values are all right. I added these tags as described in http://www.remotesensing.org/libtiff/addingtags.html. Please refer to the files in the attachment. I have written these files to extend sfftobmp capabilities. See: http://sfftools.sourceforge.net. I had some problems because via xtiffiop.h there are only 33 additional tags possible. So I propose to add theese tags to the normal library. Because the 3 files exceed the limit of 40 kBytes I post them in to parts for the mailing list. bye Ulf Zibis /* * xtiffio.h -- Public interface to Extended TIFF tags * * This is a template for defining a client module * which supports tag extensions to the standard libtiff * set. Only portions of the code marked "XXX" need to * be changed to support your tag set. * * written by: Niles D. Ritter * new tags for Microsoft faxconsole by: Ulf Zibis <Ulf.Zibis@gmx.de>: */ #ifndef __xtiffio_h #define __xtiffio_h #include "../tiff/tiffiop.h" #if defined(__alpha) || (defined(_MIPS_SZLONG) && _MIPS_SZLONG == 64) typedef long int64; typedef unsigned long uint64; /* sizeof (uint64) must == 8 */ #else typedef __int64 int64; typedef unsigned __int64 uint64; /* sizeof (uint64) must == 8 */ #endif /* * XXX Define your private Tag names and values here * Attention : Maximum is 33 !!! */ #define TIFFTAG_MSFAX_CSID 40001 #define TIFFTAG_MSFAX_TSID 40002 #define TIFFTAG_MSFAX_DEVICE 40003 #define TIFFTAG_MSFAX_ROUTINGINFO 40004 #define TIFFTAG_MSFAX_CALLERID 40005 #define TIFFTAG_MSFAX_RECIPIENTNAME 40006 #define TIFFTAG_MSFAX_RECIPIENTFAXNUMBER 40007 /* #define TIFFTAG_MSFAX_RECIPIENTCOMPANY 40008 #define TIFFTAG_MSFAX_RECIPIENTADDRESS 40009 #define TIFFTAG_MSFAX_RECIPIENTSTREET 40010 #define TIFFTAG_MSFAX_RECIPIENTCITY 40011 #define TIFFTAG_MSFAX_RECIPIENTZIPCODE 40012 #define TIFFTAG_MSFAX_RECIPIENTCOUNTRY 40013 #define TIFFTAG_MSFAX_RECIPIENTTITLE 40014 #define TIFFTAG_MSFAX_RECIPIENTDEPARTMENT 40015 #define TIFFTAG_MSFAX_RECIPIENTOFFICE 40016 #define TIFFTAG_MSFAX_RECIPIENTOFFICEPHONE 40017 #define TIFFTAG_MSFAX_RECIPIENTHOMEPHONE 40018 #define TIFFTAG_MSFAX_RECIPIENT??? 40019 #define TIFFTAG_MSFAX_RECIPIENT??? 40020 */ #define TIFFTAG_MSFAX_SENDERNAME 40021 #define TIFFTAG_MSFAX_SENDERFAXNUMBER 40022 /* #define TIFFTAG_MSFAX_SENDERCOMPANY 40023 #define TIFFTAG_MSFAX_SENDERADDRES 40024 #define TIFFTAG_MSFAX_SENDERSTREET 40025 #define TIFFTAG_MSFAX_SENDERCITY 40026 #define TIFFTAG_MSFAX_SENDERZIPCODE 40027 #define TIFFTAG_MSFAX_SENDERCOUNTRY 40028 #define TIFFTAG_MSFAX_SENDERTITLE 40029 #define TIFFTAG_MSFAX_SENDERDEPARTMENT 40030 #define TIFFTAG_MSFAX_SENDEROFFICE 40031 #define TIFFTAG_MSFAX_SENDEROFFICEPHONE 40032 #define TIFFTAG_MSFAX_SENDERHOMEPHONE 40033 #define TIFFTAG_MSFAX_SENDER??? 40034 #define TIFFTAG_MSFAX_SENDER??? 40035 */ #define TIFFTAG_MSFAX_BILLINGCODE 40036 #define TIFFTAG_MSFAX_USERNAME 40037 #define TIFFTAG_MSFAX_40038 40038 #define TIFFTAG_MSFAX_DOCUMENT 40039 #define TIFFTAG_MSFAX_COVERPAGESUBJECT 40040 #define TIFFTAG_MSFAX_RETRIES 40041 #define TIFFTAG_MSFAX_PRIORITY 40042 #define MSFAX_PRIORITY_LOW 0 #define MSFAX_PRIORITY_NORMAL 1 #define MSFAX_PRIORITY_HIGH 2 #define TIFFTAG_MSFAX_PARENTJOBID 40043 #define TIFFTAG_MSFAX_SUBMISSIONTIME 40044 #define TIFFTAG_MSFAX_SCHEDULED 40045 #define TIFFTAG_MSFAX_TOTALPAGES 40046 #define TIFFTAG_MSFAX_TYPE 40047 #define MSFAX_TYPE_OUT 2 #define MSFAX_TYPE_IN 4 #define TIFFTAG_MSFAX_40048 40048 #define MSFAX_40048_DEFAULT 256 #define TIFFTAG_MSFAX_ERRORCODE 40049 #define MSFAX_ERRORCODE_NONE 0 #define MSFAX_ERRORCODE_NOCALLACCEPTANCE 9 #define MSFAX_ERRORCODE_NODIALINGTONE 11 #define MSFAX_ERRORCODE_UNKNOWNFATAL 12 #define MSFAX_ERRORCODE_CALLDELAYED 13 #define MSFAX_ERRORCODE_INCOMPLETE 16 #define MSFAX_ERRORCODE_COMPLETE 18 #define TIFFTAG_MSFAX_40050 40050 #define TIFFTAG_MSFAX_STARTTIME 40051 #define TIFFTAG_MSFAX_ENDTIME 40052 #define TIFFTAG_MSFAX_40053 40053 #define MSFAX_40053_DEFAULT 2 /* These tags are not valid, but are provided for example */ //#define TIFFTAG_EXAMPLE_MULTI 61234 //#define TIFFTAG_EXAMPLE_SINGLE 61235 //#define TIFFTAG_EXAMPLE_ASCII 61236 /* * XXX Define Printing method flags. These * flags may be passed in to TIFFPrintDirectory() to * indicate that those particular field values should * be printed out in full, rather than just an indicator * of whether they are present or not. */ #define TIFFPRINT_MYMULTIDOUBLES 0x80000000 /********************************************************************** * Nothing below this line should need to be changed by the user. **********************************************************************/ #if defined(__cplusplus) extern "C" { #endif extern TIFF* XTIFFOpen(const char* name, const char* mode); extern TIFF* XTIFFFdOpen(int fd, const char* name, const char* mode); extern void XTIFFClose(TIFF *tif); #if defined(__cplusplus) } #endif #endif /* __xtiffio_h */ /* * Private Extended TIFF library interface. * * uses private LIBTIFF interface. * * The portions of this module marked "XXX" should be * modified to support your tags instead. * * written by: Niles D. Ritter * new tags for Microsoft faxconsole by: Ulf Zibis <Ulf.Zibis@gmx.de>: * */ #ifndef __xtiffiop_h #define __xtiffiop_h #include "../tiff/tiffiop.h" #include "xtiffio.h" /********************************************************************** * User Configuration **********************************************************************/ /* XXX - Define number of your extended tags here */ #define NUM_XFIELD 27 //#define NUM_XFIELD 53 // FIELD_LAST must be increased. #define XFIELD_BASE (FIELD_LAST-NUM_XFIELD) /* XXX - Define your Tag Fields here */ #define FIELD_MSFAX_CSID (XFIELD_BASE+0) #define FIELD_MSFAX_TSID (XFIELD_BASE+1) #define FIELD_MSFAX_DEVICE (XFIELD_BASE+2) #define FIELD_MSFAX_ROUTINGINFO (XFIELD_BASE+3) #define FIELD_MSFAX_CALLERID (XFIELD_BASE+4) #define FIELD_MSFAX_RECIPIENTNAME (XFIELD_BASE+5) #define FIELD_MSFAX_RECIPIENTFAXNUMBER (XFIELD_BASE+6) /* // Only 33 (FIELD_LAST-62) additional tags are possible! // See FIELD_LAST in tif_dir.h. // Don't use the following 13 tags without increasing FIELD_LAST: #define FIELD_MSFAX_40008 (XFIELD_BASE+7) #define FIELD_MSFAX_40009 (XFIELD_BASE+8) #define FIELD_MSFAX_40010 (XFIELD_BASE+9) #define FIELD_MSFAX_40011 (XFIELD_BASE+10) #define FIELD_MSFAX_40012 (XFIELD_BASE+11) #define FIELD_MSFAX_40013 (XFIELD_BASE+12) #define FIELD_MSFAX_40014 (XFIELD_BASE+13) #define FIELD_MSFAX_40015 (XFIELD_BASE+14) #define FIELD_MSFAX_40016 (XFIELD_BASE+15) #define FIELD_MSFAX_40017 (XFIELD_BASE+16) #define FIELD_MSFAX_40018 (XFIELD_BASE+17) #define FIELD_MSFAX_40019 (XFIELD_BASE+18) #define FIELD_MSFAX_40020 (XFIELD_BASE+19) */ #define FIELD_MSFAX_SENDERNAME (XFIELD_BASE+7) #define FIELD_MSFAX_SENDERFAXNUMBER (XFIELD_BASE+8) /* // Don't use the following 13 tags without increasing FIELD_LAST: #define FIELD_MSFAX_SENDERCOMPANY (XFIELD_BASE+22) #define FIELD_MSFAX_40024 (XFIELD_BASE+23) #define FIELD_MSFAX_40025 (XFIELD_BASE+24) #define FIELD_MSFAX_40026 (XFIELD_BASE+25) #define FIELD_MSFAX_40027 (XFIELD_BASE+26) #define FIELD_MSFAX_40028 (XFIELD_BASE+27) #define FIELD_MSFAX_40029 (XFIELD_BASE+28) #define FIELD_MSFAX_40030 (XFIELD_BASE+29) #define FIELD_MSFAX_40031 (XFIELD_BASE+30) #define FIELD_MSFAX_40032 (XFIELD_BASE+31) #define FIELD_MSFAX_40033 (XFIELD_BASE+32) #define FIELD_MSFAX_40034 (XFIELD_BASE+33) #define FIELD_MSFAX_40035 (XFIELD_BASE+34) */ #define FIELD_MSFAX_BILLINGCODE (XFIELD_BASE+9) #define FIELD_MSFAX_USERNAME (XFIELD_BASE+10) #define FIELD_MSFAX_40038 (XFIELD_BASE+11) #define FIELD_MSFAX_DOCUMENT (XFIELD_BASE+12) #define FIELD_MSFAX_COVERPAGESUBJECT (XFIELD_BASE+13) #define FIELD_MSFAX_RETRIES (XFIELD_BASE+14) #define FIELD_MSFAX_PRIORITY (XFIELD_BASE+15) #define FIELD_MSFAX_PARENTJOBID (XFIELD_BASE+16) #define FIELD_MSFAX_SUBMISSIONTIME (XFIELD_BASE+17) #define FIELD_MSFAX_SCHEDULED (XFIELD_BASE+18) #define FIELD_MSFAX_TOTALPAGES (XFIELD_BASE+19) #define FIELD_MSFAX_TYPE (XFIELD_BASE+20) #define FIELD_MSFAX_40048 (XFIELD_BASE+21) #define FIELD_MSFAX_ERRORCODE (XFIELD_BASE+22) #define FIELD_MSFAX_40050 (XFIELD_BASE+23) #define FIELD_MSFAX_STARTTIME (XFIELD_BASE+24) #define FIELD_MSFAX_ENDTIME (XFIELD_BASE+25) #define FIELD_MSFAX_40053 (XFIELD_BASE+26) //#define FIELD_EXAMPLE_MULTI (XFIELD_BASE+0) //#define FIELD_EXAMPLE_SINGLE (XFIELD_BASE+1) //#define FIELD_EXAMPLE_ASCII (XFIELD_BASE+2) /* XXX - Define Private directory tag structure here */ struct XTIFFDirectory { char* xd_msfax_csid; char* xd_msfax_tsid; char* xd_msfax_device; char* xd_msfax_routinginfo; char* xd_msfax_callerid; char* xd_msfax_recipientname; char* xd_msfax_recipientfaxnumber; /* char* xd_msfax_40008; char* xd_msfax_40009; char* xd_msfax_40010; char* xd_msfax_40011; char* xd_msfax_40012; char* xd_msfax_40013; char* xd_msfax_40014; char* xd_msfax_40015; char* xd_msfax_40016; char* xd_msfax_40017; char* xd_msfax_40018; char* xd_msfax_40019; char* xd_msfax_40020; */ char* xd_msfax_sendername; char* xd_msfax_senderfaxnumber; /* char* xd_msfax_sendercompany; char* xd_msfax_40024; char* xd_msfax_40025; char* xd_msfax_40026; char* xd_msfax_40027; char* xd_msfax_40028; char* xd_msfax_40029; char* xd_msfax_40030; char* xd_msfax_40031; char* xd_msfax_40032; char* xd_msfax_40033; char* xd_msfax_40034; char* xd_msfax_40035; */ char* xd_msfax_billingcode; char* xd_msfax_username; char* xd_msfax_40038; char* xd_msfax_document; char* xd_msfax_coverpagesubject; uint32 xd_msfax_retries; uint32 xd_msfax_priority; uint64* xd_msfax_parentjobid; FILETIME* xd_msfax_submissiontime; FILETIME* xd_msfax_scheduled; uint32 xd_msfax_totalpages; uint32 xd_msfax_type; uint32 xd_msfax_40048; uint32 xd_msfax_errorcode; char* xd_msfax_40050; FILETIME* xd_msfax_starttime; FILETIME* xd_msfax_endtime; uint32 xd_msfax_40053; // uint16 xd_num_multi; /* dir-count for the multi tag */ // double* xd_example_multi; // uint32 xd_example_single; // char* xd_example_ascii; }; typedef struct XTIFFDirectory XTIFFDirectory; /********************************************************************** * Nothing below this line should need to be changed by the user. **********************************************************************/ struct xtiff { TIFF *xtif_tif; /* parent TIFF pointer */ uint32 xtif_flags; #define XTIFFP_PRINT 0x00000001 XTIFFDirectory xtif_dir; /* internal rep of current directory */ TIFFVSetMethod xtif_vsetfield; /* inherited tag set routine */ TIFFVGetMethod xtif_vgetfield; /* inherited tag get routine */ TIFFPrintMethod xtif_printdir; /* inherited dir print method */ }; typedef struct xtiff xtiff; #define PARENT(xt,pmember) ((xt)->xtif_ ## pmember) #define TIFFMEMBER(tf,pmember) ((tf)->tif_ ## pmember) #define XTIFFDIR(tif) ((xtiff *)TIFFMEMBER(tif,clientdir)) /* Extended TIFF flags */ #define XTIFF_INITIALIZED 0x80000000 #endif /* __xtiffiop_h */ |
|||||||