bindings-gts-0.0.1: src/Bindings/GTS.hsc
#include <bindings.dsl.h>
#define USE_SURFACE_BTREE
#include <stdio.h>
#include <gts.h>
#include "GTS_inline.h"
-- Bindings DSL file for the Gnu Triangulated Surface Library
-- REMEMBER ForeignPtr for garbage collection!
module Bindings.GTS where
#strict_import
import Bindings.GObject
import Bindings.GLib.Fundamentals
import Bindings.GLib.Fundamentals.BasicTypes
#cinline GTS_CHECK_VERSION, <guint> -> <guint> -> <guint> -> IO <gboolean>
#starttype GSList
#field data, <gpointer>
#field next, Ptr <GSList>
#stoptype
#ccall g_slist_alloc, IO (Ptr <GSList>)
#ccall g_slist_free, Ptr <GSList> -> IO ()
#ccall g_slist_free_1, Ptr <GSList> -> IO ()
#cinline g_slist_next, Ptr <GSList> -> IO (Ptr <GSList>)
#ccall g_slist_last, Ptr <GSList> -> IO (Ptr <GSList>)
#ccall g_slist_length, Ptr <GSList> -> IO <guint>
#ccall g_slist_nth, Ptr <GSList> -> <guint> -> IO (Ptr <GSList>)
#ccall g_slist_append, Ptr <GSList> -> <gpointer> -> IO (Ptr <GSList>)
#callback GtsObjectClassInitFunc, Ptr <GtsObjectClass> -> IO ()
#callback GtsObjectInitFunc, Ptr <GtsObject> -> IO ()
#callback GtsArgSetFunc, Ptr <GtsObject> -> IO ()
#callback GtsArgGetFunc, Ptr <GtsObject> -> IO ()
#num GTS_CLASS_NAME_LENGTH
#starttype GtsVector
#stoptype
#starttype GtsMatrix
#stoptype
#ccall gts_matrix_new,<gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> IO (Ptr <GtsMatrix>)
#ccall gts_matrix_assign,Ptr <GtsMatrix> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> <gdouble> -> IO (Ptr <GtsMatrix>)
#ccall gts_matrix_destroy,Ptr <GtsMatrix> -> IO ()
#ccall gts_matrix_zero,Ptr <GtsMatrix> -> IO (Ptr <GtsMatrix>)
#ccall gts_matrix_identity,Ptr <GtsMatrix> -> IO (Ptr <GtsMatrix>)
#ccall gts_matrix_transpose,Ptr <GtsMatrix> -> IO (Ptr <GtsMatrix>)
#ccall gts_matrix_inverse,Ptr <GtsMatrix> -> IO (Ptr <GtsMatrix>)
#ccall gts_matrix_product, Ptr <GtsMatrix> -> Ptr <GtsMatrix> -> IO (Ptr <GtsMatrix>)
#ccall gts_matrix_scale, Ptr <GtsMatrix> -> Ptr <GtsVector> -> IO (Ptr <GtsMatrix>)
#ccall gts_matrix_translate, Ptr <GtsMatrix> -> Ptr <GtsVector> -> IO (Ptr <GtsMatrix>)
#ccall gts_matrix_rotate, Ptr <GtsMatrix> -> Ptr <GtsVector> -> <gdouble> -> IO (Ptr <GtsMatrix>)
#starttype GtsColor
#field r, <gfloat>
#field g, <gfloat>
#field b, <gfloat>
#stoptype
#callback GtsFunc, <gpointer> -> <gpointer> -> IO <gint>
#starttype GtsFile
#field line,<guint>
#field pos,<guint>
#field error,Ptr <gchar>
#stoptype
#starttype GtsFileVariable
#stoptype
#ccall fopen,CString -> CString -> IO (Ptr CFile)
#ccall fclose, Ptr CFile -> IO Int
#ccall gts_file_new, Ptr CFile -> IO (Ptr <GtsFile>)
#ccall gts_file_new_from_string, Ptr <gchar> -> IO ( Ptr <GtsFile>)
#ccall gts_file_getc, Ptr <GtsFile> -> IO <gint>
#ccall gts_file_destroy, IO (Ptr <GtsFile>)
-- #cinline GTS_OBJECT_FLAGS, Ptr <GtsObject> -> <guint32>
#starttype GtsObjectClassInfo
#array_field name,<gchar>
#field object_size,<guint>
#field class_size,<guint>
#stoptype
#starttype GtsObjectClass
#field info,<GtsObjectClassInfo>
#field parent_class,Ptr <GtsObjectClass>
#stoptype
#starttype GtsObject
#field klass, Ptr <GtsObjectClass>
#field flags, <guint32>
#stoptype
#starttype GtsPointClass
#field parent_class, <GtsObjectClass>
#field binary, <gboolean>
#stoptype
#starttype GtsPoint
#field object, Ptr <GtsObject>
#field x,<gdouble>
#field y,<gdouble>
#field z,<gdouble>
#stoptype
#ccall gts_object_class, IO <gpointer>
#ccall gts_object_class_new, Ptr <GtsObjectClass> -> Ptr <GtsObjectClassInfo> -> IO <gpointer>
#ccall gts_object_check_cast, <gpointer> -> <gpointer> -> IO <gpointer>
#ccall gts_object_class_check_cast, <gpointer> -> <gpointer> -> IO <gpointer>
-- #cinline gts_object_is_from_class, <gpointer> -> <gpointer> -> IO <gpointer>
-- #cinline gts_object_class_is_from_class, <gpointer> -> <gpointer> -> IO <gpointer>
#ccall gts_object_class_from_name,Ptr <gchar> -> IO (Ptr <GtsObjectClass>)
#starttype GtsRange
#field min, <gdouble>
#field max, <gdouble>
#field sum, <gdouble>
#field sum2, <gdouble>
#field mean, <gdouble>
#field stddev, <gdouble>
#field n,<guint>
#stoptype
#starttype GtsSegment
#stoptype
#starttype GtsTriangleClass
#stoptype
#starttype GtsTriangle
#field e1, Ptr <GtsEdge>
#field e2, Ptr <GtsEdge>
#field e3, Ptr <GtsEdge>
#stoptype
#ccall gts_triangle_enclosing, Ptr <GtsTriangleClass> -> Ptr <GSList> -> <gdouble> -> IO (Ptr <GtsTriangle>)
#ccall gts_triangle_class, IO (Ptr <GtsTriangleClass>)
#ccall gts_triangle_new, Ptr <GtsTriangleClass> -> Ptr <GtsEdge> -> Ptr <GtsEdge> -> Ptr <GtsEdge> -> IO (Ptr <GtsTriangle>)
#ccall gts_triangle_set, Ptr <GtsTriangleClass> -> Ptr <GtsEdge> -> Ptr <GtsEdge> -> Ptr <GtsEdge> -> IO ()
#ccall gts_triangle_area, Ptr <GtsTriangle> -> IO <gdouble>
#ccall gts_triangle_perimeter, Ptr <GtsTriangle> -> IO <gdouble>
#ccall gts_triangle_quality, Ptr <GtsTriangle> -> IO <gdouble>
#ccall gts_triangle_normal, Ptr <GtsTriangle> -> Ptr <gdouble> -> Ptr <gdouble> -> Ptr <gdouble> -> IO ()
#ccall gts_triangle_revert, Ptr <GtsTriangle> -> IO ()
#ccall gts_triangle_orientation, Ptr <GtsTriangle> -> IO <gdouble>
#ccall gts_triangle_neighbors, Ptr <GtsTriangle> -> IO (Ptr <GSList>)
#ccall gts_triangle_vertices_edges, Ptr <GtsTriangle> -> Ptr <GtsEdge> -> Ptr (Ptr <GtsVertex>) -> Ptr (Ptr <GtsVertex>) -> Ptr (Ptr <GtsVertex>) -> Ptr (Ptr <GtsEdge>) -> Ptr (Ptr <GtsEdge>) -> Ptr (Ptr <GtsEdge>) -> IO ()
#ccall gts_triangle_vertices, Ptr <GtsTriangle> -> Ptr <GtsEdge> -> Ptr (Ptr <GtsVertex>) -> Ptr (Ptr <GtsVertex>) -> Ptr (Ptr <GtsVertex>) -> IO ()
#ccall gts_triangle_vertex_opposite, Ptr <GtsTriangle> -> Ptr <GtsEdge> -> IO (Ptr <GtsVertex)
#ccall gts_triangle_edge_opposite, Ptr <GtsTriangle> -> Ptr <GtsVertex> -> IO (Ptr <GtsEdge)
#ccall gts_triangle_is_ok, Ptr <GtsTriangle> -> IO <gboolean>
#ccall gts_triangle_circumcircle_center, Ptr <GtsTriangle> -> Ptr <GtsPointClass> -> IO (Ptr <GtsPoint>)
#ccall gts_triangle_interpolate_height, Ptr <GtsTriangle> -> Ptr <GtsPoint> -> IO ()
#ccall gts_triangles_from_edges, Ptr <GSList> -> IO (Ptr <GSList>)
#starttype GtsVertex
#field p,<GtsPoint>
#stoptype
#starttype GtsVertexClass
#stoptype
#ccall gts_range_init, Ptr <GtsRange> -> IO ()
#ccall gts_range_reset,Ptr <GtsRange> -> IO ()
#ccall gts_range_add_value,Ptr <GtsRange> -> <gdouble> -> IO ()
#ccall gts_range_update,Ptr <GtsRange> -> IO ()
#ccall gts_point_class, IO (Ptr <GtsPointClass>)
#ccall gts_point_new, Ptr <GtsPointClass> -> <gdouble> -> <gdouble> -> <gdouble> -> IO ( Ptr <GtsPoint> )
#ccall gts_point_set, Ptr <GtsPoint> -> <gdouble> -> <gdouble> -> <gdouble> -> IO ()
#cinline gts_point_is_in_rectangle, Ptr <GtsPoint> -> Ptr <GtsPoint> -> Ptr <GtsPoint> -> IO <gboolean>
#ccall gts_vertex_class,IO (Ptr <GtsVertexClass>)
#ccall gts_vertex_new,Ptr <GtsVertexClass> -> <gdouble> -> <gdouble> -> <gdouble> -> IO (Ptr <GtsVertex>)
#starttype GtsVertexNormal
#field n,<GtsVector>
#stoptype
#ccall gts_vertex_normal_class,IO (Ptr <GtsVertexClass>)
#starttype GtsColorVertex
#field c,<GtsColor>
#stoptype
#ccall gts_color_vertex_class,IO (Ptr <GtsVertexClass>)
#starttype GtsSurface
#field keep_faces,<gboolean>
#stoptype
#starttype GtsSurfaceClass
#stoptype
#starttype GtsEdgeClass
#stoptype
#starttype GtsEdge
#field triangles,Ptr <GSList>
#field segment,Ptr <GtsSegment>
#stoptype
#starttype GtsFaceClass
#stoptype
#starttype GtsFace
#stoptype
#starttype GtsSurfaceStats
#stoptype
#starttype GtsSurfaceQualityStats
#stoptype
#ccall gts_face_class,IO (Ptr <GtsFaceClass>)
#ccall gts_edge_class,IO (Ptr <GtsEdgeClass>)
#ccall gts_surface_class,IO (Ptr <GtsSurfaceClass>)
#ccall gts_surface_new,Ptr <GtsSurfaceClass> -> Ptr <GtsFaceClass> -> Ptr <GtsEdgeClass> -> Ptr <GtsVertexClass> -> IO (Ptr <GtsSurface>)
#ccall gts_surface_add_face, Ptr <GtsSurface> -> Ptr <GtsFace> -> IO ()
#ccall gts_surface_read, Ptr <GtsSurface> -> Ptr <GtsFile> -> IO <guint>
#ccall gts_surface_remove_face,Ptr <GtsSurface> -> Ptr <GtsFace> -> IO ()
#ccall gts_surface_area, Ptr <GtsSurface> -> IO <gdouble>
#ccall gts_surface_stats, Ptr <GtsSurface> -> Ptr <GtsSurfaceStats> -> IO ()
#ccall gts_surface_quality_stats, Ptr <GtsSurface> -> Ptr <GtsSurfaceQualityStats> -> IO ()
#ccall gts_surface_foreach_vertex, Ptr <GtsSurface> -> <GtsFunc> -> <gpointer> -> IO ()
#ccall gts_surface_foreach_edge, Ptr <GtsSurface> -> <GtsFunc> -> <gpointer> -> IO ()
#ccall gts_surface_foreach_face, Ptr <GtsSurface> -> <GtsFunc> -> <gpointer> -> IO ()
#ccall gts_surface_foreach_face_remove, Ptr <GtsSurface> -> <GtsFunc> -> <gpointer> -> IO <guint>
#ccall gts_surface_generate_sphere, Ptr <GtsSurface> -> <guint> -> IO ( Ptr <GtsSurface> )
#ccall gts_surface_copy, Ptr <GtsSurface> -> Ptr <GtsSurface> -> IO (Ptr <GtsSurface> )
#ccall gts_surface_merge, Ptr <GtsSurface> -> Ptr <GtsSurface> -> IO ()
#ccall gts_surface_is_manifold, Ptr <GtsSurface> -> IO <gboolean>
#ccall gts_surface_is_closed, Ptr <GtsSurface> -> IO <gboolean>
#ccall gts_surface_is_orientable, Ptr <GtsSurface> -> IO <gboolean>
#ccall gts_surface_volume, Ptr <GtsSurface> -> IO <gdouble>
#ccall gts_surface_center_of_mass, Ptr <GtsSurface> -> Ptr <GtsVector> -> IO <gdouble>
#ccall gts_surface_center_of_area, Ptr <GtsSurface> -> Ptr <GtsVector> -> IO <gdouble>
#ccall gts_surface_vertex_number, Ptr <GtsSurface> -> IO <guint>
#ccall gts_surface_edge_number, Ptr <GtsSurface> -> IO <guint>
#ccall gts_surface_face_number, Ptr <GtsSurface> -> IO <guint>
#ccall gts_surface_boundary, Ptr <GtsSurface> -> IO (Ptr <GSList>)
#ccall gts_surface_split, Ptr <GtsSurface> -> IO (Ptr <GSList>)
#ccall gts_surface_write, Ptr <GtsSurface> -> Ptr CFile -> IO ()
#starttype GtsSurfaceInterClass
#stoptype
#starttype GtsSurfaceInter
#field s1,Ptr <GtsSurface>
#field s2,Ptr <GtsSurface>
#stoptype
#starttype GNode
#stoptype
#ccall gts_face_new, Ptr <GtsFaceClass> -> Ptr <GtsEdge> -> Ptr <GtsEdge> -> Ptr <GtsEdge> -> IO (Ptr <GtsFace>)
#ccall gts_surface_inter_class,IO (Ptr <GtsSurfaceInterClass>)
#ccall gts_surface_inter_new, Ptr <GtsSurfaceInterClass> -> Ptr <GtsSurface> -> Ptr <GtsSurface> -> Ptr <GNode> -> Ptr <GNode> -> <gboolean> -> <gboolean> -> IO (Ptr <GtsSurfaceInter>)
#ccall gts_surface_inter_check, Ptr <GtsSurfaceInter> -> Ptr <gboolean> -> IO <gboolean>
#ccall gts_surface_inter_boolean, Ptr <GtsSurfaceInter> -> Ptr <GtsSurface> -> <guint> -> IO ()
#ccall gts_surface_is_self_intersecting, Ptr <GtsSurface> -> IO (Ptr <GtsSurface>)
#ccall gts_surface_intersection, Ptr <GtsSurface> -> Ptr <GtsSurface> -> Ptr <GNode> -> Ptr <GNode> -> IO (Ptr <GSList>)
#ccall gts_bb_tree_new, Ptr <GSList> -> IO (Ptr <GNode>)
#ccall gts_bb_tree_surface, Ptr <GtsSurface> -> IO (Ptr <GNode>)
#ccall gts_bb_tree_destroy, Ptr <GNode> -> <gboolean> -> IO ()
#ccall gts_bb_tree_stabbed, Ptr <GNode> -> Ptr <GtsPoint> -> IO (Ptr <GSList>)
#ccall gts_object_destroy, Ptr <GtsObject> -> IO ()
-- #starttype GtsConstraintClass
-- #stoptype
-- #starttype GtsConstraint
-- #stoptype
#callback GtsEncroachFunc, Ptr <GtsVertex> -> Ptr <GtsEdge> -> Ptr <GtsSurface> -> <gpointer> -> IO <gboolean>
#callback GtsKeyFunc, <gpointer> -> <gpointer> -> IO <gdouble>
#ccall gts_constraint_class, IO (Ptr <GtsEdgeClass>)
#ccall gts_point_locate, Ptr <GtsPoint> -> Ptr <GtsSurface> -> Ptr <GtsFace> -> IO (Ptr <GtsFace>)
#ccall gts_delaunay_add_constraint, Ptr <GtsSurface> -> Ptr <GtsEdge> -> IO (Ptr <GSList>)
#ccall gts_delaunay_check, Ptr <GtsSurface> -> IO (Ptr <GtsFace>)
#ccall gts_delaunay_remove_hull, Ptr <GtsSurface> -> IO ()
#ccall gts_delaunay_conform,Ptr <GtsSurface> -> <gint> -> FunPtr <GtsEncroachFunc> -> <gpointer> -> IO <guint>
#ccall gts_delaunay_refine,Ptr <GtsSurface> -> <gint> -> FunPtr <GtsEncroachFunc> -> <gpointer> -> FunPtr <GtsKeyFunc> -> <gpointer> -> IO <guint>
#ccall gts_vertex_encroaches_edge,Ptr <GtsVertex> -> Ptr <GtsEdge> -> IO <gboolean>
#ccall gts_edge_new, Ptr <GtsEdgeClass> -> Ptr <GtsVertex> -> Ptr <GtsVertex> -> IO (Ptr <GtsEdge>)
#ccall gts_edge_replace, Ptr <GtsEdge> -> Ptr <GtsEdge> -> IO ()
#ccall gts_edge_swap, Ptr <GtsEdge> -> Ptr <GtsSurface> -> IO ()
#ccall gts_segment_triangle_intersection, Ptr <GtsSegment> -> Ptr <GtsTriangle> -> <gboolean> -> IO (Ptr <GtsPoint>)
#ccall gts_point_in_triangle_circle,Ptr <GtsPoint> -> Ptr <GtsTriangle> -> IO <gdouble>
#ccall gts_point_orientation, Ptr <GtsPoint> -> Ptr <GtsPoint> -> Ptr <GtsPoint> -> IO <gdouble>
#ccall gts_point_is_inside_surface, Ptr <GtsPoint> -> Ptr <GNode> -> <gboolean> -> IO <gboolean>
#ccall gts_point_in_circle, Ptr <GtsPoint> -> Ptr <GtsPoint> -> Ptr <GtsPoint> -> Ptr <GtsPoint> -> IO <gdouble>
#ccall gts_point_orientation_3d, Ptr <GtsPoint> -> Ptr <GtsPoint> -> Ptr <GtsPoint> -> Ptr <GtsPoint> -> Ptr <GtsPoint> -> IO <gdouble>
#starttype GtsBBoxClass
#stoptype
#ccall gts_bbox_class, IO (Ptr <GtsBBoxClass>)
#starttype GtsBBox
#field x1,<gdouble>
#field y1,<gdouble>
#field z1,<gdouble>
#field x2,<gdouble>
#field y2,<gdouble>
#field z2,<gdouble>
#field bounded, <gpointer>
#stoptype
#ccall gts_surface_strip, Ptr <GtsSurface> -> IO (Ptr <GSList>)
#ccall gts_surface_distance, Ptr <GtsSurface> -> Ptr <GtsSurface> -> <gdouble> -> Ptr <GtsRange> -> Ptr <GtsRange> -> IO ()
#ccall gts_bbox_surface, Ptr <GtsBBoxClass> -> Ptr <GtsSurface> -> IO ( Ptr <GtsBBox> )
#ccall gts_bboxes_are_overlapping, Ptr <GtsBBox> -> Ptr <GtsBBox> -> IO <gboolean>
#ccall gts_delaunay_add_vertex, Ptr <GtsSurface> -> Ptr <GtsVertex> -> Ptr <GtsFace> -> IO (Ptr <GtsVertex>)
#ccall gts_delaunay_add_vertex_to_face, Ptr <GtsSurface> -> Ptr <GtsVertex> -> Ptr <GtsFace> -> IO (Ptr <GtsVertex>)
-- Typed helper functions
#ccall gts_surface_destroy, Ptr <GtsSurface> -> IO ()
#ccall gts_triangle_destroy, Ptr <GtsTriangle> -> IO ()
#ccall gts_vertex_destory, Ptr <GtsVertex> -> IO ()