776 lines
21 KiB
C
776 lines
21 KiB
C
|
#ifndef _INC_XFILE_H_
|
||
|
#define _INC_XFILE_H_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C"
|
||
|
{
|
||
|
#endif
|
||
|
|
||
|
/* Copyright (C) 1995 Xerox Corporation, All Rights Reserved.
|
||
|
*/
|
||
|
|
||
|
/* xfile.h
|
||
|
*
|
||
|
* DESCRIPTION
|
||
|
* Declarations for the XF Reader API.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* INCLUDES
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* CONSTANTS
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* MACROS
|
||
|
*/
|
||
|
|
||
|
// DLL export linkage
|
||
|
#if defined (_WIN32)
|
||
|
#ifndef FAR
|
||
|
#define FAR
|
||
|
#endif
|
||
|
#elif defined (sparc)
|
||
|
#define FAR
|
||
|
#else
|
||
|
// add your define for FAR here
|
||
|
#error "error: unknown case"
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* TYPEDEFS
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* XF basic types
|
||
|
*
|
||
|
* For portability, the XF library uses platform-independent type names.
|
||
|
* The definitions of the type will be in a single platform-dependent
|
||
|
* section here.
|
||
|
*/
|
||
|
|
||
|
#ifndef _TYPES_PUB_INCLUDED
|
||
|
#ifdef sparc
|
||
|
#define signed
|
||
|
#endif
|
||
|
typedef signed long Bool;
|
||
|
typedef unsigned char UInt8;
|
||
|
typedef signed char Int8;
|
||
|
typedef unsigned short UInt16;
|
||
|
typedef signed short Int16;
|
||
|
typedef unsigned long UInt32;
|
||
|
typedef signed long Int32;
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* XF derived types
|
||
|
*/
|
||
|
|
||
|
/* Rectangle type */
|
||
|
|
||
|
typedef struct XF_RECT_S
|
||
|
{
|
||
|
UInt32 x;
|
||
|
UInt32 y;
|
||
|
UInt32 width;
|
||
|
UInt32 height;
|
||
|
} XF_RECT;
|
||
|
|
||
|
/* Handle to client's instance of library */
|
||
|
|
||
|
typedef UInt32 XF_INSTHANDLE;
|
||
|
|
||
|
/* Handle to open document */
|
||
|
|
||
|
typedef UInt32 XF_DOCHANDLE;
|
||
|
|
||
|
/* Return codes */
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
XF_NOERROR = 0,
|
||
|
XF_INTERNAL_ERROR,
|
||
|
XF_NOSUPPORT,
|
||
|
XF_NOMEMORY,
|
||
|
XF_CLIENTABORT,
|
||
|
XF_IO_ERROR,
|
||
|
XF_BADFILEFORMAT,
|
||
|
XF_BADPARAMETER,
|
||
|
XF_BADFILEMODE, // file not open in BINARY mode
|
||
|
XF_SEQUENCE, // function called out-of-sequence
|
||
|
} XF_RESULT;
|
||
|
|
||
|
/* Types of image */
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
XF_IMGTYPE_NONE = 0,
|
||
|
XF_IMGTYPE_BINARY,
|
||
|
XF_IMGTYPE_GRAY4,
|
||
|
XF_IMGTYPE_GRAY8,
|
||
|
XF_IMGTYPE_COLOR4,
|
||
|
XF_IMGTYPE_COLOR8,
|
||
|
XF_IMGTYPE_COLOR24
|
||
|
} XF_IMGTYPE;
|
||
|
|
||
|
/*
|
||
|
* The type of the image with respect to the image/subimage
|
||
|
* hierarchy. _MASTER indicates text plane/page image.
|
||
|
* These image types can be divided into two classes, those
|
||
|
* with image content and those that modify image
|
||
|
* content. For example, an XF_USAGE_MASK depends on and modifes
|
||
|
* the image content of an XF_USAGE_PICTURESEGMENT. An
|
||
|
* XF_USAGE_MASK would never be displayed independently of
|
||
|
* it parent.
|
||
|
*
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
XF_USAGE_MASTER, // binary text
|
||
|
XF_USAGE_PICTURESEGMENT, // picture
|
||
|
XF_USAGE_MASK, // mask
|
||
|
XF_USAGE_LINEART, // picture type
|
||
|
XF_USAGE_BUSINESSGRAPHIC, // picture type
|
||
|
XF_USAGE_FOREGROUNDCOLORS, // mask
|
||
|
XF_USAGE_BACKGROUNDCOLORS // mask
|
||
|
} XF_USAGETYPE;
|
||
|
|
||
|
/*
|
||
|
* XF general I/O functions
|
||
|
*
|
||
|
* The XF client is responsible for managing the interface to the
|
||
|
* local file system and must provide functions for basic file
|
||
|
* I/O. To the XF library a file is represented by a token that
|
||
|
* identifies the file to the client, along with the functions
|
||
|
* that can be used to access the data. This data is contained in
|
||
|
* the following structure.
|
||
|
*/
|
||
|
|
||
|
typedef Int32 (*XF_READFUNC)(UInt32 dwClientID, UInt32 dwFileID, UInt8 FAR *pBuf,
|
||
|
UInt32 dwByteCount);
|
||
|
typedef Int32 (*XF_WRITEFUNC)(UInt32 dwClientID, UInt32 dwFileID, UInt8 FAR *pBuf,
|
||
|
UInt32 dwByteCount);
|
||
|
typedef Int32 (*XF_SEEKFUNC)(UInt32 dwClientID, UInt32 dwFileID, UInt32 dwOffset);
|
||
|
typedef Int32 (*XF_SIZEFUNC)(UInt32 dwClientID, UInt32 dwFileID);
|
||
|
|
||
|
typedef struct XF_TOKEN_S
|
||
|
{
|
||
|
UInt32 dwSize; /* Size of this structure */
|
||
|
UInt32 dwClientFileID; /* Client's file identifier */
|
||
|
UInt32 dwCurPos; /* Internal -- filled in by XF library */
|
||
|
Bool bSwapBytes; /* Internal -- filled in by XF library */
|
||
|
XF_READFUNC FileRead;
|
||
|
XF_WRITEFUNC FileWrite;
|
||
|
XF_SEEKFUNC FileSeek;
|
||
|
XF_SIZEFUNC FileSize;
|
||
|
} XF_TOKEN_T, FAR *XF_TOKEN;
|
||
|
|
||
|
/*
|
||
|
* XF Document information
|
||
|
*
|
||
|
* The following structure describes the data returned by the
|
||
|
* XF_GetDocInfo() function.
|
||
|
*/
|
||
|
|
||
|
typedef struct XF_DOCINFO_S
|
||
|
{
|
||
|
UInt32 dwSize; /* Size of this structure */
|
||
|
UInt32 nPages; /* Number of pages in file */
|
||
|
} XF_DOCINFO;
|
||
|
|
||
|
/*
|
||
|
* XF Page Information
|
||
|
*
|
||
|
* The following structure describes the data returned by the
|
||
|
* XF_GetPageInfo() function.
|
||
|
*/
|
||
|
|
||
|
typedef struct XF_PAGEINFO_S
|
||
|
{
|
||
|
UInt32 dwSize; /* Size of this structure */
|
||
|
UInt32 dwImages; /* Number of images on page */
|
||
|
UInt32 dwAnnotCount; /* Number of annotations on page */
|
||
|
} XF_PAGEINFO;
|
||
|
|
||
|
/*
|
||
|
* XF Image information
|
||
|
*
|
||
|
* The following structure describes the data returned by the
|
||
|
* XF_GetImageInfo() function.
|
||
|
*
|
||
|
* The dwMaskID is a magic number generated from the imageID.
|
||
|
|
||
|
* New, secondary subimage types such as background or foreground
|
||
|
* color planes will be supported by adding additional ID fields to
|
||
|
* this structure. For example, in addition to the dwMaskID, a
|
||
|
* a dwForegrndClrPlaneID would be added to support foreground text
|
||
|
* color.
|
||
|
*/
|
||
|
|
||
|
typedef struct XF_IMAGEINFO_S
|
||
|
{
|
||
|
UInt32 dwSize; /* Size of this structure */
|
||
|
UInt32 dwXOffset; /* X location in page coordinates */
|
||
|
UInt32 dwYOffset; /* Y location in page coordinates */
|
||
|
UInt32 dwXResolution; /* X Resolution of image in dpi */
|
||
|
UInt32 dwYResolution; /* Y Resolution of image in dpi */
|
||
|
UInt32 dwWidth; /* Width in image's X resolution units */
|
||
|
UInt32 dwHeight; /* Height in image's Y resolution units */
|
||
|
UInt32 dwMaskID; /* Image ID for mask: 0=none */
|
||
|
UInt32 dwFGColorID; /* Image ID for foreground color image 0=none */
|
||
|
UInt32 dwBGColorID; /* Image ID for background color image: 0=none */
|
||
|
UInt32 dwSuggestedStripHeight; /* For best performance, read strips with
|
||
|
height a multiple of this. */
|
||
|
UInt32 dwImageType; /* Type of image (XF_IMGTYPE) */
|
||
|
UInt32 dwImageUsage; /* subimage attribute (XF_USAGETYPE) */
|
||
|
} XF_IMAGEINFO;
|
||
|
|
||
|
/*
|
||
|
* XF Annotation information
|
||
|
*
|
||
|
* The following structure describes the data returned by the
|
||
|
* XF_GetAnnotInfo() function.
|
||
|
*/
|
||
|
|
||
|
typedef struct XF_ANNOTINFO_S
|
||
|
{
|
||
|
UInt32 dwSize; /* Size of this structure */
|
||
|
UInt32 dwAnnotType; /* Type of annotation */
|
||
|
XF_RECT rLocation; /* Location of annotation, in page coordinates. */
|
||
|
UInt32 dwAnnotLength; /* Length of annotation data, in bytes */
|
||
|
} XF_ANNOTINFO;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
XF_FORMAT_UNKNOWN = 0,
|
||
|
XF_XIF, // XIF > 1.0
|
||
|
XF_XIF1, // XIF 1.0
|
||
|
XF_TIFF,
|
||
|
XF_PCX,
|
||
|
XF_DCX,
|
||
|
XF_BMP,
|
||
|
XF_JFIF,
|
||
|
XF_GIF
|
||
|
} XF_FILE_FORMAT;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
XF_COMP_UNKNOWN = 0x00,
|
||
|
XF_NOC = 0x01,
|
||
|
XF_G4 = 0x02,
|
||
|
XF_G3 = 0x04,
|
||
|
XF_PACKBITS = 0x08,
|
||
|
XF_SUPER = 0x10,
|
||
|
XF_JPEG = 0x20,
|
||
|
} XF_FILE_COMPRESSION;
|
||
|
|
||
|
/*
|
||
|
* ENUMS
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* GLOBAL VARIABLE DECLARATIONS
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* FUNCTION PROTOTYPES
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
* XF progress function. The progress function is selected by the client.
|
||
|
* It is called periodically by XF functions to report progress and offer
|
||
|
* the client an opportunity to cancel. The meaning of the progress function
|
||
|
* depends on the function being carried out. If not otherwise documented,
|
||
|
* the progress value will be -1,indicating no meaningful progress to report,
|
||
|
* or a number from 0 to 100, indicating percent complete.
|
||
|
*/
|
||
|
|
||
|
typedef Int32 (*XF_PROGRESSFUNC)(UInt32 dwClientID, Int32 dwProgress);
|
||
|
|
||
|
XF_RESULT XF_SetProgressFunc(XF_INSTHANDLE xInst, XF_PROGRESSFUNC xProgress);
|
||
|
|
||
|
/*
|
||
|
* XF memory allocation function. This function allows the client to
|
||
|
* override XF's memory allocation functions. It is not required, and
|
||
|
* may not be available on all platforms.
|
||
|
*
|
||
|
* Once the functions have been overridden, they can be restored to
|
||
|
* their defaults by passing NULL for each function.
|
||
|
*/
|
||
|
|
||
|
typedef void FAR *(*XF_MALLOCFUNC)(UInt32 dwClientId, UInt32 dwBytes);
|
||
|
typedef void (*XF_FREEFUNC)(UInt32 dwClientId, void FAR *pBuf);
|
||
|
|
||
|
XF_RESULT XF_SetMallocFuncs(XF_INSTHANDLE xInst, XF_MALLOCFUNC xMalloc, XF_FREEFUNC xFree);
|
||
|
|
||
|
/*
|
||
|
* XF_InitInstance
|
||
|
*
|
||
|
* Starts a client session to the XF library. The client passes in
|
||
|
* a 32-bit instance identifier that will be passed back through
|
||
|
* all XF callback functions (for file I/O, memory allocation, and
|
||
|
* progress reporting).
|
||
|
*
|
||
|
* Returns instance handle through second parameter. This handle is
|
||
|
* passed in to all subsequent XF functions.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_InitInstance(UInt32 dwClientInstID, XF_INSTHANDLE FAR *pxInst);
|
||
|
|
||
|
/*
|
||
|
* XF_EndInstance
|
||
|
*
|
||
|
* Ends a client session to the XF library.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_EndInstance(XF_INSTHANDLE xInst);
|
||
|
|
||
|
/*
|
||
|
* XF_GetClientID
|
||
|
*
|
||
|
* Returns the ClientID passed into XF_InitInstance.
|
||
|
* This function is useful when the client does not wish to
|
||
|
* maintain a copy of the dwClientInstID passed into
|
||
|
* XF_InitInstance.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_GetClientID(XF_INSTHANDLE xInst, UInt32 FAR *dwClientInstID);
|
||
|
|
||
|
/*
|
||
|
* XF_OpenDocumentRead
|
||
|
*
|
||
|
* Begin a session of reading a document. The client must already
|
||
|
* have opened the file at the operating system level, so that
|
||
|
* the read and seek methods in the file token are available. This
|
||
|
* function will perform any initialization required for reading
|
||
|
* the file, including reading enough header information to verify
|
||
|
* that the file is in a format supported by this version of
|
||
|
* the XF library.
|
||
|
*
|
||
|
* A document handle is returned through the third parameter. This handle
|
||
|
* is passed to all subsequent function calls that use the document.
|
||
|
*
|
||
|
* The file format is returned through the fourth parameter.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_OpenDocumentRead(XF_INSTHANDLE xInst, XF_TOKEN xFile, XF_DOCHANDLE FAR *pxDoc,
|
||
|
XF_FILE_FORMAT *pxFileFormat);
|
||
|
|
||
|
/*
|
||
|
* XF_CloseDocument
|
||
|
*
|
||
|
* Frees storage associated with an open document
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_CloseDocument(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc);
|
||
|
|
||
|
/*
|
||
|
* XF_GetDocInfo
|
||
|
*
|
||
|
* Returns global information about the document. Client is responsible
|
||
|
* for providing the XF_DOCINFO structure and initializing its dwSize field.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_GetDocInfo(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc, XF_DOCINFO FAR *pxDocInfo);
|
||
|
|
||
|
/*
|
||
|
* XF_GetCurrentPage
|
||
|
*
|
||
|
* Returns the currently selected page in an open file through the
|
||
|
* third parameter.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_GetCurrentPage(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc, UInt32 FAR *pResult);
|
||
|
|
||
|
/*
|
||
|
* XF_GetPageInfo
|
||
|
*
|
||
|
* Returns information about the current page. Client is responsible for
|
||
|
* providing the XF_PAGEINFO structure and intializing its dwSize field.
|
||
|
*
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_GetPageInfo(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc,
|
||
|
XF_PAGEINFO FAR *pxPageInfo);
|
||
|
|
||
|
/*
|
||
|
* XF_GetImageInfo
|
||
|
*
|
||
|
* Returns information about an image on the current page. Client is responsible
|
||
|
* for providing the XF_IMAGEINFO structure and initializing its dwSize field.
|
||
|
*
|
||
|
* The dwImageID parameter is simply the ordinal number (starting at 1) for
|
||
|
* the primary images contained in the current page. Secondary images,
|
||
|
* such as masks, are accessed from their parent images and, therefore,
|
||
|
* are not a part of the image enumeration. Their ID's are magic numbers
|
||
|
* which are generated from their parent image ID and supplied to the user
|
||
|
* via the parent IMAGEINFO struct.
|
||
|
*
|
||
|
* Initially, the only secondary images that will be supported are masks.
|
||
|
* Additional secondary image types, such as color planes, will be supported
|
||
|
* by adding appropriate ID fields to the IMAGEINFO struct.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_GetImageInfo(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc, UInt32 dwImageID,
|
||
|
XF_IMAGEINFO FAR *pxImageInfo);
|
||
|
|
||
|
/*
|
||
|
* XF_ImageReadStart
|
||
|
*
|
||
|
* Prepares to read image data. This function specifies the format in
|
||
|
* which the client prefers to retrieve the image data.
|
||
|
*
|
||
|
* Arguments:
|
||
|
*
|
||
|
* xInst Client instance handle
|
||
|
* xFile File token
|
||
|
* dwImageID ID of image to retrieve
|
||
|
* dwFlags Combination of XF_IMAGEFLAGS (defined below) describing
|
||
|
* requested format
|
||
|
* dwBytesPerRow Width of client's image buffer row, in bytes
|
||
|
*/
|
||
|
|
||
|
|
||
|
#define XF_IMAGEFLAGS_RGBOrder (0x0)
|
||
|
#define XF_IMAGEFLAGS_BGROrder (0x1)
|
||
|
#define XF_IMAGEFLAGS_TopToBottom (0x0)
|
||
|
#define XF_IMAGEFLAGS_BottomToTop (0x2)
|
||
|
#define XF_IMAGEFLAGS_BlackIsZero (0x0)
|
||
|
#define XF_IMAGEFLAGS_WhiteIsZero (0x4)
|
||
|
#define XF_IMAGEFLAGS_ColorChunky (0x0) // NIMP
|
||
|
#define XF_IMAGEFLAGS_ColorPlanar (0x8) // NIMP
|
||
|
#define XF_IMAGEFLAGS_ByteOrder (0x0)
|
||
|
#define XF_IMAGEFLAGS_DwordOrder (0x10)
|
||
|
|
||
|
#define XF_IMAGEFLAGS_ColorOrder (0x1)
|
||
|
#define XF_IMAGEFLAGS_ScanlineOrder (0x2)
|
||
|
#define XF_IMAGEFLAGS_PhotoInterp (0x4)
|
||
|
#define XF_IMAGEFLAGS_ColorFormat (0x8)
|
||
|
#define XF_IMAGEFLAGS_ByteOrdering (0x10)
|
||
|
|
||
|
XF_RESULT XF_ImageReadStart(
|
||
|
XF_INSTHANDLE xInst,
|
||
|
XF_DOCHANDLE xDoc,
|
||
|
UInt32 dwImageID,
|
||
|
UInt32 dwFlags,
|
||
|
UInt32 dwBytesPerRow);
|
||
|
|
||
|
/*
|
||
|
* XF_ImageReadStrip
|
||
|
*
|
||
|
* Reads the next strip of image data from an image that was requested by
|
||
|
* XF_ImageReadStart. Image data is read from the top of the image to
|
||
|
* the bottom. If the client does not choose to read the entire image
|
||
|
* in as a single strip, it is advisable to use a strip height that is
|
||
|
* a multiple of the "dwSuggestedStripHeight" in the XF_IMAGEINFO structure
|
||
|
* for best performance.
|
||
|
*
|
||
|
* Arguments:
|
||
|
*
|
||
|
* xInst Client instance handle
|
||
|
* xFile File token
|
||
|
* dwStripHeight Number of lines to be retrieved
|
||
|
* pBuffer
|
||
|
* Pointer to client's image buffer to retrieve into.
|
||
|
*
|
||
|
* If the UpsideDown flag was selected, this pointer
|
||
|
* refer to the beginning of the last row in each buffer.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_ImageReadStrip(
|
||
|
XF_INSTHANDLE xInst,
|
||
|
XF_DOCHANDLE xDoc,
|
||
|
UInt32 dwStripHeight,
|
||
|
UInt8 FAR *pBuffer);
|
||
|
|
||
|
/*
|
||
|
* XF_ImageReadFinish
|
||
|
*
|
||
|
* Notifies the XF library that the client is finished reading an image.
|
||
|
* Every call to XF_ImageReadStart must be eventually followed by a call
|
||
|
* to this function.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_ImageReadFinish(XF_INSTHANDLE xInst,XF_DOCHANDLE xDoc);
|
||
|
|
||
|
/*
|
||
|
* XF_ImageGetColorMap
|
||
|
*
|
||
|
*/
|
||
|
XF_RESULT XF_GetColorMap(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc, UInt32 dwImageID,
|
||
|
UInt8 **ppColorMap);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* XF_ImageSetColorMap
|
||
|
*
|
||
|
*/
|
||
|
XF_RESULT XF_SetColorMap(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc, UInt32 dwImageID,
|
||
|
UInt8 *ppColorMap);
|
||
|
|
||
|
/*
|
||
|
* XF_GetAnnotInfo
|
||
|
*
|
||
|
* Returns information about an annotation on the current page. Client is
|
||
|
* responsible for providing the XF_ANNOTINFO structure and intitializing
|
||
|
* its dwSize field. Annotation numbers start at one, not zero.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_GetAnnotInfo(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc, UInt32 dwAnnot,
|
||
|
XF_ANNOTINFO FAR *pxAnnotInfo);
|
||
|
|
||
|
/*
|
||
|
* XF_GetAnnotData
|
||
|
*
|
||
|
* Returns the data for an annotation. The annotation is regarded as
|
||
|
* a stream of bytes and is not parsed by this library in any way.
|
||
|
* The client must provide the data buffer, whose size is specified by
|
||
|
* the dwAnnotLength field of the XF_ANNOTINFO structure.
|
||
|
* Annotation numbers start at one, not zero.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_GetAnnotData(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc, UInt32 dwAnnot,
|
||
|
UInt8 FAR *pBuf);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* ********** **********
|
||
|
* ********** BEGIN WRITE API **********
|
||
|
* ********** **********
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* XF_CreateDocument
|
||
|
*
|
||
|
* Create a new document of type 'dwFormat' (one of the XF_WRITE_FORMAT's) and
|
||
|
* prepare to write data to it. The client must have already created the file
|
||
|
* at the operating system level, so that the read, write, and seek methods
|
||
|
* are available.
|
||
|
*
|
||
|
* A handle representing the document is passed back through the third parameter.
|
||
|
* This handle is passed in to all subsequent write and read function calls.
|
||
|
*
|
||
|
* XIF only versions of the API will return XF_NOSUPPORT for dwFormat != XF_XIF.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_CreateDocument(XF_INSTHANDLE xInst, XF_TOKEN xFile, UInt32 dwFormat,
|
||
|
XF_DOCHANDLE FAR *pxDoc);
|
||
|
|
||
|
/*
|
||
|
* XF_OpenDocumentWrite
|
||
|
*
|
||
|
* Open an existing document for writing.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_OpenDocumentWrite(XF_INSTHANDLE xInst, XF_TOKEN xFile, XF_DOCHANDLE FAR *pxDoc);
|
||
|
|
||
|
/*
|
||
|
* XF_SetPage
|
||
|
*
|
||
|
* Specifies a target page for image and annotation adds. This
|
||
|
* is meant as an editing init for an existing page. When creating
|
||
|
* a new page, the AddPage function implicitly sets the current page
|
||
|
* appropriately.
|
||
|
*
|
||
|
* For single page image formats, this call will return a XF_NOSUPPORT error.
|
||
|
*/
|
||
|
XF_RESULT XF_SetPage(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc, UInt32 dwPageNumber);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* XF_CopyPage
|
||
|
*
|
||
|
* Copies specified page from xSrcDoc to xDstDoc. Supports page
|
||
|
* deletion and reordering.
|
||
|
*
|
||
|
* This operation fails if the src page does not exist or the
|
||
|
* dst page already exists and for any other parameter inconsistencies
|
||
|
*
|
||
|
* For single page image formats, this call will return a XF_NOSUPPORT error.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_CopyPage(
|
||
|
XF_INSTHANDLE xInst,
|
||
|
XF_TOKEN xFile,
|
||
|
XF_DOCHANDLE xSrcDoc,
|
||
|
XF_DOCHANDLE xDstDoc,
|
||
|
UInt32 dwSrcPageNumber,
|
||
|
UInt32 dwDstPageNumber);
|
||
|
|
||
|
/*
|
||
|
* XF_AddPageStart
|
||
|
*
|
||
|
* Adds a new page to a multipage document and selects it as the current page.
|
||
|
* This function can be used to insert a new page into the middle of a
|
||
|
* document, by using the dwPageNumber parameter to specify the desired
|
||
|
* page number. Page numbers start at one, not zero. Setting
|
||
|
* dwPageNumber = 0 causes the new page to be added at the end
|
||
|
* of the document. The operation will fail if a nonsequential
|
||
|
* dwPageNumber is specified, that is, {0, 1, 2, 7} is not a valid page
|
||
|
* sequence, and the attempt to add page 7 would fail.
|
||
|
*
|
||
|
* For XIF files, the XF_AddPageStart call is normally followed by one or more calls to
|
||
|
* XF_AddImage and possibly XF_AddSubImage.
|
||
|
*
|
||
|
* For single page image formats, this call will return a XF_NOSUPPORT error.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_AddPageStart(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc, UInt32 dwPageNumber);
|
||
|
|
||
|
/*
|
||
|
* XF_AddPageFinish
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_AddPageFinish(XF_INSTHANDLE xInst, XF_DOCHANDLE xDoc);
|
||
|
|
||
|
/*
|
||
|
* XF_AddImage
|
||
|
*
|
||
|
* Adds a new primary image to the current page. For example, images of
|
||
|
* type XF_USAGE_MASTER, XF_USAGE_PICTURESEGMENT, etc.
|
||
|
*
|
||
|
* Note that every empty page must start with a master image which defines the
|
||
|
* boundaries of the page. XF_BADPARAMETER will be returned if the first image
|
||
|
* added is not of type XF_USAGE_MASTER.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_AddImage(
|
||
|
XF_INSTHANDLE xInst,
|
||
|
XF_DOCHANDLE xDoc,
|
||
|
XF_IMAGEINFO FAR *pImageInfo,
|
||
|
UInt32 *pImageID);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* XF_AddSubImage
|
||
|
*
|
||
|
* Adds a secondary subimage to the specified primary image. For example,
|
||
|
* Use this proc to add an XF_USAGE_MASK to an XF_USAGE_PICTURESEGMENT.
|
||
|
|
||
|
* Bad subimage type combinations, such as attempting to add an
|
||
|
* an XF_USAGE_MASTER as a subimage, will return XF_USAGE_BADPARAMETER.
|
||
|
*
|
||
|
* For all image formats except XIF 2.0 or greater, this call will return a
|
||
|
* XF_NOSUPPORT error.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_AddSubImage(
|
||
|
XF_INSTHANDLE xInst,
|
||
|
XF_DOCHANDLE xDoc,
|
||
|
UInt32 dwImageID,
|
||
|
XF_IMAGEINFO FAR *pSubImageInfo,
|
||
|
UInt32 *pSubImageID);
|
||
|
|
||
|
/*
|
||
|
* XF_ImageWriteStart
|
||
|
*
|
||
|
* Initiates the write operation for the specified image. This call
|
||
|
* must be followed by a number of XF_ImageWriteImageData calls dictated by
|
||
|
* the image and strip size and a closing call to XF_ImageWriteFinish.
|
||
|
*
|
||
|
* The client may perform the data compression (CCITT Group IV or JPEG)
|
||
|
* themselves and pass in the result. If so, the XF_IMAGEFLAGS_Compression
|
||
|
* bit will be set.
|
||
|
*
|
||
|
* The compression type is inferred from the file format and image type.
|
||
|
* The rows per strip value is specified in the XF_IMAGEINFO struct when the
|
||
|
* image is added.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_ImageWriteStart(
|
||
|
XF_INSTHANDLE xInst,
|
||
|
XF_DOCHANDLE xDoc,
|
||
|
UInt32 dwImageID,
|
||
|
UInt32 dwFlags,
|
||
|
UInt32 dwBytesPerRow);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* XF_ImageWriteStrip
|
||
|
*
|
||
|
* Writes a strip of data to specified image.
|
||
|
* Fails if dwStripHeight exceeds RowsPerStrip value for this image,
|
||
|
* or if total rows written exceeds the image height.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_ImageWriteStrip(
|
||
|
XF_INSTHANDLE xInst,
|
||
|
XF_DOCHANDLE xDoc,
|
||
|
UInt32 dwStripHeight,
|
||
|
UInt8 *pBuffer);
|
||
|
|
||
|
/*
|
||
|
* XF_ImageWriteFinish
|
||
|
*
|
||
|
* Cleans up write operation state and performs consistecy check.
|
||
|
* Fails if correct number of rows not written.
|
||
|
*/
|
||
|
|
||
|
|
||
|
XF_RESULT XF_ImageWriteFinish(
|
||
|
XF_INSTHANDLE xInst,
|
||
|
XF_DOCHANDLE xDoc);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* XF_AddAnnotion
|
||
|
*
|
||
|
* Adds an annotation to the current page.
|
||
|
*
|
||
|
* For non-XIF image formats, this call will return a XF_NOSUPPORT error.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_AddAnnotion(
|
||
|
XF_INSTHANDLE xInst,
|
||
|
XF_DOCHANDLE xDoc,
|
||
|
XF_ANNOTINFO FAR *pxAnnotInfo,
|
||
|
UInt8 FAR *pBuf,
|
||
|
UInt32 *pAnnotID);
|
||
|
|
||
|
/*
|
||
|
* XF_DeleteAnnotation
|
||
|
*
|
||
|
* Deletes the specified annotation from the current page.
|
||
|
*
|
||
|
* For non-XIF image formats, this call will return a XF_NOSUPPORT error.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_DeleteAnnotation(
|
||
|
XF_INSTHANDLE xInst,
|
||
|
XF_DOCHANDLE xDoc,
|
||
|
UInt32 dwAnnotID);
|
||
|
|
||
|
/* Wang Viewer Only! */
|
||
|
|
||
|
/*
|
||
|
* XF_GetMergedImageDIB
|
||
|
*
|
||
|
* Take the current page of an XFile document and merge all its images
|
||
|
* into a single binary image the size of the master image, with picture
|
||
|
* segments dithered.
|
||
|
*
|
||
|
* The entire resulting image is copied out in Windows DIB format to a buffer
|
||
|
* provided by the client. The client is responsible for making sure that
|
||
|
* the image is sufficiently large.
|
||
|
*/
|
||
|
|
||
|
XF_RESULT XF_GetMergedImageDIB(XF_INSTHANDLE xfInst, XF_DOCHANDLE xfDoc, void *pBuf);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|