windows-nt/Source/XPSP1/NT/printscan/fax/setup/win9xupg/inc/oleutils.h

275 lines
5.2 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*
Microsoft Corp. (C) Copyright 1994
Developed under contract by Numbers & Co.
----------------------------------------------------------------------------
name: Elliot Viewer - Chicago Viewer Utility
Cloned from the IFAX Message Viewing Utility
file: oleutils.h
comments: Functions to support OLE2 interactions
NOTE: This header must be used with the LARGE memory model
----------------------------------------------------------------------------
Microsoft Corp. (C) Copyright 1994
Developed under contract by Numbers & Co.
*/
#ifndef OLEUTILS_H
#define OLEUTILS_H
#include <ole2.h>
/*
Version constants
*/
#define AWD_SIGNATURE 0
#define AWD_SIGNATURE_STR "0"
/*
This has the "current" version. As new ones come along shift this
down to a new AWD_VERxx... set and add a check to
CViewer::get_awd_version. Add a new version check and any code
needed to handle whatever is different with the new version to
appropriate places in oleutils.cpp, etc...
*/
#define AWD_VERSION 1
#define AWD_VERSION_STR "1"
// this is same as AWD_VERSION, used by the transport
#define AWD_VER1A 1
#define AWD_VER1A_STR "1.0 (pages = docs)"
/*
Recognized extensions
*/
#define BMP_EXT _T("bmp")
#define DIB_EXT _T("dib")
#define DCX_EXT _T("dcx")
#define RBA_EXT _T("rba")
#define RMF_EXT _T("rmf")
#define AWD_EXT _T("awd")
/*
AWD flags
*/
#define AWD_FIT_WIDTH 0x00000001
#define AWD_FIT_HEIGHT 0x00000002
#define AWD_INVERT 0x00000010
#define AWD_WASINVERTED 0x40000000
#define AWD_IGNORE 0x80000000
/*
AWD file structures
*/
#pragma pack( 1 ) // THESE STRUCTS MUST BE BYTE ALIGNED
typedef struct
{
WORD Signature;
WORD Version;
DATE dtLastChange;
DWORD awdFlags;
WORD Rotation;
WORD ScaleX;
WORD ScaleY;
}
PAGE_INFORMATION;
typedef struct
{
WORD Signature;
WORD Version;
PAGE_INFORMATION PageInformation;
}
DOCUMENT_INFORMATION;
typedef struct
{
WORD Signature;
WORD Version;
DATE dtLastChange;
DWORD awdFlags;
WORD Author_bufferlen; // includes the UNICODE '\0' terminator
WCHAR Author[1]; // UNICODE !!!
}
OVERLAY_INFORMATION;
// defs for summary stream- must be 32bit aligned
#pragma pack( 4 )
#define SUMMARY_FMTID( fmtid ) \
CLSID fmtid = \
{0xF29F85E0, 0x4FF9, 0x1068, {0xAB, 0x91, 0x08, 0x00, 0x2B, 0x27, 0xB3, 0xD9}}
#define PID_TITLE 0x00000002
#define PID_SUBJECT 0x00000003
#define PID_AUTHOR 0x00000004
#define PID_KEYWORDS 0x00000005
#define PID_COMMENTS 0x00000006
#define PID_TEMPLATE 0x00000007
#define PID_LASTAUTHOR 0x00000008
#define PID_REVNUMBER 0x00000009
#define PID_EDITTIME 0x0000000a
#define PID_LASTPRINTED 0x0000000b
#define PID_CREATE_DTM 0x0000000c
#define PID_LASTSAVE_DTM 0x0000000d
#define PID_PAGECOUNT 0x0000000e
#define PID_WORDCOUNT 0x0000000f
#define PID_CHARCOUNT 0x00000010
#define PID_THUMBNAIL 0x00000011
#define PID_APPNAME 0x00000012
// BKD 1997-7-9: done to disable warning message. This is probably bad that the oleutils
// uses a macro that's now been reserved and probably should be changed.
// FIXBKD
#ifdef PID_SECURITY
#undef PID_SECURITY
#endif // PID_SECURITY
#define PID_SECURITY 0x00000013
typedef struct
{
DWORD dwType;
DATE date;
}
date_prop_t;
typedef struct
{
DWORD dwType;
DWORD wval;
}
wval_prop_t;
typedef struct
{
DWORD dwType;
DWORD numbytes;
char string[80];
}
string_prop_t;
typedef struct
{
DWORD PropertyID;
DWORD dwOffset;
}
PROPERTYIDOFFSET;
typedef struct
{
DWORD cbSection;
DWORD cProperties;
PROPERTYIDOFFSET revnum_pair;
PROPERTYIDOFFSET lastprt_pair;
PROPERTYIDOFFSET create_dtm_pair;
PROPERTYIDOFFSET lastsaved_dtm_pair;
PROPERTYIDOFFSET numpages_pair;
PROPERTYIDOFFSET appname_pair;
PROPERTYIDOFFSET security_pair;
PROPERTYIDOFFSET author_pair;
string_prop_t revnum;
date_prop_t lastprt;
date_prop_t create_dtm;
date_prop_t lastsaved_dtm;
wval_prop_t numpages;
string_prop_t appname;
wval_prop_t security;
string_prop_t author;
}
summaryPROPERTYSECTION;
typedef struct
{
GUID FormatID;
DWORD dwOffset;
}
FORMATIDOFFSET;
// quick and dirty summary stream. Not all properties are used
typedef struct
{
WORD wByteOrder;
WORD wFormat;
DWORD dwOSVer;
CLSID clsID;
DWORD cSections;
FORMATIDOFFSET section1_pair;
summaryPROPERTYSECTION section1;
}
summaryPROPERTYSET;
#define NUM_USED_PROPS 8
/*
The def for summary_info_t was moved to viewerob.h so that
every module doesn't have to pull in oleutils.h because of the
summary_info_t variable that is in CViewer.
*/
//typedef struct
// {
// :
// :
// }
// summary_info_t;
// structs for reading summary stream
typedef struct
{
WORD wByteOrder;
WORD wFormat;
DWORD dwOSVer;
CLSID clsID;
DWORD cSections;
}
summary_header_t;
typedef struct
{
DWORD cbSection;
DWORD cProperties;
}
summary_section_t;
#pragma pack() // go back to default packing
// BKD: I snipped the prototypes, since they're not used
// in the awd converter.
#endif