{-# LANGUAGE CApiFFI #-}
module OpenCascade.GP.Pnt2d 
( Pnt2d
, new
, getX
, getY
, setX
, setY 
, distance
, squareDistance
, isEqual
, mirror
, mirrored
, mirrorAboutAx2d
, mirroredAboutAx2d
, rotate
, rotated
, scale
, scaled
, transform
, transformed
, translate
, translated
, translateRelative
, translatedRelative
) where

import OpenCascade.GP.Types
import OpenCascade.GP.Internal.Destructors
import Foreign.C
import Foreign.Ptr
import Data.Coerce (coerce)
import Data.Acquire 

-- new

foreign import capi unsafe "hs_gp_Pnt2d.h hs_new_gp_Pnt2d" rawNew :: CDouble -> CDouble -> IO (Ptr Pnt2d)

new :: Double -> Double -> Acquire (Ptr Pnt2d)
new :: Double -> Double -> Acquire (Ptr Pnt2d)
new Double
x Double
y = IO (Ptr Pnt2d) -> (Ptr Pnt2d -> IO ()) -> Acquire (Ptr Pnt2d)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (CDouble -> CDouble -> IO (Ptr Pnt2d)
rawNew (Double -> CDouble
CDouble Double
x) (Double -> CDouble
CDouble Double
y)) Ptr Pnt2d -> IO ()
deletePnt2d

-- getters

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_X" rawX :: Ptr Pnt2d -> IO (CDouble)

getX :: Ptr Pnt2d -> IO Double
getX :: Ptr Pnt2d -> IO Double
getX = (Ptr Pnt2d -> IO CDouble) -> Ptr Pnt2d -> IO Double
forall a b. Coercible a b => a -> b
coerce Ptr Pnt2d -> IO CDouble
rawX

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Y" rawY :: Ptr Pnt2d -> IO (CDouble)

getY :: Ptr Pnt2d -> IO Double
getY :: Ptr Pnt2d -> IO Double
getY = (Ptr Pnt2d -> IO CDouble) -> Ptr Pnt2d -> IO Double
forall a b. Coercible a b => a -> b
coerce Ptr Pnt2d -> IO CDouble
rawY

-- setters

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_SetX" rawSetX :: Ptr Pnt2d -> CDouble -> IO ()

setX :: Ptr Pnt2d -> Double -> IO ()
setX :: Ptr Pnt2d -> Double -> IO ()
setX = (Ptr Pnt2d -> CDouble -> IO ()) -> Ptr Pnt2d -> Double -> IO ()
forall a b. Coercible a b => a -> b
coerce Ptr Pnt2d -> CDouble -> IO ()
rawSetX


foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_SetY" rawSetY :: Ptr Pnt2d -> CDouble -> IO ()

setY :: Ptr Pnt2d -> Double -> IO ()
setY :: Ptr Pnt2d -> Double -> IO ()
setY = (Ptr Pnt2d -> CDouble -> IO ()) -> Ptr Pnt2d -> Double -> IO ()
forall a b. Coercible a b => a -> b
coerce Ptr Pnt2d -> CDouble -> IO ()
rawSetY

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Distance" rawDistance :: Ptr Pnt2d -> Ptr Pnt2d -> IO CDouble

-- distance and quadrance

distance :: Ptr Pnt2d -> Ptr Pnt2d -> IO Double
distance :: Ptr Pnt2d -> Ptr Pnt2d -> IO Double
distance = (Ptr Pnt2d -> Ptr Pnt2d -> IO CDouble)
-> Ptr Pnt2d -> Ptr Pnt2d -> IO Double
forall a b. Coercible a b => a -> b
coerce Ptr Pnt2d -> Ptr Pnt2d -> IO CDouble
rawDistance


foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_SquareDistance" rawSquareDistance :: Ptr Pnt2d -> Ptr Pnt2d -> IO CDouble

squareDistance :: Ptr Pnt2d -> Ptr Pnt2d -> IO Double
squareDistance :: Ptr Pnt2d -> Ptr Pnt2d -> IO Double
squareDistance = (Ptr Pnt2d -> Ptr Pnt2d -> IO CDouble)
-> Ptr Pnt2d -> Ptr Pnt2d -> IO Double
forall a b. Coercible a b => a -> b
coerce Ptr Pnt2d -> Ptr Pnt2d -> IO CDouble
rawSquareDistance

-- isEqual

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_IsEqual" rawIsEqual :: Ptr Pnt2d -> Ptr Pnt2d -> CDouble -> IO CBool

isEqual :: Ptr Pnt2d -> Ptr Pnt2d -> Double -> IO Bool
isEqual :: Ptr Pnt2d -> Ptr Pnt2d -> Double -> IO Bool
isEqual Ptr Pnt2d
a Ptr Pnt2d
b Double
tolerance = (CBool -> CBool -> Bool
forall a. Eq a => a -> a -> Bool
/= CBool
0) (CBool -> Bool) -> IO CBool -> IO Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr Pnt2d -> Ptr Pnt2d -> CDouble -> IO CBool
rawIsEqual Ptr Pnt2d
a Ptr Pnt2d
b (Double -> CDouble
CDouble Double
tolerance)

-- mirror/mirrored

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Mirror" mirror :: Ptr Pnt2d -> Ptr Pnt2d -> IO ()

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Mirrored" rawMirrored :: Ptr Pnt2d -> Ptr Pnt2d -> IO (Ptr Pnt2d)

mirrored :: Ptr Pnt2d -> Ptr Pnt2d -> Acquire (Ptr Pnt2d)
mirrored :: Ptr Pnt2d -> Ptr Pnt2d -> Acquire (Ptr Pnt2d)
mirrored Ptr Pnt2d
point Ptr Pnt2d
axis = IO (Ptr Pnt2d) -> (Ptr Pnt2d -> IO ()) -> Acquire (Ptr Pnt2d)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Pnt2d -> Ptr Pnt2d -> IO (Ptr Pnt2d)
rawMirrored Ptr Pnt2d
point Ptr Pnt2d
axis) Ptr Pnt2d -> IO ()
deletePnt2d

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_MirrorAboutAx2d" mirrorAboutAx2d :: Ptr Pnt2d -> Ptr Ax2d -> IO ()

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_MirroredAboutAx2d" rawMirroredAboutAx2d :: Ptr Pnt2d -> Ptr Ax2d -> IO (Ptr Pnt2d)

