#include "fntfilst.h"
#define PRINTERPATHPREFIX "PRINTER:"
static int
PrinterFontNameCheck (char *name)
{
if (strncmp(name,PRINTERPATHPREFIX,strlen(PRINTERPATHPREFIX)) != 0)
return 0;
name += strlen(PRINTERPATHPREFIX);
#ifndef NCD
return *name == '/';
#else
return ((strcmp(name, "built-ins") == 0) || (*name == '/'));
#endif
}
static int
PrinterFontInitFPE (FontPathElementPtr fpe)
{
int status;
FontDirectoryPtr dir;
char * name;
name = fpe->name + strlen(PRINTERPATHPREFIX);
status = FontFileReadDirectory (name, &dir);
if (status == Successful)
{
if (dir->nonScalable.used > 0)
if (!FontFileRegisterBitmapSource (fpe))
{
FontFileFreeFPE (fpe);
return AllocError;
}
fpe->private = (pointer) dir;
}
return status;
}
static int
PrinterFontOpenFont (pointer client, FontPathElementPtr fpe, Mask flags,
char *name, int namelen,
fsBitmapFormat format, fsBitmapFormatMask fmask,
XID id, FontPtr *pFont, char **aliasName,
FontPtr non_cachable_font)
{
if (XpClientIsPrintClient(client,fpe))
return (FontFileOpenFont (client, fpe, flags, name, namelen, format,
fmask, id, pFont, aliasName, non_cachable_font));
return BadFontName;
}
static int
PrinterFontListFonts (pointer client, FontPathElementPtr fpe, char *pat,
int len, int max, FontNamesPtr names)
{
if (XpClientIsPrintClient(client,fpe))
return FontFileListFonts (client, fpe, pat, len, max, names);
return BadFontName;
}
static int
PrinterFontStartListFontsWithInfo(pointer client, FontPathElementPtr fpe,
char *pat, int len, int max,
pointer *privatep)
{
if (XpClientIsPrintClient(client,fpe))
return FontFileStartListFontsWithInfo(client, fpe, pat, len,
max, privatep);
return BadFontName;
}
static int
PrinterFontListNextFontWithInfo(pointer client, FontPathElementPtr fpe,
char **namep, int *namelenp,
FontInfoPtr *pFontInfo,
int *numFonts, pointer private)
{
if (XpClientIsPrintClient(client,fpe))
return FontFileListNextFontWithInfo(client, fpe, namep, namelenp,
pFontInfo, numFonts, private);
return BadFontName;
}
static int
PrinterFontStartListFontsAndAliases(pointer client, FontPathElementPtr fpe,
char *pat, int len, int max,
pointer *privatep)
{
if (XpClientIsPrintClient(client,fpe))
return FontFileStartListFontsAndAliases(client, fpe, pat, len,
max, privatep);
return BadFontName;
}
static int
PrinterFontListNextFontOrAlias(pointer client, FontPathElementPtr fpe,
char **namep, int *namelenp,
char **resolvedp, int *resolvedlenp,
pointer private)
{
if (XpClientIsPrintClient(client,fpe))
return FontFileListNextFontOrAlias(client, fpe, namep, namelenp,
resolvedp, resolvedlenp, private);
return BadFontName;
}
void
PrinterFontRegisterFpeFunctions (void)
{
RegisterFPEFunctions(PrinterFontNameCheck,
PrinterFontInitFPE,
FontFileFreeFPE,
FontFileResetFPE,
PrinterFontOpenFont,
FontFileCloseFont,
PrinterFontListFonts,
PrinterFontStartListFontsWithInfo,
PrinterFontListNextFontWithInfo,
NULL,
NULL,
NULL,
PrinterFontStartListFontsAndAliases,
PrinterFontListNextFontOrAlias,
FontFileEmptyBitmapSource);
}