windows-nt/Source/XPSP1/NT/printscan/print/drivers/usermode/inc/psglyph.h
2020-09-26 16:20:57 +08:00

120 lines
3 KiB
C

/*++
Copyright (c) 1996-1999 Microsoft Corporation
Module Name:
psglyph.h
Abstract:
Header file for glyph set data.
Environment:
Windows NT PostScript driver.
Revision History:
10/10/1997 -ksuzuki-
Moved all the Standard GLYPHSETDATA names to AFM2NTM.H.
11/12/1996 -slam-
Created.
dd-mm-yy -author-
description
--*/
#ifndef _PSGLYPH_H_
#define _PSGLYPH_H_
typedef struct _CODEPAGEINFO
{
DWORD dwCodePage;
DWORD dwWinCharset;
DWORD dwEncodingNameOffset;
DWORD dwEncodingVectorDataSize;
DWORD dwEncodingVectorDataOffset;
} CODEPAGEINFO, *PCODEPAGEINFO;
typedef struct _GLYPHRUN
{
WCHAR wcLow;
WORD wGlyphCount;
} GLYPHRUN, *PGLYPHRUN;
#define GLYPHSETDATA_VERSION 0x00010000
typedef struct _GLYPHSETDATA
{
DWORD dwSize; // size of the glyphset data
DWORD dwVersion; // glyphset data format version number
DWORD dwFlags; // flags
DWORD dwGlyphSetNameOffset; // offset to glyphset name string
DWORD dwGlyphCount; // number of glyphs supported
DWORD dwRunCount; // number of GLYPHRUNs
DWORD dwRunOffset; // offset to array of GLYPHRUNs
DWORD dwCodePageCount; // number of code pages supported
DWORD dwCodePageOffset; // offset to array of CODEPAGEINFOs
DWORD dwMappingTableOffset; // offset to glyph handle mapping table
DWORD dwReserved[2]; // reserved
} GLYPHSETDATA, *PGLYPHSETDATA;
//
// Mapping table type flag defintions (set to GLYPHSETDATA.dwFlags)
//
#define GSD_MTT_DWCPCC 0x00000000 // DWORD:CodePage/CharCode pair (default)
#define GSD_MTT_WCC 0x00000001 // WORD:CharCode only
#define GSD_MTT_WCID 0x00000002 // WORD:CID only (not used yet)
#define GSD_MTT_MASK (GSD_MTT_WCC|GSD_MTT_WCID)
//
// Macros to get GLYPHSETDATA elements
//
#ifndef MK_PTR
#define MK_PTR(pstruct, element) ((PVOID)((PBYTE)(pstruct)+(pstruct)->element))
#endif
#define GSD_GET_SIZE(pgsd) (pgsd->dwSize)
#define GSD_GET_FLAGS(pgsd) (pgsd->dwFlags)
#define GSD_GET_MAPPINGTYPE(pgsd) (pgsd->dwFlags & GSD_MTT_MASK)
#define GSD_GET_GLYPHSETNAME(pgsd) ((PSTR)MK_PTR(pgsd, dwGlyphSetNameOffset))
#define GSD_GET_GLYPHCOUNT(pgsd) (pgsd->dwGlyphCount)
#define GSD_GET_GLYPHRUNCOUNT(pgsd) (pgsd->dwRunCount)
#define GSD_GET_GLYPHRUN(pgsd) ((PGLYPHRUN)(MK_PTR(pgsd, dwRunOffset)))
#define GSD_GET_CODEPAGEINFOCOUNT(pgsd) (pgsd->dwCodePageCount)
#define GSD_GET_CODEPAGEINFO(pgsd) ((PCODEPAGEINFO)MK_PTR(pgsd, dwCodePageOffset))
#define GSD_GET_MAPPINGTABLE(pgsd) (MK_PTR(pgsd, dwMappingTableOffset))
//
// GLYPHSETDATA related function prototypes and macros
//
PFD_GLYPHSET
GlyphConvert(
PGLYPHSETDATA pGlyphSet
);
PFD_GLYPHSET
GlyphConvertSymbol(
PGLYPHSETDATA pGlyphSet
);
PFD_GLYPHSET
GlyphConvert2(
PGLYPHSETDATA pGlyphSet
);
#define GlyphCreateFD_GLYPHSET(pGlyph) (GlyphConvert2(pGlyph))
#endif //!_PSGLYPH_H_