#pragma once #include #include #include #ifdef __cplusplus extern "C" { #endif #define KHA_MAX_PATH_LENGTH 256 - 1 typedef int64_t kha_index_t; typedef enum { KHA_FILE_TYPE_BLOB, KHA_FILE_TYPE_IMAGE, KHA_FILE_TYPE_SOUND } kha_file_type_t; typedef struct { uint8_t *bytes; size_t size; } kha_blob_t; typedef struct { bool readable; kinc_image_t image; } kha_image_t; typedef struct { float *samples; uint8_t *compressed_samples; size_t size; size_t channels; int sample_rate; float length; } kha_sound_t; typedef union { kha_blob_t blob; kha_image_t image; kha_sound_t sound; } kha_file_data_t; typedef struct { char name[KHA_MAX_PATH_LENGTH + 1]; kha_file_type_t type; kha_file_data_t data; kha_index_t index; bool error; } kha_file_reference_t; void kha_loader_init(void); kha_index_t kha_loader_load_blob(const char *filename); kha_index_t kha_loader_load_image(const char *filename, bool readable); kha_index_t kha_loader_load_sound(const char *filename); kha_file_reference_t kha_loader_get_file(void); // cleanup temporary memory allocations void kha_loader_cleanup_blob(kha_blob_t blob); void kha_loader_cleanup_sound(kha_sound_t sound); #ifdef __cplusplus } #endif