about summary refs log tree commit diff
path: root/src/engine/client/pnglite/pnglite.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/client/pnglite/pnglite.h')
-rw-r--r--src/engine/client/pnglite/pnglite.h212
1 files changed, 212 insertions, 0 deletions
diff --git a/src/engine/client/pnglite/pnglite.h b/src/engine/client/pnglite/pnglite.h
new file mode 100644
index 00000000..012a38d1
--- /dev/null
+++ b/src/engine/client/pnglite/pnglite.h
@@ -0,0 +1,212 @@
+/*  pnglite.h - Interface for pnglite library

+	Copyright (c) 2007 Daniel Karling

+

+	This software is provided 'as-is', without any express or implied

+	warranty. In no event will the authors be held liable for any damages

+	arising from the use of this software.

+

+	Permission is granted to anyone to use this software for any purpose,

+	including commercial applications, and to alter it and redistribute it

+	freely, subject to the following restrictions:

+

+	1. The origin of this software must not be misrepresented; you must not

+	   claim that you wrote the original software. If you use this software

+	   in a product, an acknowledgment in the product documentation would be

+	   appreciated but is not required.  

+

+	2. Altered source versions must be plainly marked as such, and must not be

+	   misrepresented as being the original software.

+

+	3. This notice may not be removed or altered from any source

+	   distribution.

+

+	Daniel Karling

+	daniel.karling@gmail.com

+ */

+

+

+#ifndef _PNGLITE_H_

+#define _PNGLITE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif

+

+/*

+	Enumerations for pnglite.

+	Negative numbers are error codes and 0 and up are okay responses.

+*/

+

+enum

+{

+	PNG_DONE				= 1,

+	PNG_NO_ERROR			= 0,

+	PNG_FILE_ERROR			= -1,

+	PNG_HEADER_ERROR		= -2,

+	PNG_IO_ERROR			= -3,

+	PNG_EOF_ERROR			= -4,

+	PNG_CRC_ERROR			= -5,

+	PNG_MEMORY_ERROR		= -6,

+	PNG_ZLIB_ERROR			= -7,

+	PNG_UNKNOWN_FILTER		= -8,

+	PNG_NOT_SUPPORTED		= -9,

+	PNG_WRONG_ARGUMENTS		= -10

+};

+

+/*

+	The five different kinds of color storage in PNG files.

+*/

+

+enum

+{

+	PNG_GREYSCALE			= 0,

+	PNG_TRUECOLOR			= 2,

+	PNG_INDEXED				= 3,

+	PNG_GREYSCALE_ALPHA		= 4,

+	PNG_TRUECOLOR_ALPHA		= 6

+};

+

+/*

+	Typedefs for callbacks.

+*/

+

+typedef unsigned (*png_read_callback_t)(void* output, unsigned size, unsigned numel, void* user_pointer);

+typedef void (*png_free_t)(void* p);

+typedef void * (*png_alloc_t)(unsigned s);

+

+typedef struct

+{

+	void*					zs;				// pointer to z_stream

+	png_read_callback_t		read_fun;

+	void*					user_pointer;

+

+	unsigned char*			png_data;

+	unsigned				png_datalen;

+

+	unsigned				width;

+	unsigned				height;

+	unsigned char			depth;

+	unsigned char			color_type;

+	unsigned char			compression_method;

+	unsigned char			filter_method;

+	unsigned char			interlace_method;

+	unsigned char			bpp;

+}png_t;

+

+/*

+	Function: png_init

+

+	This function initializes pnglite. The parameters can be used to set your own memory allocation routines following these formats:

+

+	> void* (*custom_alloc)(size_t s)

+	> void (*custom_free)(void* p)

+	Parameters:

+		pngalloc - Pointer to custom allocation routine. If 0 is passed, malloc from libc will be used.

+		pngfree - Pointer to custom free routine. If 0 is passed, free from libc will be used.

+

+	Returns:

+		Always returns PNG_NO_ERROR.

+*/

+

+int png_init(png_alloc_t pngalloc, png_free_t pngfree);

+

+/*

+	Function: png_open_file

+

+	This function is used to open a png file with the internal file IO system. This function should be used instead of

+	png_open if no custom read function is used.

+

+	Parameters:

+		png - Empty png_t struct.

+		filename - Filename of the file to be opened.

+

+	Returns:

+		PNG_NO_ERROR on success, otherwise an error code.

+*/

+

+int png_open_file(png_t *png, const char* filename);

+

+/*

+	Function: png_open

+

+	This function reads a png from the specified callback. The callback should be of the format:

+

+	> size_t (*png_read_callback_t)(void* output, size_t size, size_t numel, void* user_pointer).

+

+	The callback will be called each time pnglite needs more data. The callback should read as much data as requested, 

+	or return 0. This should always be possible if the PNG is sane.	If the output-buffer is a null-pointer the callback 

+	should only skip ahead the specified number of elements. If the callback is a null-pointer the user_pointer will be 

+	treated as a file pointer (use png_open_file instead).

+

+	Parameters:

+		png - png_t struct

+		read_fun - Callback function for reading.

+		user_pointer - User pointer to be passed to read_fun.

+

+	Returns:

+		PNG_NO_ERROR on success, otherwise an error code.

+*/

+

+int png_open(png_t* png, png_read_callback_t read_fun, void* user_pointer);

+

+/*

+	Function: png_print_info

+

+	This function prints some info about the opened png file to stdout.

+

+	Parameters:

+		png - png struct to get info from.

+*/

+

+void png_print_info(png_t* png);

+

+/*

+	Function: png_error_string

+

+	This function translates an error code to a human readable string.

+

+	Parameters:

+		error - Error code.

+

+	Returns:

+		Pointer to string.

+*/

+

+char* png_error_string(int error);

+

+/*

+	Function: png_get_data

+

+	This function decodes the opened png file and stores the result in data. data should be big enough to hold the decoded png. Required size will be:

+	

+	> width*height*(bytes per pixel)

+

+	Parameters:

+		data - Where to store result.

+

+	Returns:

+		PNG_NO_ERROR on success, otherwise an error code.

+*/

+

+int png_get_data(png_t* png, unsigned char* data);

+

+/*

+	Function: png_close_file

+

+	Closes an open png file pointer. Should only be used when the png has been opened with png_open_file.

+

+	Parameters:

+		png - png to close.

+	

+	Returns:

+		PNG_NO_ERROR

+*/

+

+int png_close_file(png_t* png);

+
+#ifdef __cplusplus
+}
+#endif
+
+

+#endif