mirroredAboutAx2d :: Ptr Pnt2d -> Ptr Ax2d -> Acquire (Ptr Pnt2d)
mirroredAboutAx2d :: Ptr Pnt2d -> Ptr Ax2d -> Acquire (Ptr Pnt2d)
mirroredAboutAx2d Ptr Pnt2d
point Ptr Ax2d
axis = IO (Ptr Pnt2d) -> (Ptr Pnt2d -> IO ()) -> Acquire (Ptr Pnt2d)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Pnt2d -> Ptr Ax2d -> IO (Ptr Pnt2d)
rawMirroredAboutAx2d Ptr Pnt2d
point Ptr Ax2d
axis) Ptr Pnt2d -> IO ()
deletePnt2d

-- rotate/rotated

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Rotate" rotate :: Ptr Pnt2d -> Ptr Pnt2d -> CDouble-> IO ()

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Rotated" rawRotated :: Ptr Pnt2d -> Ptr Pnt2d -> CDouble -> IO (Ptr Pnt2d)

rotated :: Ptr Pnt2d -> Ptr Pnt2d -> Double -> Acquire (Ptr Pnt2d)
rotated :: Ptr Pnt2d -> Ptr Pnt2d -> Double -> Acquire (Ptr Pnt2d)
rotated Ptr Pnt2d
point Ptr Pnt2d
axis Double
amount = IO (Ptr Pnt2d) -> (Ptr Pnt2d -> IO ()) -> Acquire (Ptr Pnt2d)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Pnt2d -> Ptr Pnt2d -> CDouble -> IO (Ptr Pnt2d)
rawRotated Ptr Pnt2d
point Ptr Pnt2d
axis (Double -> CDouble
CDouble Double
amount)) Ptr Pnt2d -> IO ()
deletePnt2d

