packages feed

implicit-0.4.1.0: Graphics/Implicit/Primitives.hs-boot

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}

-- due to GHC 8.7.10 (and lesser) warning about Space
{-# OPTIONS_GHC -fno-warn-missing-methods #-}

module Graphics.Implicit.Primitives (Object(getBox, getImplicit', Space, _Shared), getImplicit, emptySpace, fullSpace) where

import Graphics.Implicit.Definitions (ObjectContext, SymbolicObj2, SymbolicObj3, SharedObj, ℝ)
import Control.Lens (Prism')
import Data.Kind (Type)
import Prelude (Applicative, Eq, Foldable, Num)
import Linear (V2, V3)

-- See the non-source version of "Graphics.Implicit.Primitives" for
-- documentation of this class.
class ( Applicative f
      , Eq a
      , Eq (f a)
      , Foldable f
      , Num a
      , Num (f a)
      )
      => Object obj f a | obj -> f a
  where
    type Space obj :: Type -> Type
    _Shared :: Prism' obj (SharedObj obj f a)
    getBox       :: obj -> (f a, f a)
    getImplicit' :: ObjectContext -> obj -> (f a -> a)
    canonicalize :: obj -> obj

getImplicit :: Object obj f a => obj -> (f a -> a)

instance Object SymbolicObj2 V2 ℝ
instance Object SymbolicObj3 V3 ℝ

emptySpace, fullSpace :: Object obj f a => obj