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.
130 lines
5.1 KiB
130 lines
5.1 KiB
/*
|
|
* Adobe Universal Font Library
|
|
*
|
|
* Copyright (c) 1996 Adobe Systems Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* UFLMath
|
|
*
|
|
*
|
|
* $Header:
|
|
*/
|
|
|
|
#ifndef _H_UFLMath
|
|
#define _H_UFLMath
|
|
|
|
/*===============================================================================*
|
|
* Include files used by this interface *
|
|
*===============================================================================*/
|
|
|
|
#include "UFLCnfig.h"
|
|
#ifndef _H_UFLTypes
|
|
#include "UFLTypes.h"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Floating point arithmathics */
|
|
#ifdef WIN32KERNEL
|
|
|
|
typedef FLOATOBJ UFLFLOATOBJ;
|
|
typedef PFLOATOBJ PUFLFLOATOBJ;
|
|
|
|
#define UFLFLOATOBJ_SetFloat(pf,f) FLOATOBJ_SetFloat((pf),(f))
|
|
#define UFLFLOATOBJ_SetLong(pf,l) FLOATOBJ_SetLong((pf),(l))
|
|
|
|
#define UFLFLOATOBJ_GetFloat(pf) FLOATOBJ_GetFloat((pf))
|
|
#define UFLFLOATOBJ_GetLong(pf) FLOATOBJ_GetLong((pf))
|
|
|
|
#define UFLFLOATOBJ_AddFloat(pf,f) FLOATOBJ_AddFloat((pf),(f))
|
|
#define UFLFLOATOBJ_AddLong(pf,l) FLOATOBJ_AddLong((pf),(l))
|
|
#define UFLFLOATOBJ_Add(pf,pf1) FLOATOBJ_Add((pf),(pf1))
|
|
|
|
#define UFLFLOATOBJ_SubFloat(pf,f) FLOATOBJ_SubFloat((pf),(f))
|
|
#define UFLFLOATOBJ_SubLong(pf,l) FLOATOBJ_SubLong((pf),(l))
|
|
#define UFLFLOATOBJ_Sub(pf,pf1) FLOATOBJ_Sub((pf),(pf1))
|
|
|
|
#define UFLFLOATOBJ_MulFloat(pf,f) FLOATOBJ_MulFloat((pf),(f))
|
|
#define UFLFLOATOBJ_MulLong(pf,l) FLOATOBJ_MulLong((pf),(l))
|
|
#define UFLFLOATOBJ_Mul(pf,pf1) FLOATOBJ_Mul((pf),(pf1))
|
|
|
|
#define UFLFLOATOBJ_DivFloat(pf,f) FLOATOBJ_DivFloat((pf),(f))
|
|
#define UFLFLOATOBJ_DivLong(pf,l) FLOATOBJ_DivLong((pf),(l))
|
|
#define UFLFLOATOBJ_Div(pf,pf1) FLOATOBJ_Div((pf),(pf1))
|
|
|
|
#define UFLFLOATOBJ_Neg(pf) FLOATOBJ_Neg((pf))
|
|
|
|
#define UFLFLOATOBJ_EqualLong(pf,l) FLOATOBJ_EqualLong((pf),(l))
|
|
#define UFLFLOATOBJ_GreaterThanLong(pf,l) FLOATOBJ_GreaterThanLong((pf),(l))
|
|
#define UFLFLOATOBJ_LessThanLong(pf,l) FLOATOBJ_LessThanLong((pf),(l))
|
|
|
|
#define UFLFLOATOBJ_Equal(pf,pf1) FLOATOBJ_Equal((pf),(pf1))
|
|
#define UFLFLOATOBJ_GreaterThan(pf,pf1) FLOATOBJ_GreaterThan((pf),(pf1))
|
|
#define UFLFLOATOBJ_LessThan(pf,pf1) FLOATOBJ_LessThan((pf),(pf1))
|
|
|
|
#else
|
|
|
|
// any platform that has support for floats in the kernel
|
|
|
|
typedef float UFLFLOATOBJ;
|
|
typedef float *PUFLFLOATOBJ;
|
|
|
|
#define UFLFLOATOBJ_SetFloat(pf,f) {*(pf) = (float)(f); }
|
|
#define UFLFLOATOBJ_SetLong(pf,l) {*(pf) = (float)(l); }
|
|
|
|
#define UFLFLOATOBJ_GetFloat(pf) *((unsigned long *)pf)
|
|
#define UFLFLOATOBJ_GetLong(pf) (long)*(pf)
|
|
|
|
#define UFLFLOATOBJ_AddFloat(pf,f) {*(pf) += (float)(f); }
|
|
#define UFLFLOATOBJ_AddLong(pf,l) {*(pf) += (long)(l); }
|
|
#define UFLFLOATOBJ_Add(pf,pf1) {*(pf) += *(pf1); }
|
|
|
|
#define UFLFLOATOBJ_SubFloat(pf,f) {*(pf) -= (float)(f); }
|
|
#define UFLFLOATOBJ_SubLong(pf,l) {*(pf) -= (long)(l); }
|
|
#define UFLFLOATOBJ_Sub(pf,pf1) {*(pf) -= *(pf1); }
|
|
|
|
#define UFLFLOATOBJ_MulFloat(pf,f) {*(pf) *= (float)(f); }
|
|
#define UFLFLOATOBJ_MulLong(pf,l) {*(pf) *= (long)(l); }
|
|
#define UFLFLOATOBJ_Mul(pf,pf1) {*(pf) *= *(pf1); }
|
|
|
|
#define UFLFLOATOBJ_DivFloat(pf,f) {*(pf) /= (float)(f); }
|
|
#define UFLFLOATOBJ_DivLong(pf,l) {*(pf) /= (long)(l); }
|
|
#define UFLFLOATOBJ_Div(pf,pf1) {*(pf) /= *(pf1); }
|
|
|
|
#define UFLFLOATOBJ_Neg(pf) {*(pf) = -*(pf); }
|
|
|
|
#define UFLFLOATOBJ_EqualLong(pf,l) (*(pf) == (float)(l))
|
|
#define UFLFLOATOBJ_GreaterThanLong(pf,l) (*(pf) > (float)(l))
|
|
#define UFLFLOATOBJ_LessThanLong(pf,l) (*(pf) < (float)(l))
|
|
|
|
#define UFLFLOATOBJ_Equal(pf,pf1) (*(pf) == *(pf1))
|
|
#define UFLFLOATOBJ_GreaterThan(pf,pf1) (*(pf) > *(pf1))
|
|
#define UFLFLOATOBJ_LessThan(pf,pf1) (*(pf) < *(pf1))
|
|
|
|
#endif /* WIN32KERNEL */
|
|
|
|
/* UFLFixed macros */
|
|
#define UFLFixedMant( x ) ( ((UFLSepFixed*)&x)->mant )
|
|
#define UFLFixedFraction( x ) ( ((UFLSepFixed*)&x)->frac )
|
|
|
|
#define UFLTruncFixedToShort( x ) (short)( (x) >> 16 )
|
|
#define UFLRoundFixedToShort( x ) (short)( ((x) + 0x08000) >> 16 )
|
|
#define UFLCeilingFixedToShort( x ) (short)( ((x) + 0x0ffff) >> 16 )
|
|
#define UFLShortToFixed( x ) ( ((UFLFixed)(x)) << 16 )
|
|
#define UFLTruncFixed( x ) ( (x) & 0xffff0000 )
|
|
|
|
#define UFLFixedOne (UFLFixed)0x00010000
|
|
|
|
#define UFLRoundFixed( x ) (((x) + 0x08000) & 0xffff0000)
|
|
|
|
UFLFixed UFLFltToFix(float x);
|
|
UFLFixed UFLFixedDiv( UFLFixed a, UFLFixed b );
|
|
UFLFixed UFLFixedMul( UFLFixed a, UFLFixed b );
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|