{-# LINE 1 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}

{-# LINE 2 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}

{-# LINE 3 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-points.html>

module Bindings.Gts.GeometricalObjectHierarchy.Points where
import Bindings.GLib
import Bindings.Gts.Types
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 10 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}

foreign import ccall "inline_GTS_POINT_CLASS" c'GTS_POINT_CLASS
  :: Ptr a -> Ptr C'GtsPointClass

{-# LINE 12 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "inline_GTS_POINT" c'GTS_POINT
  :: Ptr a -> Ptr C'GtsPoint

{-# LINE 13 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "inline_GTS_IS_POINT" c'GTS_IS_POINT
  :: Ptr a -> Ptr C'gboolean

{-# LINE 14 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}

foreign import ccall "gts_point_class" c'gts_point_class
  :: IO (Ptr C'GtsPointClass)
foreign import ccall "&gts_point_class" p'gts_point_class
  :: FunPtr (IO (Ptr C'GtsPointClass))

{-# LINE 16 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_new" c'gts_point_new
  :: Ptr C'GtsPointClass -> C'gdouble -> C'gdouble -> C'gdouble -> IO (Ptr C'GtsPoint)
foreign import ccall "&gts_point_new" p'gts_point_new
  :: FunPtr (Ptr C'GtsPointClass -> C'gdouble -> C'gdouble -> C'gdouble -> IO (Ptr C'GtsPoint))

{-# LINE 17 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_set" c'gts_point_set
  :: Ptr C'GtsPoint -> C'gdouble -> C'gdouble -> C'gdouble -> IO ()
foreign import ccall "&gts_point_set" p'gts_point_set
  :: FunPtr (Ptr C'GtsPoint -> C'gdouble -> C'gdouble -> C'gdouble -> IO ())

{-# LINE 18 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}

foreign import ccall "inline_gts_point_is_in_rectangle" c'gts_point_is_in_rectangle
  :: Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gboolean

{-# LINE 20 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}

foreign import ccall "gts_segment_triangle_intersection" c'gts_segment_triangle_intersection
  :: Ptr C'GtsSegment -> Ptr C'GtsTriangle -> C'gboolean -> Ptr C'GtsPointClass -> IO (Ptr C'GtsPoint)
foreign import ccall "&gts_segment_triangle_intersection" p'gts_segment_triangle_intersection
  :: FunPtr (Ptr C'GtsSegment -> Ptr C'GtsTriangle -> C'gboolean -> Ptr C'GtsPointClass -> IO (Ptr C'GtsPoint))

{-# LINE 22 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_transform" c'gts_point_transform
  :: Ptr C'GtsPoint -> Ptr C'GtsMatrix -> IO ()
foreign import ccall "&gts_point_transform" p'gts_point_transform
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsMatrix -> IO ())

{-# LINE 23 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_distance" c'gts_point_distance
  :: Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gdouble
foreign import ccall "&gts_point_distance" p'gts_point_distance
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gdouble)

{-# LINE 24 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_distance2" c'gts_point_distance2
  :: Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gdouble
foreign import ccall "&gts_point_distance2" p'gts_point_distance2
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gdouble)

{-# LINE 25 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_orientation_3d" c'gts_point_orientation_3d
  :: Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gdouble
foreign import ccall "&gts_point_orientation_3d" p'gts_point_orientation_3d
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gdouble)

{-# LINE 26 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_orientation_3d_sos" c'gts_point_orientation_3d_sos
  :: Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gint
foreign import ccall "&gts_point_orientation_3d_sos" p'gts_point_orientation_3d_sos
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gint)

{-# LINE 27 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}

foreign import ccall "gts_point_in_circle" c'gts_point_in_circle
  :: Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gdouble
foreign import ccall "&gts_point_in_circle" p'gts_point_in_circle
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gdouble)

{-# LINE 29 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_in_triangle_circle" c'gts_point_in_triangle_circle
  :: Ptr C'GtsPoint -> Ptr C'GtsTriangle -> IO C'gdouble
foreign import ccall "&gts_point_in_triangle_circle" p'gts_point_in_triangle_circle
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsTriangle -> IO C'gdouble)

{-# LINE 30 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_is_in_triangle" c'gts_point_is_in_triangle
  :: Ptr C'GtsPoint -> Ptr C'GtsTriangle -> IO C'GtsIntersect
foreign import ccall "&gts_point_is_in_triangle" p'gts_point_is_in_triangle
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsTriangle -> IO C'GtsIntersect)

{-# LINE 31 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_orientation" c'gts_point_orientation
  :: Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gdouble
foreign import ccall "&gts_point_orientation" p'gts_point_orientation
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gdouble)

{-# LINE 32 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_orientation_sos" c'gts_point_orientation_sos
  :: Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gint
foreign import ccall "&gts_point_orientation_sos" p'gts_point_orientation_sos
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsPoint -> Ptr C'GtsPoint -> IO C'gint)

{-# LINE 33 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_segment_distance2" c'gts_point_segment_distance2
  :: Ptr C'GtsPoint -> Ptr C'GtsSegment -> IO C'gdouble
foreign import ccall "&gts_point_segment_distance2" p'gts_point_segment_distance2
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsSegment -> IO C'gdouble)

{-# LINE 34 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_segment_distance" c'gts_point_segment_distance
  :: Ptr C'GtsPoint -> Ptr C'GtsSegment -> IO C'gdouble
foreign import ccall "&gts_point_segment_distance" p'gts_point_segment_distance
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsSegment -> IO C'gdouble)

{-# LINE 35 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_segment_closest" c'gts_point_segment_closest
  :: Ptr C'GtsPoint -> Ptr C'GtsSegment -> Ptr C'GtsPoint -> IO ()
foreign import ccall "&gts_point_segment_closest" p'gts_point_segment_closest
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsSegment -> Ptr C'GtsPoint -> IO ())

{-# LINE 36 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_triangle_distance" c'gts_point_triangle_distance
  :: Ptr C'GtsPoint -> Ptr C'GtsTriangle -> IO C'gdouble
foreign import ccall "&gts_point_triangle_distance" p'gts_point_triangle_distance
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsTriangle -> IO C'gdouble)

{-# LINE 37 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_triangle_closest" c'gts_point_triangle_closest
  :: Ptr C'GtsPoint -> Ptr C'GtsTriangle -> Ptr C'GtsPoint -> IO ()
foreign import ccall "&gts_point_triangle_closest" p'gts_point_triangle_closest
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsTriangle -> Ptr C'GtsPoint -> IO ())

{-# LINE 38 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_triangle_distance2" c'gts_point_triangle_distance2
  :: Ptr C'GtsPoint -> Ptr C'GtsTriangle -> IO C'gdouble
foreign import ccall "&gts_point_triangle_distance2" p'gts_point_triangle_distance2
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GtsTriangle -> IO C'gdouble)

{-# LINE 39 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}
foreign import ccall "gts_point_is_inside_surface" c'gts_point_is_inside_surface
  :: Ptr C'GtsPoint -> Ptr C'GNode -> C'gboolean -> IO C'gboolean
foreign import ccall "&gts_point_is_inside_surface" p'gts_point_is_inside_surface
  :: FunPtr (Ptr C'GtsPoint -> Ptr C'GNode -> C'gboolean -> IO C'gboolean)

{-# LINE 40 "src/Bindings/Gts/GeometricalObjectHierarchy/Points.hsc" #-}