improve PNG doxygen

This commit is contained in:
Thomas Bernard 2019-01-02 01:42:54 +01:00
parent 3e1d6b165d
commit fa90928a50
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C

View File

@ -6144,6 +6144,14 @@ void Save_XPM(T_IO_Context* context)
} }
//////////////////////////////////// PNG //////////////////////////////////// //////////////////////////////////// PNG ////////////////////////////////////
/**
* @defgroup PNG PNG format
* @ingroup loadsaveformats
* Portable Network Graphics
*
* We make use of libpng : http://www.libpng.org/pub/png/libpng.html
* @{
*/
#ifndef __no_pnglib__ #ifndef __no_pnglib__
@ -6235,6 +6243,7 @@ static int PNG_read_unknown_chunk(png_structp ptr, png_unknown_chunkp chunk)
} }
/// Private structure used in PNG_memory_read() and PNG_memory_write()
struct PNG_memory_buffer { struct PNG_memory_buffer {
char * buffer; char * buffer;
unsigned long offset; unsigned long offset;
@ -6624,6 +6633,7 @@ void Load_PNG(T_IO_Context * context)
} }
/// Write to memory buffer
static void PNG_memory_write(png_structp png_ptr, png_bytep p, png_size_t count) static void PNG_memory_write(png_structp png_ptr, png_bytep p, png_size_t count)
{ {
struct PNG_memory_buffer * buffer = (struct PNG_memory_buffer *)png_get_io_ptr(png_ptr); struct PNG_memory_buffer * buffer = (struct PNG_memory_buffer *)png_get_io_ptr(png_ptr);
@ -6644,12 +6654,19 @@ static void PNG_memory_write(png_structp png_ptr, png_bytep p, png_size_t count)
buffer->offset += count; buffer->offset += count;
} }
/// do nothing
static void PNG_memory_flush(png_structp png_ptr) static void PNG_memory_flush(png_structp png_ptr)
{ {
struct PNG_memory_buffer * buffer = (struct PNG_memory_buffer *)png_get_io_ptr(png_ptr); struct PNG_memory_buffer * buffer = (struct PNG_memory_buffer *)png_get_io_ptr(png_ptr);
GFX2_Log(GFX2_DEBUG, "PNG_memory_flush(%p) (io_ptr=%p)\n", png_ptr, buffer); GFX2_Log(GFX2_DEBUG, "PNG_memory_flush(%p) (io_ptr=%p)\n", png_ptr, buffer);
} }
/// Save a PNG to file or memory
/// @param context the IO context
/// @param file the FILE to write to or NULL to write to memory
/// @param buffer will receive a malloc'ed buffer if writting to memory
/// @param buffer_size will receive the PNG size in memory
void Save_PNG_Sub(T_IO_Context * context, FILE * file, char * * buffer, unsigned long * buffer_size) void Save_PNG_Sub(T_IO_Context * context, FILE * file, char * * buffer, unsigned long * buffer_size)
{ {
static png_bytep * Row_pointers = NULL; static png_bytep * Row_pointers = NULL;
@ -6671,6 +6688,7 @@ void Save_PNG_Sub(T_IO_Context * context, FILE * file, char * * buffer, unsigned
png_init_io(png_ptr, file); png_init_io(png_ptr, file);
else else
{ {
// to write to memory, use png_set_write_fn() instead of calling png_init_io()
memset(&memory_buffer, 0, sizeof(memory_buffer)); memset(&memory_buffer, 0, sizeof(memory_buffer));
png_set_write_fn(png_ptr, &memory_buffer, PNG_memory_write, PNG_memory_flush); png_set_write_fn(png_ptr, &memory_buffer, PNG_memory_write, PNG_memory_flush);
} }
@ -6829,6 +6847,7 @@ void Save_PNG_Sub(T_IO_Context * context, FILE * file, char * * buffer, unsigned
} }
} }
/// Save a PNG file /// Save a PNG file
void Save_PNG(T_IO_Context * context) void Save_PNG(T_IO_Context * context)
{ {
@ -6849,4 +6868,4 @@ void Save_PNG(T_IO_Context * context)
File_error = 1; File_error = 1;
} }
#endif // __no_pnglib__ #endif // __no_pnglib__
/** @} */