V2.0.0
This commit is contained in:
commit
9020ded6ce
95 files changed
+11394
No files matched your search
@@ -0,0 +1,56 @@
|
||||
/* Archivos: proyectos .tgb, importación de imágenes y exportación.
|
||||
* Toda lectura valida el contenido y devuelve errores con mensaje claro
|
||||
* (tgb_last_error). Todo guardado es atómico: se escribe un temporal en la
|
||||
* misma carpeta y se reemplaza el destino solo si todo salió bien. */
|
||||
#ifndef TAHGIBU_IO_H
|
||||
#define TAHGIBU_IO_H
|
||||
|
||||
#include "tahgibu/document.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define TGB_MAX_FILE_BYTES (512u * 1024u * 1024u) /* tamaño máximo de un .tgb */
|
||||
#define TGB_MAX_PIXEL_MEMORY ((size_t)2048u * 1024u * 1024u) /* memoria máxima de píxeles al cargar */
|
||||
|
||||
tgb_status tgb_document_load(tgb_context *ctx, const char *path, tgb_document **out);
|
||||
tgb_status tgb_document_load_memory(tgb_context *ctx, const uint8_t *data, size_t len,
|
||||
tgb_document **out);
|
||||
|
||||
typedef struct tgb_save_options {
|
||||
bool include_flat_frames; /* true: añade "frames" aplanados para lectores del formato 2 */
|
||||
bool legacy_v2; /* true: escribe formato 2 (una imagen por fotograma, SIN capas
|
||||
ni puntos de recuperación: se pierde información) */
|
||||
} tgb_save_options;
|
||||
void tgb_save_options_defaults(tgb_save_options *opts); /* include_flat_frames=true */
|
||||
|
||||
/* path NULL = usar la ruta asociada al documento. Tras guardar bien, asocia
|
||||
* la ruta y marca el documento como guardado (salvo en modo legacy_v2). */
|
||||
tgb_status tgb_document_save(tgb_document *doc, const char *path, const tgb_save_options *opts);
|
||||
/* Serializa a memoria; libera *out_data con tgb_free. No cambia el estado del documento. */
|
||||
tgb_status tgb_document_save_memory(const tgb_document *doc, const tgb_save_options *opts,
|
||||
uint8_t **out_data, size_t *out_len);
|
||||
void tgb_free(void *p);
|
||||
|
||||
/* PNG (8 bits RGBA al escribir; al leer: 8/16 bits, gris/RGB/paleta/+alfa,
|
||||
* sin entrelazado). */
|
||||
tgb_status tgb_png_decode_memory(const uint8_t *data, size_t len, tgb_canvas **out);
|
||||
tgb_status tgb_png_encode_memory(const tgb_canvas *canvas, uint8_t **out_data, size_t *out_len);
|
||||
|
||||
/* Importa un PNG como NUEVO fotograma en frame_index, dibujado en la capa
|
||||
* layer_index (centrado; se recorta si es mayor que el documento). Una sola
|
||||
* operación deshacible. */
|
||||
tgb_status tgb_import_png(tgb_document *doc, const char *path, size_t frame_index,
|
||||
size_t layer_index, uint32_t *out_frame_id);
|
||||
/* Exporta un fotograma aplanado a PNG. */
|
||||
tgb_status tgb_export_png(const tgb_document *doc, size_t frame_index, const char *path);
|
||||
/* Exporta todos los fotogramas: <dir>/<prefix>_0001.png ... */
|
||||
tgb_status tgb_export_png_sequence(const tgb_document *doc, const char *dir, const char *prefix);
|
||||
/* Exporta una animación APNG (PNG animado) respetando la duración de cada fotograma. */
|
||||
tgb_status tgb_export_apng(const tgb_document *doc, const char *path);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
Reference in new issue
Block a user