Chart-fltkhs 0.1.0.4 → 0.1.0.5
raw patch · 2 files changed
+31/−1 lines, 2 files
Files
Chart-fltkhs.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 name: Chart-fltkhs-version: 0.1.0.4+version: 0.1.0.5 license: BSD-3-Clause license-file: LICENSE maintainer: michael.oswald@onikudaki.net
src/Graphics/Rendering/Chart/Backend/FLTKHS.hs view
@@ -55,7 +55,9 @@ #-} module Graphics.Rendering.Chart.Backend.FLTKHS ( renderToWidget+ , renderToWidgetOffscreen , renderToWidgetEC+ , renderToWidgetOffscreenEC , runBackend , FLTKHSEnv , defaultEnv@@ -125,6 +127,23 @@ runBackend (defaultEnv bitmapAlignmentFns) (withTranslation (Point (fromIntegral x) (fromIntegral y)) cr) +-- | Render a 'Renderable' to a widget, using an 'FlOffscreen' buffer for double buffering. +-- It renders to the full widget (it gets the rectangle+-- of the widgets area) and uses that as the sizes for rendering. The offscreen+-- buffer needs to be allocated beforehand and needs to have the necessary size+-- (see FLTKs documentation for using the offscreen rendering)+{-# INLINABLE renderToWidgetOffscreen #-}+renderToWidgetOffscreen :: Ref Widget -> FlOffscreen -> Renderable a -> IO (PickFn a)+renderToWidgetOffscreen widget offscreen r = do+ rectangle'@(FL.Rectangle pos size) <- getRectangle widget+ let (x, y, w', h') = fromRectangle rectangle'+ cr = render r (fromIntegral w', fromIntegral h')+ flcBeginOffscreen offscreen + fun <- runBackend (defaultEnv bitmapAlignmentFns)+ (withTranslation (Point (fromIntegral x) (fromIntegral y)) cr)+ flcEndOffscreen+ flcCopyOffscreen pos size offscreen pos + return fun -- | Render a Chart created with the statefull "Graphics.Rendering.Chart.Easy" API. -- Calls 'renderToWidget' internally@@ -133,6 +152,17 @@ :: (Default r, ToRenderable r) => Ref Widget -> EC r () -> IO () renderToWidgetEC widget ec = void $ renderToWidget widget (toRenderable (execEC ec))++-- | Render a Chart created with the statefull "Graphics.Rendering.Chart.Easy" API.+-- Calls 'renderToWidgetOffscreen' internally, so it also needs a 'FlOffscreen'+-- buffer as argument+{-# INLINABLE renderToWidgetOffscreenEC #-}+renderToWidgetOffscreenEC+ :: (Default r, ToRenderable r) => Ref Widget -> FlOffscreen -> EC r () -> IO ()+renderToWidgetOffscreenEC widget offscreen ec =+ void $ renderToWidgetOffscreen widget offscreen (toRenderable (execEC ec))++ -- | Run this backends renderer {-# INLINABLE runBackend #-}