📄 libmng.h
字号:
/* * - added optimization option for MNG-video playback * *//* * - added processterm callback * *//* * 1.0.2 - 06/25/2001 - G.Juyn * *//* * - added late binding errorcode (not used internally) * *//* * - added option to turn off progressive refresh * *//* * * *//* * 1.0.3 - 08/06/2001 - G.Juyn * *//* * - added get function for last processed BACK chunk * *//* * * *//* ************************************************************************** */#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)#pragma option -A /* force ANSI-C */#endif#ifndef _libmng_h_#define _libmng_h_/* ************************************************************************** */#include "libmng_conf.h" /* user-specific configuration options *//* ************************************************************************** */#define MNG_CHECK_BAD_ICCP /* let's catch that sucker !!! */#ifdef MNG_SUPPORT_READ /* dependencies based on user-configuration */#define MNG_INCLUDE_READ_PROCS#endif#ifdef MNG_SUPPORT_WRITE#define MNG_INCLUDE_WRITE_PROCS#endif#ifdef MNG_SUPPORT_DISPLAY#define MNG_INCLUDE_FILTERS#define MNG_INCLUDE_INTERLACE#define MNG_INCLUDE_OBJECTS#define MNG_INCLUDE_DISPLAY_PROCS#define MNG_INCLUDE_TIMING_PROCS#define MNG_INCLUDE_ZLIB#endif#ifdef MNG_STORE_CHUNKS#define MNG_INCLUDE_ZLIB#endif#ifdef MNG_SUPPORT_IJG6B#define MNG_INCLUDE_JNG#define MNG_INCLUDE_IJG6B#define MNG_USE_SETJMP#endif#ifdef MNG_INCLUDE_JNG#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_ACCESS_CHUNKS)#define MNG_INCLUDE_JNG_READ#endif#if defined(MNG_SUPPORT_WRITE) || defined(MNG_ACCESS_CHUNKS)#define MNG_INCLUDE_JNG_WRITE#endif#endif#ifdef MNG_FULL_CMS#define MNG_INCLUDE_LCMS#endif#ifdef MNG_AUTO_DITHER#define MNG_INCLUDE_DITHERING#endif#ifdef MNG_SUPPORT_TRACE#define MNG_INCLUDE_TRACE_PROCS#ifdef MNG_TRACE_TELLTALE#define MNG_INCLUDE_TRACE_STRINGS#endif#endif#ifdef MNG_ERROR_TELLTALE#define MNG_INCLUDE_ERROR_STRINGS#endif/* ************************************************************************** */#include "libmng_types.h" /* platform-specific definitions and other assorted stuff *//* ************************************************************************** */#ifdef __cplusplusextern "C" {#endif/* ************************************************************************** *//* * * *//* * Versioning control * *//* * * *//* * version_so and version_dll will NOT reflect version_major; * *//* * these will only change for binary incompatible changes (which will * *//* * hopefully never occur) * *//* * note: they will be set to 1 on the first public release !!! * *//* * * *//* * first public release: * *//* * #define MNG_VERSION_TEXT "1.0.0" * *//* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * *//* * #define MNG_VERSION_DLL 1 eg. libmng.dll * *//* * #define MNG_VERSION_MAJOR 1 * *//* * #define MNG_VERSION_MINOR 0 * *//* * #define MNG_VERSION_RELEASE 0 * *//* * * *//* * bug fix & cosmetics : * *//* * #define MNG_VERSION_TEXT "1.0.1" * *//* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * *//* * #define MNG_VERSION_DLL 1 eg. libmng.dll * *//* * #define MNG_VERSION_MAJOR 1 * *//* * #define MNG_VERSION_MINOR 0 * *//* * #define MNG_VERSION_RELEASE 1 * *//* * * *//* * feature change : * *//* * #define MNG_VERSION_TEXT "1.2.0" * *//* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * *//* * #define MNG_VERSION_DLL 1 eg. libmng.dll * *//* * #define MNG_VERSION_MAJOR 1 * *//* * #define MNG_VERSION_MINOR 2 * *//* * #define MNG_VERSION_RELEASE 0 * *//* * * *//* * major rewrite (still binary compatible) : * *//* * #define MNG_VERSION_TEXT "2.0.0" * *//* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * *//* * #define MNG_VERSION_DLL 1 eg. libmng.dll * *//* * #define MNG_VERSION_MAJOR 2 * *//* * #define MNG_VERSION_MINOR 0 * *//* * #define MNG_VERSION_RELEASE 0 * *//* * * *//* * binary incompatible change: * *//* * #define MNG_VERSION_TEXT "13.0.0" * *//* * #define MNG_VERSION_SO 2 eg. libmng.so.2 * *//* * #define MNG_VERSION_DLL 2 eg. libmng2.dll * *//* * #define MNG_VERSION_MAJOR 13 * *//* * #define MNG_VERSION_MINOR 0 * *//* * #define MNG_VERSION_RELEASE 0 * *//* * * *//* * note that version_so & version_dll will always remain equal so it * *//* * doesn't matter which one is called to do version-checking; they are * *//* * just provided for their target platform * *//* * * *//* ************************************************************************** */#define MNG_VERSION_TEXT "1.0.4"#define MNG_VERSION_SO 1 /* eg. libmng.so.1 */#define MNG_VERSION_DLL 1 /* but: libmng.dll (!) */#define MNG_VERSION_MAJOR 1#define MNG_VERSION_MINOR 0#define MNG_VERSION_RELEASE 4MNG_EXT mng_pchar MNG_DECL mng_version_text (void);MNG_EXT mng_uint8 MNG_DECL mng_version_so (void);MNG_EXT mng_uint8 MNG_DECL mng_version_dll (void);MNG_EXT mng_uint8 MNG_DECL mng_version_major (void);MNG_EXT mng_uint8 MNG_DECL mng_version_minor (void);MNG_EXT mng_uint8 MNG_DECL mng_version_release (void);/* ************************************************************************** *//* * * *//* * MNG/PNG specification level conformance * *//* * * *//* ************************************************************************** */#define MNG_PNG_VERSION "1.2"#define MNG_PNG_VERSION_MAJ 1#define MNG_PNG_VERSION_MIN 2#define MNG_MNG_VERSION "1.0"#define MNG_MNG_VERSION_MAJ 1#define MNG_MNG_VERSION_MIN 0#define MNG_MNG_DRAFT 99 /* deprecated; only used for nEED "MNG DRAFT nn" *//* ************************************************************************** *//* * * *//* * High-level application functions * *//* * * *//* ************************************************************************** *//* library initialization function *//* must be the first called before anything can be done at all *//* initializes internal datastructure(s) */MNG_EXT mng_handle MNG_DECL mng_initialize (mng_ptr pUserdata, mng_memalloc fMemalloc, mng_memfree fMemfree, mng_traceproc fTraceproc);/* library reset function *//* can be used to re-initialize the library, so another image can be processed. there's absolutely no harm in calling it, even when it's not really necessary */MNG_EXT mng_retcode MNG_DECL mng_reset (mng_handle hHandle);/* library cleanup function *//* must be the last called to clean up internal datastructure(s) */MNG_EXT mng_retcode MNG_DECL mng_cleanup (mng_handle* hHandle);/* high-level read functions *//* use mng_read if you simply want to read a Network Graphic *//* mng_read_resume is used in I/O-read-suspension scenarios, where the "readdata" callback may return FALSE & length=0 indicating it's buffer is depleted or too short to supply the required bytes, and the buffer needs to be refilled; libmng will return the errorcode MNG_NEEDMOREDATA telling the app to refill it's read-buffer after which it must call mng_read_resume (or mng_display_resume if it also displaying the image simultaneously) */#ifdef MNG_SUPPORT_READMNG_EXT mng_retcode MNG_DECL mng_read (mng_handle hHandle);MNG_EXT mng_retcode MNG_DECL mng_read_resume (mng_handle hHandle);#endif/* high-level write & create functions *//* use this if you want to write a previously read Network Graphic or if you want to create a new graphic and write it *//* to write a previously read graphic you must have defined MNG_STORE_CHUNKS *//* to create a new graphic you'll also need access to the chunks (eg. #define MNG_ACCESS_CHUNKS !) */#ifdef MNG_SUPPORT_WRITEMNG_EXT mng_retcode MNG_DECL mng_write (mng_handle hHandle);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -