00001
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _OEMPS_H
00031 #define _OEMPS_H
00032
00033 #include "DEVMODE.H"
00034 #include "CCPrintData.h"
00035 #include "TextPart.h"
00036
00041 #define ESCAPE_LINK_DATA 0x667711aa
00043 #define ESCAPE_DISABLE_AUTO_URL 0x667711ab
00044
00046
00048
00049
00051
00052
00054
00056 typedef enum tag_Hooks {
00057 UD_DrvStartPage,
00058 UD_DrvSendPage,
00059 UD_DrvStartDoc,
00060 UD_DrvEndDoc,
00061 UD_DrvEscape,
00062 UD_DrvTextOut,
00063
00064 MAX_DDI_HOOKS,
00065
00066 } ENUMHOOKS;
00067
00071 struct EscapeLinkData
00072 {
00074 long left;
00076 long top;
00078 long right;
00080 long bottom;
00082 size_t lTitleOffset;
00084 char url[1];
00085 };
00086
00090 struct InnerEscapeLinkData
00091 {
00095 InnerEscapeLinkData() : pNext(NULL), pData(NULL) {};
00102 InnerEscapeLinkData(const char* pInData, int nSize, InnerEscapeLinkData* pInNext) : pNext(pInNext) {pData = (EscapeLinkData*)new char[nSize]; memcpy(pData, pInData, nSize);};
00110 InnerEscapeLinkData(const RECTL& rect, const char* pURL, InnerEscapeLinkData* pInNext, const char* pTitle = NULL) : pNext(pInNext)
00111 {
00112
00113 size_t nSize = sizeof(EscapeLinkData) + strlen(pURL);
00114 if ((pTitle != NULL) && (strlen(pTitle) > 0))
00115 nSize += strlen(pTitle) + 1;
00116
00117
00118 pData = (EscapeLinkData*)new char[nSize];
00119
00120 pData->left = rect.left;
00121 pData->right = rect.right;
00122 pData->top = rect.top;
00123 pData->bottom = rect.bottom;
00124 strcpy_s(pData->url, strlen(pURL)+1, pURL);
00125 if (pTitle == NULL)
00126 pData->lTitleOffset = 0;
00127 else
00128 {
00129 pData->lTitleOffset = strlen(pURL) + 1;
00130 strcpy_s(pData->url + pData->lTitleOffset, strlen(pTitle), pTitle);
00131 }
00132 }
00136 ~InnerEscapeLinkData() {delete [] pData;};
00138 InnerEscapeLinkData* pNext;
00140 EscapeLinkData* pData;
00141 };
00142
00144 typedef struct _OEMPDEV {
00145
00146
00147
00148
00149
00150
00151
00152 PFN pfnPS[MAX_DDI_HOOKS];
00153
00154
00155
00156
00157
00158
00160 DWORD dwReserved[1];
00162 class IOemPS* pOemPS;
00164 struct IPrintOemDriverPS* pOEMHelp;
00166 UINT nPage;
00168 class GlyphTranslator* pTranslator;
00170 InnerEscapeLinkData* pLinks;
00172 bool bNeedText;
00174 bool bLoadedData;
00176 TextArea oText;
00178 CCPrintData dataLinks;
00180 bool bUsedPrintData;
00181
00182 } OEMPDEV, *POEMPDEV;
00183
00184 #endif