packages feed

cairo-core-1.16.3: src/Graphics/Cairo/Surfaces/Device.chs

#include "cairo-core.h"
{-|
Description : λ https://www.cairographics.org/manual/cairo-cairo-device-t.html //div[@class="refnamediv"]/table/tr/td/p/text()

λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-cairo-device-t.description
-}
module Graphics.Cairo.Surfaces.Device where

{#import Graphics.Cairo.Types#}
import           Control.Exception
import           Control.Monad
import qualified Foreign.Ptr as C2HSImp
import           Graphics.Cairo.HasStatus
import           Graphics.Cairo.Utilities.ErrorHandling

{#context lib="cairo" prefix="cairo"#}

#if CAIRO_CHECK_VERSION(1,10,0)
instance HasStatus Device where
  status = deviceStatus

-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-status
{#fun device_status as ^ { `Device' } -> `Status'#}
-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-finish
{#fun device_finish as ^ { `Device' } -> `()'#}
-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-flush
{#fun device_flush as ^ { `Device' } -> `()'#}
-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-get-type
{#fun device_get_type as ^ { `Device' } -> `DeviceType'#}
-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-get-reference-count
{#fun device_get_reference_count as ^ { `Device' } -> `Int'#}

{-|
λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-acquire
λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-release
-}
acquireDevice :: Device -> (Device -> IO c) -> IO c
acquireDevice d f =
  bracket (deviceAcquire d) (const (deviceRelease d) <=< failStatus) (const $ f d)
  where
    {#fun device_acquire as ^ { `Device' } -> `Status'#}
    {#fun device_release as ^ { `Device' } -> `()'#}

-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-observer-elapsed
{#fun device_observer_elapsed as ^ { `Device' } -> `Double'#}
-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-observer-fill-elapsed
{#fun device_observer_fill_elapsed as ^ { `Device' } -> `Double'#}
-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-observer-glyphs-elapsed
{#fun device_observer_glyphs_elapsed as ^ { `Device' } -> `Double'#}
-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-observer-mask-elapsed
{#fun device_observer_mask_elapsed as ^ { `Device' } -> `Double'#}
-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-observer-paint-elapsed
{#fun device_observer_paint_elapsed as ^ { `Device' } -> `Double'#}
-- λ https://www.cairographics.org/manual/cairo-cairo-device-t.html#cairo-device-observer-stroke-elapsed
{#fun device_observer_stroke_elapsed as ^ { `Device' } -> `Double'#}
#endif -- CAIRO_CHECK_VERSION(1,10,0)