Mercurial > fife-parpg
comparison ext/libpng-1.2.29/contrib/gregbook/writepng.h @ 0:4a0efb7baf70
* Datasets becomes the new trunk and retires after that :-)
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 29 Jun 2008 18:44:17 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4a0efb7baf70 |
---|---|
1 /*--------------------------------------------------------------------------- | |
2 | |
3 wpng - simple PNG-writing program writepng.h | |
4 | |
5 --------------------------------------------------------------------------- | |
6 | |
7 Copyright (c) 1998-2007 Greg Roelofs. All rights reserved. | |
8 | |
9 This software is provided "as is," without warranty of any kind, | |
10 express or implied. In no event shall the author or contributors | |
11 be held liable for any damages arising in any way from the use of | |
12 this software. | |
13 | |
14 The contents of this file are DUAL-LICENSED. You may modify and/or | |
15 redistribute this software according to the terms of one of the | |
16 following two licenses (at your option): | |
17 | |
18 | |
19 LICENSE 1 ("BSD-like with advertising clause"): | |
20 | |
21 Permission is granted to anyone to use this software for any purpose, | |
22 including commercial applications, and to alter it and redistribute | |
23 it freely, subject to the following restrictions: | |
24 | |
25 1. Redistributions of source code must retain the above copyright | |
26 notice, disclaimer, and this list of conditions. | |
27 2. Redistributions in binary form must reproduce the above copyright | |
28 notice, disclaimer, and this list of conditions in the documenta- | |
29 tion and/or other materials provided with the distribution. | |
30 3. All advertising materials mentioning features or use of this | |
31 software must display the following acknowledgment: | |
32 | |
33 This product includes software developed by Greg Roelofs | |
34 and contributors for the book, "PNG: The Definitive Guide," | |
35 published by O'Reilly and Associates. | |
36 | |
37 | |
38 LICENSE 2 (GNU GPL v2 or later): | |
39 | |
40 This program is free software; you can redistribute it and/or modify | |
41 it under the terms of the GNU General Public License as published by | |
42 the Free Software Foundation; either version 2 of the License, or | |
43 (at your option) any later version. | |
44 | |
45 This program is distributed in the hope that it will be useful, | |
46 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
47 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
48 GNU General Public License for more details. | |
49 | |
50 You should have received a copy of the GNU General Public License | |
51 along with this program; if not, write to the Free Software Foundation, | |
52 Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
53 | |
54 ---------------------------------------------------------------------------*/ | |
55 | |
56 #ifndef TRUE | |
57 # define TRUE 1 | |
58 # define FALSE 0 | |
59 #endif | |
60 | |
61 #ifndef MAX | |
62 # define MAX(a,b) ((a) > (b)? (a) : (b)) | |
63 # define MIN(a,b) ((a) < (b)? (a) : (b)) | |
64 #endif | |
65 | |
66 #ifdef DEBUG | |
67 # define Trace(x) {fprintf x ; fflush(stderr); fflush(stdout);} | |
68 #else | |
69 # define Trace(x) ; | |
70 #endif | |
71 | |
72 #define TEXT_TITLE 0x01 | |
73 #define TEXT_AUTHOR 0x02 | |
74 #define TEXT_DESC 0x04 | |
75 #define TEXT_COPY 0x08 | |
76 #define TEXT_EMAIL 0x10 | |
77 #define TEXT_URL 0x20 | |
78 | |
79 #define TEXT_TITLE_OFFSET 0 | |
80 #define TEXT_AUTHOR_OFFSET 72 | |
81 #define TEXT_COPY_OFFSET (2*72) | |
82 #define TEXT_EMAIL_OFFSET (3*72) | |
83 #define TEXT_URL_OFFSET (4*72) | |
84 #define TEXT_DESC_OFFSET (5*72) | |
85 | |
86 typedef unsigned char uch; | |
87 typedef unsigned short ush; | |
88 typedef unsigned long ulg; | |
89 | |
90 typedef struct _mainprog_info { | |
91 double gamma; | |
92 long width; | |
93 long height; | |
94 time_t modtime; | |
95 FILE *infile; | |
96 FILE *outfile; | |
97 void *png_ptr; | |
98 void *info_ptr; | |
99 uch *image_data; | |
100 uch **row_pointers; | |
101 char *title; | |
102 char *author; | |
103 char *desc; | |
104 char *copyright; | |
105 char *email; | |
106 char *url; | |
107 int filter; /* command-line-filter flag, not PNG row filter! */ | |
108 int pnmtype; | |
109 int sample_depth; | |
110 int interlaced; | |
111 int have_bg; | |
112 int have_time; | |
113 int have_text; | |
114 jmp_buf jmpbuf; | |
115 uch bg_red; | |
116 uch bg_green; | |
117 uch bg_blue; | |
118 } mainprog_info; | |
119 | |
120 | |
121 /* prototypes for public functions in writepng.c */ | |
122 | |
123 void writepng_version_info(void); | |
124 | |
125 int writepng_init(mainprog_info *mainprog_ptr); | |
126 | |
127 int writepng_encode_image(mainprog_info *mainprog_ptr); | |
128 | |
129 int writepng_encode_row(mainprog_info *mainprog_ptr); | |
130 | |
131 int writepng_encode_finish(mainprog_info *mainprog_ptr); | |
132 | |
133 void writepng_cleanup(mainprog_info *mainprog_ptr); |