You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.8 KiB
135 lines
3.8 KiB
/*++
|
|
|
|
Copyright (c) 1997-1999 Microsoft Corporation
|
|
|
|
--*/
|
|
|
|
#ifndef _PDEV_H
|
|
#define _PDEV_H
|
|
|
|
// NTRAID#NTBUG9-552017-2002/03/12-yasuho-: Use strsafe.h/PREFAST/buffy
|
|
// NTRAID#NTBUG9-572151-2002/03/12-yasuho-: Possible buffer overrun.
|
|
|
|
#include <minidrv.h>
|
|
#include <stdio.h>
|
|
#include <prcomoem.h>
|
|
#include <strsafe.h>
|
|
|
|
#define VALID_PDEVOBJ(pdevobj) \
|
|
((pdevobj) && (pdevobj)->dwSize >= sizeof(DEVOBJ) && \
|
|
(pdevobj)->hEngine && (pdevobj)->hPrinter && \
|
|
(pdevobj)->pPublicDM && (pdevobj)->pDrvProcs )
|
|
|
|
#define ASSERT_VALID_PDEVOBJ(pdevobj) ASSERT(VALID_PDEVOBJ(pdevobj))
|
|
|
|
#define ERRORTEXT(s) "ERROR " DLLTEXT(s)
|
|
|
|
//
|
|
// OEM Signature and version.
|
|
//
|
|
#define OEM_SIGNATURE 'FXAT' // LG GDI x00 series dll
|
|
#define DLLTEXT(s) "FXAT: " s
|
|
#define OEM_VERSION 0x00010000L
|
|
|
|
|
|
////////////////////////////////////////////////////////
|
|
// OEM UD Type Defines
|
|
////////////////////////////////////////////////////////
|
|
|
|
#define STRBUFSIZE 1024 // Must be power of 2.
|
|
#define MAX_FONTS 25 // Also see the gFonts[] in fxartres.c.
|
|
|
|
typedef struct tag_OEM_EXTRADATA {
|
|
OEM_DMEXTRAHEADER dmExtraHdr;
|
|
} OEM_EXTRADATA, *POEM_EXTRADATA;
|
|
|
|
// NTRAID#NTBUG9-493148-2002/03/12-yasuho-:
|
|
// Stress break: PDEV resetting via OEMDevMode().
|
|
|
|
typedef struct tag_FXPDEV {
|
|
// Private extention
|
|
POINTL ptlOrg;
|
|
POINTL ptlCur;
|
|
SIZEL sizlRes;
|
|
SIZEL sizlUnit;
|
|
WORD iCopies;
|
|
CHAR *chOrient;
|
|
CHAR *chSize;
|
|
BOOL bString;
|
|
WORD cFontId;
|
|
WORD iFontId;
|
|
WORD iFontHeight;
|
|
WORD iFontWidth;
|
|
WORD iFontWidth2;
|
|
LONG aFontId[MAX_FONTS];
|
|
POINTL ptlTextCur;
|
|
WORD iTextFontId;
|
|
WORD iTextFontHeight;
|
|
WORD iTextFontWidth;
|
|
WORD iTextFontWidth2;
|
|
WORD cTextBuf;
|
|
BYTE ajTextBuf[STRBUFSIZE];
|
|
WORD fFontSim;
|
|
BOOL fSort;
|
|
BOOL fCallback; //Is OEMFilterGraphics called?
|
|
BOOL fPositionReset;
|
|
WORD iCurFontId; // id of font currently selected
|
|
// NTRAID#NTBUG9-365649-2002/03/12-yasuho-: Invalid font size
|
|
WORD iCurFontHeight;
|
|
WORD iCurFontWidth;
|
|
// For internal calculation of X-pos.
|
|
LONG widBuf[STRBUFSIZE];
|
|
LONG lInternalXAdd;
|
|
WORD wSBCSFontWidth;
|
|
// For TIFF compression in fxartres
|
|
DWORD dwTiffCompressBufSize;
|
|
PBYTE pTiffCompressBuf;
|
|
// NTRAID#NTBUG9-208433-2002/03/12-yasuho-:
|
|
// Output images are broken on ART2/3 models.
|
|
BOOL bART3; // ART2/3 models can't support the TIFF compression.
|
|
} FXPDEV, *PFXPDEV;
|
|
|
|
// For TIFF compression in fxartres
|
|
#define TIFFCOMPRESSBUFSIZE 2048 // It may be resize if needed more buffer dynamically.
|
|
#define TIFF_MIN_RUN 4 // Minimum repeats before use RLE
|
|
#define TIFF_MAX_RUN 128 // Maximum repeats
|
|
#define TIFF_MAX_LITERAL 128 // Maximum consecutive literal data
|
|
#define NEEDSIZE4TIFF(s) ((s)+(((s)+127) >> 7)) // Buffer for TIFF compression requires a byte
|
|
// per 128 bytes in the worst case.
|
|
|
|
// Device font height and font width values calculated
|
|
// form the IFIMETRICS field values. Must be the same way
|
|
// what Unidrv is doing to calculate stdandard variables.
|
|
// (Please check.)
|
|
|
|
#define FH_IFI(p) ((p)->fwdUnitsPerEm)
|
|
#define FW_IFI(p) ((p)->fwdAveCharWidth)
|
|
|
|
// New interface functions with Unidrv callbacks.
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
BOOL APIENTRY
|
|
bOEMSendFontCmd(
|
|
PDEVOBJ pdevobj,
|
|
PUNIFONTOBJ pUFObj,
|
|
PFINVOCATION pFInv
|
|
);
|
|
|
|
BOOL APIENTRY
|
|
bOEMOutputCharStr(
|
|
PDEVOBJ pdevobj,
|
|
PUNIFONTOBJ pUFObj,
|
|
DWORD dwType,
|
|
DWORD dwCount,
|
|
PVOID pGlyph
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _PDEV_H
|
|
|