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

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

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

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

module Bindings.Gts.GeometricalObjectHierarchy.Triangles 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/Triangles.hsc" #-}

foreign import ccall "inline_GTS_TRIANGLE_CLASS" c'GTS_TRIANGLE_CLASS
  :: Ptr a -> Ptr C'GtsTriangleClass

{-# LINE 12 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "inline_GTS_TRIANGLE" c'GTS_TRIANGLE
  :: Ptr a -> Ptr C'GtsTriangle

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

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

foreign import ccall "gts_triangle_class" c'gts_triangle_class
  :: IO (Ptr C'GtsTriangleClass)
foreign import ccall "&gts_triangle_class" p'gts_triangle_class
  :: FunPtr (IO (Ptr C'GtsTriangleClass))

{-# LINE 16 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangle_new" c'gts_triangle_new
  :: Ptr C'GtsTriangleClass -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> IO (Ptr C'GtsTriangle)
foreign import ccall "&gts_triangle_new" p'gts_triangle_new
  :: FunPtr (Ptr C'GtsTriangleClass -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> IO (Ptr C'GtsTriangle))

{-# LINE 17 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangle_set" c'gts_triangle_set
  :: Ptr C'GtsTriangle -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> IO ()
foreign import ccall "&gts_triangle_set" p'gts_triangle_set
  :: FunPtr (Ptr C'GtsTriangle -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> IO ())

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

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

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

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

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

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

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

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

{-# LINE 26 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangles_are_compatible" c'gts_triangles_are_compatible
  :: Ptr C'GtsTriangle -> Ptr C'GtsTriangle -> Ptr C'GtsEdge -> IO C'gboolean
foreign import ccall "&gts_triangles_are_compatible" p'gts_triangles_are_compatible
  :: FunPtr (Ptr C'GtsTriangle -> Ptr C'GtsTriangle -> Ptr C'GtsEdge -> IO C'gboolean)

{-# LINE 27 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangle_enclosing" c'gts_triangle_enclosing
  :: Ptr C'GtsTriangleClass -> Ptr C'GSList -> C'gdouble -> IO (Ptr C'GtsTriangle)
foreign import ccall "&gts_triangle_enclosing" p'gts_triangle_enclosing
  :: FunPtr (Ptr C'GtsTriangleClass -> Ptr C'GSList -> C'gdouble -> IO (Ptr C'GtsTriangle))

{-# LINE 28 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangles_common_edge" c'gts_triangles_common_edge
  :: Ptr C'GtsTriangle -> Ptr C'GtsTriangle -> IO (Ptr C'GtsEdge)
foreign import ccall "&gts_triangles_common_edge" p'gts_triangles_common_edge
  :: FunPtr (Ptr C'GtsTriangle -> Ptr C'GtsTriangle -> IO (Ptr C'GtsEdge))

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

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

{-# LINE 31 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangle_vertices_edges" c'gts_triangle_vertices_edges
  :: Ptr C'GtsTriangle -> Ptr C'GtsEdge -> Ptr (Ptr C'GtsVertex) -> Ptr (Ptr C'GtsVertex) -> Ptr (Ptr C'GtsVertex) -> Ptr (Ptr C'GtsEdge) -> Ptr (Ptr C'GtsEdge) -> Ptr (Ptr C'GtsEdge) -> IO ()
foreign import ccall "&gts_triangle_vertices_edges" p'gts_triangle_vertices_edges
  :: FunPtr (Ptr C'GtsTriangle -> Ptr C'GtsEdge -> Ptr (Ptr C'GtsVertex) -> Ptr (Ptr C'GtsVertex) -> Ptr (Ptr C'GtsVertex) -> Ptr (Ptr C'GtsEdge) -> Ptr (Ptr C'GtsEdge) -> Ptr (Ptr C'GtsEdge) -> IO ())

{-# LINE 32 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangle_vertex_opposite" c'gts_triangle_vertex_opposite
  :: Ptr C'GtsTriangle -> Ptr C'GtsEdge -> IO (Ptr C'GtsVertex)
foreign import ccall "&gts_triangle_vertex_opposite" p'gts_triangle_vertex_opposite
  :: FunPtr (Ptr C'GtsTriangle -> Ptr C'GtsEdge -> IO (Ptr C'GtsVertex))

{-# LINE 33 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangle_edge_opposite" c'gts_triangle_edge_opposite
  :: Ptr C'GtsTriangle -> Ptr C'GtsVertex -> IO (Ptr C'GtsEdge)
foreign import ccall "&gts_triangle_edge_opposite" p'gts_triangle_edge_opposite
  :: FunPtr (Ptr C'GtsTriangle -> Ptr C'GtsVertex -> IO (Ptr C'GtsEdge))

{-# LINE 34 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangle_vertices" c'gts_triangle_vertices
  :: Ptr C'GtsTriangle -> Ptr (Ptr C'GtsVertex) -> Ptr (Ptr C'GtsVertex) -> Ptr (Ptr C'GtsVertex) -> IO ()
foreign import ccall "&gts_triangle_vertices" p'gts_triangle_vertices
  :: FunPtr (Ptr C'GtsTriangle -> Ptr (Ptr C'GtsVertex) -> Ptr (Ptr C'GtsVertex) -> Ptr (Ptr C'GtsVertex) -> IO ())

{-# LINE 35 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}

foreign import ccall "inline_gts_triangle_vertex" c'gts_triangle_vertex
  :: Ptr C'GtsTriangle -> IO (Ptr C'GtsVertex)

{-# LINE 37 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}

foreign import ccall "gts_triangle_is_ok" c'gts_triangle_is_ok
  :: Ptr C'GtsTriangle -> IO C'gboolean
foreign import ccall "&gts_triangle_is_ok" p'gts_triangle_is_ok
  :: FunPtr (Ptr C'GtsTriangle -> IO C'gboolean)

{-# LINE 39 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangle_use_edges" c'gts_triangle_use_edges
  :: Ptr C'GtsEdge -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> IO (Ptr C'GtsTriangle)
foreign import ccall "&gts_triangle_use_edges" p'gts_triangle_use_edges
  :: FunPtr (Ptr C'GtsEdge -> Ptr C'GtsEdge -> Ptr C'GtsEdge -> IO (Ptr C'GtsTriangle))

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

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

{-# LINE 42 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangles_are_folded" c'gts_triangles_are_folded
  :: Ptr C'GSList -> Ptr C'GtsVertex -> Ptr C'GtsVertex -> C'gdouble -> IO C'gboolean
foreign import ccall "&gts_triangles_are_folded" p'gts_triangles_are_folded
  :: FunPtr (Ptr C'GSList -> Ptr C'GtsVertex -> Ptr C'GtsVertex -> C'gdouble -> IO C'gboolean)

{-# LINE 43 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}
foreign import ccall "gts_triangles_from_edges" c'gts_triangles_from_edges
  :: Ptr C'GSList -> IO (Ptr C'GSList)
foreign import ccall "&gts_triangles_from_edges" p'gts_triangles_from_edges
  :: FunPtr (Ptr C'GSList -> IO (Ptr C'GSList))

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

{-# LINE 45 "src/Bindings/Gts/GeometricalObjectHierarchy/Triangles.hsc" #-}