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.
286 lines
5.7 KiB
286 lines
5.7 KiB
/*++
|
|
|
|
Copyright (c) 2000 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
xlpdev.h
|
|
|
|
Abstract:
|
|
|
|
PCL XL module PDEV header file
|
|
|
|
Environment:
|
|
|
|
Windows Whistler
|
|
|
|
Revision History:
|
|
|
|
03/23/00
|
|
Created it.
|
|
|
|
--*/
|
|
|
|
#ifndef _XLPDEV_H_
|
|
#define _XLPDEV_H_
|
|
|
|
#include "lib.h"
|
|
#include "winnls.h"
|
|
#include "unilib.h"
|
|
#include "prntfont.h"
|
|
|
|
#include "gpd.h"
|
|
#include "mini.h"
|
|
|
|
#include "winres.h"
|
|
#include "pdev.h"
|
|
|
|
#include "cmnhdr.h"
|
|
|
|
//
|
|
// Debug text.
|
|
//
|
|
#if DBG
|
|
#define ERRORTEXT(s) __TEXT("ERROR ") DLLTEXT(s)
|
|
#define XL_DBGMSG(level, prefix, msg) { \
|
|
if (this->m_dbglevel <= (level)) { \
|
|
DbgPrint("%s %s (%d): ", prefix, __FILE__, __LINE__); \
|
|
DbgPrint msg; \
|
|
} \
|
|
}
|
|
|
|
#define XL_DBGPRINT(level, msg) { \
|
|
if (this->m_dbglevel <= (level)) { \
|
|
DbgPrint msg; \
|
|
} \
|
|
}
|
|
#define XL_VERBOSE(msg) XL_DBGPRINT(DBG_VERBOSE, msg)
|
|
#define XL_TERSE(msg) XL_DBGPRINT(DBG_TERSE, msg)
|
|
#define XL_WARNING(msg) XL_DBGMSG(DBG_WARNING, "WRN", msg)
|
|
#define XL_ERR(msg) XL_DBGMSG(DBG_ERROR, "ERR", msg)
|
|
|
|
#else
|
|
|
|
#define XL_VERBOSE(msg)
|
|
#define XL_TERSE(msg)
|
|
#define XL_WARNING(msg)
|
|
#define XL_ERR(msg)
|
|
|
|
#endif
|
|
|
|
typedef ULONG ROP3;
|
|
typedef struct tag_OEMUD_EXTRADATA {
|
|
OEM_DMEXTRAHEADER dmExtraHdr;
|
|
} OEMUD_EXTRADATA, *POEMUD_EXTRADATA;
|
|
|
|
//
|
|
// OEM Signature and version.
|
|
//
|
|
#define OEM_SIGNATURE 'PCLX' // Declaser series dll
|
|
#define DLLTEXT(s) __TEXT("PCLXL: ") __TEXT(s)
|
|
#define OEM_VERSION 0x00010000L
|
|
|
|
//
|
|
// Master Unit
|
|
//
|
|
#define MASTER_UNIT 1200
|
|
|
|
//
|
|
// Device font resolution
|
|
//
|
|
#define DEVICEFONT_UNIT 600
|
|
|
|
//
|
|
// Buffer macros
|
|
//
|
|
#define INIT_CHAR_NUM 256
|
|
|
|
//
|
|
// Memory allocation
|
|
//
|
|
#define MemAlloc(size) ((PVOID) LocalAlloc(LMEM_FIXED, (size)))
|
|
#define MemAllocZ(size) ((PVOID) LocalAlloc(LPTR, (size)))
|
|
#define MemFree(p) { if (p) LocalFree((HLOCAL) (p)); }
|
|
|
|
|
|
//
|
|
// Others
|
|
//
|
|
#define GET_COLOR_TABLE(pxlo) \
|
|
(pxlo ?\
|
|
(((pxlo)->flXlate & XO_TABLE) ?\
|
|
((pxlo)->pulXlate ? (pxlo)->pulXlate : XLATEOBJ_piVector(pxlo)) :\
|
|
NULL) :\
|
|
NULL)
|
|
|
|
//
|
|
// OEM UD Type Defines
|
|
////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// Warning: the following enum order must match the order in OEMHookFuncs[].
|
|
//
|
|
enum {
|
|
UD_DrvRealizeBrush,
|
|
UD_DrvDitherColor,
|
|
UD_DrvCopyBits,
|
|
UD_DrvBitBlt,
|
|
UD_DrvStretchBlt,
|
|
UD_DrvStretchBltROP,
|
|
UD_DrvPlgBlt,
|
|
UD_DrvTransparentBlt,
|
|
UD_DrvAlphaBlend,
|
|
UD_DrvGradientFill,
|
|
UD_DrvTextOut,
|
|
UD_DrvStrokePath,
|
|
UD_DrvFillPath,
|
|
UD_DrvStrokeAndFillPath,
|
|
UD_DrvPaint,
|
|
UD_DrvLineTo,
|
|
UD_DrvStartPage,
|
|
UD_DrvSendPage,
|
|
UD_DrvEscape,
|
|
UD_DrvStartDoc,
|
|
UD_DrvEndDoc,
|
|
UD_DrvNextBand,
|
|
UD_DrvStartBanding,
|
|
UD_DrvQueryFont,
|
|
UD_DrvQueryFontTree,
|
|
UD_DrvQueryFontData,
|
|
UD_DrvQueryAdvanceWidths,
|
|
UD_DrvFontManagement,
|
|
UD_DrvGetGlyphMode,
|
|
|
|
MAX_DDI_HOOKS,
|
|
};
|
|
|
|
struct IPrintOemDriverUni;
|
|
|
|
extern const DWORD dw1BPPPal[];
|
|
extern const DWORD dw4BPPPal[];
|
|
|
|
#define XLBRUSH_SIG 'rblx'
|
|
|
|
typedef struct _XLBRUSH {
|
|
DWORD dwSig;
|
|
DWORD dwHatch;
|
|
DWORD dwOutputFormat;
|
|
DWORD dwPatternID; // Pattern ID. 0 if it's not a pattern.
|
|
DWORD dwCEntries;
|
|
DWORD dwColor;
|
|
DWORD adwColor[1];
|
|
} XLBRUSH, *PXLBRUSH;
|
|
|
|
class XLOutput;
|
|
class XLTrueType;
|
|
class XLFont;
|
|
class XLGlyphCache;
|
|
|
|
#define XLPDEV_SIG 'dplx'
|
|
|
|
typedef struct _XLPDEV {
|
|
DWORD dwSig;
|
|
|
|
//
|
|
// define whatever needed, such as working buffers, tracking information,
|
|
// etc.
|
|
//
|
|
// UNIDRV PDEV
|
|
//
|
|
PPDEV pPDev;
|
|
|
|
//
|
|
// General flags
|
|
//
|
|
DWORD dwFlags;
|
|
#define XLPDEV_FLAGS_RESET_FONT 0x00000001
|
|
#define XLPDEV_FLAGS_FIRSTPAGE 0x00000002
|
|
#define XLPDEV_FLAGS_CHARDOWNLOAD_ON 0x00000004
|
|
#define XLPDEV_FLAGS_ENDDOC_CALLED 0x00000008
|
|
#define XLPDEV_FLAGS_RESETPDEV_CALLED 0x00000010
|
|
#define XLPDEV_FLAGS_STARTPAGE_CALLED 0x00000020
|
|
#define XLPDEV_FLAGS_SUBST_TRNCOLOR_WITH_WHITE 0x00000040 //Used in CommonRopBlt when rendering DrvTransparentBlt
|
|
|
|
//
|
|
// Device font data structures
|
|
//
|
|
DWORD dwcbTransSize;
|
|
PTRANSDATA pTransOrg;
|
|
DWORD dwcbWidthSize;
|
|
PLONG plWidth;
|
|
|
|
//
|
|
// Device font string cache
|
|
//
|
|
DWORD dwCharCount;
|
|
DWORD dwMaxCharCount;
|
|
PPOINTL pptlCharAdvance;
|
|
PWORD pawChar;
|
|
LONG lStartX;
|
|
LONG lStartY;
|
|
LONG lPrevX;
|
|
LONG lPrevY;
|
|
|
|
#define PCLXL_FONTNAME_SIZE 16
|
|
CHAR ubFontName[PCLXL_FONTNAME_SIZE+1];
|
|
|
|
//
|
|
// TrueType font width
|
|
//
|
|
DWORD dwFixedTTWidth;
|
|
|
|
//
|
|
// Cursor position cache
|
|
//
|
|
LONG lX;
|
|
LONG lY;
|
|
|
|
//
|
|
// Scaled IFIMETRICS.fwdUnitsPerEm.
|
|
// IFIMETRICS.fwdMaxCharWidth
|
|
//
|
|
FWORD fwdUnitsPerEm;
|
|
FWORD fwdMaxCharWidth;
|
|
|
|
//
|
|
// Text rotation
|
|
//
|
|
DWORD dwTextAngle;
|
|
|
|
//
|
|
//
|
|
// Brush
|
|
//
|
|
DWORD dwLastBrushID;
|
|
DWORD dwFontHeight;
|
|
DWORD dwFontWidth;
|
|
DWORD dwTextRes;
|
|
|
|
//
|
|
// TrueType
|
|
//
|
|
DWORD dwNumOfTTFont;
|
|
XLTrueType *pTTFile;
|
|
|
|
//
|
|
// Output
|
|
//
|
|
XLOutput *pOutput;
|
|
|
|
//
|
|
// Reset font cache
|
|
//
|
|
XLFont *pXLFont;
|
|
|
|
//
|
|
// Glyph cache
|
|
//
|
|
XLGlyphCache *pXLGlyph;
|
|
|
|
//
|
|
// Transparent Color
|
|
//
|
|
ULONG ulTransColor; //Index for palette. Actual for RGB. Used in conjunction with XLPDEV_FLAGS_SUBST_TRNCOLOR_WITH_WHITE
|
|
} XLPDEV, *PXLPDEV;
|
|
|
|
#endif // _XLPDEV_H_
|