PF_ASSERT(STATEMENT)
PF_ASSERT_MSG(STATEMENT, MESSAGE_CSTR)
PF_ANSI_COLOUR_FG_RED_CSTR
PF_ANSI_COLOUR_FG_BLUE_CSTR
PF_ANSI_COLOUR_FG_YELLOW_CSTR
PF_ANSI_COLOUR_FG_GREY_CSTR
PF_ANSI_COLOUR_RESET_CSTR
u8
i8
u16
i16
u32
i32
u64
i64
f32
f64
PF_F32_INF
PF_F64_INF
PF_BIN_XXXX_XXXX
Replace X's with binary digits to describe any 1-byte value in binary.
PF_U8_MAX
PF_U16_MAX
PF_U24_MAX
PF_U32_MAX
PF_U64_MAX
PF_I16_MAX
PF_I16_MIN
PF_I32_MAX
PF_I32_MIN
PF_I64_MAX
PF_I64_MIN
PF_U24_SIZE
PF_U8(VALUE)
PF_I8(VALUE)
PF_U16(VALUE)
PF_I16(VALUE)
PF_U32(VALUE)
PF_I32(VALUE)
PF_U64(VALUE)
PF_I64(VALUE)
PF_INCR_ASSERT_NO_OVERFLOW(IDENTIFIER, AMOUNT)
PF_DECR_ASSERT_NO_OVERFLOW(IDENTIFIER, AMOUNT)
pf_alloc
void pf_alloc_create(pf_alloc* alloc)
void* pf_alloc_push(pf_alloc* alloc, u64 size)
void* pf_alloc_push_copy(pf_alloc* alloc, u8* data, u64 size)
void pf_alloc_align(pf_alloc* alloc, u64 n_bytes_alignment)
u64 pf_alloc_top(pf_alloc* alloc)
PF_ALLOC_ASSERT_NOT_CLOBBERED(ALLOC_PTR)
pf_bitset
void pf_bitset_create(pf_alloc* alloc, pf_bitset* bitset, u64 capacity)
void pf_bitset_manage(pf_bitset* bitset, u8* mem, u64 mem_size)
void pf_bitset_set(pf_bitset* bitset, u64 index, bool value)
void pf_bitset_set_all(pf_bitset* bitset, bool value)
bool pf_bitset_get(pf_bitset* bitset, u64 index)
u32 pf_hash_djb2(u8* data, u64 data_size)
void pf_zero(u8* data, u64 data_size)
void pf_copy(u8* source, u8* destination, u64 size)
bool pf_compare(u8* data_a, u64 data_a_size, u8* data_b, u64 data_b_size)
u8* pf_repeat(pf_alloc* alloc, u8* data, u64 data_size, u64 repeats, u64* out_repeated_size)
u8* pf_interleave(pf_alloc* alloc, u8** data, u64* data_size, u64 data_count, u64* data_stride, u64* out_interleaved_size, u64* out_interleaved_stride)
u8* pf_deinterleave(pf_alloc* alloc, u8* data, u64 data_size, u64* data_stride, u64 data_strides_count, u64** out_data_size, u64* out_interleaved_stride)
u8* pf_concat(pf_alloc* alloc, u8** data, u64* data_size, u64 data_count, u8* delimiter_str, u64 delimiter_str_size, u64* out_concat_size)
u64 pf_delimit(pf_alloc* alloc, u8* data, u64 data_size, u8* delimiter, u64 delimiter_size, u64** out_delimiter_indices)
u64 pf_split(pf_alloc* alloc, u8* data, u64 data_size, u64* delimiter_indices, u64 delimiter_indices_count, u64 delimiter_size, u8*** out_data, u64** out_data_size)
u64* pf_sort_natural(pf_alloc* alloc, u8** str, u64* str_size, u64 strs_count, bool ignore_spaces)
No unicode normalisation is applied, so only ASCII letters affect alphabetical order.
void pf_byte_order_swap_u16(u16* value, u64 count)
void pf_byte_order_swap_i16(i16* value, u64 count)
void pf_byte_order_swap_u24(u8* u24_byte, u64 count)
void pf_byte_order_swap_u32(u32* value, u64 count)
void pf_byte_order_swap_i32(i32* value, u64 count)
void pf_byte_order_swap_u64(u64* value, u64 count)
void pf_byte_order_swap_i64(i64* value, u64 count)
void pf_byte_order_swap_f32(f32* value, u64 count)
void pf_byte_order_swap_f64(f64* value, u64 count)
union pf_ieee754_bin32
union pf_ieee754_bin64
bool pf_ieee754_is_inf_f32(f32 value)
bool pf_ieee754_is_inf_f64(f64 value)
bool pf_ieee754_is_nan_f32(f32 value)
bool pf_ieee754_is_nan_f64(f64 value)
bool pf_ieee754_is_zero_f32(f32 value)
bool pf_ieee754_is_zero_f64(f64 value)
bool pf_ieee754_is_subnorm_f32(f32 value)
bool pf_ieee754_is_subnorm_f64(f64 value)
u32 pf_ieee754_biased_f32(f32 value)
u64 pf_ieee754_biased_f64(f64 value)
u32 pf_ieee754_mantissa_f32(f32 value)
u64 pf_ieee754_mantissa_f64(f64 value)
bool pf_ieee754_is_positive_f32(f32 value)
bool pf_ieee754_is_positive_f64(f64 value)
f32 pf_ieee754_abs_f32(f32 value)
f64 pf_ieee754_abs_f64(f64 value)
f32 pf_ieee754_subnorm_flush_to_zero_f32(f32 value)
f64 pf_ieee754_subnorm_flush_to_zero_f64(f64 value)
f32 pf_ieee754_approx_equal_f32(f32 value)
f64 pf_ieee754_approx_equal_f64(f64 value)
u64 pf_cstr_size(u8* cstr)
u8* pf_str_to_cstr(pf_alloc* alloc, u8* str, u64 str_size)
u8* pf_str_append_str(pf_alloc* alloc, u8* str, u64 str_size, u8* append_str, u64 append_str_size, u64* out_str_size)
bool pf_str_to_bool(u8* str, u64 str_size, bool* value)
bool pf_str_to_i64(u8* str, u64 str_size, i64* value)
bool pf_str_to_u64(u8* str, u64 str_size, u64* value)
bool pf_str_to_u64_bin(u8* str, u64 str_size, u64* value)
bool pf_str_to_u64_hex(u8* str, u64 str_size, u64* value)
bool pf_str_to_f64(pf_alloc* alloc, u8* str, u64 str_size, f64* value)
u8* pf_str_from_bool(pf_alloc* alloc, u8* str, u64 str_size, f64* value)
u8* pf_str_from_i64(pf_alloc* alloc, i64 value, u64* out_str_size)
u8* pf_str_from_u64(pf_alloc* alloc, u64 value, u64* out_str_size, u64 pad_count)
u8* pf_str_from_u64_bin(pf_alloc* alloc, u64 value, u64* out_str_size, u64 pad_count)
u8* pf_str_from_u64_hex(pf_alloc* alloc, u64 value, u64* out_str_size, u64 pad_count)
u8* pf_str_from_f64_hex(pf_alloc* alloc, f64 value, u64* out_str_size)
u8* pf_str_strip(pf_alloc* alloc, u8* str, u64 str_size, u64* out_str_size)
u8* pf_cstr_fmt(pf_alloc* alloc, u64* out_str_size, u8* fmt_cstr, ...)
u8* pf_cstr_fmt_va_list(pf_alloc* alloc, u64* out_str_size, u8* fmt_cstr, va_list args)
pf_str_builder
void pf_str_builder_create(pf_alloc* alloc, pf_str_builder* str_builder, u64 substr_count_max)
void pf_str_builder_push_str(pf_alloc* alloc, pf_str_builder* str_builder, u8* str, u64 str_size)
void pf_str_builder_push_cstr(pf_alloc* alloc, pf_str_builder* str_builder, u8* fmt_str, ...)
u8* pf_str_builder_str(pf_alloc* alloc, pf_str_builder* str_builder, u64* out_str_size)
void pf_str_builder_reset(pf_str_builder* str_builder)
PF_UNICODE_UNKNOWN_CSTR
PF_UTF16_MAX_UNITS_IN_POINT
PF_UTF8_MAX_UNITS_IN_POINT
PF_UTF16_FIRST_LEADING_SURROGATE
PF_UTF16_LAST_LEADING_SURROGATE
PF_UTF16_FIRST_TRAILING_SURROGATE
PF_UTF16_LAST_TRAILING_SURROGATE
PF_UTF32_MAX
PF_UTF16_MAX
PF_UTF32_REPLACEMENT_UNIT
PF_UTF16_REPLACEMENT_UNIT
PF_UTF8_REPLACEMENT_UNIT_0
PF_UTF8_REPLACEMENT_UNIT_1
PF_UTF8_REPLACEMENT_UNIT_2
PF_UTF8_REPLACEMENT_UNIT_SIZE
bool pf_utf8_unit_is_continuation(u8 unit)
bool pf_utf8_unit_is_start(u8 unit)
bool pf_utf16_unit_is_leading_surrogate(u16 unit)
bool pf_utf16_unit_is_trailing_surrogate(u16 unit)
bool pf_utf32_unit_is_surrogate(u32 unit)
bool pf_utf32_unit_is_whitespace(u32 unit)
u8* pf_utf8_clean(pf_alloc* alloc, u8* utf8, u64 utf8_count, u64* out_utf8_count)
u16* pf_utf16_clean(pf_alloc* alloc, u16* utf16, u64 utf16_count, u64* out_utf16_count)
u32* pf_utf32_clean(pf_alloc* alloc, u32* utf32, u64 utf32_count, u64* out_utf32_count)
u32* pf_utf8_to_utf32(pf_alloc* alloc, u8* utf8, u64 utf8_count, u64* out_utf32_count)
u8* pf_utf32_to_utf8(pf_alloc* alloc, u32* utf32, u64 utf32_count, u64* out_utf8_count)
u32* pf_utf16_to_utf32(pf_alloc* alloc, u16* utf16, u64 utf16_count, u64* out_utf32_count)
u16* pf_utf32_to_utf16(pf_alloc* alloc, u32* utf32, u64 utf32_count, u64* out_utf16_count)
u8* pf_utf16_to_utf8(pf_alloc* alloc, u16* utf16, u64 utf16_count, u64* out_utf8_count)
u16* pf_utf8_to_utf16(pf_alloc* alloc, u8* utf8, u64 utf8_count, u64* out_utf16_count)
void pf_init(pf_alloc* alloc, pf_alloc* alloc_persist, u8** argv, i32* argc)
bool pf_arg(u8* key_str, u64 key_str_size, u64* out_value_strs_count, u8*** out_value_str, u64** out_value_str_size)
bool pf_byte_order_is_big_endian()
u64 pf_cpu_cores_count()
u64 pf_cpu_cache_line_size()
u64 pf_print_str(pf_alloc* alloc, u8* str, u64 str_size)
bool pf_print_cstr_fmt(pf_alloc* alloc, u8* fmt_cstr, ...)
bool pf_heap_alloc(pf_alloc* alloc, u64 size, u8** out_mem_ptr)
void pf_heap_free(pf_alloc* alloc, u8* mem)
enum pf_path_relative_root
PF_PATH_RELATIVE_ROOT_NONE
PF_PATH_RELATIVE_ROOT_APPLICATION_DIR
PF_PATH_RELATIVE_ROOT_EXECUTABLE_DIR
PF_PATH_RELATIVE_ROOT_WORKING_DIR
PF_PATH_RELATIVE_ROOT_TEMP_DIR
PF_PATH_RELATIVE_ROOT_ENUM_COUNT
APPLICATION and EXECUTABLE differ on macOS: EXECUTABLE refers to the app bundle's Contents/MacOS/ folder.
u8* pf_path_resolve(pf_alloc* alloc, u8* path_str, u64 path_str_size, enum pf_path_relative_root relative_root, u64* out_path_str_size)
bool pf_dir_create(pf_alloc* alloc, u8* path_str, u64 path_str_size, bool* out_failed_because_already_exists)
bool pf_dir_list(pf_alloc* alloc, u8* path_str, u64 path_str_size, bool ignore_hidden, u64* out_count, u8*** out_name_str, u64** out_name_str_size)
bool pf_file_is_hidden(pf_alloc* alloc, u8* path_str, u64 path_str_size)
bool pf_file_write(pf_alloc* alloc, u8* path_str, u64 path_str_size, u8* write_buff, u64 write_buff_size, bool* out_already_exists, bool force_overwrite)
bool pf_file_read(pf_alloc* alloc, u8* path_str, u64 path_str_size, u8** out_buffer, u64* out_size, u64* out_too_big_size)
pf_lib
bool pf_lib_load(pf_alloc* alloc, pf_lib* lib, u8* name_str, u64 name_str_size)
bool pf_lib_unload(pf_alloc* alloc, pf_lib* lib)
bool pf_lib_symbol(pf_alloc* alloc, pf_lib* lib, void* symbol_ptr, u8* name_str, u64 name_str_size)
pf_time_point
bool pf_time_now(pf_alloc* alloc, pf_time_point* now)
u64 pf_time_duration_micros(pf_alloc* alloc, pf_time_point* start, pf_time_point* end)
void pf_sleep_millis(pf_alloc* alloc, u64 millis)
PF_PI_HALF_F32
PF_PI_F32
PF_TAU_F32
PF_RAD_TO_DEG_F32
PF_DEG_TO_RAD_F32
PF_GOLDEN_RATIO_F32
PF_ANGLE_12OCLOCK_F32
PF_ANGLE_6OCLOCK_F32
PF_ANGLE_3OCLOCK_F32
PF_ANGLE_9OCLOCK_F32
PF_TRI_VERTS_COUNT
f32 pf_sqrt_f32(f32 x)
f32 pf_pow_f32(f32 x, f32 y)
f32 pf_abs_f32(f32 x)
f32 pf_floor_f32(f32 x)
f32 pf_ceil_f32(f32 x)
f32 pf_fract_f32(f32 x)
f32 pf_sin_f32(f32 x)
f32 pf_sinh_f32(f32 x)
f32 pf_asin_f32(f32 x)
f32 pf_cos_f32(f32 x)
f32 pf_cosh_f32(f32 x)
f32 pf_acos_f32(f32 x)
f32 pf_tan_f32(f32 x)
f32 pf_atan_f32(f32 x)
f32 pf_atan2_f32(f32 x)
f32 pf_angle_delta_f32(f32 a, f32 b)
f32 pf_sign_f32(f32 x)
f32 pf_min_f32(f32 x, f32 min)
f32 pf_max_f32(f32 x, f32 max)
f32 pf_clamp_f32(f32 x, f32 min, f32 max)
f32 pf_clamp_0_to_1_f32(f32 x)
f32 pf_lerp_f32(f32 start, f32 end, f32 t)
f32 pf_cubic_f32(f32 x0, f32 x1, f32 x2, f32 x3, f32 t)
pf_vec2_f32
PF_VEC2_F32_STRIDE
pf_mat3x3_f32
Components are referenced as x0y0, x1y2, e.t.c.
They are stored in column-major order, where successive components represent each column in full before incrementing in row.
This is compatible with OpenGL.
pf_vec2_f32 pf_vec2_xy_f32(f32 x, f32 y)
pf_vec2_f32 pf_vec2_one_f32()
pf_vec2_f32 pf_vec2_zero_f32()
pf_vec2_f32 pf_vec2_right_f32()
pf_vec2_f32 pf_vec2_left_f32()
pf_vec2_f32 pf_vec2_up_f32()
pf_vec2_f32 pf_vec2_down_f32()
f32 pf_vec2_dot_f32(pf_vec2_f32 a, pf_vec2_f32 b)
f32 pf_vec2_length_f32(pf_vec2_f32 vec)
f32 pf_vec2_length_squared_f32(pf_vec2_f32 vec)
pf_vec2_f32 pf_vec2_normalise_f32(pf_vec2_f32 vec)
f32 pf_vec2_lookup_y_given_x_f32(pf_vec2_f32* point, u64 points_count, f32 x)
void pf_vec2_lerp_f32(pf_vec2_f32 start, pf_vec2_f32 end, f32 t, pf_vec2_f32* out_result)
pf_vec2_f32 pf_bezier_cubic_2d_f32(pf_vec2_f32 start, pf_vec2_f32 start_ctrl, pf_vec2_f32 end_ctrl, pf_vec2_f32 end, f32 u)
pf_vec2_f32* pf_spline_bezier_cubic_2d_lut_f32(pf_alloc* alloc, pf_vec2_f32* point, u64 points_count, u64 samples_count_max, u64* out_samples_count)
void pf_mat3x3_identity_f32(pf_mat3x3_f32* out_result)
void pf_mat3x3_translation_f32(pf_vec2_f32 translation, pf_mat3x3_f32 out_result)
void pf_mat3x3_rotation_f32(f32 angle, pf_mat3x3_f32* out_result)
void pf_mat3x3_scale_f32(pf_vec2_f32 scale, pf_mat3x3_f32* out_result)
void pf_mat3x3_scale_uniform_f32(f32 scale, pf_mat3x3_f32* out_result)
void pf_mat3x3_inverse_f32(pf_mat3x3_f32* mat, pf_mat3x3_f32* out_result)
void pf_mat3x3_concat_f32(pf_mat3x3_f32* xform, pf_mat3x3_f32* target)
pf_vec2_f32 pf_mat3x3_xform_vec2_f32(pf_mat3x3_f32* xform, pf_vec2_f32 target)
pf_vec3_f32
PF_VEC3_F32_STRIDE
pf_quat_f32
pf_mat4x4_f32
Components are referenced as x0y0, x1y2, e.t.c.
They are stored in column-major order, where successive components represent each column in full before incrementing in row.
This is compatible with OpenGL.
pf_vec3_f32 pf_vec3_xyz_f32(f32 x, f32 y, f32 z)
pf_vec3_f32 pf_vec3_zero_f32()
pf_vec3_f32 pf_vec3_one_f32()
pf_vec3_f32 pf_vec3_right_f32()
pf_vec3_f32 pf_vec3_left_f32()
pf_vec3_f32 pf_vec3_up_f32()
pf_vec3_f32 pf_vec3_down_f32()
pf_vec3_f32 pf_vec3_forward_f32()
pf_vec3_f32 pf_vec3_back_f32()
f32 pf_vec3_dot_f32(pf_vec3_f32 a, pf_vec3_f32 b)
void pf_vec3_cross_f32(pf_vec3_f32 a, pf_vec3_f32 b, pf_vec3_f32* out_result)
f32 pf_vec3_length_f32(pf_vec3_f32 vec)
f32 pf_vec3_length_squared_f32(pf_vec3_f32 vec)
pf_vec3_f32 pf_vec3_normalise_f32(pf_vec3_f32 vec)
void pf_vec3_lerp_f32(pf_vec3_f32 start, pf_vec3_f32 end, f32 t)
pf_quat_f32 pf_quat_identity_f32()
pf_quat_f32 pf_quat_euler_f32(pf_vec3_f32 euler)
pf_quat_f32 pf_quat_angle_axis_f32(f32 angle, pf_vec3_f32 axis)
pf_quat_f32 pf_quat_inverse_f32(pf_quat_f32 quat)
pf_quat_f32 pf_quat_look_at_f32(pf_vec3_f32 from, pf_vec3_f32 to)
pf_quat_f32 pf_quat_concat_f32(pf_quat_f32 xform, pf_quat_f32 target)
pf_quat_f32 pf_quat_normalise_f32(pf_quat_f32 quat)
void pf_quat_lerp_f32(pf_quat_f32 start, pf_quat_f32 end, f32 t, pf_quat_f32* out_result)
void pf_quat_slerp_f32(pf_quat_f32 start, pf_quat_f32 end, f32 t, pf_quat_f32* out_result)
void pf_mat4x4_identity_f32(pf_mat4x4_f32* out_result)
void pf_mat4x4_translation_f32(pf_vec3_f32 translation, pf_mat4x4_f32* out_result)
void pf_mat4x4_rotation_euler_f32(pf_vec3_f32 euler, pf_mat4x4_f32* out_result)
void pf_mat4x4_rotation_quat_f32(pf_quat_f32 quat, pf_mat4x4_f32* out_result)
void pf_mat4x4_scale_f32(pf_vec3_f32 scale, pf_mat4x4_f32* out_result)
void pf_mat4x4_scale_uniform_f32(f32 scale, pf_mat4x4_f32* out_result)
void pf_mat4x4_ortho_f32(f32 left, f32 top, f32 right, f32 bottom, f32 near, f32 far, pf_mat4x4_f32* out_result)
void pf_mat4x4_concat_f32(pf_mat4x4_f32* xform, pf_mat4x4_f32* target, pf_mat4x4_f32* out_result)
void pf_mat4x4_xform_vec3_f32(pf_mat4x4_f32* xform, pf_vec3_f32 target, pf_vec3_f32* out_result)
void pf_mat4x4_inverse_f32(pf_mat4x4_f32* mat, pf_mat4x4_f32* out_result)
void pf_colour_rgb_f32(f32 r, f32 g, f32 b, pf_vec3_f32 out_result)
pf_vec3_f32 pf_colour_red_f32()
pf_vec3_f32 pf_colour_orange_f32()
pf_vec3_f32 pf_colour_yellow_f32()
pf_vec3_f32 pf_colour_green_f32()
pf_vec3_f32 pf_colour_cyan_f32()
pf_vec3_f32 pf_colour_blue_f32()
pf_vec3_f32 pf_colour_purple_f32()
pf_vec3_f32 pf_colour_magenta_f32()
pf_vec3_f32 pf_colour_white_f32()
pf_vec3_f32 pf_colour_black_f32()
pf_vec3_f32 pf_colour_grey_f32()
void pf_colour_srgb_to_linear_srgb(f32* component, u64 components_count)
Convert colours from sRGB to linear sRGB.
void pf_colour_srgb_from_linear_srgb(f32* component, u64 components_count)
Convert colours to sRGB from linear sRGB.
void pf_colour_tonemap_filmic_f32(pf_vec3_f32* rgb_linear_srgb)
Tonemap colours from linear sRGB to sRGB using a 'filmic' transform.
void pf_colour_oklab_to_linear_srgb_f32(pf_vec3_f32* rgb_oklab)
Convert colours from linear sRGB from Oklab, a more perceptually uniform colour space by Björn Ottosson.
void pf_colour_oklab_from_linear_srgb_f32(pf_vec3_f32* rgb_linear_srgb)
Convert colours from linear sRGB to Oklab, a more perceptually uniform colour space by Björn Ottosson.
void pf_colour_okhsv_to_linear_srgb_f32(pf_vec3_f32* rgb_okhsv)
Convert colours to linear sRGB from Okhsv, a more perceptually uniform colour space by Björn Ottosson.
void pf_colour_okhsv_from_linear_srgb_f32(pf_vec3_f32* rgb_linear_srgb)
Convert colours from linear sRGB to Okhsv, a more perceptually uniform colour space by Björn Ottosson.
void pf_colour_okhsl_to_linear_srgb_f32(pf_vec3_f32* rgb_okhsl)
Convert colours to linear sRGB from Okhsl, a more perceptually uniform colour space by Björn Ottosson.
void pf_colour_okhsl_from_linear_srgb_f32(pf_vec3_f32* rgb_linear_srgb)
Convert colours from linear sRGB to Okhsl, a more perceptually uniform colour space by Björn Ottosson.
void pf_dsp_linear_to_decibel_f32()
void pf_dsp_decibel_to_linear_f32()
f32 pf_dsp_exp_smooth_f32(f32 sample, f32 result_prev, f32 factor)
f32 pf_dsp_amp_rms_f32(f32* sample, u64 samples_count, u64 window_offset, u64 window_count)
void pf_dsp_amp_peak_f32()
void pf_dsp_amp_peak_to_peak_f32()
void pf_dsp_square_f32(f32 phasor, f32 duty_cycle)
void pf_dsp_tri_f32()
void pf_dsp_sawtooth_f32(f32 phasor)
void pf_dsp_fade_in_sine_f32()
void pf_dsp_fade_out_sine_f32()
void pf_dsp_fade_in_exp_f32()
void pf_dsp_fade_out_exp_f32()
void pf_dsp_fade_in_equal_power_f32()
void pf_dsp_fade_out_equal_power_f32()
void pf_dsp_pan_linear_f32(f32 sample, f32 pan, f32* out_sample_left, f32* out_sample_right)
void pf_dsp_pan_sine_law_f32()
void pf_dsp_pan_sine_law_modified_f32()
void pf_dsp_pan_square_law_f32()
void pf_dsp_pan_square_law_modified_f32()
void pf_dsp_mid_side_encode_f32()
void pf_dsp_mid_side_decode_f32()
void pf_dsp_soft_clip_cubic_f32()
void pf_dsp_soft_clip_arctan_f32()
void pf_dsp_soft_clip_sine_f32()
void pf_dsp_soft_clip_exp_f32()
void pf_dsp_soft_clip_shockley_f32()
void pf_dsp_convolve_f32()
f32 pf_dsp_window_hann_f32(u64 sample_index, u64 samples_count)
f32 pf_dsp_window_hamming_f32(u64 sample_index, u64 samples_count)
f32 pf_dsp_window_bartlett_f32(u64 sample_index, u64 samples_count)
f32 pf_dsp_window_blackman_f32(u64 sample_index, u64 samples_count)
f32 pf_dsp_read_lerp_f32(f32* sample, u64 samples_count, f32 read_position)
void pf_dsp_write_lerp_f32(f32* sample, u64 samples_count, f32 sample_value, f32 write_position, f32 write_position_prev)
void pf_dsp_fft_f32()
void pf_dsp_fft_inverse_f32()
PF_LOG(ALLOC, FMT_CSTR, ...)
PF_LOG_CSTR(ALLOC, IDENTIFIER)
PF_LOG_U64(ALLOC, IDENTIFIER)
PF_LOG_U64_HEX(ALLOC, IDENTIFIER)
PF_LOG_U64_BIN(ALLOC, IDENTIFIER)
PF_LOG_I64(ALLOC, IDENTIFIER)
PF_LOG_F64(ALLOC, IDENTIFIER)
PF_LOG_VEC3_F32(ALLOC, IDENTIFIER)
PF_LOG_VEC2_F32(ALLOC, IDENTIFIER)
PF_LOG_MAT4_F32(ALLOC, IDENTIFIER)
PF_LOG_MAT3_F32(ALLOC, IDENTIFIER)
PF_LOG_BOOL(ALLOC, IDENTIFIER)
PF_LOG_INFO(ALLOC, FMT_CSTR, ...)
PF_LOG_WARN(ALLOC, FMT_CSTR, ...)
PF_LOG_ERR(ALLOC, FMT_CSTR, ...)
PF_PROFILE_INIT(ALLOC_PERSIST, FRAMES_CAPACITY, ENTRIES_PER_FRAME_CAPACITY, ENTRY_NAME_STR_SIZE_MAX, ENTRY_FILE_NAME_STR_SIZE_MAX)
PF_PROFILE_FRAME_BEGIN()
PF_PROFILE_ENTRY_BEGIN(NAME_CSTR)
PF_PROFILE_ENTRY_END(NAME_CSTR)
PF_PROFILE_FRAME_END()
PF_PROFILE_LOG_BY_NAME(ALLOC, NAME_CSTR)
PF_PROFILE_LOG_FRAME_DURATION(ALLOC)
enum pf_puff_entry_type
PF_PUFF_ENTRY_TYPE_U8
PF_PUFF_ENTRY_TYPE_UTF8
PF_PUFF_ENTRY_TYPE_U16
PF_PUFF_ENTRY_TYPE_U32
PF_PUFF_ENTRY_TYPE_U64
PF_PUFF_ENTRY_TYPE_I8
PF_PUFF_ENTRY_TYPE_I16
PF_PUFF_ENTRY_TYPE_I32
PF_PUFF_ENTRY_TYPE_I64
PF_PUFF_ENTRY_TYPE_F32
PF_PUFF_ENTRY_TYPE_F64
PF_PUFF_ENTRY_TYPE_F32_QUANT_U8
PF_PUFF_ENTRY_TYPE_F32_QUANT_U16
PF_PUFF_ENTRY_TYPE_F32_QUANT_U24
PF_PUFF_ENTRY_TYPE_ENUM_COUNT
pf_puff_entry
void pf_puff_entry_create(pf_alloc* alloc, pf_puff_entry* entry, u8* name_str, u64 name_str_size, enum pf_puff_entry_type type, u8* data, u64 data_count)
void pf_puff_serialise(pf_alloc* alloc, pf_puff_entry* entry, u64 entries_count, u64* out_str_size data, u64 data_count)
void pf_puff_entry_inspect_str(pf_alloc* alloc, pf_puff_entry* entry, u64 entries_count, u64 data_display_max_count, u64* out_str_size)
u64 pf_puff_deserialise(pf_alloc* alloc, u8* data, u64 data_size, pf_puff_entry** out_entry)
pf_text_renderer
enum pf_text_direction
PF_TEXT_DIRECTION_LEFT_TO_RIGHT
PF_TEXT_DIRECTION_RIGHT_TO_LEFT
PF_TEXT_DIRECTION_TOP_TO_BOTTOM
PF_TEXT_DIRECTION_BOTTOM_TO_TOP
PF_TEXT_DIRECTION_LEFT_TO_RIGHT
PF_TEXT_DIRECTION_ENUM_COUNT
void pf_text_renderer_create(pf_alloc* alloc, pf_text_renderer* text_renderer, u8** font_data, u64* font_data_size, u16* font_em_size_px, u16** font_glyph_to_bake, u64* font_glyphs_to_bake_count, u8** font_language_name_str, u64* font_language_name_str, u8** font_script_name_str, u64* font_script_name_str, u64 fonts_count, u16 atlas_padding_px, u16 atlas_width_px, u16 atlas_height_px, enum pf_text_renderer_type type)
font_language_name_str: Conforming to IETF BCP 47
font_script_name_str: Conforming to ISO 15924
void pf_text_renderer_build_mesh(pf_alloc* alloc, pf_text_text_renderer* text_renderer, u16* glyph_id, u8* glyph_font_index, pf_vec2_f32* glyph_pos, u64 glyph_count, u64* out_verts_count, pf_vec2_f32** out_vert_position, pf_vec2_f32** out_vert_texcoord, u64** out_indices, u64* out_indices_count)
void pf_text_renderer_destroy()
PF_GL_TEX_FORMAT_RGBA8
pf_gl_func_loader
void pf_gl_init(pf_alloc* alloc, pf_alloc* alloc_persist, pf_gl_func_loader load_gl_func)
bool pf_gl_build_program(pf_alloc* alloc, u8* vert_src_str, u64 vert_src_str_size, u8* frag_src_str, u64 frag_src_str_size, u32* out_prog)
u64 pf_gl_max_frag_uniforms_count()
u64 pf_gl_max_vert_uniforms_count()
u64 pf_gl_max_varyings_count()
u64 pf_gl_max_vert_attribs_count()
u64 pf_gl_max_texture_size()
u64 pf_gl_max_cubemap_texture_size()
u64 pf_gl_max_texture_units_count()
u64 pf_gl_max_renderbuffer_size()
u64 pf_gl_max_viewport_dimensions()
u8* pf_gl_renderer_cstr()
u8* pf_gl_vendor_cstr()
u8* pf_gl_version_cstr()
u8* pf_gl_glsl_version_cstr()
PF_GL(ALLOC, CALL)
enum pf_doc_record_type
PF_DOC_RECORD_TYPE_UNDEFINED,
PF_DOC_RECORD_TYPE_HEADING,
PF_DOC_RECORD_TYPE_FUNCTION,
PF_DOC_RECORD_TYPE_ENUM,
PF_DOC_RECORD_TYPE_STRUCT,
PF_DOC_RECORD_TYPE_UNION,
PF_DOC_RECORD_TYPE_TYPEDEF,
PF_DOC_RECORD_TYPE_MACRO_FUNCTION,
PF_DOC_RECORD_TYPE_MACRO,
PF_DOC_RECORD_TYPE_ENUM_COUNT
enum pf_doc_field_type
PF_DOC_FIELD_TYPE_UNDEFINED
PF_DOC_FIELD_TYPE_RECORD_TYPE
PF_DOC_FIELD_TYPE_NAME
PF_DOC_FIELD_TYPE_SUMMARY
PF_DOC_FIELD_TYPE_PARAM
PF_DOC_FIELD_TYPE_PARAM_VARIADIC
PF_DOC_FIELD_TYPE_PARAM_MACRO
PF_DOC_FIELD_TYPE_ENUM_VALUE
PF_DOC_FIELD_TYPE_RETURN
PF_DOC_FIELD_TYPE_ENUM_COUNT
pf_doc_field
pf_doc_record
u64 pf_doc_generate(pf_alloc* alloc, u8* src_str, u64 src_str_size, pf_doc_record** out_records)
u64 pf_doc_html_str_from_records(pf_alloc* alloc, pf_doc_record* record, u64 records_count, u8** out_html_str)