Leaked source code of windows server 2003
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

/*++
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_