mirror of https://github.com/lianthony/NT4.0
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.
164 lines
2.7 KiB
164 lines
2.7 KiB
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
fonttree.c
|
|
|
|
Abstract:
|
|
|
|
Implementation of DDI entry point DrvQueryFontTree.
|
|
|
|
[Environment:]
|
|
|
|
Win32 subsystem, PostScript driver
|
|
|
|
Revision History:
|
|
|
|
04/18/91 -kentse-
|
|
Created it.
|
|
|
|
08/08/95 -davidx-
|
|
Clean up.
|
|
|
|
mm/dd/yy -author-
|
|
description
|
|
|
|
--*/
|
|
|
|
#include "pscript.h"
|
|
|
|
// Pointer to a set of glyphs supported by pscript driver.
|
|
|
|
FD_GLYPHSET *gpGlyphSet;
|
|
|
|
|
|
|
|
PVOID
|
|
DrvQueryFontTree(
|
|
DHPDEV dhpdev,
|
|
ULONG iFile,
|
|
ULONG iFace,
|
|
ULONG iMode,
|
|
ULONG *pid
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This function implements DDI entry point DrvQueryFontTree.
|
|
Please refer to DDK documentation for more details.
|
|
|
|
--*/
|
|
|
|
{
|
|
PDEVDATA pdev;
|
|
PNTFM pntfm;
|
|
|
|
UNREFERENCED_PARAMETER(iFile);
|
|
|
|
TRACEDDIENTRY("DrvQueryFontTree");
|
|
|
|
// This can be used by the driver to flag or id the data returned.
|
|
// May be useful for deletion of the data later by DrvFree().
|
|
// Not used by pscript driver.
|
|
|
|
*pid = 0;
|
|
|
|
// Get a pointer to our PDEV and validate it
|
|
|
|
pdev = (PDEVDATA) dhpdev;
|
|
|
|
if (bValidatePDEV(pdev) == FALSE) {
|
|
DBGERRMSG("bValidatePDEV");
|
|
SETLASTERROR(ERROR_INVALID_PARAMETER);
|
|
return NULL;
|
|
}
|
|
|
|
// Make sure the font index is valid.
|
|
|
|
if (! ValidPsFontIndex(pdev, iFace)) {
|
|
DBGERRMSG("ValidPsFontIndex");
|
|
SETLASTERROR(ERROR_INVALID_PARAMETER);
|
|
return NULL;
|
|
}
|
|
|
|
switch (iMode) {
|
|
|
|
case QFT_GLYPHSET:
|
|
|
|
// GDI requests a pointer to a FD_GLYPHSET structure that defines
|
|
// the mappings from single Unicode characters to glyph handles.
|
|
|
|
return gpGlyphSet;
|
|
|
|
case QFT_KERNPAIRS:
|
|
|
|
// GDI requests a pointer to a sorted, NULL-terminated
|
|
// array of FD_KERNINGPAIR structures.
|
|
|
|
// Get the font information for the given font
|
|
|
|
pntfm = GetPsFontNtfm(pdev, iFace);
|
|
|
|
// Return a pointer to the FD_KERNINGPAIR structure
|
|
|
|
return (pntfm->ntfmsz.cKernPairs == 0) ? NULL :
|
|
((PBYTE) pntfm + pntfm->ntfmsz.loKernPairs);
|
|
|
|
default:
|
|
DBGMSG1(DBG_LEVEL_ERROR, "Invalid iMode: %d\n", iMode);
|
|
SETLASTERROR(ERROR_INVALID_PARAMETER);
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
BOOL
|
|
ComputePsGlyphSet(
|
|
VOID
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Compute the glyph set supported by PostScript driver.
|
|
This information is returned to GDI when DrvQueryFontTree
|
|
is called with iMode = QFT_GLYPHSET.
|
|
|
|
Arguments:
|
|
|
|
NONE
|
|
|
|
Return Value:
|
|
|
|
TRUE if successful. FALSE otherwise.
|
|
|
|
--*/
|
|
|
|
{
|
|
gpGlyphSet = EngComputeGlyphSet(0, 0, 256);
|
|
if (gpGlyphSet == NULL) {
|
|
DBGERRMSG("EngComputeGlyphSet");
|
|
}
|
|
|
|
return (gpGlyphSet != NULL);
|
|
}
|
|
|
|
|
|
VOID
|
|
FreePsGlyphSet(
|
|
VOID
|
|
)
|
|
|
|
{
|
|
if (gpGlyphSet != NULL) {
|
|
MEMFREE(gpGlyphSet);
|
|
}
|
|
}
|
|
|
|
|