diff options
Diffstat (limited to 'src/Graphics/Fountainhead/Type.hs')
| -rw-r--r-- | src/Graphics/Fountainhead/Type.hs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/Graphics/Fountainhead/Type.hs b/src/Graphics/Fountainhead/Type.hs index 07031e4..e809d9c 100644 --- a/src/Graphics/Fountainhead/Type.hs +++ b/src/Graphics/Fountainhead/Type.hs @@ -8,10 +8,12 @@ module Graphics.Fountainhead.Type , Fixed32(..) , FWord , UFWord + , fixed2Double , succIntegral , ttfEpoch ) where +import Data.Bits ((.>>.), (.&.)) import Data.Int (Int16) import Data.Word (Word16, Word32) import Data.Time (Day(..)) @@ -31,3 +33,9 @@ ttfEpoch = fromOrdinalDate 1904 1 succIntegral :: Integral a => a -> Int succIntegral = succ . fromIntegral + +fixed2Double :: F2Dot14 -> Double +fixed2Double (F2Dot14 fixed) = + let mantissa = realToFrac (fixed .>>. 14) + fraction = realToFrac (fixed .&. 0x3fff) / 16384.0 + in mantissa + fraction |
