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
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
|