summaryrefslogtreecommitdiff
path: root/pngconf.h
diff options
context:
space:
mode:
Diffstat (limited to 'pngconf.h')
-rw-r--r--pngconf.h170
1 files changed, 100 insertions, 70 deletions
diff --git a/pngconf.h b/pngconf.h
index 35b5b967a..03df32592 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,10 +1,10 @@
/* pngconf.c - machine configurable file for libpng
- libpng 1.0 beta 3 - version 0.89
+ libpng 1.0 beta 4 - version 0.90
For conditions of distribution and use, see copyright notice in png.h
Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
- May 25, 1996
+ December 3, 1996
*/
/* Any machine specific code is near the front of this file, so if you
@@ -15,7 +15,7 @@
#ifndef PNGCONF_H
#define PNGCONF_H
-/* this is the size of the compression buffer, and thus the size of
+/* This is the size of the compression buffer, and thus the size of
an IDAT chunk. Make this whatever size you feel is best for your
machine. One of these will be allocated per png_struct. When this
is full, it writes the data to the disk, and does some other
@@ -29,14 +29,7 @@
#define PNG_ZBUF_SIZE 8192
-/* While libpng currently uses zlib for it's compression, it has been designed
- to stand on it's own. Towards this end, there are two defines that are
- used to help portability between machines. To make it simpler to
- setup libpng on a machine, this currently uses zlib's definitions, so
- any changes should be made in zlib. Libpng will check zlib's settings
- and adjust it's own accordingly. */
-
-/* if you are running on a machine where you cannot allocate more then
+/* If you are running on a machine where you cannot allocate more then
64K of memory, uncomment this. While libpng will not normally need
that much memory in a chunk (unless you load up a very large file),
zlib needs to know how big of a chunk it can use, and libpng thus
@@ -48,7 +41,7 @@
#define PNG_MAX_ALLOC_64K
#endif
-/* this protects us against compilers which run on a windowing system
+/* This protects us against compilers which run on a windowing system
and thus don't have or would rather us not use the stdio types:
stdin, stdout, and stderr. The only one currently used is stderr
in png_error() and png_warning(). #defining PNG_NO_STDIO will
@@ -56,14 +49,19 @@
/* #define PNG_NO_STDIO */
-/* this macro protects us against machines that don't have function
- prototypes. If your compiler does not handle function prototypes,
- define this macro. I've always been able to use _NO_PROTO as the
- indicator, but you may need to drag the empty declaration out in
- front of here, or change the ifdef to suit your own needs. */
+/* for FILE. If you are not using standard io, you don't need this */
+#ifndef PNG_NO_STDIO
+#include <stdio.h>
+#endif
+
+/* This macro protects us against machines that don't have function
+ prototypes (ie K&R style headers). If your compiler does not handle
+ function prototypes, define this macro. I've always been able to use
+ _NO_PROTO as the indicator, but you may need to drag the empty declaration
+ out in front of here, or change the ifdef to suit your own needs. */
#ifndef PNGARG
-#ifdef OF
+#ifdef OF /* Zlib prototype munger */
#define PNGARG(arglist) OF(arglist)
#else
@@ -77,39 +75,65 @@
#endif /* PNGARG */
+/* Try to determine if we are compiling on a Mac */
+#if defined(__MWERKS__) ||defined(applec) ||defined(THINK_C) ||defined(__SC__)
+#define MACOS
+#endif
+
/* enough people need this for various reasons to include it here */
#if !defined(MACOS) && !defined(RISCOS)
#include <sys/types.h>
#endif
+
/* need the time information for reading tIME chunks */
#include <time.h>
-/* for FILE. If you are not using standard io, you don't need this */
-#include <stdio.h>
+/* This is an attempt to force a single setjmp behaviour on Linux */
+#ifdef linux
+#ifdef _BSD_SOURCE
+#define _PNG_SAVE_BSD_SOURCE
+#undef _BSD_SOURCE
+#endif
+#ifdef _SETJMP_H
+error: png.h already includes setjmp.h
+#endif
+#endif /* linux */
/* include setjmp.h for error handling */
#include <setjmp.h>
+#ifdef linux
+#ifdef _PNG_SAVE_BSD_SOURCE
+#define _BSD_SOURCE
+#undef _PNG_SAVE_BSD_SOURCE
+#endif
+#endif /* linux */
+
#ifdef BSD
#include <strings.h>
#else
#include <string.h>
#endif
-/* other defines for things like memory and the like can go here. These
+/* Other defines for things like memory and the like can go here. These
are the only files included in libpng, so if you need to change them,
change them here. They are only included if PNG_INTERNAL is defined. */
#ifdef PNG_INTERNAL
#include <stdlib.h>
#include <ctype.h>
-#include <math.h>
-/* other defines specific to compilers can go here. Try to keep
+/* Other defines specific to compilers can go here. Try to keep
them inside an appropriate ifdef/endif pair for portability */
-/* for some reason, Borland C++ defines memcmp, etc. in mem.h, not
+#ifdef MACOS
+#include <fp.h>
+#else
+#include <math.h>
+#endif
+
+/* For some reason, Borland C++ defines memcmp, etc. in mem.h, not
stdlib.h like it should (I think). Or perhaps this is a C++
- feature */
+ feature? */
#ifdef __TURBOC__
#include <mem.h>
#include "alloc.h"
@@ -119,17 +143,17 @@
#include <malloc.h>
#endif
-/* this controls how fine the dithering gets. As this allocates
+/* This controls how fine the dithering gets. As this allocates
a largish chunk of memory (32K), those who are not as concerned
- with dithering quality can decrease some or all of these */
+ with dithering quality can decrease some or all of these. */
#define PNG_DITHER_RED_BITS 5
#define PNG_DITHER_GREEN_BITS 5
#define PNG_DITHER_BLUE_BITS 5
-/* this controls how fine the gamma correction becomes when you
+/* This controls how fine the gamma correction becomes when you
are only interested in 8 bits anyway. Increasing this value
results in more memory being used, and more pow() functions
- being called to fill in the gamma tables. Don't get this
+ being called to fill in the gamma tables. Don't set this
value less then 8, and even that may not work (I haven't tested
it). */
@@ -137,32 +161,33 @@
#endif /* PNG_INTERNAL */
-/* the following uses const char * instead of char * for error
+/* The following uses const char * instead of char * for error
and warning message functions, so some compilers won't complain.
If you want to use const, define PNG_USE_CONST here. It is not
normally defined to make configuration easier, as it is not a
critical part of the code.
*/
+#define PNG_USE_CONST
+
#ifdef PNG_USE_CONST
# define PNG_CONST const
#else
# define PNG_CONST
#endif
-/* The following defines give you the ability to remove code
- from the library that you will not be using. I wish I
- could figure out how to automate this, but I can't do
- that without making it seriously hard on the users. So
- if you are not using an ability, change the #define to
- and #undef, and that part of the library will not be
- compiled. If your linker can't find a function, you
- may want to make sure the ability is defined here.
- Some of these depend upon some others being defined.
- I haven't figured out all the interactions here, so
- you may have to experiment awhile to get everything
- to compile.
- */
+/* The following defines give you the ability to remove code from the
+ library that you will not be using. I wish I could figure out how to
+ automate this, but I can't do that without making it seriously hard
+ on the users. So if you are not using an ability, change the #define
+ to and #undef, and that part of the library will not be compiled. If
+ your linker can't find a function, you may want to make sure the
+ ability is defined here. Some of these depend upon some others being
+ defined. I haven't figured out all the interactions here, so you may
+ have to experiment awhile to get everything to compile. If you are
+ creating or using a shared library, you probably shouldn't touch this,
+ as it will affect the size of the structures, and this will cause bad
+ things to happen if the library and/or application ever change. */
/* Any transformations you will not be using can be undef'ed here */
#define PNG_PROGRESSIVE_READ_SUPPORTED
@@ -179,7 +204,6 @@
#define PNG_READ_FILLER_SUPPORTED
#define PNG_READ_GAMMA_SUPPORTED
#define PNG_READ_GRAY_TO_RGB_SUPPORTED
-#undef PNG_CORRECT_PALETTE_SUPPORTED
#define PNG_WRITE_INTERLACING_SUPPORTED
#define PNG_WRITE_SHIFT_SUPPORTED
@@ -190,6 +214,10 @@
#define PNG_WRITE_FILLER_SUPPORTED
#define PNG_WRITE_FLUSH_SUPPORTED
+/* These functions are turned off by default, as they will be phased out. */
+#undef PNG_USE_OWN_CRC
+#undef PNG_CORRECT_PALETTE_SUPPORTED
+
/* any chunks you are not interested in, you can undef here. The
ones that allocate memory may be expecially important (hIST,
tEXt, zTXt, tRNS) Others will just save time and make png_info
@@ -221,10 +249,10 @@
#define PNG_WRITE_tEXt_SUPPORTED
#define PNG_WRITE_zTXt_SUPPORTED
-/* some typedefs to get us started. These should be safe on most of the
- common platforms. The typedefs should be at least as large
- as the numbers suggest (a png_uint_32 must be at least 32 bits long),
- but they don't have to be exactly that size. */
+/* Some typedefs to get us started. These should be safe on most of the
+ common platforms. The typedefs should be at least as large as the
+ numbers suggest (a png_uint_32 must be at least 32 bits long), but they
+ don't have to be exactly that size. */
typedef unsigned long png_uint_32;
typedef long png_int_32;
@@ -232,7 +260,7 @@ typedef unsigned short png_uint_16;
typedef short png_int_16;
typedef unsigned char png_byte;
-/* this is usually size_t. it is typedef'ed just in case you need it to
+/* This is usually size_t. It is typedef'ed just in case you need it to
change (I'm not sure if you will or not, so I thought I'd be safe) */
typedef size_t png_size_t;
@@ -243,10 +271,10 @@ typedef size_t png_size_t;
model independent data. As of version Zlib .95, the necessary changes
have been made in Zlib. The USE_FAR_KEYWORD define triggers other
changes that are needed. Most of the far keyword changes are hidden
- inside typedefs with suffix "f". Tim Wegner */
+ inside typedefs with suffix "f". (Tim Wegner) */
-/* SJT: Separate compiler dependencies */
-/* SJT: problem here is that zlib.h always defines FAR */
+/* Separate compiler dependencies (problem here is that zlib.h always
+ defines FAR. (SJT) */
#ifdef __BORLANDC__
#if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__)
#define LDATA 1
@@ -263,9 +291,9 @@ typedef size_t png_size_t;
#define USE_FAR_KEYWORD
#endif /* LDATA != 1 */
-/* SJT: Possibly useful for moving data out of default segment.
- Uncomment it if you want. Could also define FARDATA as const
- if your compiler supports it.
+/* Possibly useful for moving data out of default segment.
+ Uncomment it if you want. Could also define FARDATA as
+ const if your compiler supports it. (SJT)
# define FARDATA FAR
*/
#endif /* __WIN32__, __FLAT__ */
@@ -273,16 +301,16 @@ typedef size_t png_size_t;
#endif /* __BORLANDC__ */
-/* SJT: Suggest testing for specific compiler first before
- testing for FAR. The Watcom compiler defines both __MEDIUM__
- and M_I86MM, making reliance oncertain keywords suspect
-*/
+/* Suggest testing for specific compiler first before testing for
+ FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM,
+ making reliance oncertain keywords suspect. (SJT) */
/* MSC Medium model */
#if defined(FAR)
# if defined(M_I86MM)
# define USE_FAR_KEYWORD
-# define FARDATA FAR /* SJT: added */
+# define FARDATA FAR
+# include <dos.h>
# endif
#endif
@@ -293,21 +321,16 @@ typedef size_t png_size_t;
/* SJT: At this point FAR is always defined */
-/* not used anymore, but kept for compatability */
-typedef unsigned char FAR png_bytef;
-
/* SJT: */
#ifndef FARDATA
#define FARDATA
#endif
-/* End medium model changes to be in zconf.h */
-
-/* SJT: More typedefs */
-typedef void FAR * png_voidp;
-
+/* Not used anymore (as of 0.88), but kept for compatability (for now). */
+typedef unsigned char FAR png_bytef;
/* SJT: Add typedefs for pointers */
+typedef void FAR * png_voidp;
typedef png_byte FAR * png_bytep;
typedef png_uint_32 FAR * png_uint_32p;
typedef png_int_32 FAR * png_int_32p;
@@ -332,12 +355,17 @@ typedef char FAR * FAR * png_charpp;
*/
typedef charf * png_zcharp;
typedef charf * FAR * png_zcharpp;
-typedef z_stream * png_zstreamp; /* zlib won't accept far z_stream */
-
+typedef z_stream FAR * png_zstreamp;
/* User may want to use these so not in PNG_INTERNAL. Any library functions
that are passed far data must be model independent. */
+
#if defined(USE_FAR_KEYWORD) /* memory model independent fns */
+/* use this to make far-to-near assignments */
+# define CHECK 1
+# define NOCHECK 0
+# define CVT_PTR(ptr) (far_to_near(png_ptr,ptr,CHECK))
+# define CVT_PTR_NOCHECK(ptr) (far_to_near(png_ptr,ptr,NOCHECK))
# define png_strcpy _fstrcpy
# define png_strcat _fstrcat
# define png_strlen _fstrlen
@@ -346,6 +374,8 @@ typedef z_stream * png_zstreamp; /* zlib won't accept far z_stream */
# define png_memcpy _fmemcpy
# define png_memset _fmemset
#else /* use the usual functions */
+# define CVT_PTR(ptr) (ptr)
+# define CVT_PTR_NOCHECK(ptr) (ptr)
# define png_strcpy strcpy
# define png_strcat strcat
# define png_strlen strlen