#ifndef ENABLE_INTERNAL_DOCUMENTATION
#endif
module OpenCV.Internal.Core.Types.Size
( Size(..)
, IsSize(..)
) where
import "base" Foreign.ForeignPtr ( ForeignPtr, withForeignPtr )
import "linear" Linear ( V2 )
import "this" OpenCV.Internal.C.Types
newtype Size (depth :: *)
= Size {unSize :: ForeignPtr (C'Size depth)}
type instance C (Size depth) = C'Size depth
instance WithPtr (Size depth) where
withPtr = withForeignPtr . unSize
class IsSize (p :: * -> *) (depth :: *) where
toSize :: p depth -> Size depth
fromSize :: Size depth -> p depth
toSizeIO :: p depth -> IO (Size depth)
toSizeIO = pure . toSize
instance (IsSize V2 a, Show a)
=> Show (Size a) where
showsPrec prec size =
showParen (prec >= 10)
$ showString "toSize "
. showParen True (shows v2)
where
v2 :: V2 a
v2 = fromSize size