diff options
author | Joe Crayne <joe@jerkface.net> | 2019-06-12 16:45:05 -0400 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2019-06-12 16:45:05 -0400 |
commit | c0a970e5b24305e74a5d9bd1346b484f73f097d4 (patch) | |
tree | bc9b7fe1431ccc5cddc6737b796332dbc0b0838e | |
parent | e0a3b4650f92a39fed428c26c1e137767fffa15c (diff) |
More free-form wip.
-rw-r--r-- | src/Codec/Wavefront/FreeForm.hs | 6 | ||||
-rw-r--r-- | src/Codec/Wavefront/Token.hs | 17 |
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 @@ | |||
1 | module Codec.Wavefront.FreeForm where | 1 | module Codec.Wavefront.FreeForm where |
2 | 2 | ||
3 | data CSType = CSBasisMatrix | CSBezier | CSBSpline | BCardinal | BTaylor | ||
4 | deriving (Eq,Show) | ||
5 | |||
6 | data Parm = Parm | ||
7 | deriving (Eq,Show) | ||
8 | |||
3 | data Curve = Curve | 9 | data 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 @@ | |||
13 | module Codec.Wavefront.Token where | 13 | module Codec.Wavefront.Token where |
14 | 14 | ||
15 | import Codec.Wavefront.Face | 15 | import Codec.Wavefront.Face |
16 | import Codec.Wavefront.FreeForm | ||
16 | import Codec.Wavefront.Line | 17 | import Codec.Wavefront.Line |
17 | import Codec.Wavefront.Location | 18 | import Codec.Wavefront.Location |
18 | import Codec.Wavefront.Normal | 19 | import 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 | ||
82 | parm :: Parser Parm | ||
83 | parm = return Parm -- TODO | ||
84 | |||
85 | ints :: Parser [Int] | ||
86 | ints = return [] -- todo | ||
87 | |||
71 | analyseResult :: Bool -> Result [Maybe Token] -> Either String [Maybe Token] | 88 | analyseResult :: Bool -> Result [Maybe Token] -> Either String [Maybe Token] |
72 | analyseResult partial r = case r of | 89 | analyseResult partial r = case r of |
73 | Done _ tkns -> Right tkns | 90 | Done _ tkns -> Right tkns |