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.
 
 
 
 
 
 

145 lines
4.7 KiB

//-----------------------------------------------------------------------------
// This files contains the module name for this mini driver. Each mini driver
// must have a unique module name. The module name is used to obtain the
// module handle of this Mini Driver. The module handle is used by the
// generic library to load in tables from the Mini Driver.
//-----------------------------------------------------------------------------
#define PRINTDRIVER
#include "print.h"
#include "gdidefs.inc"
#include "windows.h"
#include "string.h"
// the following 3 definitions MUST be compatible with the
// HPPCL font installer
//Is this needed for IBMPPDS ?????
#define CLASS_LASERJET 0
#define CLASS_DESKJET 1
#define CLASS_DESKJET_PLUS 2
#define MAXBLOCK 400
char *rgchModuleName = "PPDSCH";
#ifndef WINNT
// typedef for font installer
typedef int (FAR PASCAL *SFPROC)(HANDLE,HWND,LPSTR,LPSTR,LPSTR,int,
BOOL,short);
// Local routines
int FAR PASCAL lstrcopyn(LPSTR, LPSTR, int);
//---------------------------*InstallExtFonts*---------------------------------
// Action: call the specific font installer to add/delete/modify soft fonts
// and/or external cartridges.
//
// Parameters:
// HWND hWnd; handle to the parent windows.
// LPSTR lpDeviceName; long pointer to the printer name.
// LPSTR lpPortName; long pointer to the associated port name.
// BOOL bSoftFonts; flag if supporting soft fonts or not.
//
// Return Value:
// > 0 : if the font information has changed;
// == 0 : if nothing has changed;
// == -1 : if intending to use the universal font installer
// (not available now).
//-------------------------------------------------------------------------
int FAR PASCAL InstallExtFonts(hWnd, lpDeviceName, lpPortName, bSoftFonts)
HWND hWnd;
LPSTR lpDeviceName;
LPSTR lpPortName;
BOOL bSoftFonts;
{
int fsVers, fonttypes;
HANDLE hFIlib, hModule;
SFPROC lpFIns;
static char LocalDeviceName[80];
/*************************************************************/
/* If device is 4019 then font type support is bitmap. */
/* For any other printer (4029, 4037, ...(?)) font type */
/* support is outline. Because of current Unidrv limitation */
/* both bitmap and outline support (value = 3) cannot be */
/* supported by the same printer model. */
/* MFC - 9/8/94 */
/*************************************************************/
LocalDeviceName[0] = '\0';
lstrcopyn((LPSTR)LocalDeviceName, lpDeviceName, 79);
LocalDeviceName[79] = '\0';
if (strstr(LocalDeviceName, "4019") != NULL)
fonttypes = 1; // Bitmap
else
fonttypes = 2; // Outline
if ((hFIlib = LoadLibrary((LPSTR)"SF4029.EXE")) < 32 ||
!(lpFIns = (SFPROC)GetProcAddress(hFIlib,"SoftFontInstall")))
{
if (hFIlib >= 32)
FreeLibrary(hFIlib);
MessageBox(0,
"Can't load SF4029.EXE or can't get SoftFontInstall",
NULL, MB_OK);
return TRUE;
}
hModule = GetModuleHandle((LPSTR)"PPDSCH.DRV");
// FINSTALL.DLL was loaded properly. Now call SoftFontInstall().
// We choose to ignore the returned "fvers". No use of it.
fsVers = (*lpFIns)(hModule, hWnd, lpDeviceName, lpPortName,
(LPSTR)rgchModuleName, fonttypes, (BOOL)0,
(short)0);
FreeLibrary(hFIlib);
return fsVers;
}
//---------------------------*lstrcopyn*---------------------------------
// Action: Copies n characters from one string to another. If the end of
// the source string has been reached before n characters have
// been copied, the the destination string is padded with nulls.
// Returns the number of characters used from the source string.
//
// Parameters:
// LPSTR string1; Destination string;
// LPSTR string2; Source string;
// int n; Number of characters to copy.
//
// Return Value:
// int : Number of characters copied from source string
//-------------------------------------------------------------------------
int FAR PASCAL lstrcopyn(string1, string2, n)
LPSTR string1;
LPSTR string2;
int n;
{
int i = 0;
LPSTR s1, s2;
s1 = string1;
s2 = string2;
while ((*s2) && (n > 0))
{
*s1++ = *s2++;
i++;
n--;
}
while (n > 0)
{
*s1++ = '\0';
n--;
}
return i;
}
#endif // WINNT