summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2019-06-12 16:45:05 -0400
committerJoe Crayne <joe@jerkface.net>2019-06-12 16:45:05 -0400
commitc0a970e5b24305e74a5d9bd1346b484f73f097d4 (patch)
treebc9b7fe1431ccc5cddc6737b796332dbc0b0838e
parente0a3b4650f92a39fed428c26c1e137767fffa15c (diff)
More free-form wip.
-rw-r--r--src/Codec/Wavefront/FreeForm.hs6
-rw-r--r--src/Codec/Wavefront/Token.hs17
2 files changed, 23 insertions, 0 deletions
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 @@
1module Codec.Wavefront.FreeForm where 1module Codec.Wavefront.FreeForm where
2 2
3data CSType = CSBasisMatrix | CSBezier | CSBSpline | BCardinal | BTaylor
4 deriving (Eq,Show)
5
6data Parm = Parm
7 deriving (Eq,Show)
8
3data Curve = Curve 9data Curve = Curve
4 deriving (Eq,Show) 10 deriving (Eq,Show)
5 11
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 @@
13module Codec.Wavefront.Token where 13module Codec.Wavefront.Token where
14 14
15import Codec.Wavefront.Face 15import Codec.Wavefront.Face
16import Codec.Wavefront.FreeForm
16import Codec.Wavefront.Line 17import Codec.Wavefront.Line
17import Codec.Wavefront.Location 18import Codec.Wavefront.Location
18import Codec.Wavefront.Normal 19import Codec.Wavefront.Normal
@@ -43,6 +44,11 @@ data Token
43 | TknMtlLib [Text] 44 | TknMtlLib [Text]
44 | TknUseMtl Text 45 | TknUseMtl Text
45 | TknS Natural 46 | TknS Natural
47 | TknCSType Bool CSType
48 | TknCurve2 [Int]
49 | TknParm Parm
50 | TknSP [Int]
51 | TknEnd
46 deriving (Eq,Show) 52 deriving (Eq,Show)
47 53
48-- |A stream of 'Token'. 54-- |A stream of 'Token'.
@@ -65,9 +71,20 @@ tokenize = fmap cleanupTokens . analyseResult False . parse (untilEnd tokenizer)
65 , fmap (Just . TknMtlLib) mtllib 71 , fmap (Just . TknMtlLib) mtllib
66 , fmap (Just . TknUseMtl) usemtl 72 , fmap (Just . TknUseMtl) usemtl
67 , fmap (Just . TknS) smoothingGroup 73 , fmap (Just . TknS) smoothingGroup
74 -- , fmap (Just . uncurry . TknCSType) cstype
75 , fmap (Just . TknCurve2) ints
76 , fmap (Just . TknParm) parm
77 , fmap (Just . TknSP) ints
78 , fmap (const $ Just TknEnd) (string "end" <* eol)
68 , Nothing <$ comment 79 , Nothing <$ comment
69 ] 80 ]
70 81
82parm :: Parser Parm
83parm = return Parm -- TODO
84
85ints :: Parser [Int]
86ints = return [] -- todo
87
71analyseResult :: Bool -> Result [Maybe Token] -> Either String [Maybe Token] 88analyseResult :: Bool -> Result [Maybe Token] -> Either String [Maybe Token]
72analyseResult partial r = case r of 89analyseResult partial r = case r of
73 Done _ tkns -> Right tkns 90 Done _ tkns -> Right tkns