never executed always true always false
1 {-# language CPP #-}
2 {-# language ConstraintKinds #-}
3 {-# language MultiParamTypeClasses #-}
4 {-# language UndecidableInstances #-}
5
6 #ifndef ENABLE_INTERNAL_DOCUMENTATION
7 {-# OPTIONS_HADDOCK hide #-}
8 #endif
9
10 module OpenCV.Internal.Core.Types.Size
11 ( Size(..)
12 , IsSize(..)
13 ) where
14
15 import "base" Foreign.ForeignPtr ( ForeignPtr, withForeignPtr )
16 import "linear" Linear ( V2 )
17 import "this" OpenCV.Internal.C.Types
18
19 --------------------------------------------------------------------------------
20
21 newtype Size (depth :: *)
22 = Size {unSize :: ForeignPtr (C'Size depth)}
23
24 type instance C (Size depth) = C'Size depth
25
26 instance WithPtr (Size depth) where
27 withPtr = withForeignPtr . unSize
28
29 class IsSize (p :: * -> *) (depth :: *) where
30 toSize :: p depth -> Size depth
31 fromSize :: Size depth -> p depth
32
33 toSizeIO :: p depth -> IO (Size depth)
34 toSizeIO = pure . toSize
35
36 --------------------------------------------------------------------------------
37
38 instance (IsSize V2 a, Show a)
39 => Show (Size a) where
40 showsPrec prec size =
41 showParen (prec >= 10)
42 $ showString "toSize "
43 . showParen True (shows v2)
44 where
45 v2 :: V2 a
46 v2 = fromSize size