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