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.
430 lines
16 KiB
430 lines
16 KiB
/*++
|
|
|
|
Copyright (c) 1996-2002 Microsoft Corp. & Ricoh Co., Ltd. All rights reserved.
|
|
|
|
FILE: RIAFRES.C
|
|
|
|
Abstract: Main file for OEM rendering plugin module.
|
|
|
|
Functions: OEMCommandCallback
|
|
OEMHalftonePattern
|
|
|
|
Environment: Windows NT Unidrv5 driver
|
|
|
|
Revision History:
|
|
02/25/2000 -Masatoshi Kubokura-
|
|
Created it.
|
|
06/07/2000 -Masatoshi Kubokura-
|
|
V.1.11
|
|
08/02/2000 -Masatoshi Kubokura-
|
|
V.1.11 for NT4
|
|
10/17/2000 -Masatoshi Kubokura-
|
|
Last modified for XP inbox.
|
|
09/28/2001 -Masatoshi Kubokura-
|
|
Implement OEMHalftonePattern
|
|
03/01/2002 -Masatoshi Kubokura-
|
|
Include strsafe.h.
|
|
Add FileNameBufSize as arg3 at RWFileData().
|
|
Use safe_sprintfA() instead of sprintf().
|
|
03/29/2002 -Masatoshi Kubokura-
|
|
Check pdevobj NULL pointer before using at OEMCommandCallback().
|
|
04/02/2002 -Masatoshi Kubokura-
|
|
Use safe_strlenA() instead of strlen().
|
|
|
|
--*/
|
|
|
|
#include "pdev.h"
|
|
#ifndef WINNT_40
|
|
#include "strsafe.h" // @Feb/26/2002
|
|
#endif // !WINNT_40
|
|
|
|
//
|
|
// Misc definitions and declarations.
|
|
//
|
|
#ifndef WINNT_40
|
|
#define strcmp lstrcmpA
|
|
//#define sprintf wsprintfA
|
|
//#define strlen lstrlenA // @Aug/01/2000
|
|
#endif // !WINNT_40
|
|
|
|
// external prototypes
|
|
// @Feb/26/2002 ->
|
|
//extern BOOL RWFileData(PFILEDATA pFileData, LPWSTR pwszFileName, LONG type);
|
|
extern BOOL RWFileData(PFILEDATA pFileData, LPWSTR pwszFileName, LONG FileNameBufSize, LONG type);
|
|
// @Feb/26/2002 <-
|
|
|
|
// command definition
|
|
static BYTE PJL_PROOFJOB[] = "@PJL PROOFJOB\n";
|
|
static BYTE PJL_SECUREJOB[] = "@PJL SECUREJOB\n"; // Aficio AP3200 and later (GW model)
|
|
static BYTE PJL_DISKIMAGE_OFF[] = "@PJL SET DISKIMAGE=OFF\n";
|
|
static BYTE PJL_DISKIMAGE_PORT[] = "@PJL SET DISKIMAGE=PORTRAIT\n";
|
|
static BYTE PJL_DISKIMAGE_LAND[] = "@PJL SET DISKIMAGE=LANDSCAPE\n";
|
|
static BYTE PJL_ORIENT_PORT[] = "@PJL SET ORIENTATION=PORTRAIT\n";
|
|
static BYTE PJL_ORIENT_LAND[] = "@PJL SET ORIENTATION=LANDSCAPE\n";
|
|
static BYTE PJL_JOBPASSWORD[] = "@PJL SET JOBPASSWORD=%s\n";
|
|
static BYTE PJL_USERID[] = "@PJL SET USERID=\x22%s\x22\n";
|
|
static BYTE PJL_USERCODE[] = "@PJL SET USERCODE=\x22%s\x22\n";
|
|
static BYTE PJL_TIME_DATE[] = "@PJL SET TIME=\x22%02d:%02d:%02d\x22\n@PJL SET DATE=\x22%04d/%02d/%02d\x22\n";
|
|
static BYTE PJL_STARTJOB_AUTOTRAYCHANGE_OFF[] = "\x1B%%-12345X@PJL JOB NAME=\x22%s\x22\n@PJL SET AUTOTRAYCHANGE=OFF\n";
|
|
static BYTE PJL_STARTJOB_AUTOTRAYCHANGE_ON[] = "\x1B%%-12345X@PJL JOB NAME=\x22%s\x22\n@PJL SET AUTOTRAYCHANGE=ON\n";
|
|
static BYTE PJL_ENDJOB[] = "\x1B%%-12345X@PJL EOJ NAME=\x22%s\x22\n\x1B%%-12345X";
|
|
static BYTE PJL_QTY_JOBOFFSET_OFF[] = "@PJL SET QTY=%d\n@PJL SET JOBOFFSET=OFF\n";
|
|
static BYTE PJL_QTY_JOBOFFSET_ROTATE[] = "@PJL SET QTY=%d\n@PJL SET JOBOFFSET=ROTATE\n";
|
|
static BYTE PJL_QTY_JOBOFFSET_SHIFT[] = "@PJL SET QTY=%d\n@PJL SET JOBOFFSET=SHIFT\n";
|
|
|
|
static BYTE P5_COPIES[] = "\x1B&l%dX";
|
|
static BYTE P6_ENDPAGE[] = "\xc1%c%c\xf8\x31\x44";
|
|
static BYTE P6_ENDSESSION[] = "\x49\x42";
|
|
|
|
static BYTE HTPattern_AdonisP3[256] = {
|
|
109, 55, 62, 115, 134, 217, 208, 154, 111, 58, 64, 117, 135, 220, 211, 155,
|
|
103, 2, 22, 69, 160, 226, 248, 199, 104, 10, 26, 72, 163, 228, 251, 201,
|
|
97, 49, 38, 77, 168, 233, 241, 191, 98, 50, 44, 79, 169, 236, 242, 193,
|
|
128, 90, 84, 122, 141, 175, 183, 147, 129, 92, 86, 123, 142, 177, 185, 148,
|
|
139, 224, 215, 158, 112, 59, 66, 119, 137, 222, 213, 157, 114, 60, 67, 120,
|
|
166, 231, 255, 206, 106, 14, 32, 74, 164, 230, 252, 204, 108, 18, 35, 75,
|
|
173, 239, 246, 197, 100, 51, 47, 80, 171, 237, 244, 195, 101, 53, 48, 82,
|
|
145, 181, 189, 152, 131, 93, 87, 124, 144, 179, 186, 150, 132, 95, 89, 126,
|
|
111, 58, 65, 118, 136, 221, 212, 156, 110, 56, 63, 116, 135, 218, 209, 154,
|
|
105, 10, 26, 73, 163, 228, 251, 202, 104, 6, 22, 70, 161, 227, 250, 200,
|
|
99, 50, 44, 79, 170, 236, 243, 194, 98, 49, 41, 78, 168, 234, 242, 192,
|
|
130, 92, 86, 124, 143, 178, 185, 149, 129, 91, 85, 122, 141, 176, 184, 147,
|
|
138, 223, 214, 158, 114, 61, 68, 121, 140, 225, 216, 159, 113, 59, 67, 119,
|
|
165, 230, 253, 205, 109, 18, 35, 76, 167, 232, 255, 207, 107, 14, 32, 74,
|
|
172, 238, 245, 196, 102, 54, 48, 83, 174, 240, 247, 198, 101, 51, 47, 81,
|
|
144, 180, 187, 151, 133, 96, 89, 127, 146, 182, 190, 153, 132, 94, 88, 125
|
|
};
|
|
|
|
|
|
INT safe_sprintfA(
|
|
char* pszDest,
|
|
size_t cchDest,
|
|
const char* pszFormat,
|
|
...)
|
|
{
|
|
#ifndef WINNT_40
|
|
HRESULT hr;
|
|
char* pszDestEnd;
|
|
size_t cchRemaining;
|
|
#endif // !WINNT_40
|
|
va_list argList;
|
|
INT retSize = 0;
|
|
|
|
va_start(argList, pszFormat);
|
|
#ifndef WINNT_40
|
|
hr = StringCchVPrintfExA(pszDest, cchDest, &pszDestEnd, &cchRemaining,
|
|
STRSAFE_NO_TRUNCATION, pszFormat, argList);
|
|
if (SUCCEEDED(hr))
|
|
retSize = cchDest - cchRemaining;
|
|
#else // WINNT_40
|
|
if ((retSize = vsprintf(pszDest, pszFormat, argList)) < 0)
|
|
retSize = 0;
|
|
#endif // WINNT_40
|
|
va_end(argList);
|
|
return retSize;
|
|
} //*** safe_sprintfA
|
|
|
|
|
|
INT safe_strlenA(
|
|
char* psz,
|
|
size_t cchMax)
|
|
{
|
|
#ifndef WINNT_40
|
|
HRESULT hr;
|
|
size_t cch = 0;
|
|
|
|
hr = StringCchLengthA(psz, cchMax, &cch);
|
|
VERBOSE(("** safe_strlenA: size(lstrlen)=%d **\n", lstrlenA(psz)));
|
|
VERBOSE(("** safe_strlenA: size(StringCchLength)=%d **\n", cch));
|
|
if (SUCCEEDED(hr))
|
|
return cch;
|
|
else
|
|
return 0;
|
|
#else // WINNT_40
|
|
return strlen(psz);
|
|
#endif // WINNT_40
|
|
} //*** safe_strlenA
|
|
|
|
|
|
INT APIENTRY OEMCommandCallback(
|
|
PDEVOBJ pdevobj,
|
|
DWORD dwCmdCbID,
|
|
DWORD dwCount,
|
|
PDWORD pdwParams)
|
|
{
|
|
INT ocmd;
|
|
BYTE Cmd[256];
|
|
#ifdef WINNT_40 // @Aug/01/2000
|
|
ENG_TIME_FIELDS st;
|
|
#else // !WINNT_40
|
|
SYSTEMTIME st;
|
|
#endif // !WINNT_40
|
|
FILEDATA FileData;
|
|
// @Mar/29/2002 ->
|
|
// POEMUD_EXTRADATA pOEMExtra = MINIPRIVATE_DM(pdevobj);
|
|
// POEMPDEV pOEM = MINIDEV_DATA(pdevobj);
|
|
POEMUD_EXTRADATA pOEMExtra;
|
|
POEMPDEV pOEM;
|
|
// @Mar/29/2002 <-
|
|
DWORD dwCopy;
|
|
|
|
#if DBG
|
|
// You can see debug messages on debugger terminal. (debug mode boot)
|
|
giDebugLevel = DBG_VERBOSE;
|
|
|
|
// You can debug with MS Visual Studio. (normal mode boot)
|
|
// DebugBreak();
|
|
#endif // DBG
|
|
|
|
VERBOSE(("OEMCommandCallback() entry (%ld).\n", dwCmdCbID));
|
|
|
|
// verify pdevobj okay
|
|
ASSERT(VALID_PDEVOBJ(pdevobj));
|
|
|
|
// @Mar/29/2002 ->
|
|
pOEMExtra = MINIPRIVATE_DM(pdevobj);
|
|
pOEM = MINIDEV_DATA(pdevobj);
|
|
// @Mar/29/2002 <-
|
|
|
|
// Check whether copy# is in the range. @Sep/07/2000
|
|
switch (dwCmdCbID)
|
|
{
|
|
case CMD_COLLATE_JOBOFFSET_OFF:
|
|
case CMD_COLLATE_JOBOFFSET_ROTATE:
|
|
case CMD_COLLATE_JOBOFFSET_SHIFT:
|
|
case CMD_COPIES_P5:
|
|
case CMD_ENDPAGE_P6:
|
|
if((dwCopy = *pdwParams) > 999L) // *pdwParams: NumOfCopies
|
|
dwCopy = 999L;
|
|
else if(dwCopy < 1L)
|
|
dwCopy = 1L;
|
|
break;
|
|
}
|
|
|
|
// Emit commands.
|
|
ocmd = 0;
|
|
switch (dwCmdCbID)
|
|
{
|
|
case CMD_STARTJOB_AUTOTRAYCHANGE_OFF: // Aficio AP3200 and later (GW model)
|
|
case CMD_STARTJOB_PORT_AUTOTRAYCHANGE_OFF: // Aficio 551,700,850,1050
|
|
case CMD_STARTJOB_LAND_AUTOTRAYCHANGE_OFF: // Aficio 551,700,850,1050
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_STARTJOB_AUTOTRAYCHANGE_OFF, pOEM->JobName);
|
|
goto _EMIT_JOB_NAME;
|
|
|
|
case CMD_STARTJOB_AUTOTRAYCHANGE_ON: // Aficio AP3200 and later (GW model)
|
|
case CMD_STARTJOB_PORT_AUTOTRAYCHANGE_ON: // Aficio 551,700,850,1050
|
|
case CMD_STARTJOB_LAND_AUTOTRAYCHANGE_ON: // Aficio 551,700,850,1050
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_STARTJOB_AUTOTRAYCHANGE_ON, pOEM->JobName);
|
|
|
|
_EMIT_JOB_NAME:
|
|
// Emit job name
|
|
VERBOSE((" Start Job=%s\n", Cmd));
|
|
WRITESPOOLBUF(pdevobj, Cmd, ocmd);
|
|
ocmd = 0;
|
|
switch (pOEMExtra->JobType)
|
|
{
|
|
default:
|
|
case IDC_RADIO_JOB_NORMAL:
|
|
if (CMD_STARTJOB_PORT_AUTOTRAYCHANGE_OFF == dwCmdCbID ||
|
|
CMD_STARTJOB_PORT_AUTOTRAYCHANGE_ON == dwCmdCbID ||
|
|
CMD_STARTJOB_LAND_AUTOTRAYCHANGE_OFF == dwCmdCbID ||
|
|
CMD_STARTJOB_LAND_AUTOTRAYCHANGE_ON == dwCmdCbID)
|
|
{
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_DISKIMAGE_OFF);
|
|
}
|
|
if (IDC_RADIO_LOG_ENABLED == pOEMExtra->LogDisabled)
|
|
goto _EMIT_USERID_USERCODE;
|
|
break;
|
|
|
|
case IDC_RADIO_JOB_SAMPLE:
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_PROOFJOB);
|
|
if (CMD_STARTJOB_PORT_AUTOTRAYCHANGE_OFF == dwCmdCbID ||
|
|
CMD_STARTJOB_PORT_AUTOTRAYCHANGE_ON == dwCmdCbID ||
|
|
CMD_STARTJOB_LAND_AUTOTRAYCHANGE_OFF == dwCmdCbID ||
|
|
CMD_STARTJOB_LAND_AUTOTRAYCHANGE_ON == dwCmdCbID)
|
|
{
|
|
ocmd += safe_sprintfA(&Cmd[ocmd], sizeof(Cmd) - ocmd, PJL_DISKIMAGE_OFF);
|
|
}
|
|
goto _CHECK_PRINT_DONE;
|
|
|
|
case IDC_RADIO_JOB_SECURE:
|
|
switch (dwCmdCbID)
|
|
{
|
|
case CMD_STARTJOB_AUTOTRAYCHANGE_OFF: // Aficio AP3200 and later (GW model)
|
|
case CMD_STARTJOB_AUTOTRAYCHANGE_ON:
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_SECUREJOB);
|
|
break;
|
|
case CMD_STARTJOB_PORT_AUTOTRAYCHANGE_OFF: // Aficio 551,700,850,1050
|
|
case CMD_STARTJOB_PORT_AUTOTRAYCHANGE_ON:
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_DISKIMAGE_PORT);
|
|
break;
|
|
case CMD_STARTJOB_LAND_AUTOTRAYCHANGE_OFF: // Aficio 551,700,850,1050
|
|
case CMD_STARTJOB_LAND_AUTOTRAYCHANGE_ON:
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_DISKIMAGE_LAND);
|
|
break;
|
|
}
|
|
ocmd += safe_sprintfA(&Cmd[ocmd], sizeof(Cmd) - ocmd, PJL_JOBPASSWORD, pOEMExtra->PasswordBuf);
|
|
_CHECK_PRINT_DONE:
|
|
// If previous print is finished and hold-options flag isn't valid,
|
|
// do not emit sample-print/secure-print command.
|
|
// This prevents unexpected job until user pushes Apply button on the
|
|
// Job/Log property sheet.
|
|
FileData.fUiOption = 0;
|
|
// @Feb/26/2002 ->
|
|
// RWFileData(&FileData, pOEMExtra->SharedFileName, GENERIC_READ);
|
|
RWFileData(&FileData, pOEMExtra->SharedFileName, sizeof(pOEMExtra->SharedFileName), GENERIC_READ);
|
|
// @Feb/26/2002 <-
|
|
if (BITTEST32(FileData.fUiOption, PRINT_DONE) &&
|
|
!BITTEST32(pOEMExtra->fUiOption, HOLD_OPTIONS))
|
|
{
|
|
VERBOSE(("** Emit Nothing. **\n"));
|
|
ocmd = 0;
|
|
}
|
|
_EMIT_USERID_USERCODE:
|
|
if (1 <= safe_strlenA(pOEMExtra->UserIdBuf, sizeof(pOEMExtra->UserIdBuf)))
|
|
ocmd += safe_sprintfA(&Cmd[ocmd], sizeof(Cmd) - ocmd, PJL_USERID, pOEMExtra->UserIdBuf);
|
|
else
|
|
ocmd += safe_sprintfA(&Cmd[ocmd], sizeof(Cmd) - ocmd, PJL_USERID, "?");
|
|
|
|
if (1 <= safe_strlenA(pOEMExtra->UserCodeBuf, sizeof(pOEMExtra->UserCodeBuf)))
|
|
ocmd += safe_sprintfA(&Cmd[ocmd], sizeof(Cmd) - ocmd, PJL_USERCODE, pOEMExtra->UserCodeBuf);
|
|
|
|
#ifdef WINNT_40 // @Aug/01/2000
|
|
EngQueryLocalTime(&st);
|
|
ocmd += safe_sprintfA(&Cmd[ocmd], sizeof(Cmd) - ocmd, PJL_TIME_DATE,
|
|
st.usHour, st.usMinute, st.usSecond,
|
|
st.usYear, st.usMonth, st.usDay);
|
|
#else // !WINNT_40
|
|
GetLocalTime(&st);
|
|
ocmd += safe_sprintfA(&Cmd[ocmd], sizeof(Cmd) - ocmd, PJL_TIME_DATE,
|
|
st.wHour, st.wMinute, st.wSecond,
|
|
st.wYear, st.wMonth, st.wDay);
|
|
#endif // !WINNT_40
|
|
WRITESPOOLBUF(pdevobj, Cmd, ocmd);
|
|
break;
|
|
}
|
|
// Emit orientation (Aficio 551,700,850,1050)
|
|
switch (dwCmdCbID)
|
|
{
|
|
case CMD_STARTJOB_PORT_AUTOTRAYCHANGE_OFF:
|
|
case CMD_STARTJOB_PORT_AUTOTRAYCHANGE_ON:
|
|
WRITESPOOLBUF(pdevobj, PJL_ORIENT_PORT, sizeof(PJL_ORIENT_PORT)-1);
|
|
break;
|
|
case CMD_STARTJOB_LAND_AUTOTRAYCHANGE_OFF:
|
|
case CMD_STARTJOB_LAND_AUTOTRAYCHANGE_ON:
|
|
WRITESPOOLBUF(pdevobj, PJL_ORIENT_LAND, sizeof(PJL_ORIENT_LAND)-1);
|
|
break;
|
|
}
|
|
break;
|
|
|
|
|
|
case CMD_COLLATE_JOBOFFSET_OFF: // @Sep/08/2000
|
|
if (IDC_RADIO_JOB_SAMPLE != pOEMExtra->JobType) // if NOT Sample Print, QTY=1 is emitted here.
|
|
dwCopy = 1L;
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_QTY_JOBOFFSET_OFF, dwCopy);
|
|
WRITESPOOLBUF(pdevobj, Cmd, ocmd);
|
|
break;
|
|
|
|
|
|
case CMD_COLLATE_JOBOFFSET_ROTATE: // @Sep/07/2000
|
|
if (IDC_RADIO_JOB_SAMPLE == pOEMExtra->JobType) // if Sample Print
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_QTY_JOBOFFSET_ROTATE, dwCopy); // QTY=n is emitted here.
|
|
else
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_QTY_JOBOFFSET_OFF, 1); // QTY=1 is emitted here.
|
|
WRITESPOOLBUF(pdevobj, Cmd, ocmd);
|
|
break;
|
|
|
|
|
|
case CMD_COLLATE_JOBOFFSET_SHIFT: // @Sep/07/2000
|
|
if (IDC_RADIO_JOB_SAMPLE == pOEMExtra->JobType) // if Sample Print
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_QTY_JOBOFFSET_SHIFT, dwCopy); // QTY=n is emitted here.
|
|
else
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_QTY_JOBOFFSET_OFF, 1); // QTY=1 is emitted here.
|
|
WRITESPOOLBUF(pdevobj, Cmd, ocmd);
|
|
break;
|
|
|
|
|
|
case CMD_COPIES_P5: // @Sep/07/2000
|
|
if (IDC_RADIO_JOB_SAMPLE == pOEMExtra->JobType) // if Sample Print (QTY=n was emitted before.)
|
|
dwCopy = 1L;
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), P5_COPIES, dwCopy);
|
|
WRITESPOOLBUF(pdevobj, Cmd, ocmd);
|
|
break;
|
|
|
|
|
|
case CMD_ENDPAGE_P6: // @Sep/07/2000
|
|
if (IDC_RADIO_JOB_SAMPLE == pOEMExtra->JobType) // if Sample Print (QTY=n was emitted before.)
|
|
dwCopy = 1L;
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), P6_ENDPAGE, (BYTE)dwCopy, (BYTE)(dwCopy >> 8));
|
|
WRITESPOOLBUF(pdevobj, Cmd, ocmd);
|
|
break;
|
|
|
|
|
|
case CMD_ENDJOB_P6: // @Aug/23/2000
|
|
WRITESPOOLBUF(pdevobj, P6_ENDSESSION, sizeof(P6_ENDSESSION)-1);
|
|
// go through
|
|
case CMD_ENDJOB_P5:
|
|
ocmd = safe_sprintfA(Cmd, sizeof(Cmd), PJL_ENDJOB, pOEM->JobName);
|
|
VERBOSE((" End Job=%s\n", Cmd));
|
|
WRITESPOOLBUF(pdevobj, Cmd, ocmd);
|
|
switch (pOEMExtra->JobType)
|
|
{
|
|
case IDC_RADIO_JOB_SAMPLE:
|
|
case IDC_RADIO_JOB_SECURE:
|
|
// Set PRINT_DONE flag in the file
|
|
FileData.fUiOption = pOEMExtra->fUiOption;
|
|
BITSET32(FileData.fUiOption, PRINT_DONE);
|
|
// @Feb/26/2002 ->
|
|
// RWFileData(&FileData, pOEMExtra->SharedFileName, GENERIC_WRITE);
|
|
RWFileData(&FileData, pOEMExtra->SharedFileName, sizeof(pOEMExtra->SharedFileName), GENERIC_WRITE);
|
|
// @Feb/26/2002 <-
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
ERR((("Unknown callback ID = %d.\n"), dwCmdCbID));
|
|
break;
|
|
}
|
|
|
|
#if DBG
|
|
giDebugLevel = DBG_ERROR;
|
|
#endif // DBG
|
|
return 0;
|
|
} //*** OEMCommandCallback
|
|
|
|
|
|
BOOL APIENTRY OEMHalftonePattern(
|
|
PDEVOBJ pdevobj,
|
|
PBYTE pHTPattern,
|
|
DWORD dwHTPatternX,
|
|
DWORD dwHTPatternY,
|
|
DWORD dwHTNumPatterns,
|
|
DWORD dwCallbackID,
|
|
PBYTE pResource,
|
|
DWORD dwResourceSize)
|
|
{
|
|
PBYTE pSrc;
|
|
DWORD dwLen = sizeof(HTPattern_AdonisP3);
|
|
|
|
#if DBG
|
|
giDebugLevel = DBG_VERBOSE;
|
|
#endif // DBG
|
|
VERBOSE(("OEMHalftonePattern() entry (CallbackID:%ld, PatX=%ld).\n", dwCallbackID, dwHTPatternX));
|
|
|
|
if (dwLen != (((dwHTPatternX * dwHTPatternY) + 3) / 4) * 4 * dwHTNumPatterns)
|
|
return FALSE;
|
|
|
|
pSrc = HTPattern_AdonisP3;
|
|
while (dwLen-- > 0)
|
|
*pHTPattern++ = *pSrc++;
|
|
|
|
VERBOSE(("OEMHalftonePattern() exit\n"));
|
|
#if DBG
|
|
giDebugLevel = DBG_ERROR;
|
|
#endif // DBG
|
|
return TRUE;
|
|
} //*** OEMHalftonePattern
|