/***************************************************************************
 * ELSEUSER.H - Supplemental header file with compiler flags for the
 *              ElseWare PANOSE(tm) font mapper.
 *
 * $keywords: elseuser.h 1.8 19-Jul-93 11:11:47 AM$
 *
 * Copyright (C) 1991-93 ElseWare Corporation.  All rights reserved.
 ***************************************************************************/

#ifndef __ELSEUSER_H__
#define __ELSEUSER_H__

/* Compiler flags.
 *
 * NOELSEARGS      - Suppress argument list in procedure prototypes.
 * NOELSEPANCONST  - Suppress list of PANOSE constants.
 * NOELSEPANDATA   - Suppress penalty db, see details below.
 * NOELSEPANSCRIPT - Suppress constants for Latin Script.
 * NOELSEPANKANJI  - Suppress PANOSE constants for Kanji.
 * NOELSEPICKFONTS - Excludes unPANPickFonts(), and default routines.
 * NOELSETHRESHOLD - Excludes threshold routines.
 * NOELSEWEIGHTS   - Exclude mapper custom weight controls.
 * ELSEPENALTYDB   - Include constants and structures for penalty tables.
 *
 * PAN_MATCH_ERROR <val> - Match result indicating no match, should equal
 *                         the max allowable unsigned value for EW_USHORT.
 *
 * ELSEMAXSHORT <val>    - The maximum allowable positive signed value for
 *                         EW_SHORT (should be less than PAN_MATCH_ERROR).
 *
 * ELSEDEFTHRESHOLD <val> - Default mapper threshold value (30 if not
 *                          specified). Set equal to ELSEMAXSHORT to
 *                          entirely disable threshold checking.
 */

/* Macros.
 *
 * Override these macros with system-dependant equivalents to improve
 * the performance of the mapper.
 *
 * M_ELSELMUL(a,b)     - Long multiply a * b.
 * M_ELSELDIV(a,b)     - Long divide a / b.
 * M_ELSEMULDIV(a,b,c) - Long multiply & divide, a * b / c, rounded.
 * M_ELSEMEMCPY(dst,src,len) - memcpy(dst,src,len).
 */

/* NOELSEPANDATA: Penalty database override
 *
 * The default behavior of the mapper is to declare a static data
 * structure containing the penalty database. The structure is
 * defined in the file PAN1PTBL.H, which is included in ELSEPAN.C.
 * The file is generated by the program PAN1PTBL, which reads the
 * file PAN1PTBL.TXT.
 *
 * To override this behavior, define NOELSEPANDATA and provide
 * replacements for the following macros:
 *
 * M_lAllocPAN1DATA()       - Allocate database, return 4-byte handle.
 * M_lLockPAN1DATA(hData)   - Lock penalty database.
 * M_bUnlockPAN1DATA(hData) - Unlock penalty database.
 * M_bFreePAN1DATA(hData)   - Free penalty database.
 *
 * The PAN1PTBL program can be used to create a binary file containing
 * the memory picture of the structure (type the program name at the
 * command line to recieve a usage statement).
 */

#ifndef MACINTOSH
#define NOELSEPANKANJI

/* overrides for Windows */
#if 0
#ifdef WIN32
int __stdcall MulDiv(int, int, int);
#else
int far pascal MulDiv(int, int, int);
#endif
#endif
#define M_ELSEMULDIV(a, b, c) MulDiv((a), (b), (c))

#include <memory.h>
#ifdef WIN32
#define M_ELSEMEMCPY(dst, src, len) memcpy((dst), (src), (len))
#else
#define M_ELSEMEMCPY(dst, src, len) _fmemcpy((dst), (src), (len))
#endif

#endif    /* ! MACINTOSH */

#endif /* ifndef __ELSEUSER_H__ */

/***************************************************************************
 * Revision log:
 ***************************************************************************/
/*
 * $lgb$
 * 1.0    21-Jan-93    msd New file taken from project MAI.
 * 1.1    31-Jan-93    msd Replaced Expanded PANOSE (1.1) mapper with 10-digit (1.0) mapper.
 * 1.2     1-Feb-93    msd Remove _huge reference.
 * 1.3     2-Feb-93    msd Removed huge pointer stuff.
 * 1.4     3-Feb-93    msd Removed ctrl-Z at EOF.
 * 1.5     3-Feb-93    msd Fixed bug caused by vcs check-in.
 * 1.6    16-Mar-93    msd Enable PANOSE constants.
 * 1.7    27-Apr-93    msd Enabled script constants.
 * 1.8    19-Jul-93    msd Added compilation flags to selectively disable mapper routines.
 * $lge$
 */