1b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# read.dfa
2b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#  Build time configuration of libpng
3b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#
4b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# Author: John Bowler
5b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# Copyright: (c) John Bowler, 2013
6b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# Usage rights:
7b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#  To the extent possible under law, the author has waived all copyright and
8b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#  related or neighboring rights to this work.  This work is published from:
9b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#  United States.
10b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#
11b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# Build libpng with basic read support.  This enables the lowest level libpng
12b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# read API - the one where the calling code has to use a loop to read each row.
13b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# At present this is the API used by most programs.
14b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#
15b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# Support is enabled only for those chunks and transformations that are
16b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# typically required - others can be added easily.
17b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#
18b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari
19b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurarieverything = off
20b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari
21b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# The sequential read code is enabled here; the progressive code can be used
22b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# instead but there is no point enabling both.
23b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari
24b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurarioption SEQUENTIAL_READ on
25b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari
26b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# Likewise it is pointless enabling both fixed and floating point APIs.  Choose
27b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# one or the other for both the API and the internal math.
28b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari
29b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#Fixed point:
30b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#option FIXED_POINT on
31b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#option FLOATING_ARITHMETIC off
32b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari
33b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#Floating point:
34b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurarioption FLOATING_POINT on
35b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurarioption FLOATING_ARITHMETIC on
36b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari
37b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# Basic error handling, IO and user memory support.  The latter allows the
38b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# application program to provide its own implementations of 'malloc' and 'free'.
39b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurarioption SETJMP on
40b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurarioption STDIO on
41b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurarioption USER_MEM on
42b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari
43b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# To read the full set of PNG images correctly interlace, transparency and
44b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# 16-bit support is required.  The application can implement interlace itself,
45b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# but very few do and it's no longer possible to disable it when READ is
46b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# enabled.
47b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurarioption READ_tRNS on
48b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurarioption READ_16BIT on
49b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari
50b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# Everything else is application dependent.  This file assumes the app handles
51b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# all the native PNG bit layouts, so it doesn't need any of layout change
52b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# transforms, but needs libpng to perform gamma correction.  It doesn't do any
53b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# colorspace stuff and ignores the 'significant bit' information.
54b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari#
55b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# If your app always expands the image to a limited set of bit layouts you
56b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# probably want to consider using the simplified API instead of the low level
57b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurari# one - see png.h and s_read.dfa.
58b478e66e7c2621eef5f465e4629ce642db00716bSireesh Tripurarioption READ_GAMMA on
59