From c0a970e5b24305e74a5d9bd1346b484f73f097d4 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Wed, 12 Jun 2019 16:45:05 -0400 Subject: More free-form wip. --- src/Codec/Wavefront/FreeForm.hs | 6 ++++++ src/Codec/Wavefront/Token.hs | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/Codec/Wavefront/FreeForm.hs b/src/Codec/Wavefront/FreeForm.hs index 4e418a7..1f8601e 100644 --- a/src/Codec/Wavefront/FreeForm.hs +++ b/src/Codec/Wavefront/FreeForm.hs @@ -1,5 +1,11 @@ module Codec.Wavefront.FreeForm where +data CSType = CSBasisMatrix | CSBezier | CSBSpline | BCardinal | BTaylor + deriving (Eq,Show) + +data Parm = Parm + deriving (Eq,Show) + data Curve = Curve deriving (Eq,Show) diff --git a/src/Codec/Wavefront/Token.hs b/src/Codec/Wavefront/Token.hs index 70b3437..88113a4 100644 --- a/src/Codec/Wavefront/Token.hs +++ b/src/Codec/Wavefront/Token.hs @@ -13,6 +13,7 @@ module Codec.Wavefront.Token where import Codec.Wavefront.Face +import Codec.Wavefront.FreeForm import Codec.Wavefront.Line import Codec.Wavefront.Location import Codec.Wavefront.Normal @@ -43,6 +44,11 @@ data Token | TknMtlLib [Text] | TknUseMtl Text | TknS Natural + | TknCSType Bool CSType + | TknCurve2 [Int] + | TknParm Parm + | TknSP [Int] + | TknEnd deriving (Eq,Show) -- |A stream of 'Token'. @@ -65,9 +71,20 @@ tokenize = fmap cleanupTokens . analyseResult False . parse (untilEnd tokenizer) , fmap (Just . TknMtlLib) mtllib , fmap (Just . TknUseMtl) usemtl , fmap (Just . TknS) smoothingGroup + -- , fmap (Just . uncurry . TknCSType) cstype + , fmap (Just . TknCurve2) ints + , fmap (Just . TknParm) parm + , fmap (Just . TknSP) ints + , fmap (const $ Just TknEnd) (string "end" <* eol) , Nothing <$ comment ] +parm :: Parser Parm +parm = return Parm -- TODO + +ints :: Parser [Int] +ints = return [] -- todo + analyseResult :: Bool -> Result [Maybe Token] -> Either String [Maybe Token] analyseResult partial r = case r of Done _ tkns -> Right tkns -- cgit v1.2.3