{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GeneralisedNewtypeDeriving #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -Wno-missing-signatures #-} module Shape.Data where import Control.Lens import Data.Aeson import Data.Aeson.TH import Geometry.Data {-# INLINE shVfromList #-} shVfromList = id {-# INLINE shEfromList #-} shEfromList = id data ShapeType = TopPrism { _prismSize :: Int } -- | Surface { _surfaceSize :: Int} deriving (Eq, Ord, Show, Read) --deriving stock Generic --deriving anyclass Flat data Surface = Surface { _sfType :: ShapeType , _sfVs :: [Point3] , _sfColor :: Point4 } deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Surface makeLenses ''ShapeType type Shape = [Surface] nShapeVerxComp :: Int nShapeVerxComp = 12 deriveJSON defaultOptions ''ShapeType deriveJSON defaultOptions ''Surface