318 lines
13 KiB
C
318 lines
13 KiB
C
/*==============================================================================
|
|
This file includes the BUFFER typedef and standard meta-data values.
|
|
|
|
23-Feb-93 RajeevD Moved from ifaxos.h
|
|
17-Jul-93 KGallo Added STORED_BUF_DATA metadata type for buffers containing
|
|
the stored info for another buffer.
|
|
28-Sep-93 ArulM Added RES_ ENCODE_ WIDTH_ and LENGTH_ typedefs
|
|
==============================================================================*/
|
|
#ifndef _INC_BUFFERS
|
|
#define _INC_BUFFERS
|
|
|
|
//----------------------------- BUFFERS -------------------------
|
|
/****
|
|
@doc EXTERNAL IFAXOS DATATYPES
|
|
|
|
@types BUFFER | The Buffer structure defines the buffer header
|
|
structures which processes manipulate.
|
|
|
|
@field WORD | fReadOnly | Specifies whether the buffer
|
|
is readonly or not. It is the applications responsibility to
|
|
check this flag and not violate it. <f IFBufMakeWritable> should
|
|
be used if a process needs to write on a buffer which is
|
|
marked readonly. This field should not be modified by the
|
|
process itself.
|
|
|
|
@field LPBYTE | lpbBegBuf | A far ptr pointing to the physical
|
|
start of the buffer. This ptr has meaning only in the calling
|
|
process's address space and should not be stored for any
|
|
reason. It should not be modified either.
|
|
|
|
@field WORD | wLengthBuf | Physical length of the buffer. Should
|
|
not be modified by the process. Should be used in conjunction
|
|
with <e BUFFER.lpbBegBuf> to know the physical boundaries of the buffer.
|
|
|
|
@field DWORD | dwMetaData | Indicates the kind of data stored in
|
|
the buffer. See <t STD_DATA_TYPES> for all the possible values
|
|
of this field.
|
|
|
|
@field LPBYTE | lpbBegData | Far ptr to the start of valid data in the
|
|
buffer. The process is responsible for maintaining the integrity
|
|
of this as it consumes or produces data in the buffer. The ptr should
|
|
not be passed to any other process as it will not be valid. At buffer
|
|
allocation time this field is initialized to point to the physical
|
|
beginning of the buffer.
|
|
|
|
@field LPBYTE | lpbCurPtr | One of the fields of a union containing
|
|
lpbfNext and dwTemp as its other members.
|
|
A general purpose far ptr which can be
|
|
used to mark an interesting place in the buffer. Should be used as
|
|
a temporary variable while processing the buffer. Should not be directly
|
|
passed to any other process. Initialized
|
|
to point to the beginning of the buffer at allocation time.
|
|
Remember that this is a UNION !!
|
|
|
|
@field LPBUFFER | lpbfNext | One of the fields of a union containing
|
|
lpbCurPtr and dwTemp as its other members. This should be used
|
|
when a module wants to internally link a list of buffers together.
|
|
Remember that this is a UNION !!
|
|
|
|
@field DWORD | dwTemp | One of the fields of a union containing
|
|
lpbfNext and lpbCurPtr as its other members. This should be used when
|
|
the module wants to store some random information in the header.
|
|
Remember that this is a UNION !!
|
|
|
|
@field WORD | wLengthData | Gives the length of valid contiguous data
|
|
present in the buffer starting at <e BUFFER.lpbBegData>. The process is
|
|
responsible for maintaining the integrity of this. Initialized to
|
|
zero at allocation time.
|
|
|
|
@comm There are other reserved fields in the structure which have not been
|
|
mentioned here.
|
|
|
|
@tagname _BUFFER
|
|
|
|
@xref <f IFBufAlloc>
|
|
****/
|
|
|
|
typedef struct _BUFFER
|
|
{
|
|
// Private portion
|
|
struct _BUFFERDATA FAR *lpbdBufData;
|
|
struct _BUFFER FAR *lpbfNextBuf;
|
|
WORD wResFlags;
|
|
|
|
// Read Only portion
|
|
WORD fReadOnly; // Is the buffer readonly ??
|
|
LPBYTE lpbBegBuf; // Physical start of buffer
|
|
WORD wLengthBuf; // Length of buffer
|
|
|
|
// Read write public portion
|
|
WORD wLengthData; // length of valid data
|
|
DWORD dwMetaData; // Used to store metadata information
|
|
LPBYTE lpbBegData; // Ptr to start of data
|
|
union
|
|
{
|
|
struct _BUFFER FAR* lpbfNext; // for linking buffers
|
|
LPBYTE lpbCurPtr; // for local current position use
|
|
DWORD dwTemp; // for general use
|
|
};
|
|
|
|
#ifdef VALIDATE
|
|
// Dont touch this !!
|
|
WORD sentinel; // debug sentinel
|
|
#endif
|
|
|
|
// C++ Extensions
|
|
#ifdef __cplusplus
|
|
|
|
LPBYTE EndBuf (void) FAR {return lpbBegBuf + wLengthBuf; }
|
|
LPBYTE EndData (void) FAR {return lpbBegData + wLengthData;}
|
|
void Reset (void) FAR {lpbBegData = lpbBegBuf; wLengthData = 0;}
|
|
|
|
#endif // __cplusplus
|
|
|
|
} BUFFER, FAR *LPBUFFER , FAR * FAR * LPLPBUFFER ;
|
|
|
|
/********
|
|
@doc EXTERNAL IFAXOS DATATYPES SRVRDLL OEMNSF
|
|
|
|
@type DWORD | STD_DATA_TYPES | Standard data types used for
|
|
specifying the format of data in the system.
|
|
|
|
@emem MH_DATA | Modified Huffman (T.4 1-dimensional).
|
|
@emem MR_DATA | Modified READ (T.4 2-dimensional).
|
|
@emem MMR_DATA| Modified Modified READ (T.6).
|
|
@emem LRAW_DATA | Raw bitmap data, Least Significant Bit to the left.
|
|
@emem HRAW_DATA | Raw Bitmap data, Most Significant Bit to the left.
|
|
@emem DCX_DATA | Industry standard DCX specification (collection of PCX pages).
|
|
@emem ENCRYPTED_DATA | Data encrypted - original format unspecified.
|
|
@emem SIGNED_DATA | Data along with a digital signature.
|
|
@emem BINFILE_DATA | Arbitrary binary data.
|
|
@emem STORED_BUF_DATA | Contains a BUFFER header & data.
|
|
@emem DCP_TEMPLATE_DATA | Digital Cover Page template data.
|
|
@emem DCP_DATA | Digital Cover Page processed template data.
|
|
@emem SPOOL_DATA | Spool data type - same as MMR for now.
|
|
@emem PRINTMODE_DATA | Printer Mode structure.
|
|
@emem ASCII_DATA | Ascii text.
|
|
@emem OLE_DATA | Ole object.
|
|
@emem OLE_PICTURE | Ole Rendering Data.
|
|
@emem END_OF_PAGE | End of page marker.
|
|
@emem END_OF_JOB | End of job marker.
|
|
@emem CUSTOM_METADATA_TYPE | Beyond this value custom data types can be
|
|
defined.
|
|
|
|
@comm This should be used to specify data type of any data stream in the
|
|
system - from BUFFERS to Linearized Messages. All data types which
|
|
need to be used in bit fields (i.e. the Format Resolution) must have
|
|
a value which is a power of 2. Other data types which do not need to used
|
|
in a bit field context may be assigned the other values.
|
|
********/
|
|
|
|
#define MH_DATA 0x00000001L
|
|
#define MR_DATA 0x00000002L
|
|
#define MMR_DATA 0x00000004L
|
|
#define LRAW_DATA 0x00000008L
|
|
#define HRAW_DATA 0x00000010L
|
|
#define DCX_DATA 0x00000020L
|
|
#define ENCRYPTED_DATA 0x00000040L
|
|
#define BINFILE_DATA 0x00000080L
|
|
#define DCP_TEMPLATE_DATA 0x00000100L
|
|
#define ASCII_DATA 0x00000200L
|
|
#define RAMBO_DATA 0x00000400L
|
|
#define LINEARIZED_DATA 0x00000800L
|
|
#define DCP_DATA 0x00001000L
|
|
#define PCL_DATA 0x00002000L
|
|
#define ADDR_BOOK_DATA 0x00004000L
|
|
#define OLE_BIT_DATA 0x00008000L // So we can use fmtres on OLE_DATA
|
|
#define OLE_BIT_PICTURE 0x00010000L // So we can use fntres on OLE_BIT_PICTURE
|
|
|
|
// Make spool data be MMR
|
|
#define SPOOL_DATA MMR_DATA
|
|
|
|
// Standard Non-Bit Valued MetaData values
|
|
#define NULL_DATA 0x00000000L
|
|
#define SIGNED_DATA 0x00000003L
|
|
#define STORED_BUF_DATA 0x00000005L
|
|
#define PRINTMODE_DATA 0x00000006L
|
|
#define OLE_DATA 0x0000001EL // DONT CHANGE THIS VALUE - Needs to be Snowball Compatible
|
|
#define OLE_PICTURE 0x0000001FL // DONT CHANGE THIS VALUE - Needs to be Snowball Compatible
|
|
#define END_OF_PAGE 0x00000021L
|
|
#define END_OF_JOB 0x00000022L
|
|
#define PARADEV_DATA 0x00000031L // parallel device data
|
|
#define PARADEV_EOF 0x00000032L // parallel device end of file
|
|
|
|
|
|
#define ISVIEWATT(e) (((e) == MMR_DATA) || ((e) == RAMBO_DATA))
|
|
#define ISOLEATT(e) (((e) == OLE_DATA) || ((e) == OLE_PICTURE))
|
|
#define ISPAGEDATT(e) (((e)==MMR_DATA) || ((e)==MR_DATA) || \
|
|
((e)==MH_DATA)|| ((e)==LRAW_DATA)|| ((e)==HRAW_DATA))
|
|
|
|
|
|
// Allow for 24 standard bit valued MetaData values
|
|
#define CUSTOM_METADATA_TYPE 0x00800001L
|
|
|
|
/********
|
|
@doc EXTERNAL IFAXOS DATATYPES SRVRDLL OEMNSF
|
|
|
|
@type DWORD | STD_RESOLUTIONS | Standard Page Resolutions
|
|
|
|
@emem AWRES_UNUSED | Resolution is unused or irrelevant
|
|
@emem AWRES_UNKNOWN | Resolution is unknown
|
|
@emem AWRES_CUSTOM | Custom resolution
|
|
@emem AWRES_mm080_038 | 8 lines/mm x 3.85 lines/mm
|
|
@emem AWRES_mm080_077 | 8 lines/mm x 7.7 lines/mm
|
|
@emem AWRES_mm080_154 | 8 lines/mm x 15.4 lines/mm
|
|
@emem AWRES_mm160_154 | 16 lines/mm x 15.4 lines/mm
|
|
@emem AWRES_200_100 | 200 dpi x 100 dpi
|
|
@emem AWRES_200_200 | 200 dpi x 200 dpi
|
|
@emem AWRES_200_400 | 200 dpi x 400 dpi
|
|
@emem AWRES_300_300 | 300 dpi x 300 dpi
|
|
@emem AWRES_400_400 | 400 dpi x 400 dpi
|
|
********/
|
|
|
|
#define AWRES_UNUSED 0xFFFFFFFFL
|
|
#define AWRES_UNKNOWN 0x00000000L
|
|
#define AWRES_CUSTOM 0x00000001L
|
|
#define AWRES_mm080_038 0x00000002L
|
|
#define AWRES_mm080_077 0x00000004L
|
|
#define AWRES_mm080_154 0x00000008L
|
|
#define AWRES_mm160_154 0x00000010L
|
|
#define AWRES_200_100 0x00000020L
|
|
#define AWRES_200_200 0x00000040L
|
|
#define AWRES_200_400 0x00000080L
|
|
#define AWRES_300_300 0x00000100L
|
|
#define AWRES_400_400 0x00000200L
|
|
#define AWRES_600_600 0x00000400L
|
|
#define AWRES_600_300 0x00000800L
|
|
|
|
// Keep old names for a while
|
|
#define AWRES_NORMAL AWRES_mm080_038
|
|
#define AWRES_FINE AWRES_mm080_077
|
|
#define AWRES_SUPER AWRES_mm080_154
|
|
#define AWRES_SUPER_SUPER AWRES_mm160_154
|
|
#define AWRES_SUPER_FINE AWRES_SUPER_SUPER
|
|
|
|
/********
|
|
@doc EXTERNAL IFAXOS DATATYPES SRVRDLL
|
|
|
|
@type DWORD | STD_PAGE_LENLIMITS | Standard Page Length Limits
|
|
|
|
@emem AWLENLIMIT_UNUSED | Page Length Limit unused
|
|
@emem AWLENLIMIT_STD | Page Length Limit defined by Standard Paper Size
|
|
@emem AWLENLIMIT_UNLIMITED | unlimited page length
|
|
********/
|
|
|
|
#define AWLENLIMIT_UNUSED 0xFFFFFFFFL
|
|
#define AWLENLIMIT_STD 0x00000001L
|
|
#define AWLENLIMIT_UNLIMITED 0x00000002L
|
|
|
|
|
|
/********
|
|
@doc EXTERNAL IFAXOS DATATYPES SRVRDLL
|
|
|
|
@typee STD_PAGE_SIZES | Standard Page Sizes
|
|
|
|
@emem AWPAPER_UNUSED | Paper size is unused
|
|
@emem AWPAPER_UNKNOWN | Unknown size
|
|
@emem AWPAPER_CUSTOM | Custom Paper size
|
|
@emem AWPAPER_A3_PORTRAIT | A3 Portrait
|
|
@emem AWPAPER_A3_LANDSCAPE | A3 landscape
|
|
@emem AWPAPER_B4_PORTRAIT | B4 portrait
|
|
@emem AWPAPER_B4_LANDSCAPE | B4 landscape
|
|
@emem AWPAPER_A4_PORTRAIT | A4 portrait
|
|
@emem AWPAPER_A4_LANDSCAPE | A4 landscape
|
|
@emem AWPAPER_B5_PORTRAIT | B5 portrait
|
|
@emem AWPAPER_B5_LANDSCAPE | B5 landscape
|
|
@emem AWPAPER_A5_PORTRAIT | A5 portrait
|
|
@emem AWPAPER_A5_LANDSCAPE | A5 landscape
|
|
@emem AWPAPER_A6_PORTRAIT | A6 portrait
|
|
@emem AWPAPER_A6_LANDSCAPE | A6 landscape
|
|
@emem AWPAPER_LETTER_PORTRAIT | Letter portrait
|
|
@emem AWPAPER_LETTER_LANDSCAPE | Letter landscape
|
|
@emem AWPAPER_LEGAL_PORTRAIT | Legal portrait
|
|
@emem AWPAPER_LEGAL_LANDSCAPE | Legal landscape
|
|
@emem AWPAPER_WIN31_DEFAULT | ????
|
|
|
|
|
|
@comm Page width in pixels must be exactly correct for MH/MR/MMR
|
|
decoding and to interoperate with Group-3 fax machines.
|
|
The table in the example below gives the bits/bytes required at each width
|
|
and resolution combination
|
|
|
|
@ex Table for Page Width vs Resolution |
|
|
|
|
A4 B4 A3 A5 A6
|
|
200dpi / 8li/mm 1728/216 2048/256 2432/304 1216/152 864/108
|
|
300 2592/324 3072/384 3648/456 1824/228 1296/162
|
|
400dpi / 16li/mm 3456/432 4096/512 4864/608 2432/304 1728/216
|
|
|
|
********/
|
|
|
|
#define AWPAPER_UNUSED 0xFFFFFFFFL
|
|
#define AWPAPER_UNKNOWN 0x00000000L
|
|
#define AWPAPER_CUSTOM 0x00000001L
|
|
#define AWPAPER_A3_PORTRAIT 0x00000002L
|
|
#define AWPAPER_A3_LANDSCAPE 0x00000004L
|
|
#define AWPAPER_B4_PORTRAIT 0x00000008L
|
|
#define AWPAPER_B4_LANDSCAPE 0x00000010L
|
|
#define AWPAPER_A4_PORTRAIT 0x00000020L
|
|
#define AWPAPER_A4_LANDSCAPE 0x00000040L
|
|
#define AWPAPER_B5_PORTRAIT 0x00000080L
|
|
#define AWPAPER_B5_LANDSCAPE 0x00000100L
|
|
#define AWPAPER_A5_PORTRAIT 0x00000200L
|
|
#define AWPAPER_A5_LANDSCAPE 0x00000400L
|
|
#define AWPAPER_A6_PORTRAIT 0x00000800L
|
|
#define AWPAPER_A6_LANDSCAPE 0x00001000L
|
|
#define AWPAPER_LETTER_PORTRAIT 0x00002000L
|
|
#define AWPAPER_LETTER_LANDSCAPE 0x00004000L
|
|
#define AWPAPER_LEGAL_PORTRAIT 0x00008000L
|
|
#define AWPAPER_LEGAL_LANDSCAPE 0x00010000L
|
|
#define AWPAPER_WIN31_DEFAULT 0x00020000L
|
|
|
|
|
|
|
|
|
|
|
|
#endif // _INC_BUFFERS
|