]> gerrit.simantics Code Review - simantics/3d.git/commitdiff
Improvements to java.vecmath bindings to SCL. 27/3327/1
authorReino Ruusu <reino.ruusu@semantum.fi>
Mon, 14 Oct 2019 14:06:22 +0000 (17:06 +0300)
committerReino Ruusu <reino.ruusu@semantum.fi>
Mon, 14 Oct 2019 14:06:22 +0000 (17:06 +0300)
gitlab #28

Change-Id: Ic6350d7ecbeff7e9e55e053b779fa7592b20ac9a

org.simantics.g3d/scl/G3D/Math/Tuple3d.scl
org.simantics.g3d/scl/G3D/Math/Vector3d.scl

index f7779405c2613994860108d35dbacfa349c97936..2be9c3c952af24a9c39897bd499d2eb54721655c 100644 (file)
@@ -18,35 +18,38 @@ importJava "javax.vecmath.Tuple3d" where
   data MTuple3d
   
   @JavaName getX
-  getXM :: MTuple3d -> <Proc> Double
+  getXM' :: MTuple3d -> <Proc> Double
   @JavaName getY
-  getYM :: MTuple3d -> <Proc> Double
+  getYM' :: MTuple3d -> <Proc> Double
   @JavaName getZ
-  getZM :: MTuple3d -> <Proc> Double
+  getZM' :: MTuple3d -> <Proc> Double
   
-  setX :: MTuple3d -> Double -> <Proc> ()
-  setY :: MTuple3d -> Double -> <Proc> ()
-  setZ :: MTuple3d -> Double -> <Proc> ()
+  @JavaName setX
+  setX' :: MTuple3d -> Double -> <Proc> ()
+  @JavaName setY
+  setY' :: MTuple3d -> Double -> <Proc> ()
+  @JavaName setZ
+  setZ' :: MTuple3d -> Double -> <Proc> ()
   
   @JavaName add
-  addM :: MTuple3d -> Tuple3d -> <Proc> ()
+  addM' :: MTuple3d -> Tuple3d -> <Proc> ()
   @JavaName add
-  addM2 :: MTuple3d -> Tuple3d -> Tuple3d -> <Proc> ()
+  addM2' :: MTuple3d -> Tuple3d -> Tuple3d -> <Proc> ()
   
   @JavaName sub
-  subM :: MTuple3d -> Tuple3d -> <Proc> ()
+  subM' :: MTuple3d -> Tuple3d -> <Proc> ()
   @JavaName sub
-  subM2 :: MTuple3d -> Tuple3d -> Tuple3d -> <Proc> ()
+  subM2' :: MTuple3d -> Tuple3d -> Tuple3d -> <Proc> ()
   
   @JavaName negate
-  negateM :: MTuple3d -> <Proc> ()
+  negateM' :: MTuple3d -> <Proc> ()
   @JavaName negate
-  negateM2 :: MTuple3d -> Tuple3d -> <Proc> ()
+  negateM2' :: MTuple3d -> Tuple3d -> <Proc> ()
   
   @JavaName scale
-  scaleM :: MTuple3d -> Double -> <Proc> ()
+  scaleM' :: MTuple3d -> Double -> <Proc> ()
   @JavaName scale
-  scaleM2 :: MTuple3d -> Double -> Tuple3d -> <Proc> ()
+  scaleM2' :: MTuple3d -> Double -> Tuple3d -> <Proc> ()
   
   @private
   clone :: Tuple3d -> <Proc> a
@@ -64,17 +67,17 @@ applyMOp f x = runProc let
 freeze :: MTuple3d -> <Proc> Tuple3d
 freeze = Java.unsafeCoerce
 
-addTuple x y = applyMOp (flip addM y) x
-subTuple x y = applyMOp (flip subM y) x
-negateTuple = applyMOp negateM
-scaleTuple x s = applyMOp (flip scaleM s) x
+addTuple x y = applyMOp (flip addM' y) x
+subTuple x y = applyMOp (flip subM' y) x
+negateTuple = applyMOp negateM'
+scaleTuple x s = applyMOp (flip scaleM' s) x
 
 class Tuple3dClass a where
   asTuple :: a -> Tuple3d
   asTuple = Java.unsafeCoerce
   
-  asMTuple :: a -> <Proc> MTuple3d
-  asMTuple x = copyMTuple3d (asTuple x)
+  getMTuple :: a -> <Proc> MTuple3d
+  getMTuple x = copyMTuple3d (asTuple x)
   
   getX :: a -> Double
   getX = getX' . asTuple
@@ -106,3 +109,49 @@ instance Tuple3dClass Tuple3d where
   sub = subTuple
   negate = negateTuple
   scale = scaleTuple
+
+class MTuple3dClass a where
+  asMTuple :: a -> <Proc> MTuple3d
+  asMTuple = Java.unsafeCoerce
+
+  getXM :: a -> <Proc> Double
+  getXM = getXM' . asMTuple
+  
+  getYM :: a -> <Proc> Double
+  getYM = getYM' . asMTuple
+  
+  getZM :: a -> <Proc> Double
+  getZM = getZM' . asMTuple
+  
+  setX :: a -> Double -> <Proc> ()
+  setX x v = setX' (asMTuple x) v
+  
+  setY :: a -> Double -> <Proc> ()
+  setY x v = setY' (asMTuple x) v
+  
+  setZ :: a -> Double -> <Proc> ()
+  setZ x v = setZ' (asMTuple x) v
+  
+  addM :: Tuple3dClass b => a -> b -> <Proc> ()
+  addM x y = addM' (asMTuple x) (asTuple y)
+  
+  addM2 :: Tuple3dClass b => a -> b -> b -> <Proc> ()
+  addM2 x y z = addM2' (asMTuple x) (asTuple y) (asTuple z)
+  
+  subM :: Tuple3dClass b => a -> b -> <Proc> ()
+  subM x y = subM' (asMTuple x) (asTuple y)
+  
+  subM2 :: Tuple3dClass b => a -> b -> Tuple3d -> <Proc> ()
+  subM2 x y z = subM2' (asMTuple x) (asTuple y) (asTuple z)
+  
+  negateM :: a -> <Proc> ()
+  negateM x = negateM' (asMTuple x)
+  
+  negateM2 :: Tuple3dClass b => a -> b -> <Proc> ()
+  negateM2 x y = negateM2' (asMTuple x) (asTuple y) 
+  
+  scaleM :: a -> Double -> <Proc> ()
+  scaleM x s = scaleM' (asMTuple x) s
+  
+  scaleM2 :: Tuple3dClass b => a -> Double -> b -> <Proc> ()
+  scaleM2 x s y = scaleM2' (asMTuple x) s (asTuple y)
index 59cfdf97289db415b029d5aeb5834cf8164ffab6..308bb88e2610acace310111cfafca35c1100f516 100644 (file)
@@ -67,6 +67,7 @@ freeze :: MVector3d -> <Proc> Vector3d
 freeze = Java.unsafeCoerce
 
 instance Tuple3dClass Vector3d
+instance MTuple3dClass MVector3d
 
 copyVector3d :: Tuple3dClass a => a -> Vector3d
 copyVector3d = copyVector3d' . asTuple