Forge

Forge is a basic utility library, consisting of pure c functions that are useful in any development. Forge is meant to be included in to all c files and all other Quel Solaar libraries and applications. Because it is included in all files it can provide some very useful functiuonality such as debugging memory and help find memory leaks. Forge is designed to be lightweight and compleatly platform and dependency indipendent.

Contents:

Debugging
f_debug_memory_init
f_debug_mem_malloc
f_debug_mem_realloc
f_debug_mem_free
f_debug_mem_comment
f_debug_mem_print
f_debug_mem_reset
f_debug_mem_consumption
f_debug_mem_query
f_debug_mem_test
f_debug_memory
f_debug_memory_fopen
f_debug_memory_fclose
exit_crash
RNG
f_randf
f_randd
f_randnf
f_randnd
f_randi
Vector math
f_sqrtf
f_length2f
f_length3f
f_distance2f
f_distance3f
f_dot2f
f_dot3f
f_cross2f
f_cross3f
f_normalize2f
f_normalize3f
f_normalize4f
f_vector2f
f_vector3f
f_vector4f
f_vector_normalized2f
f_vector_normalized3f
f_vector_normalized4f
f_normal2f
f_normal3f
f_area2f
f_area3f
f_reflect2f
f_reflect3f
f_flatten2f
f_flatten3f
f_project2f
f_project3f
f_intersect2f
f_intersect_test2f
f_intersect3f
f_distance_to_line3f
f_length2d
f_length3d
f_distance2d
f_distance3d
f_dot2d
f_dot3d
f_cross2d
f_cross3d
f_normalize2d
f_normalize3d
f_normalize4d
f_vector2d
f_vector3d
f_vector4d
f_vector_normalized2d
f_vector_normalized3d
f_vector_normalized4d
f_normal2d
f_normal3d
f_area2d
f_area3d
f_reflect2d
f_reflect3d
f_flatten2d
f_flatten3d
f_project2d
f_project3d
f_intersect2d
f_intersect_test2d
f_intersect3d
f_distance_to_line3d
Int vector math
f_sqrti
f_normalize_2di
f_normalize_3di
f_intersect2di
f_sqrti64
f_normalize_2di64
f_normalize_3di64
f_intersect2di64
Matrix operations
f_matrix_clearf
f_matrix_cleard
f_transform3f
f_transform3d
f_transform4f
f_transform4d
f_transforminv3f
f_transforminv3d
f_transforminv_scaled3f
f_matrix_multiplyf
f_matrix_multiplyd
f_matrix_reverse4f
f_matrix_reverse4d
f_quaternion_to_matrixf
f_quaternion_to_matrixd
f_matrix_to_quaternionf
f_matrix_to_quaterniond
f_matrix_to_pos_quaternion_scalef
f_matrix_to_pos_quaternion_scaled
f_pos_quaternion_scale_to_matrixf
f_pos_quaternion_scale_to_matrixd
f_pos_quaternion_scale_to_matrix_invf
f_pos_quaternion_scale_to_matrix_invd
f_matrix_rotatef
f_matrix_rotated
Matrix Creation
f_matrixxyf
f_matrixxzf
f_matrixyxf
f_matrixyzf
f_matrixzxf
f_matrixzyf
f_matrixxyd
f_matrixxzd
f_matrixyxd
f_matrixyzd
f_matrixzxd
f_matrixzyd
Splines
f_splinef
f_spline2df
f_spline3df
f_spline4df
f_splined
f_spline2dd
f_spline3dd
f_spline4dd
Wiggle
f_wigglef
f_wiggle2df
f_wiggle3df
f_wiggled
f_wiggle2dd
f_wiggle3dd
Smooth step
f_smooth_stepf
f_smooth_stepd
Perlin noise
f_noisef
f_noise2f
f_noise3f
f_noiserf
f_noiser2f
f_noiser3f
f_noised
f_noise2d
f_noise3d
f_noiserd
f_noiser2d
f_noiser3d
f_noisetf
f_noiset2f
f_noiset3f
f_noisertf
f_noisert2f
f_noisert3f
f_noisetd
f_noiset2d
f_noiset3d
f_noisertd
f_noisert2d
f_noisert3d
Snap
f_snapf
f_snapd
Color space
f_rgb_to_hsv
f_hsv_to_rgb
f_rgb_to_xyz
f_xyz_to_rgb
f_xyz_to_lab
f_lab_to_xyz
f_rgb_to_lab
f_lab_to_rgb
Triangle intersection
f_raycast_trif
f_raycast_tri_cullf
f_raycast_trid
f_raycast_tri_culld
f_shape_inside2df
f_shape_inside2dd
f_image_scale_float
char *f_image_scale_uint8
Text
f_find_next_word
f_find_word_compare
f_text_copy
f_text_compare
f_text_copy_allocate
f_word_copy
f_text_copy_until
f_text_filter
f_text_unique
f_text_load
f_text_parce_hex
f_text_parce_decimal
f_text_parce_real
f_text_parce_double
f_print_raw
f_fprint_raw
f_text_obfuscate
f_text_obfuscate_print
f_bits_to_text
f_text_to_bits
Sorting
f_sort_ids
f_sort_pointers
f_sort_strings
Poly mesh neighbour
f_sort_quad_tri_neighbor
f_sort_tri_neighbor
A* path finding
f_path_find
Defines