-- scale/scaled

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Scale" scale :: Ptr Pnt2d -> Ptr Pnt2d -> CDouble-> IO ()

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Scaled" rawScaled :: Ptr Pnt2d -> Ptr Pnt2d -> CDouble -> IO (Ptr Pnt2d)

scaled :: Ptr Pnt2d -> Ptr Pnt2d -> Double -> Acquire (Ptr Pnt2d)
scaled :: Ptr Pnt2d -> Ptr Pnt2d -> Double -> Acquire (Ptr Pnt2d)
scaled Ptr Pnt2d
point Ptr Pnt2d
origin Double
amount = IO (Ptr Pnt2d) -> (Ptr Pnt2d -> IO ()) -> Acquire (Ptr Pnt2d)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Pnt2d -> Ptr Pnt2d -> CDouble -> IO (Ptr Pnt2d)
rawScaled Ptr Pnt2d
point Ptr Pnt2d
origin (Double -> CDouble
CDouble Double
amount)) Ptr Pnt2d -> IO ()
deletePnt2d

-- transform/transformed

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Transform" transform :: Ptr Pnt2d -> Ptr Trsf2d -> IO ()

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Transformed" rawTransformed :: Ptr Pnt2d -> Ptr Trsf2d -> IO (Ptr Pnt2d)

transformed :: Ptr Pnt2d -> Ptr Trsf2d -> Acquire (Ptr Pnt2d)
transformed :: Ptr Pnt2d -> Ptr Trsf2d -> Acquire (Ptr Pnt2d)
transformed Ptr Pnt2d
point Ptr Trsf2d
trsf = IO (Ptr Pnt2d) -> (Ptr Pnt2d -> IO ()) -> Acquire (Ptr Pnt2d)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Pnt2d -> Ptr Trsf2d -> IO (Ptr Pnt2d)
rawTransformed Ptr Pnt2d
point Ptr Trsf2d
trsf) Ptr Pnt2d -> IO ()
deletePnt2d

-- translate/translated

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Translate" translate :: Ptr Pnt2d -> Ptr Vec2d -> IO ()

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_Translated" rawTranslated :: Ptr Pnt2d -> Ptr Vec2d -> IO (Ptr Pnt2d)

translated :: Ptr Pnt2d -> Ptr Vec2d -> Acquire (Ptr Pnt2d)
translated :: Ptr Pnt2d -> Ptr Vec2d -> Acquire (Ptr Pnt2d)
translated Ptr Pnt2d
point Ptr Vec2d
vec = IO (Ptr Pnt2d) -> (Ptr Pnt2d -> IO ()) -> Acquire (Ptr Pnt2d)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Pnt2d -> Ptr Vec2d -> IO (Ptr Pnt2d)
rawTranslated Ptr Pnt2d
point Ptr Vec2d
vec) Ptr Pnt2d -> IO ()
deletePnt2d

-- translateRelative/translatedRelative

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_TranslateRelative" translateRelative :: Ptr Pnt2d -> Ptr Pnt2d -> Ptr Pnt2d -> IO ()

foreign import capi unsafe "hs_gp_Pnt2d.h hs_gp_Pnt2d_TranslatedRelative" rawTranslatedRelative :: Ptr Pnt2d -> Ptr Pnt2d -> Ptr Pnt2d -> IO (Ptr Pnt2d)

translatedRelative :: Ptr Pnt2d -> Ptr Pnt2d -> Ptr Pnt2d -> Acquire (Ptr Pnt2d)
translatedRelative :: Ptr Pnt2d -> Ptr Pnt2d -> Ptr Pnt2d -> Acquire (Ptr Pnt2d)
translatedRelative Ptr Pnt2d
point Ptr Pnt2d
from Ptr Pnt2d
to = IO (Ptr Pnt2d) -> (Ptr Pnt2d -> IO ()) -> Acquire (Ptr Pnt2d)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Pnt2d -> Ptr Pnt2d -> Ptr Pnt2d -> IO (Ptr Pnt2d)
rawTranslatedRelative Ptr Pnt2d
point Ptr Pnt2d
from Ptr Pnt2d
to) Ptr Pnt2d -> IO ()
deletePnt2d