|
@@ -1,4 +1,6 @@
|
|
|
-module Rolling.Render (diagram) where
|
|
|
+{-# LANGUAGE NamedFieldPuns #-}
|
|
|
+
|
|
|
+module Rolling.Render (diagramPbtA, diagram) where
|
|
|
|
|
|
import qualified Control.Monad as Monad
|
|
|
import qualified Control.Monad.IO.Class as Monad
|
|
@@ -46,10 +48,9 @@ text t = do
|
|
|
Pango.layoutSetFontDescription layout (Just font)
|
|
|
return layout
|
|
|
|
|
|
-diagram :: Diagram -> IO ()
|
|
|
-diagram d = do
|
|
|
- let results = rolls d
|
|
|
- width = 380
|
|
|
+diagramPbtA :: String -> String -> [(Int, Prob Result)] -> IO ()
|
|
|
+diagramPbtA title filename results = do
|
|
|
+ let width = 380
|
|
|
height = length results * 50 + 50
|
|
|
surface <- Cairo.createImageSurface Cairo.FormatRGB24 width height
|
|
|
Cairo.renderWith surface $ do
|
|
@@ -68,8 +69,12 @@ diagram d = do
|
|
|
Cairo.stroke
|
|
|
|
|
|
Cairo.setSourceRGB 0.0 0.0 0.0
|
|
|
- layout <- text (title d)
|
|
|
+ layout <- text title
|
|
|
Cairo.moveTo 20 (fromIntegral height - 50)
|
|
|
Pango.showLayout layout
|
|
|
|
|
|
- Cairo.surfaceWriteToPNG surface (filename d)
|
|
|
+ Cairo.surfaceWriteToPNG surface filename
|
|
|
+
|
|
|
+diagram :: Diagram -> IO ()
|
|
|
+diagram Diagram {title, filename, rolls, render} =
|
|
|
+ render title filename rolls
|