diff options
Diffstat (limited to 'ddl/out/haskell/LambdaCube/Mesh.hs')
-rw-r--r-- | ddl/out/haskell/LambdaCube/Mesh.hs | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/ddl/out/haskell/LambdaCube/Mesh.hs b/ddl/out/haskell/LambdaCube/Mesh.hs new file mode 100644 index 0000000..8d6db7a --- /dev/null +++ b/ddl/out/haskell/LambdaCube/Mesh.hs | |||
@@ -0,0 +1,114 @@ | |||
1 | -- generated file, do not modify! | ||
2 | -- 2016-11-11T11:17:03.517567000000Z | ||
3 | |||
4 | {-# LANGUAGE OverloadedStrings, RecordWildCards #-} | ||
5 | module LambdaCube.Mesh where | ||
6 | |||
7 | import Data.Int | ||
8 | import Data.Word | ||
9 | import Data.Map | ||
10 | import Data.Vector (Vector(..)) | ||
11 | import LambdaCube.Linear | ||
12 | |||
13 | import Data.Text | ||
14 | import Data.Aeson hiding (Value,Bool) | ||
15 | import Data.Aeson.Types hiding (Value,Bool) | ||
16 | import Control.Monad | ||
17 | |||
18 | |||
19 | data MeshAttribute | ||
20 | = A_Float (Vector Float) | ||
21 | | A_V2F (Vector V2F) | ||
22 | | A_V3F (Vector V3F) | ||
23 | | A_V4F (Vector V4F) | ||
24 | | A_M22F (Vector M22F) | ||
25 | | A_M33F (Vector M33F) | ||
26 | | A_M44F (Vector M44F) | ||
27 | | A_Int (Vector Int32) | ||
28 | | A_Word (Vector Word32) | ||
29 | deriving (Show, Eq, Ord) | ||
30 | |||
31 | data MeshPrimitive | ||
32 | = P_Points | ||
33 | | P_TriangleStrip | ||
34 | | P_Triangles | ||
35 | | P_TriangleStripI (Vector Int32) | ||
36 | | P_TrianglesI (Vector Int32) | ||
37 | deriving (Show, Eq, Ord) | ||
38 | |||
39 | data Mesh | ||
40 | = Mesh | ||
41 | { mAttributes :: Map String MeshAttribute | ||
42 | , mPrimitive :: MeshPrimitive | ||
43 | } | ||
44 | |||
45 | deriving (Show, Eq, Ord) | ||
46 | |||
47 | |||
48 | instance ToJSON MeshAttribute where | ||
49 | toJSON v = case v of | ||
50 | A_Float arg0 -> object [ "tag" .= ("A_Float" :: Text), "arg0" .= arg0] | ||
51 | A_V2F arg0 -> object [ "tag" .= ("A_V2F" :: Text), "arg0" .= arg0] | ||
52 | A_V3F arg0 -> object [ "tag" .= ("A_V3F" :: Text), "arg0" .= arg0] | ||
53 | A_V4F arg0 -> object [ "tag" .= ("A_V4F" :: Text), "arg0" .= arg0] | ||
54 | A_M22F arg0 -> object [ "tag" .= ("A_M22F" :: Text), "arg0" .= arg0] | ||
55 | A_M33F arg0 -> object [ "tag" .= ("A_M33F" :: Text), "arg0" .= arg0] | ||
56 | A_M44F arg0 -> object [ "tag" .= ("A_M44F" :: Text), "arg0" .= arg0] | ||
57 | A_Int arg0 -> object [ "tag" .= ("A_Int" :: Text), "arg0" .= arg0] | ||
58 | A_Word arg0 -> object [ "tag" .= ("A_Word" :: Text), "arg0" .= arg0] | ||
59 | |||
60 | instance FromJSON MeshAttribute where | ||
61 | parseJSON (Object obj) = do | ||
62 | tag <- obj .: "tag" | ||
63 | case tag :: Text of | ||
64 | "A_Float" -> A_Float <$> obj .: "arg0" | ||
65 | "A_V2F" -> A_V2F <$> obj .: "arg0" | ||
66 | "A_V3F" -> A_V3F <$> obj .: "arg0" | ||
67 | "A_V4F" -> A_V4F <$> obj .: "arg0" | ||
68 | "A_M22F" -> A_M22F <$> obj .: "arg0" | ||
69 | "A_M33F" -> A_M33F <$> obj .: "arg0" | ||
70 | "A_M44F" -> A_M44F <$> obj .: "arg0" | ||
71 | "A_Int" -> A_Int <$> obj .: "arg0" | ||
72 | "A_Word" -> A_Word <$> obj .: "arg0" | ||
73 | parseJSON _ = mzero | ||
74 | |||
75 | instance ToJSON MeshPrimitive where | ||
76 | toJSON v = case v of | ||
77 | P_Points -> object [ "tag" .= ("P_Points" :: Text)] | ||
78 | P_TriangleStrip -> object [ "tag" .= ("P_TriangleStrip" :: Text)] | ||
79 | P_Triangles -> object [ "tag" .= ("P_Triangles" :: Text)] | ||
80 | P_TriangleStripI arg0 -> object [ "tag" .= ("P_TriangleStripI" :: Text), "arg0" .= arg0] | ||
81 | P_TrianglesI arg0 -> object [ "tag" .= ("P_TrianglesI" :: Text), "arg0" .= arg0] | ||
82 | |||
83 | instance FromJSON MeshPrimitive where | ||
84 | parseJSON (Object obj) = do | ||
85 | tag <- obj .: "tag" | ||
86 | case tag :: Text of | ||
87 | "P_Points" -> pure P_Points | ||
88 | "P_TriangleStrip" -> pure P_TriangleStrip | ||
89 | "P_Triangles" -> pure P_Triangles | ||
90 | "P_TriangleStripI" -> P_TriangleStripI <$> obj .: "arg0" | ||
91 | "P_TrianglesI" -> P_TrianglesI <$> obj .: "arg0" | ||
92 | parseJSON _ = mzero | ||
93 | |||
94 | instance ToJSON Mesh where | ||
95 | toJSON v = case v of | ||
96 | Mesh{..} -> object | ||
97 | [ "tag" .= ("Mesh" :: Text) | ||
98 | , "mAttributes" .= mAttributes | ||
99 | , "mPrimitive" .= mPrimitive | ||
100 | ] | ||
101 | |||
102 | instance FromJSON Mesh where | ||
103 | parseJSON (Object obj) = do | ||
104 | tag <- obj .: "tag" | ||
105 | case tag :: Text of | ||
106 | "Mesh" -> do | ||
107 | mAttributes <- obj .: "mAttributes" | ||
108 | mPrimitive <- obj .: "mPrimitive" | ||
109 | pure $ Mesh | ||
110 | { mAttributes = mAttributes | ||
111 | , mPrimitive = mPrimitive | ||
112 | } | ||
113 | parseJSON _ = mzero | ||
114 | |||