2025-04-27 07:49:33 -04:00

158 lines
5.5 KiB
C

/*++
Copyright (c) 1996-1997 Microsoft Corporation
Module Name:
dumpUFF.c
Abstract:
UFF dump tool
Environment:
Windows NT PostScript driver
Revision History:
12/20/96 -eigos-
Created it.
--*/
#include "precomp.h"
//
// Macros
//
#define FILENAME_SIZE 256
//
// Globals
//
BYTE *gcstrdwFlags1[] = {
"FONT_DIR_SORTED"
};
BYTE *gcstrdwFlags2[] = {
"FONT_FL_UFM",
"FONT_FL_IFI",
"FONT_FL_SOFTFONT",
"FONT_FL_PERMANENT_SF",
"FONT_FL_DEVICEFONT",
"FONT_FL_GLYPHET_GTT",
"FONT_FL_GLYPHSET_RLE",
"FONT_FL_RESERVED"
};
//
// Internal prototype
//
BOOL BDumpUFF(IN PUFF_FILEHEADER);
VOID DumpData(IN PBYTE pData);
BOOL
BDumpUFF(
IN PUFF_FILEHEADER pUFF)
{
PUFF_FONTDIRECTORY pFontDir;
DWORD dwI, dwJ;
#if 0
printf("%x%x%x%x\n", *(PDWORD)pUFF,
*((PDWORD)pUFF+1),
*((PDWORD)pUFF+2),
*((PDWORD)pUFF+3));
#endif
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf(" UFF File\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("UFF.dwSignature = 0x%x\n", pUFF->dwSignature);
printf(" = %c%c%c%c\n",
(0x00FF & pUFF->dwSignature),
(0xFF00 & pUFF->dwSignature) >> 8,
(0xFF0000 & pUFF->dwSignature) >> 16,
(0xFF000000 & pUFF->dwSignature) >> 24);
printf("UFF.dwVersion = %d\n", pUFF->dwVersion);
printf("UFF.dwSize = %d\n", pUFF->dwSize);
printf("UFF.nFonts = %d\n", pUFF->nFonts);
printf("UFF.nGlyphSets = %d\n", pUFF->nGlyphSets);
printf("UFF.nVarData = %d\n", pUFF->nVarData);
printf("UFF.offFontDir = 0x%x\n", pUFF->offFontDir);
printf("UFF.dwFlags = 0x%x\n", pUFF->dwFlags);
for( dwI = 0; dwI < 32; dwI ++ )
{
if (pUFF->dwFlags & (0x00000001 << dwI))
printf(" %s\n", gcstrdwFlags1[dwI]);
}
pFontDir = (PUFF_FONTDIRECTORY)((PBYTE)pUFF + pUFF->offFontDir);
for (dwI = 0; dwI < pUFF->nFonts; dwI ++, pFontDir ++)
{
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("UFF_FONTREC.dwSignature = %d\n", pFontDir->dwSignature);
printf(" = %c%c%c%c\n",
(0x00FF & pFontDir->dwSignature),
(0xFF00 & pFontDir->dwSignature) >> 8,
(0xFF0000 & pFontDir->dwSignature) >> 16,
(0xFF000000 & pFontDir->dwSignature) >> 24);
printf("UFF_FONTREC.wSize = %d\n", pFontDir->wSize);
printf("UFF_FONTREC.wFontID = %d\n", pFontDir->wFontID);
printf("UFF_FONTREC.sGlyphID = %d\n", pFontDir->sGlyphID);
printf("UFF_FONTREC.wFlags = %d\n", pFontDir->wFlags);
for( dwJ = 0; dwJ < 32; dwJ ++ )
{
if (pUFF->dwFlags & (0x00000001 << dwJ))
printf(" %s\n", gcstrdwFlags2[dwJ]);
}
printf("UFF_FONTREC.dwInstallerSig = %d\n", pFontDir->dwInstallerSig);
printf(" = %c%c%c%c\n",
(0x00FF & pFontDir->dwInstallerSig),
(0xFF00 & pFontDir->dwInstallerSig) >> 8,
(0xFF0000 & pFontDir->dwInstallerSig) >> 16,
(0xFF000000 & pFontDir->dwInstallerSig) >> 24);
printf("UFF.offFontName = 0x%x\n", pFontDir->offFontName);
printf(" = %ws\n", (PBYTE)pUFF+pFontDir->offFontName);
printf("UFF.offCartridgeName = 0x%x\n", pFontDir->offCartridgeName);
printf(" = %ws\n", (PBYTE)pUFF+pFontDir->offCartridgeName);
printf("UFF.offFontData = 0x%x\n", pFontDir->offFontData);
printf("UFF.offGlyphData = 0x%x\n", pFontDir->offGlyphData);
printf("UFF.offVarData = 0x%x\n", pFontDir->offVarData);
}
return TRUE;
}
VOID
DumpData(
IN PBYTE pData)
{
PDATA_HEADER pDataHeader = (PDATA_HEADER)pData;
DWORD dwI;
printf("dwSignature = 0x%x\n", pDataHeader->dwSignature);
printf(" = %c%c%c%c\n",
(0x00FF & pDataHeader->dwSignature),
(0xFF00 & pDataHeader->dwSignature) >> 8,
(0xFF0000 & pDataHeader->dwSignature) >> 16,
(0xFF000000 & pDataHeader->dwSignature) >> 24);
printf("wSize = %d\n", pDataHeader->wSize);
printf("wDataID = %d(0x%x)\n", pDataHeader->wDataID, pDataHeader->wDataID);
printf("dwDataSize = %d\n", pDataHeader->dwDataSize);
pData += sizeof(DATA_HEADER);
for (dwI = 0; dwI < 16; dwI ++, pData += 16)
{
printf(" %08x %08x %08x %08x\n", *(PDWORD)pData, *(PDWORD)(pData+4), *(PDWORD)(pData+8), *(PDWORD)(pData+12));
}
}