mirror of
				https://git.code.sf.net/p/libpng/code.git
				synced 2025-07-10 18:04:09 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			122 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*---------------------------------------------------------------------------
 | 
						|
 | 
						|
   rpng2 - progressive-model PNG display program                 readpng2.h
 | 
						|
 | 
						|
  ---------------------------------------------------------------------------
 | 
						|
 | 
						|
      Copyright (c) 1998-2008 Greg Roelofs.  All rights reserved.
 | 
						|
 | 
						|
      This software is provided "as is," without warranty of any kind,
 | 
						|
      express or implied.  In no event shall the author or contributors
 | 
						|
      be held liable for any damages arising in any way from the use of
 | 
						|
      this software.
 | 
						|
 | 
						|
      The contents of this file are DUAL-LICENSED.  You may modify and/or
 | 
						|
      redistribute this software according to the terms of one of the
 | 
						|
      following two licenses (at your option):
 | 
						|
 | 
						|
 | 
						|
      LICENSE 1 ("BSD-like with advertising clause"):
 | 
						|
 | 
						|
      Permission is granted to anyone to use this software for any purpose,
 | 
						|
      including commercial applications, and to alter it and redistribute
 | 
						|
      it freely, subject to the following restrictions:
 | 
						|
 | 
						|
      1. Redistributions of source code must retain the above copyright
 | 
						|
         notice, disclaimer, and this list of conditions.
 | 
						|
      2. Redistributions in binary form must reproduce the above copyright
 | 
						|
         notice, disclaimer, and this list of conditions in the documenta-
 | 
						|
         tion and/or other materials provided with the distribution.
 | 
						|
      3. All advertising materials mentioning features or use of this
 | 
						|
         software must display the following acknowledgment:
 | 
						|
 | 
						|
            This product includes software developed by Greg Roelofs
 | 
						|
            and contributors for the book, "PNG: The Definitive Guide,"
 | 
						|
            published by O'Reilly and Associates.
 | 
						|
 | 
						|
 | 
						|
      LICENSE 2 (GNU GPL v2 or later):
 | 
						|
 | 
						|
      This program is free software; you can redistribute it and/or modify
 | 
						|
      it under the terms of the GNU General Public License as published by
 | 
						|
      the Free Software Foundation; either version 2 of the License, or
 | 
						|
      (at your option) any later version.
 | 
						|
 | 
						|
      This program is distributed in the hope that it will be useful,
 | 
						|
      but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
      GNU General Public License for more details.
 | 
						|
 | 
						|
      You should have received a copy of the GNU General Public License
 | 
						|
      along with this program; if not, write to the Free Software Foundation,
 | 
						|
      Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
						|
 | 
						|
  ---------------------------------------------------------------------------*/
 | 
						|
 | 
						|
#ifndef TRUE
 | 
						|
#  define TRUE 1
 | 
						|
#  define FALSE 0
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef MAX
 | 
						|
#  define MAX(a,b)  ((a) > (b)? (a) : (b))
 | 
						|
#  define MIN(a,b)  ((a) < (b)? (a) : (b))
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef DEBUG
 | 
						|
#  define Trace(x)  {fprintf x ; fflush(stderr); fflush(stdout);}
 | 
						|
#else
 | 
						|
#  define Trace(x)  ;
 | 
						|
#endif
 | 
						|
 | 
						|
enum rpng2_states {
 | 
						|
    kPreInit = 0,
 | 
						|
    kWindowInit,
 | 
						|
    kDone
 | 
						|
};
 | 
						|
 | 
						|
typedef unsigned char   uch;
 | 
						|
typedef unsigned short  ush;
 | 
						|
typedef unsigned long   ulg;
 | 
						|
 | 
						|
typedef struct _mainprog_info {
 | 
						|
    double display_exponent;
 | 
						|
    ulg width;
 | 
						|
    ulg height;
 | 
						|
    void *png_ptr;
 | 
						|
    void *info_ptr;
 | 
						|
    void (*mainprog_init)(void);
 | 
						|
    void (*mainprog_display_row)(ulg row_num);
 | 
						|
    void (*mainprog_finish_display)(void);
 | 
						|
    uch *image_data;
 | 
						|
    uch **row_pointers;
 | 
						|
    jmp_buf jmpbuf;
 | 
						|
    int passes;              /* not used */
 | 
						|
    int pass;
 | 
						|
    int rowbytes;
 | 
						|
    int channels;
 | 
						|
    int need_bgcolor;
 | 
						|
#if (defined(__i386__) || defined(_M_IX86) || defined(__x86_64__))
 | 
						|
    int nommxfilters;
 | 
						|
    int nommxcombine;
 | 
						|
    int nommxinterlace;
 | 
						|
#endif
 | 
						|
    int state;
 | 
						|
    uch bg_red;
 | 
						|
    uch bg_green;
 | 
						|
    uch bg_blue;
 | 
						|
} mainprog_info;
 | 
						|
 | 
						|
 | 
						|
/* prototypes for public functions in readpng2.c */
 | 
						|
 | 
						|
void readpng2_version_info(void);
 | 
						|
 | 
						|
int readpng2_check_sig(uch *sig, int num);
 | 
						|
 | 
						|
int readpng2_init(mainprog_info *mainprog_ptr);
 | 
						|
 | 
						|
int readpng2_decode_data(mainprog_info *mainprog_ptr, uch *rawbuf, ulg length);
 | 
						|
 | 
						|
void readpng2_cleanup(mainprog_info *mainprog_ptr);
 |