lardon3d/include/lardon3d/import_task.h
2026-08-08 13:22:57 +02:00

55 lines
2.1 KiB
C

#ifndef LARDON3D_IMPORT_TASK_H
#define LARDON3D_IMPORT_TASK_H
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <lardon3d/app_state.h>
#include <lardon3d/task_kind_registry.h>
#define LARDON3D_IMAGE_IMPORT_TASK_KIND "import.images"
enum { LARDON3D_IMAGE_IMPORT_TASK_KIND_VERSION = 1 };
typedef enum {
LARDON3D_IMPORT_TASK_IDLE = 0,
LARDON3D_IMPORT_TASK_RUNNING,
LARDON3D_IMPORT_TASK_SUCCEEDED,
LARDON3D_IMPORT_TASK_CANCELLED,
LARDON3D_IMPORT_TASK_FAILED
} Lardon3DImportTaskStatus;
typedef struct {
Lardon3DImportTaskStatus status;
size_t total;
size_t processed;
size_t copied;
size_t already_present;
size_t ignored;
char message[256];
} Lardon3DImportTaskSnapshot;
typedef struct Lardon3DImportTask Lardon3DImportTask;
typedef Lardon3DTaskReconstructionContext Lardon3DImageImportReconstructionContext;
Lardon3DTask *lardon3d_project_create_image_import_task(Lardon3DAppState *state,
uint64_t scanset_id,
const char *source_directory,
uint64_t *task_id);
bool lardon3d_project_enqueue_image_import(Lardon3DAppState *state, uint64_t scanset_id,
const char *source_directory, uint64_t *task_id);
bool lardon3d_image_import_reconstruct(const Lardon3DTaskDurableSnapshot *snapshot, void *context,
Lardon3DTaskKindBinding *binding);
/* Compatibilité TUI : handle léger sur une tâche de la queue, sans thread. */
Lardon3DImportTask *lardon3d_import_task_create(void);
bool lardon3d_import_task_start(Lardon3DImportTask *task, Lardon3DAppState *state,
const char *source_directory);
void lardon3d_import_task_request_cancel(Lardon3DImportTask *task);
bool lardon3d_import_task_snapshot(Lardon3DImportTask *task, Lardon3DImportTaskSnapshot *snapshot);
bool lardon3d_import_task_is_finished(Lardon3DImportTask *task);
bool lardon3d_import_task_join(Lardon3DImportTask *task);
void lardon3d_import_task_destroy(Lardon3DImportTask *task);
#endif