mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-09-06 18:54:30 +00:00
128 lines
3.7 KiB
C
128 lines
3.7 KiB
C
|
/*
|
|||
|
File: FSCdefs.h
|
|||
|
|
|||
|
Contains: xxx put contents here (or delete the whole line) xxx
|
|||
|
|
|||
|
Written by: xxx put name of writer here (or delete the whole line) xxx
|
|||
|
|
|||
|
Copyright: <EFBFBD> 1988-1991 by Apple Computer, Inc., all rights reserved.
|
|||
|
|
|||
|
Change History (most recent first):
|
|||
|
|
|||
|
<4> 9/25/91 jlf Corrected definition of ReleaseSFNTFunc by adding a long parameter
|
|||
|
before the void* param. Defined RELEASE_MEM_FRAG conditional.
|
|||
|
<3> 11/27/90 MR Add #define for PASCAL. [ph]
|
|||
|
<2> 11/5/90 MR Move USHORTMUL from FontMath.h, add Debug definition [rb]
|
|||
|
<7> 7/18/90 MR Add byte swapping macros for INTEL, moved rounding macros from
|
|||
|
fnt.h to here
|
|||
|
<6> 7/14/90 MR changed defines to typedefs for int[8,16,32] and others
|
|||
|
<5> 7/13/90 MR Declared ReleaseSFNTFunc and GetSFNTFunc
|
|||
|
<4> 5/3/90 RB cant remember any changes
|
|||
|
<3> 3/20/90 CL type changes for Microsoft
|
|||
|
<2> 2/27/90 CL getting bbs headers
|
|||
|
<3.0> 8/28/89 sjk Cleanup and one transformation bugfix
|
|||
|
<2.2> 8/14/89 sjk 1 point contours now OK
|
|||
|
<2.1> 8/8/89 sjk Improved encryption handling
|
|||
|
<2.0> 8/2/89 sjk Just fixed EASE comment
|
|||
|
<1.5> 8/1/89 sjk Added composites and encryption. Plus some enhancements<EFBFBD>
|
|||
|
<1.4> 6/13/89 SJK Comment
|
|||
|
<1.3> 6/2/89 CEL 16.16 scaling of metrics, minimum recommended ppem, point size 0
|
|||
|
bug, correct transformed integralized ppem behavior, pretty much
|
|||
|
so
|
|||
|
<1.2> 5/26/89 CEL EASE messed up on <EFBFBD>c<EFBFBD> comments
|
|||
|
<<EFBFBD>1.1> 5/26/89 CEL Integrated the new Font Scaler 1.0 into Spline Fonts
|
|||
|
<1.0> 5/25/89 CEL Integrated 1.0 Font scaler into Bass code for the first time<EFBFBD>
|
|||
|
|
|||
|
To Do:
|
|||
|
*/
|
|||
|
|
|||
|
/* #define DEBUG */
|
|||
|
#define RELEASE_MEM_FRAG /* <4-jlf> */
|
|||
|
#define PASCAL pascal
|
|||
|
|
|||
|
#define true 1
|
|||
|
#define false 0
|
|||
|
#define ONEFIX ( 1L << 16 )
|
|||
|
#define ONEFRAC ( 1L << 30 )
|
|||
|
#define ONEHALFFIX 0x8000L
|
|||
|
#define ONEVECSHIFT 16
|
|||
|
#define HALFVECDIV (1L << (ONEVECSHIFT-1))
|
|||
|
|
|||
|
typedef char int8;
|
|||
|
typedef unsigned char uint8;
|
|||
|
typedef short int16;
|
|||
|
typedef unsigned short uint16;
|
|||
|
typedef long int32;
|
|||
|
typedef unsigned long uint32;
|
|||
|
|
|||
|
typedef short FWord;
|
|||
|
typedef unsigned short uFWord;
|
|||
|
typedef long F26Dot6;
|
|||
|
|
|||
|
#ifndef Fixed
|
|||
|
#define Fixed long
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef Fract
|
|||
|
#define Fract long
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef boolean
|
|||
|
#define boolean int
|
|||
|
#endif
|
|||
|
|
|||
|
typedef void (*voidFunc) ();
|
|||
|
|
|||
|
typedef void* VoidPtr;
|
|||
|
|
|||
|
typedef void (*ReleaseSFNTFunc)(long, void*); /* <4-jlf> */
|
|||
|
typedef void* (*GetSFNTFunc)(long, long, long);
|
|||
|
|
|||
|
#ifdef INTEL
|
|||
|
|
|||
|
#define SWAPW(a) (unsigned short)(((unsigned char)((a) >> 8)) | ((unsigned char)(a) << 8))
|
|||
|
#define SWAPWINC(a) SWAPW(*(a)); a++
|
|||
|
#define SWAPL(a) ((((a)&0xff) << 24) | (((a)&0xff00) << 8) | (((a)&0xff0000) >> 8) | ((a) >> 24))
|
|||
|
|
|||
|
typedef int LoopCount;
|
|||
|
typedef int ArrayIndex;
|
|||
|
|
|||
|
#define USHORTMUL(a, b) ((uint32)((uint32)(a)*(uint32)(b)))
|
|||
|
#define SHORTMUL(a,b) (int32)((int32)(a) * (int32)(b))
|
|||
|
#define SHORTDIV(a,b) (int32)((int32)(a) / (int32)(b))
|
|||
|
|
|||
|
#else
|
|||
|
|
|||
|
#define SWAPW(a) (a)
|
|||
|
#define SWAPWINC(a) (*(a)++)
|
|||
|
#define SWAPL(a) (a)
|
|||
|
|
|||
|
typedef int16 LoopCount; /* short gives us a DBF */
|
|||
|
typedef int32 ArrayIndex; /* avoids EXT.L */
|
|||
|
|
|||
|
#define USHORTMUL(a, b) ((uint32)((uint16)(a)*(uint16)(b)))
|
|||
|
#define SHORTMUL(a,b) (int32)((int16)(a) * (int16)(b))
|
|||
|
#define SHORTDIV(a,b) (int32)((int16)(a) / (int16)(b))
|
|||
|
|
|||
|
#endif /* intel */
|
|||
|
|
|||
|
/* d is half of the denumerator */
|
|||
|
#define FROUND( x, n, d, s ) \
|
|||
|
x = SHORTMUL(x, n); x += d; x >>= s;
|
|||
|
|
|||
|
/* <3> */
|
|||
|
#define SROUND( x, n, d, halfd ) \
|
|||
|
if ( x < 0 ) { \
|
|||
|
x = -x; x = SHORTMUL(x, n); x += halfd; x /= d; x = -x; \
|
|||
|
} else { \
|
|||
|
x = SHORTMUL(x, n); x += halfd; x /= d; \
|
|||
|
}
|
|||
|
|
|||
|
#ifdef DEBUG
|
|||
|
#ifndef NOT_ON_THE_MAC
|
|||
|
#ifndef __TYPES__
|
|||
|
pascal void Debugger(void) = 0xA9FF;
|
|||
|
pascal void DebugStr(char* aStr) = 0xABFF;
|
|||
|
#endif
|
|||
|
#endif
|
|||
|
#endif
|