2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS System Libraries
4 * FILE: dll/gdi32/objects/coord.c
5 * PURPOSE: Functions to convert between FLOAT and EFLOAT
6 * PROGRAMMER: James Tabor
10 /* the following deal with IEEE single-precision numbers */
12 #define SIGNBIT 0x80000000L
13 #define SIGN(fp) ((fp) & SIGNBIT)
14 #define EXP(fp) (((fp) >> 23L) & 0xFF)
15 #define MANT(fp) ((fp) & 0x7FFFFFL)
16 #define PACK(s,e,m) ((s) | ((e) << 23L) | (m))
22 ULONG Mant
, Exp
, Sign
;
24 if (!efp
->lMant
) return 0;
30 if (Sign
) Mant
= -Mant
;
35 return PACK(Sign
, Exp
, Mant
);
40 FtoEF( EFLOAT_S
* efp
, FLOATL f
)
42 ULONG Mant
, Exp
, Sign
= 0;
46 worker
.l
= f
; // It's a float stored in a long.
52 Mant
= MANT(worker
.l
);
53 if (SIGN(worker
.l
)) Sign
= -1;
55 Mant
= ((Mant
<< 7) | 0x40000000);