Configuration options in libmng
===============================

The library is fairly configurable through the use of a number of defines.
Please note however that certain defines are for internal use only.
The following list gives a summary of options that can be used externally to
define the functionality of the library:

========================================

#define MNG_BUILD_DLL

This is used to indicate that a "standard" DLL should result from compiling
the library. Please note the remarks in README.dll if you intend to work
with the library as a DLL. The purpose of this option is to ensure that
DLL builds have the same set of functions.

#define MNG_BUILD_SO

This is used to indicate that a "standard" shared library (SO) should result
from a compilation. The purpose of this option is to ensure that all
shared libraries generated this way will have the same set of functions.

#define MNG_USE_DLL / #define MNG_USE_SO

These should be used when including the library header in the compilation
of an application to indicate that the compiler/linker must take the
necessary steps to make the binary executable to use the standard DLL
or shared library (SO).

#define MNG_SKIP_ZLIB / #define MNG_SKIP_LCMS / #define MNG_SKIP_IJG6B

Use these in conjunction with MNG_USE_DLL / MNG_USE_SO. This is useful if
you only need the external definitions of the MNG library and not the others,
which will speed up the compilation process.

#define MNG_SUPPORT_FULL / #define MNG_SUPPORT_LC / #define MNG_SUPPORT_VLC

These can be used to indicate the level of MNG spec compliance required.
Currently only full MNG compliance is supported.

#define MNG_SUPPORT_IJG6B

This can be used to indicate if JNG support is required. This option will
include the IJG JPEG-library. Note that MNG_SUPPORT_FULL will automatically
set this option. Use this only if you need JNG support with MNG-(V)LC.

#define MNG_FULL_CMS / #define MNG_GAMMA_ONLY / #define MNG_NO_CMS /
#define MNG_APP_CMS

These indicate the color-correction support level of the library.
If you are on a platform that supports lcms (Little CMS by Marti Maria Saguar)
then it is highly recommended to define MNG_FULL_CMS.
If your platform has it's own CMS then select MNG_APP_CMS and be sure to
include the appropriate callbacks in your app.
In all other cases it is recommended to define MNG_GAMMA_ONLY.

#define MNG_SUPPORT_READ / #define MNG_SUPPORT_WRITE /
#define MNG_SUPPORT_DISPLAY

These indicate the high-level support for reading, writing and/or
displaying files. Note that in order to display a file, you'll need to read
it first. (yes, really!)

#define MNG_STORE_CHUNKS

This indicates that the library should store chunk-information when reading
a file. This information can then be processed through the
MNG_ITERATE_CHUNKS() function. Note that you must specify this option if
you want to create and write a new file.

#define MNG_ACCESS_CHUNKS

This is used to indicate that the app may need access to internally stored
chunk information. MNG_STORE_CHUNKS must be defined as well for this option
to function properly.

#define MNG_INTERNAL_MEMMNGMT

You can use this to have the library handle it's own memory allocation and
deallocation through the "standard" memory functions. This option is turned
off by default, which means your app must define the memory callbacks.

#define MNG_ERROR_TELLTALE

Set this on to allow human-readable error-messages to be included in the
library and the error function and callback.

#define MNG_BIGENDIAN_SUPPORTED

This option should be used to indicate the hardware is based on big endian
integers.

#define MNG_SUPPORT_TRACE / #define MNG_TRACE_TELLTALE

These two can be used when debugging an app. You'll need to have the trace
callback setup also. This allows for a rather thorough investigation of the
libraries function paths.

========================================

Any other optional defines you may encounter are for internal use only.
please do not specify them externally. In case of doubt, consult the
support email lists. More info can be found on http://www.libmng.com
