1893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project/*---------------------------------------------------------------------------
2893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
3893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project   rpng - simple PNG display program                              readpng.h
4893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
5893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project  ---------------------------------------------------------------------------
6893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
7893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      Copyright (c) 1998-2007 Greg Roelofs.  All rights reserved.
8893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      This software is provided "as is," without warranty of any kind,
10893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      express or implied.  In no event shall the author or contributors
11893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      be held liable for any damages arising in any way from the use of
12893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      this software.
13893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
14893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      The contents of this file are DUAL-LICENSED.  You may modify and/or
15893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      redistribute this software according to the terms of one of the
16893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      following two licenses (at your option):
17893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
18893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
19893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      LICENSE 1 ("BSD-like with advertising clause"):
20893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
21893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      Permission is granted to anyone to use this software for any purpose,
22893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      including commercial applications, and to alter it and redistribute
23893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      it freely, subject to the following restrictions:
24893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      1. Redistributions of source code must retain the above copyright
26893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project         notice, disclaimer, and this list of conditions.
27893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      2. Redistributions in binary form must reproduce the above copyright
28893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project         notice, disclaimer, and this list of conditions in the documenta-
29893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project         tion and/or other materials provided with the distribution.
30893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      3. All advertising materials mentioning features or use of this
31893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project         software must display the following acknowledgment:
32893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
33893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project            This product includes software developed by Greg Roelofs
34893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project            and contributors for the book, "PNG: The Definitive Guide,"
35893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project            published by O'Reilly and Associates.
36893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
37893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
38893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      LICENSE 2 (GNU GPL v2 or later):
39893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      This program is free software; you can redistribute it and/or modify
41893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      it under the terms of the GNU General Public License as published by
42893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      the Free Software Foundation; either version 2 of the License, or
43893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      (at your option) any later version.
44893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      This program is distributed in the hope that it will be useful,
46893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      but WITHOUT ANY WARRANTY; without even the implied warranty of
47893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
48893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      GNU General Public License for more details.
49893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
50893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      You should have received a copy of the GNU General Public License
51893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      along with this program; if not, write to the Free Software Foundation,
52893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
53893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
54893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project  ---------------------------------------------------------------------------*/
55893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
56893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#ifndef TRUE
57893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#  define TRUE 1
58893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#  define FALSE 0
59893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif
60893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
61893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#ifndef MAX
62893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#  define MAX(a,b)  ((a) > (b)? (a) : (b))
63893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#  define MIN(a,b)  ((a) < (b)? (a) : (b))
64893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif
65893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
66893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#ifdef DEBUG
67893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#  define Trace(x)  {fprintf x ; fflush(stderr); fflush(stdout);}
68893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#else
69893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#  define Trace(x)  ;
70893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif
71893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
72893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef unsigned char   uch;
73893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef unsigned short  ush;
74893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef unsigned long   ulg;
75893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
76893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
77893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project/* prototypes for public functions in readpng.c */
78893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
79893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectvoid readpng_version_info(void);
80893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
81893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectint readpng_init(FILE *infile, ulg *pWidth, ulg *pHeight);
82893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
83893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectint readpng_get_bgcolor(uch *bg_red, uch *bg_green, uch *bg_blue);
84893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectuch *readpng_get_image(double display_exponent, int *pChannels,
86893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project                       ulg *pRowbytes);
87893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
88893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectvoid readpng_cleanup(int free_image_data);
89