module Data.ZoomCache.Pretty (
prettyGlobal
, prettyTrackSpec
, prettySummary
) where
import qualified Data.ByteString.Lazy.Char8 as LC
import Data.Ratio
import Text.Printf
import Data.ZoomCache.Common
import Data.ZoomCache.Summary
prettyGlobal :: Global -> String
prettyGlobal Global{..} = unlines
[ "Version:\t\t" ++ show vMaj ++ "." ++ show vMin
, "No. tracks:\t\t" ++ show noTracks
, "Presentation-time:\t" ++ ratShow presentationTime
, "Base-time:\t\t" ++ ratShow baseTime
, "UTC baseTime:\t\t" ++ maybe "undefined" show baseUTC
]
where
Version vMaj vMin = version
prettyTrackSpec :: TrackNo -> TrackSpec -> String
prettyTrackSpec trackNo TrackSpec{..} = unlines
[ "Track " ++ show trackNo ++ ":"
, "\tName:\t" ++ LC.unpack specName
, "\tType:\t" ++ show specType
, "\tRate:\t" ++ show specDRType ++ " " ++ ratShow specRate
]
prettySummary :: Summary -> String
prettySummary s@SummaryDouble{..} = concat
[ prettySummaryTimes s
, prettySummaryLevel s
, printf "\tentry: %.3f\texit: %.3f\tmin: %.3f\tmax: %.3f\t"
summaryDoubleEntry summaryDoubleExit summaryDoubleMin summaryDoubleMax
, prettySummaryAvgRMS s
]
prettySummary s@SummaryInt{..} = concat
[ prettySummaryTimes s
, prettySummaryLevel s
, printf "\tentry: %d\texit: %df\tmin: %d\tmax: %d\t"
summaryIntEntry summaryIntExit summaryIntMin summaryIntMax
, prettySummaryAvgRMS s
]
prettySummaryTimes :: Summary -> String
prettySummaryTimes s = printf "[%d - %d]" (unTS $ summaryEntryTime s)
(unTS $ summaryExitTime s)
prettySummaryLevel :: Summary -> String
prettySummaryLevel s = printf "lvl: %d" (summaryLevel s)
prettySummaryAvgRMS :: Summary -> String
prettySummaryAvgRMS s = printf "avg: %.3f\trms: %.3f" (summaryAvg s) (summaryRMS s)
ratShow :: Rational -> String
ratShow r
| d == 0 = "0"
| d == 1 = show n
| otherwise = show n ++ "/" ++ show d
where
n = numerator r
d = denominator r