Compare commits

..

161 Commits

Author SHA1 Message Date
Glenn Randers-Pehrson
f3fcf00392 Imported from libpng-1.2.19beta29.tar 2009-04-06 16:14:05 -05:00
Glenn Randers-Pehrson
08313ef870 Imported from libpng-1.2.19beta28.tar 2009-04-06 16:14:03 -05:00
Glenn Randers-Pehrson
911c469d69 Imported from libpng-1.2.19beta27.tar 2009-04-06 16:14:00 -05:00
Glenn Randers-Pehrson
07c089ee04 Imported from libpng-1.2.19beta26.tar 2009-04-06 16:13:58 -05:00
Glenn Randers-Pehrson
dadc944810 Imported from libpng-1.2.19beta25.tar 2009-04-06 16:13:55 -05:00
Glenn Randers-Pehrson
80663032a9 Imported from libpng-1.2.19beta24.tar 2009-04-06 16:13:53 -05:00
Glenn Randers-Pehrson
67c75ee7f0 Imported from libpng-1.2.19beta23.tar 2009-04-06 16:13:51 -05:00
Glenn Randers-Pehrson
62626737a5 Imported from libpng-1.2.19beta22.tar 2009-04-06 16:13:48 -05:00
Glenn Randers-Pehrson
e404eed318 Imported from libpng-1.2.19beta21.tar 2009-04-06 16:13:46 -05:00
Glenn Randers-Pehrson
3c115428ea Imported from libpng-1.2.19beta20.tar 2009-04-06 16:13:43 -05:00
Glenn Randers-Pehrson
db40ca4aca Imported from libpng-1.2.19beta19.tar 2009-04-06 16:13:41 -05:00
Glenn Randers-Pehrson
f456d0d6bb Imported from libpng-1.2.19beta18.tar 2009-04-06 16:13:38 -05:00
Glenn Randers-Pehrson
06fe17eb9f Imported from libpng-1.2.19beta17.tar 2009-04-06 16:13:36 -05:00
Glenn Randers-Pehrson
7945bdb88f Imported from libpng-1.2.19beta16.tar 2009-04-06 16:13:33 -05:00
Glenn Randers-Pehrson
f7794ec181 Imported from libpng-1.2.19beta15.tar 2009-04-06 16:13:31 -05:00
Glenn Randers-Pehrson
16851b3eb3 Imported from libpng-1.2.19beta14.tar 2009-04-06 16:13:29 -05:00
Glenn Randers-Pehrson
c72d8d4d29 Imported from libpng-1.2.19beta13.tar 2009-04-06 16:13:26 -05:00
Glenn Randers-Pehrson
2b7436558e Imported from libpng-1.2.19beta12.tar 2009-04-06 16:13:24 -05:00
Glenn Randers-Pehrson
e59c47d5b1 Imported from libpng-1.2.19beta11.tar 2009-04-06 16:13:22 -05:00
Glenn Randers-Pehrson
c1523ad16d Imported from libpng-1.2.19beta10.tar 2009-04-06 16:13:19 -05:00
Glenn Randers-Pehrson
d0be8e27de Imported from libpng-1.2.19beta9.tar 2009-04-06 16:13:17 -05:00
Glenn Randers-Pehrson
5c66b81289 Imported from libpng-1.2.19beta8.tar 2009-04-06 16:13:15 -05:00
Glenn Randers-Pehrson
1a42cb2013 Imported from libpng-1.2.19beta7.tar 2009-04-06 16:13:12 -05:00
Glenn Randers-Pehrson
cf2978cbbb Imported from libpng-1.2.19beta6.tar 2009-04-06 16:13:10 -05:00
Glenn Randers-Pehrson
8a9733e777 Imported from libpng-1.2.19beta5.tar 2009-04-06 16:13:07 -05:00
Glenn Randers-Pehrson
ba880c5501 Imported from libpng-1.2.19beta4.tar 2009-04-06 16:13:05 -05:00
Glenn Randers-Pehrson
788f962fbd Imported from libpng-1.2.19beta3.tar 2009-04-06 16:13:03 -05:00
Glenn Randers-Pehrson
12f8283560 Imported from libpng-1.2.19beta2.tar 2009-04-06 16:13:01 -05:00
Glenn Randers-Pehrson
4d27f6b77b Imported from libpng-1.2.19beta1.tar 2009-04-06 16:12:58 -05:00
Glenn Randers-Pehrson
413ed28246 Imported from libpng-1.2.18.tar 2009-04-06 16:12:56 -05:00
Glenn Randers-Pehrson
ad084f559a Imported from libpng-1.2.17.tar 2009-04-06 16:12:54 -05:00
Glenn Randers-Pehrson
3832ab1c21 Imported from libpng-1.2.17rc4.tar 2009-04-06 16:12:52 -05:00
Glenn Randers-Pehrson
999bceb413 Imported from libpng-1.2.17rc3.tar 2009-04-06 16:12:49 -05:00
Glenn Randers-Pehrson
e8f6605642 Imported from libpng-1.2.17rc2.tar 2009-04-06 16:12:47 -05:00
Glenn Randers-Pehrson
3148c65323 Imported from libpng-1.2.17rc1.tar 2009-04-06 16:12:45 -05:00
Glenn Randers-Pehrson
0a3d2cc68b Imported from libpng-1.2.17beta2.tar 2009-04-06 16:12:43 -05:00
Glenn Randers-Pehrson
11cf76edb3 Imported from libpng-1.2.17beta1.tar 2009-04-06 16:12:40 -05:00
Glenn Randers-Pehrson
8833ad415c Imported from libpng-1.2.16.tar 2009-04-06 16:12:38 -05:00
Glenn Randers-Pehrson
bc290d8e6c Imported from libpng-1.2.16rc1.tar 2009-04-06 16:12:35 -05:00
Glenn Randers-Pehrson
9c5b3a4060 Imported from libpng-1.2.16beta2.tar 2009-04-06 16:12:33 -05:00
Glenn Randers-Pehrson
04bbba55c7 Imported from libpng-1.2.16beta1.tar 2009-04-06 16:12:31 -05:00
Glenn Randers-Pehrson
40b70d5373 Imported from libpng-1.2.15.tar 2009-04-06 16:12:29 -05:00
Glenn Randers-Pehrson
833d32646e Imported from libpng-1.2.15rc5.tar 2009-04-06 16:12:27 -05:00
Glenn Randers-Pehrson
6cdefb3cac Imported from libpng-1.2.15rc4.tar 2009-04-06 16:12:25 -05:00
Glenn Randers-Pehrson
f959d3ee7a Imported from libpng-1.2.15rc3.tar 2009-04-06 16:12:22 -05:00
Glenn Randers-Pehrson
b0952eabc7 Imported from libpng-1.2.15rc2.tar 2009-04-06 16:12:20 -05:00
Glenn Randers-Pehrson
43bb4ba4bf Imported from libpng-1.2.15rc1.tar 2009-04-06 16:12:18 -05:00
Glenn Randers-Pehrson
c2de22abeb Imported from libpng-1.2.15beta6.tar 2009-04-06 16:12:15 -05:00
Glenn Randers-Pehrson
a0113ee049 Imported from libpng-1.2.15beta5.tar 2009-04-06 16:12:13 -05:00
Glenn Randers-Pehrson
05db10fda3 Imported from libpng-1.2.15beta4.tar 2009-04-06 16:12:11 -05:00
Glenn Randers-Pehrson
948ee23a2a Imported from libpng-1.2.15beta3.tar 2009-04-06 16:12:08 -05:00
Glenn Randers-Pehrson
271a2931b6 Imported from libpng-1.2.15beta2.tar 2009-04-06 16:12:06 -05:00
Glenn Randers-Pehrson
9fe05edd47 Imported from libpng-1.2.15beta1.tar 2009-04-06 16:12:04 -05:00
Glenn Randers-Pehrson
c2573702cf Imported from libpng-1.2.14.tar 2009-04-06 16:12:02 -05:00
Glenn Randers-Pehrson
b8e76b586e Imported from libpng-1.2.14rc1.tar 2009-04-06 16:11:59 -05:00
Glenn Randers-Pehrson
11a89964b9 Imported from libpng-1.2.14beta2.tar 2009-04-06 16:11:57 -05:00
Glenn Randers-Pehrson
b5bfcbae59 Imported from libpng-1.2.14beta1.tar 2009-04-06 16:11:55 -05:00
Glenn Randers-Pehrson
efe95a6953 Imported from libpng-1.2.13.tar 2009-04-06 16:11:53 -05:00
Glenn Randers-Pehrson
e88a5eca8b Imported from libpng-1.2.13rc2.tar 2009-04-06 16:11:51 -05:00
Glenn Randers-Pehrson
2e3980e1de Imported from libpng-1.2.13rc1.tar 2009-04-06 16:11:49 -05:00
Glenn Randers-Pehrson
0ff85c6923 Imported from libpng-1.2.13beta1.tar 2009-04-06 16:11:47 -05:00
Glenn Randers-Pehrson
e3358d1839 Imported from libpng-1.2.12.tar 2009-04-06 16:11:45 -05:00
Glenn Randers-Pehrson
f5eac0c7fa Imported from libpng-1.2.11.tar 2009-04-06 16:11:42 -05:00
Glenn Randers-Pehrson
6034592a27 Imported from libpng-1.2.11rc5.tar 2009-04-06 16:11:40 -05:00
Glenn Randers-Pehrson
7b00d826d3 Imported from libpng-1.2.11rc3.tar 2009-04-06 16:11:37 -05:00
Glenn Randers-Pehrson
52ef3586b9 Imported from libpng-1.2.11rc2.tar 2009-04-06 16:11:35 -05:00
Glenn Randers-Pehrson
4118fcdd14 Imported from libpng-1.2.11rc1.tar 2009-04-06 16:11:33 -05:00
Glenn Randers-Pehrson
d9e18047d3 Imported from libpng-1.2.11beta4.tar 2009-04-06 16:11:31 -05:00
Glenn Randers-Pehrson
734f320ade Imported from libpng-1.2.11beta3.tar 2009-04-06 16:11:29 -05:00
Glenn Randers-Pehrson
79f25cdeb2 Imported from libpng-1.2.11beta2cos.tar 2009-04-06 16:11:27 -05:00
Glenn Randers-Pehrson
413f3db617 Imported from libpng-1.2.11beta2.tar 2009-04-06 16:11:25 -05:00
Glenn Randers-Pehrson
4db11d5143 Imported from libpng-1.2.11beta1.tar 2009-04-06 16:11:23 -05:00
Glenn Randers-Pehrson
78d28c6b96 Imported from libpng-1.2.10.tar 2009-04-06 16:11:21 -05:00
Glenn Randers-Pehrson
24df7333a2 Imported from libpng-1.2.10rc3.tar 2009-04-06 16:11:18 -05:00
Glenn Randers-Pehrson
8694cd8bf5 Imported from libpng-1.2.10rc2.tar 2009-04-06 16:11:16 -05:00
Glenn Randers-Pehrson
f628ee2fa4 Imported from libpng-1.2.10rc1.tar 2009-04-06 16:09:08 -05:00
Glenn Randers-Pehrson
ad310547a2 Imported from libpng-1.2.10beta7.tar 2009-04-06 16:09:06 -05:00
Glenn Randers-Pehrson
629330e761 Imported from libpng-1.2.10beta6.tar 2009-04-06 16:09:04 -05:00
Glenn Randers-Pehrson
b511b60aaa Imported from libpng-1.2.10beta5.tar 2009-04-06 16:09:02 -05:00
Glenn Randers-Pehrson
77be22c09a Imported from libpng-1.2.10beta4.tar 2009-04-06 16:09:00 -05:00
Glenn Randers-Pehrson
b0270f77a9 Imported from libpng-1.2.10beta3.tar 2009-04-06 16:08:58 -05:00
Glenn Randers-Pehrson
3a5a759bb7 Imported from libpng-1.2.10beta2.tar 2009-04-06 16:08:55 -05:00
Glenn Randers-Pehrson
d5d63601b9 Imported from libpng-1.2.10beta1.tar 2009-04-06 16:08:53 -05:00
Glenn Randers-Pehrson
a7d0c94169 Imported from libpng-1.2.9.tar 2009-04-06 16:08:51 -05:00
Glenn Randers-Pehrson
3a51203c48 Imported from libpng-1.2.9rc1.tar 2009-04-06 16:08:49 -05:00
Glenn Randers-Pehrson
4deeb795f6 Imported from libpng-1.2.9beta11.tar 2009-04-06 16:08:46 -05:00
Glenn Randers-Pehrson
26e47d9a71 Imported from libpng-1.2.9beta10.tar 2009-04-06 16:08:44 -05:00
Glenn Randers-Pehrson
170b70ce30 Imported from libpng-1.2.9beta9.tar 2009-04-06 16:08:42 -05:00
Glenn Randers-Pehrson
1ce0836b4a Imported from libpng-1.2.9beta8.tar 2009-04-06 16:08:39 -05:00
Glenn Randers-Pehrson
5c60b2367e Imported from libpng-1.2.9beta7.tar 2009-04-06 16:08:37 -05:00
Glenn Randers-Pehrson
b7f9593715 Imported from libpng-1.2.9beta6.tar 2009-04-06 16:08:35 -05:00
Glenn Randers-Pehrson
e64746200b Imported from libpng-1.2.9beta5.tar 2009-04-06 16:08:32 -05:00
Glenn Randers-Pehrson
c3d51c14f2 Imported from libpng-1.2.9beta4.tar 2009-04-06 16:08:30 -05:00
Glenn Randers-Pehrson
7b34df33a5 Imported from libpng-1.2.9beta3.tar 2009-04-06 16:08:27 -05:00
Glenn Randers-Pehrson
ddfebd35be Imported from libpng-1.2.9beta2.tar 2009-04-06 16:08:25 -05:00
Glenn Randers-Pehrson
9c3ab68145 Imported from libpng-1.2.9beta1.tar 2009-04-06 16:08:23 -05:00
Glenn Randers-Pehrson
917648ecb9 Imported from libpng-1.2.8.tar 2009-04-06 16:08:21 -05:00
Glenn Randers-Pehrson
584b96e859 Imported from libpng-1.2.8rc5.tar 2009-04-06 16:08:18 -05:00
Glenn Randers-Pehrson
228c637527 Imported from libpng-1.2.8rc4.tar 2009-04-06 16:08:16 -05:00
Glenn Randers-Pehrson
c3dda6daea Imported from libpng-1.2.8rc3.tar 2009-04-06 16:08:15 -05:00
Glenn Randers-Pehrson
73b029f9d3 Imported from libpng-1.2.8rc2.tar 2009-04-06 16:08:13 -05:00
Glenn Randers-Pehrson
5dd2b8e208 Imported from libpng-1.2.8rc1.tar 2009-04-06 16:08:11 -05:00
Glenn Randers-Pehrson
4093607bc9 Imported from libpng-1.2.8beta5.tar 2009-04-06 16:08:09 -05:00
Glenn Randers-Pehrson
878b31e0b4 Imported from libpng-1.2.8beta4.tar 2009-04-06 16:08:07 -05:00
Glenn Randers-Pehrson
7806777139 Imported from libpng-1.2.8beta3.tar 2009-04-06 16:08:05 -05:00
Glenn Randers-Pehrson
94d9362fc5 Imported from libpng-1.2.8beta2.tar 2009-04-06 16:08:03 -05:00
Glenn Randers-Pehrson
16e11660fe Imported from libpng-1.2.8beta1.tar 2009-04-06 16:08:01 -05:00
Glenn Randers-Pehrson
250dfe1777 Imported from libpng-1.2.7.tar 2009-04-06 16:08:00 -05:00
Glenn Randers-Pehrson
5b77916ecd Imported from libpng-1.2.7rc1.tar 2009-04-06 16:07:57 -05:00
Glenn Randers-Pehrson
67864af957 Imported from libpng-1.2.7beta2.tar 2009-04-06 16:07:56 -05:00
Glenn Randers-Pehrson
a4981d4ded Imported from libpng-1.2.7beta1.tar 2009-04-06 16:07:54 -05:00
Glenn Randers-Pehrson
37f116a900 Imported from libpng-1.2.6.tar 2009-04-06 16:07:52 -05:00
Glenn Randers-Pehrson
8f3dd833d7 Imported from libpng-1.2.6rc5.tar 2009-04-06 16:07:50 -05:00
Glenn Randers-Pehrson
36d7bc7530 Imported from libpng-1.2.6rc4.tar 2009-04-06 16:07:48 -05:00
Glenn Randers-Pehrson
d029a75d4f Imported from libpng-1.2.6rc3.tar 2009-04-06 16:07:46 -05:00
Glenn Randers-Pehrson
dff799ef89 Imported from libpng-1.2.6rc2.tar 2009-04-06 16:07:44 -05:00
Glenn Randers-Pehrson
272489dc69 Imported from libpng-1.2.6rc1.tar 2009-04-06 16:07:42 -05:00
Glenn Randers-Pehrson
5fea36fb00 Imported from libpng-1.2.6beta4.tar 2009-04-06 16:07:40 -05:00
Glenn Randers-Pehrson
5b5dcf8b88 Imported from libpng-1.2.6beta3.tar 2009-04-06 16:07:38 -05:00
Glenn Randers-Pehrson
761bf9f06f Imported from libpng-1.2.6beta2.tar 2009-04-06 16:07:36 -05:00
Glenn Randers-Pehrson
c33ab4e8df Imported from libpng-1.2.6beta1.tar 2009-04-06 16:07:34 -05:00
Glenn Randers-Pehrson
0cc2f95a9d Imported from libpng-1.2.5.tar 2009-04-06 16:07:32 -05:00
Glenn Randers-Pehrson
5ff38d3e16 Imported from libpng-1.2.5rc3.tar 2009-04-06 16:07:30 -05:00
Glenn Randers-Pehrson
865f4f073a Imported from libpng-1.2.5rc2.tar 2009-04-06 16:07:28 -05:00
Glenn Randers-Pehrson
51d9250c88 Imported from libpng-1.2.5rc1.tar 2009-04-06 16:07:27 -05:00
Glenn Randers-Pehrson
8a7df0024b Imported from libpng-1.2.5beta2.tar 2009-04-06 16:07:25 -05:00
Glenn Randers-Pehrson
859665d847 Imported from libpng-1.2.5beta1.tar 2009-04-06 16:07:23 -05:00
Glenn Randers-Pehrson
484a8a10fe Imported from libpng-1.2.4.tar 2009-04-06 16:07:21 -05:00
Glenn Randers-Pehrson
2ae022da7e Imported from libpng-1.2.4rc1.tar 2009-04-06 16:07:18 -05:00
Glenn Randers-Pehrson
d020e9d826 Imported from libpng-1.2.4beta3.tar 2009-04-06 16:07:16 -05:00
Glenn Randers-Pehrson
d1e8c8694d Imported from libpng-1.2.4beta2.tar 2009-04-06 16:07:14 -05:00
Glenn Randers-Pehrson
07748d1b2c Imported from libpng-1.2.4beta1.tar 2009-04-06 16:07:12 -05:00
Glenn Randers-Pehrson
cfbed9bdf2 Imported from libpng-1.2.3.tar 2009-04-06 16:07:10 -05:00
Glenn Randers-Pehrson
22f28966c4 Imported from libpng-1.2.3rc6.tar 2009-04-06 16:07:08 -05:00
Glenn Randers-Pehrson
837a3d1745 Imported from libpng-1.2.3rc5.tar 2009-04-06 16:07:06 -05:00
Glenn Randers-Pehrson
704228f7e7 Imported from libpng-1.2.3rc4.tar 2009-04-06 16:07:04 -05:00
Glenn Randers-Pehrson
299d73503c Imported from libpng-1.2.3rc3.tar 2009-04-06 16:07:02 -05:00
Glenn Randers-Pehrson
25d8224d15 Imported from libpng-1.2.3rc2.tar 2009-04-06 16:07:00 -05:00
Glenn Randers-Pehrson
03008a08d1 Imported from libpng-1.2.3rc1.tar 2009-04-06 16:06:58 -05:00
Glenn Randers-Pehrson
4fb046a52d Imported from libpng-1.2.2.tar 2009-04-06 16:06:56 -05:00
Glenn Randers-Pehrson
fcbd7870e9 Imported from libpng-1.2.2rc1.tar 2009-04-06 16:06:54 -05:00
Glenn Randers-Pehrson
25228abdc1 Imported from libpng-1.2.2beta6.tar 2009-04-06 16:06:52 -05:00
Glenn Randers-Pehrson
73d57cb97b Imported from libpng-1.2.2beta5.tar 2009-04-06 16:06:50 -05:00
Glenn Randers-Pehrson
377657d1d6 Imported from libpng-1.2.2beta4.tar 2009-04-06 16:06:49 -05:00
Glenn Randers-Pehrson
c1bfe686ce Imported from libpng-1.2.2beta3.tar 2009-04-06 16:06:47 -05:00
Glenn Randers-Pehrson
c6de22da1d Imported from libpng-1.2.2beta2.tar 2009-04-06 16:06:45 -05:00
Glenn Randers-Pehrson
9c0f094b21 Imported from libpng-1.2.2beta1.tar 2009-04-06 16:06:43 -05:00
Glenn Randers-Pehrson
f50c91b7bd Imported from libpng-1.2.1.tar 2009-04-06 16:06:41 -05:00
Glenn Randers-Pehrson
db3b88dad2 Imported from libpng-1.2.1rc2.tar 2009-04-06 16:06:39 -05:00
Glenn Randers-Pehrson
ae498dcff3 Imported from libpng-1.2.1rc1.tar 2009-04-06 16:06:37 -05:00
Glenn Randers-Pehrson
5cded0b4b5 Imported from libpng-1.2.1beta4.tar 2009-04-06 16:06:35 -05:00
Glenn Randers-Pehrson
3f549259b2 Imported from libpng-1.2.1beta3.tar 2009-04-06 16:06:33 -05:00
Glenn Randers-Pehrson
6c97ddbffc Imported from libpng-1.2.1beta2.tar 2009-04-06 16:06:32 -05:00
Glenn Randers-Pehrson
5a0be341ba Imported from libpng-1.2.1beta1.tar 2009-04-06 16:06:30 -05:00
Glenn Randers-Pehrson
10781048be Imported from libpng-1.2.0.tar 2009-04-06 16:06:28 -05:00
Glenn Randers-Pehrson
1b8e567237 Imported from libpng-1.2.0rc1.tar 2009-04-06 16:06:26 -05:00
Glenn Randers-Pehrson
1ea0ff34fa Imported from libpng-1.2.0beta5.tar 2009-04-06 16:06:24 -05:00
Glenn Randers-Pehrson
b182893c04 Imported from libpng-1.2.0beta4.tar 2009-04-06 16:06:22 -05:00
Glenn Randers-Pehrson
8b6a889881 Imported from libpng-1.2.0beta3.tar 2009-04-06 16:06:20 -05:00
Glenn Randers-Pehrson
3097f618f2 Imported from libpng-1.2.0beta2.tar 2009-04-06 16:06:18 -05:00
Glenn Randers-Pehrson
1fd5fb33c2 Imported from libpng-1.2.0beta1.tar 2009-04-06 16:06:16 -05:00
87 changed files with 29105 additions and 11742 deletions

177
ANNOUNCE
View File

@@ -1,67 +1,170 @@
Libpng 1.0.34 - April 30, 2008
Libpng 1.2.19beta29 - July 20, 2007
This is a public release of libpng, intended for use in production codes.
This is not intended to be a public release. It will be replaced
within a few weeks by a public version or by another test version.
Files available for download:
Source files with LF line endings (for Unix/Linux) and with a
"configure" script
libpng-1.0.34.tar.gz
libpng-1.0.34.tar.lzma
(Get the lzma codec from <http://tukaani.org/lzma>).
libpng-1.0.34.tar.bz2
libpng-1.2.19beta29.tar.gz
libpng-1.2.19beta29.tar.bz2
Source files with LF line endings (for Unix/Linux) without the
"configure" script
libpng-1.0.34-no-config.tar.gz
libpng-1.0.34-no-config.tar.lzma
libpng-1.0.34-no-config.tar.bz2
libpng-1.2.19beta29-no-config.tar.gz
libpng-1.2.19beta29-no-config.tar.bz2
Source files with CRLF line endings (for Windows), without the
"configure" script
lpng1034.zip
lpng1034.7z
lpng1034.tar.bz2
lp1219b29.zip
lp1219b29.tar.bz2
Project files
libpng-1.0.34-project-netware.zip
libpng-1.0.34-project-wince.zip
libpng-1.2.19beta29-project-netware.zip
libpng-1.2.19beta29-project-wince.zip
Other information:
libpng-1.0.34-README.txt
libpng-1.0.34-KNOWNBUGS.txt
libpng-1.0.34-LICENSE.txt
libpng-1.0.34-Y2K-compliance.txt
libpng-1.2.19beta29-README.txt
libpng-1.2.19beta29-KNOWNBUGS.txt
libpng-1.2.19beta29-LICENSE.txt
libpng-1.2.19beta29-Y2K-compliance.txt
Changes since the last public release (1.0.32):
Changes since the last public release (1.2.18):
version 1.0.34 [April 30, 2008]
version 1.2.19beta1 [May 18, 2007]
Changed "const static" to "static PNG_CONST" everywhere, mostly undoing
change of libpng-1.2.17beta2. Changed other "const" to "PNG_CONST"
Fixed bug (introduced in libpng-1.0.6) with handling zero-length
unknown chunks.
Added more information about png_set_keep_unknown_chunks() to the
documetation.
Revised documentation about unknown chunk and user chunk handling.
Issue a png_warning when reading a tRNS chunk with out-of-range samples.
Added check for NULL ptr in TURBOC version of png_free_default().
Removed several unnecessary checks for NULL before calling png_free().
Revised png_set_tRNS() so that calling it twice removes and invalidates
the previous call.
Revised pngtest to check for out-of-range tRNS samples.
Added AC_LIBTOOL_WIN32_DLL to configure.ac
Added MAINTEINERCLEANFILES variable to Makefile.am
Avoid changing color_type from GRAY to RGB by
png_set_expand_gray_1_2_4_to_8().
Fix broken URL for rfc2083 in png.5 and libpng-*.txt
Removed a stray object file from contrib/gregbook
version 1.2.19beta2 [May 18, 2007]
Fixed png_do_expand() to only use the appropriate bits of tRNS value.
version 1.2.19beta3 [May 20, 2007]
Add some "png_byte" typecasts in png_check_keyword().
Write new_key instead of key in zTXt chunk.
version 1.2.19beta4 [May 21, 2007]
Add png_snprintf() function and use it in place of sprint() for improved
defense against buffer overflows.
version 1.2.19beta5 [May 21, 2007]
Fixed png_handle_tRNS() to only use the appropriate bits of tRNS value.
Changed handling of more unused parameters, to avoid compiler warnings.
Removed some PNG_CONST in pngwutil.c to avoid compiler warnings.
version 1.2.19beta6 [May 22, 2007]
Added some #ifdef PNG_MMX_CODE_SUPPORTED where needed in pngvcrd.c
Added a special "_MSC_VER" case that defines png_snprintf to _snprintf
version 1.2.19beta7 [May 22, 2007]
Squelched png_squelch_warnings() in pnggccrd.c and added an
#ifdef PNG_MMX_CODE_SUPPORTED block around the declarations that caused
the warnings that png_squelch_warnings was squelching.
version 1.2.19beta8 [May 22, 2007]
Removed __MMX__ from test in pngconf.h.
version 1.2.19beta9 [May 23, 2007]
Made png_squelch_warnings() available via PNG_SQUELCH_WARNINGS macro.
Revised png_squelch_warnings() so it might work.
Updated makefile.sgcc and makefile.solaris; added makefile.solaris-x86.
version 1.2.19beta10 [May 24, 2007]
Resquelched png_squelch_warnings(), use "__attribute__((used))" instead.
version 1.2.19beta11 [May 28, 2007]
Return 0 from png_get_sPLT() and png_get_unknown_chunks() if png_ptr is NULL;
changed three remaining instances of png_strcpy() to png_strncpy() (David
Hill).
Make test for NULL row_buf at the beginning of png_do_read_transformations
unconditional.
version 1.2.19beta12 [May 28, 2007]
Revised pnggccrd.c.
version 1.2.19beta13 [June 14, 2007]
Prefer PNG_USE_PNGVCRD when _MSC_VER is defined in pngconf.h
version 1.2.19beta14 [June 16, 2007]
Fix bug with handling of 16-bit transparency, introduced in 1.2.19beta2
version 1.2.19beta15 [June 17, 2007]
Revised pnggccrd.c.
version 1.2.19beta16 [June 18, 2007]
Revised pnggccrd.c again.
Updated contrib/gregbook.
Changed '#include "pnggccrd.c"' to 'include "$srcdir/pnggccrd.c"'
in configure.ac
version 1.2.19beta17 [June 19, 2007]
Revised many of the makefiles, to set -DPNG_NO_MMX_CODE where needed
and to not use -O3 unless -DPNG_NO_MMX_CODE is also set.
version 1.2.19beta18 [June 23, 2007]
Replaced some C++ style comments with C style comments in pnggccrd.c.
Copied optimized C code from pnggccrd.c to pngrutil.c, removed dependency
on pnggccrd.o from many makefiles.
Added sl and dylib to list of extensions be installed by Makefile.am
version 1.2.19beta19 [June 28, 2007]
Fixed testing PNG_RGB_TO_GRAY_ERR & PNG_RGB_TO_GRAY_WARN in pngrtran.c
More cleanup of pnggccrd.c and pngvcrd.c
version 1.2.19beta20 [June 29, 2007]
Rebuilt Makefile.in and configure using libtool-1.5.24.
Fixed typo in pnggccrd.c
version 1.2.19beta21 [June 30, 2007]
More revision of pnggccrd.c
Added "test" target to Makefile.in and Makefile.am
version 1.2.19beta22 [July 3, 2007]
Added info about pngrutil/pnggccrd/pngvcrd to png_get_header_version()
Fix type definition of dummy_value_a, b in pnggccrd.c
version 1.2.19beta23 [July 10, 2007]
Revert change to type definition of dummy_value_a, b in pnggccrd.c
Make sure __PIC__ is defined in pnggccrd.c when PIC is defined.
Make PNG_NO_MMX_CODE the default on x86_64 GNUC platforms.
version 1.2.19beta24 [July 14, 2007]
Added PNG_NO_READ_FILTER, PNG_NO_WRITE_FILTER, PNG_NO_WARNING macros.
Added contrib/pngminim to demonstrate building minimal encoder and decoder
version 1.2.19beta25 [July 15, 2007]
Removed the new PNG_NO_READ_FILTER macro since it would make the library
unable to read valid PNG files, and filtering is at the heart of the
PNG format.
version 1.2.19beta26 [July 16, 2007]
Changed "png_free(str)" to "png_free(png_ptr,str)" in pngrutil.c WinCE
code (Yves Piguet). This bug was introduced in libpng-1.2.14.
Updated scripts/CMakeLists.txt
Relocated a misplaced #endif in pnggccrd.c
version 1.2.19beta27 [July 17, 2007]
Fixed incorrect stride and number of bytes copied (was 4 instead of
6 bytes) in the cleanup loop of pnggccrd.c and pngvcrd.c for handling
the end of 48-bit interlaced rows (Glenn R-P).
version 1.2.19beta28 [July 19, 2007]
Removed requirement for gcc-4.1 or better to use PNG_HAVE_MMX_FILTER_ROW
on x86_64 platforms
Added png_warning() in pngrutil.c for short iCCP, iTXt, sPLT, or zTXT chunks.
Revised pngtest.c so warnings are displayed regardless of PNG_NO_STDIO.
version 1.2.19beta29 [July 20, 2007]
Fix typo in pnggccrd.c (%%eax should be %%ax in secondloop48)
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe) or to glennrp at users.sourceforge.net

307
CHANGES
View File

@@ -977,15 +977,21 @@ version 1.2.0beta1 [May 6, 2001]
Bumped DLLNUM to 2.
Re-enabled PNG_MNG_FEATURES_SUPPORTED and enabled PNG_ASSEMBLER_CODE_SUPPORTED
by default.
Added runtime selection of MMX features.
Added png_set_strip_error_numbers function and related macros.
version 1.2.0beta2 [May 7, 2001]
Finished merging 1.2.0beta1 with version 1.0.11
Added a check for attempts to read or write PLTE in grayscale PNG datastreams.
version 1.2.0beta3 [May 17, 2001]
Enabled user memory function by default.
Modified png_create_struct so it passes user mem_ptr to user memory allocator.
Increased png_mng_features flag from png_byte to png_uint_32.
Bumped shared-library (so-number) and dll-number to 3.
version 1.2.0beta4 [June 23, 2001]
Check for missing profile length field in iCCP chunk and free chunk_data
in case of truncated iCCP chunk.
Bumped shared-library number to 3 in makefile.sgi and makefile.sggcc
Bumped dll-number from 2 to 3 in makefile.cygwin
Revised contrib/gregbook/rpng*-x.c to avoid a memory leak and to exit cleanly
if user attempts to run it on an 8-bit display.
Updated contrib/gregbook
@@ -1064,6 +1070,7 @@ version 1.2.2beta3 [March 7, 2002]
Modified shared-library makefiles to install pkgconfig/libpngNN.pc.
Export (with PNGAPI) png_zalloc, png_zfree, and png_handle_as_unknown
Removed unused png_write_destroy_info prototype from png.h
Eliminated incorrect use of width_mmx from pnggccrd.c in pixel_bytes == 8 case
Added install-shared target to all makefiles that make shared libraries.
Stopped a double free of palette, hist, and trans when not using free_me.
Added makefile.32sunu for Sun Ultra 32 and makefile.64sunu for Sun Ultra 64.
@@ -1258,6 +1265,8 @@ version 1.2.6beta3 [July 18, 2004]
Updated scripts/makefile.vc(a)win32 (Cosmin).
Updated the MSVC project (Simon-Pierre, Cosmin).
Updated the Borland C++ Builder project (Cosmin).
Avoided access to asm_flags in pngvcrd.c, if PNG_1_0_X is defined (Cosmin).
Commented out warning about uninitialized mmx_support in pngvcrd.c (Cosmin).
Removed scripts/makefile.bd32 and scripts/pngdef.pas (Cosmin).
Added extra guard around inclusion of Turbo C memory headers, in pngconf.h
(Cosmin).
@@ -1349,6 +1358,7 @@ version 1.2.7beta2 [August 28, 2004]
Fixed bug with sCAL chunk and big-endian machines (David Munro).
Undid new code added in 1.2.6rc2 to update the color_type in
png_set_filler().
Added png_set_add_alpha() that updates color type.
version 1.0.17rc1 and 1.2.7rc1 [September 4, 2004]
Revised png_set_strip_filler() to not remove alpha if color_type has alpha.
@@ -1359,6 +1369,7 @@ version 1.2.8beta1 [November 1, 2004]
Fixed bug in png_text_compress() that would fail to complete a large block.
Fixed bug, introduced in libpng-1.2.7, that overruns a buffer during
strip alpha operation in png_do_strip_filler().
Added PNG_1_2_X definition in pngconf.h
#ifdef out png_info_init in png.c and png_read_init in pngread.c (as of 1.3.0)
version 1.2.8beta2 [November 2, 2004]
Reduce color_type to a nonalpha type after strip alpha operation in
@@ -1469,7 +1480,7 @@ version 1.2.9beta5 [March 4, 2006]
Restored scripts/makefile.elf which was inadvertently deleted.
version 1.2.9beta6 [March 6, 2006]
Fixed typo (RELEASE) in configuration files.
Fixed typo (19) in configuration files.
version 1.2.9beta7 [March 7, 2006]
Removed libpng.vers and libpng.sym from libpng12_la_SOURCES in Makefile.am
@@ -1658,7 +1669,7 @@ version 1.2.15rc2 [December 21, 2006]
Added scripts/makefile.nommx
version 1.2.15rc3 [December 25, 2006]
Fixed shared library numbering error that was introduced in 1.2.15beta6.
Fixed shared library numbering error that was intruduced in 1.2.15beta6.
version 1.2.15rc4 [December 27, 2006]
Fixed handling of rgb_to_gray when png_ptr->color.gray isn't set.
@@ -1666,7 +1677,7 @@ version 1.2.15rc4 [December 27, 2006]
version 1.2.15rc5 [December 31, 2006]
Revised handling of rgb_to_gray.
version 1.0.23, 1.2.15 [January 5, 2007]
version 1.2.15 [January 5, 2007]
Added some (unsigned long) typecasts in pngtest.c to avoid printing errors.
version 1.2.16beta1 [January 6, 2007]
@@ -1675,7 +1686,7 @@ version 1.2.16beta1 [January 6, 2007]
version 1.2.16beta2 [January 16, 2007]
Revised scripts/CMakeLists.txt
version 1.0.24, 1.2.16 [January 31, 2007]
version 1.2.16 [January 31, 2007]
No changes.
version 1.2.17beta1 [March 6, 2007]
@@ -1845,294 +1856,6 @@ version 1.2.19beta28 [July 19, 2007]
version 1.2.19beta29 [July 20, 2007]
Fix typo in pnggccrd.c (%%eax should be %%ax in secondloop48)
version 1.2.19beta30 [July 26, 2007]
Revised pnggccrd.c
version 1.2.19beta31 [July 27, 2007]
Fix typos in pnggccrd.c
version 1.0.27rc1 and 1.2.19rc1 [July 31, 2007]
Disable PNG_MMX_CODE_SUPPORTED when PNG_ASSEMBLER_CODE_SUPPORTED is off.
Enable PNG_MMX_READ_FILTER_* by default, except when gcc-3.x is being
used (they were inadvertently disabled in libpng-1.2.19beta23).
Fix some debugging statements in pnggccrd.c and pngrutil.c
Added information about disabling the MMX code in libpng documentation.
version 1.0.27rc2 and 1.2.19rc2 [August 4, 2007]
Removed some "#if 0" blocks.
Made a global struct local in pngvcrd.c to make it thread safe.
Issue a png_error() if application attempts to transform a row tht
has not been initialized.
version 1.0.27rc3 and 1.2.19rc3 [August 9, 2007]
Slightly revised pngvcrd.c
version 1.0.27rc4 and 1.2.19rc4 [August 9, 2007]
Revised pnggccrd.c debugging change of rc1, which was broken.
Revised scripts/CMakeLists.txt
Change default to PNG_NO_GLOBAL_ARRAYS for MSVC.
Turn off PNG_FLAG_ROW_INIT flag when setting transforms that expand pixels.
version 1.0.27rc5 and 1.2.19rc5 [August 10, 2007]
Fix typo (missing '"') in pnggccrd.c
Revise handling of png_strtod in recent versions of WINCE
version 1.0.27rc6 and 1.2.19rc6 [August 15, 2007]
Fix typo (missing ',') in contrib/gregbook/readpng2.c
Undid row initialization error exit added to rc2 and rc4.
version 1.0.27 and 1.2.19 [August 18, 2007]
Conditionally restored row initialization error exit.
version 1.2.20beta01 [August 19, 2007]
Fixed problem with compiling pnggccrd.c on Intel-Apple platforms.
Changed png_malloc() to png_malloc_warn() in png_set_sPLT().
Added PNG_NO_ERROR_TEXT feature, with demo in contrib/pngminim
Removed define PNG_WARN_UNINITIALIZED_ROW 1 /* 0: warning; 1: error */
because it caused some trouble.
version 1.2.20beta02 [August 20, 2007]
Avoid compiling pnggccrd.c on Intel-Apple platforms.
version 1.2.20beta03 [August 20, 2007]
Added "/D PNG_NO_MMX_CODE" to the non-mmx builds of projects/visualc6
and visualc71.
version 1.2.20beta04 [August 21, 2007]
Revised pngvcrd.c for improved efficiency (Steve Snyder).
version 1.2.20rc1 [August 23, 2007]
Revised pngconf.h to set PNG_NO_MMX_CODE for gcc-3.x compilers.
version 1.2.20rc2 [August 27, 2007]
Revised scripts/CMakeLists.txt
Revised #ifdefs to ensure one and only one of pnggccrd.c, pngvcrd.c,
or part of pngrutil.c is selected.
version 1.2.20rc3 [August 30, 2007]
Remove a little more code in pngwutil.c when PNG_NO_WRITE_FILTER is selected.
Added /D _CRT_SECURE_NO_WARNINGS to visual6c and visualc71 projects.
Compile png_mmx_support() in png.c even when PNG_NO_MMX_CODE is defined.
Restored a "superfluous" #ifdef that was removed from 1.2.20rc2 pnggccrd.c,
breaking the png_mmx_support() function.
version 1.2.20rc4 [September 1, 2007]
Removed Intel contributions (MMX, Optimized C).
version 1.2.20rc5 [September 2, 2007]
Restored configure and Makefile.in to rc3 and put a snippet of code in
pnggccrd.c, to ensure configure makes the same PNG_NO_MMX_CODE selection
version 1.2.20rc6 [September 2, 2007]
Fixed bugs in scripts/CMakeLists.txt
Removed pngvcrd.c references from msvc projects.
version 1.0.28 and 1.2.20 [September 8, 2007]
Removed "(NO READ SUPPORT)" from png_get_header_version() string.
version 1.2.21beta1 [September 14, 2007]
Fixed various mistakes reported by George Cook and Jeff Phillips:
logical vs bitwise NOT in pngrtran.c, bug introduced in 1.2.19rc2
16-bit cheap transparency expansion, bug introduced in 1.2.19beta2
errors with sizeof(unknown_chunk.name), bugs introduced in 1.2.19beta11
<= compare with unsigned var in pngset.c, should be ==.
version 1.2.21beta2 [September 18, 2007]
Removed some extraneous typecasts.
version 1.2.21rc1 [September 25, 2007]
Fixed potential out-of-bounds reads in png_handle_pCAL() and
png_handle_ztXt() ("flayer" results reported by Tavis Ormandy).
version 1.2.21rc2 [September 26, 2007]
Fixed potential out-of-bounds reads in png_handle_sCAL(),
png_handle_iTXt(), and png_push_read_tEXt().
Remove some PNG_CONST declarations from pngwutil.c to avoid compiler warnings
Revised makefiles to update paths in libpng.pc properly.
version 1.2.21rc3 [September 27, 2007]
Revised makefiles to update "Libs" in libpng.pc properly.
version 1.0.29 and 1.2.21rc3 [October 4, 2007]
No changes.
version 1.2.22beta1 [October 4, 2007]
Again, fixed logical vs bitwise NOT in pngrtran.c, bug introduced
in 1.2.19rc2
version 1.2.22beta2 [October 5, 2007]
Fixed string length error in pngset.c (caused crashes while decoding iCCP)
Add terminating NULL after each instance of png_strncpy().
version 1.2.22beta3 [October 6, 2007]
Fix two off-by-one terminating NULL after png_strncpy().
version 1.2.22beta4 [October 7, 2007]
Changed some 0 to '\0'.
version 1.0.30rc1 and 1.2.22rc1 [October 8, 2007]
No changes.
version 1.0.30 and 1.2.22 [October 13, 2007]
No changes.
version 1.2.23beta01 [October 15, 2007]
Reduced number of invocations of png_strlen() in pngset.c.
Changed [azAZ09_] to [_abcde...89] in Makefile.am for better localization.
version 1.2.23beta02 [October 16, 2007]
Eliminated png_strncpy() and png_strcpy() (Pierre Poissinger)
Changed $AN to $(AN) in Makefile.am.
version 1.2.23beta03 [October 16, 2007]
Fixed off-by-one error in pngset.c
Restore statement to set last character of buffer to \0 in pngerror.c
version 1.2.23beta04 [October 23, 2007]
Reject attempt to set all-zero cHRM values.
version 1.2.23beta05 [October 26, 2007]
Add missing quotes in projects/visualc6, lost in version 1.2.20rc3
version 1.2.23rc01 [November 2, 2007]
No changes.
version 1.2.23 [November 6, 2007]
No changes.
version 1.2.24beta01 [November 19, 2007]
Moved misplaced test for malloc failure in png_set_sPLT(). This bug was
introduced in libpng-1.2.20beta01.
Ifdef out avg_row etc from png.h and pngwrite.c when PNG_NO_WRITE_FILTER
Do not use png_ptr->free_fn and png_ptr->mem_fn in png_destroy_read_struct()
when png_ptr is NULL (Marshall Clow).
Updated handling of symbol prefixes in Makefile.am and configure.ac (Mike
Frysinger).
version 1.2.24beta02 [November 30, 2007]
Removed a useless test and fixed incorrect test in png_set_cHRM_fixed()
(David Hill).
version 1.2.24rc01 [December 7, 2007]
No changes.
version 1.2.24 [December 14, 2007]
Make sure not to redefine _BSD_SOURCE in pngconf.h
Revised gather.sh and makefile.std in contrib/pngminim to avoid compiling
unused files.
version 1.2.25beta01 [January 7, 2008]
Fixed bug with unknown chunk handling, introduced in version 1.2.17rc2
version 1.2.25beta02 [January 10, 2008]
Prevent gamma from being applied twice.
version 1.2.25rc01 [January 17, 2008]
No changes.
version 1.2.25beta03 [January 22, 2008]
Fixed some continue-after-malloc-failure errors in pngset.c (David Hill)
Check for info_ptr == NULL in png_read_info() and png_process_data().
Check for possible use of NULL user_png_ver[] in png_create_read_struct().
Change "if (swidth == NULL)" to "if (sheight == NULL)" in png_handle_sCAL
(bug introduced in libpng-1.2.4/1.0.13).
Return from png_destroy_read_struct() if png_ptr_ptr is NULL.
Fix overflow of "msg" in png_decompress_chunk().
version 1.2.25beta04 [January 26, 2008]
Work around Coverity bug report by slightly refactoring
png_read_push_finish_row()
version 1.2.25beta05 [January 31, 2008]
Added libpng-1.2.25beta05.tar.lzma to distribution. Get the lzma codec
from <http://tukaani.org/lzma>.
Added lp1225b05.7z to distribution. Get the 7-zip decoder from
from <http://www.7-zip.org>.
Fixed some broken links in the README file.
version 1.2.25beta06 [February 6, 2008]
Refactored png_read_push_finish_row() again, trying to satisfy Coverity.
Fixed potential NULL dereference of png_ptr in png_destroy_write_struct();
clarified potential NULL dereference of png_ptr in png_destroy_read_struct();
fixed potential NULL dereference of info_ptr in png_handle_bKGD();
fixed potential NULL dereference of user_png_ver[] in
png_create_write_struct_2(). (Coverity)
version 1.2.25rc02 [February 10, 2008]
Reset png_ptr->pass in png_read_push_finish_row() before break.
Changed "pass" from png_byte to int.
version 1.2.25 and 1.0.31 [February 18, 2008]
No changes.
version 1.2.26beta01 [February 21, 2008]
Added missing "(" in pngmem.c. Bug introduced in libpng-1.2.2/1.0.13
version 1.2.26beta02 [March 12, 2008]
Refined error message returned from deflateInit2 in pngwutil.c
Check IHDR length in png_push_read_chunk() before saving it.
version 1.2.26beta03 [March 16, 2008]
Revised contrib/gregbook to handle premature end-of-file and file
read errors correctly.
version 1.2.26beta04 [March 18, 2008]
Free png_ptr->big_row_buf and png_ptr->prev_row before allocating
new copies in png_read_start_row(). Bug introduced in libpng-1.2.22.
version 1.2.26beta05 [March 19, 2008]
Removed extra png_free() added in libpng-1.2.26beta04.
version 1.2.26beta06 [March 19, 2008]
Avoid reallocating big_row_buf and prev_row when the size does not increase.
version 1.2.26rc01 [March 26, 2008]
Ifdef out some code that is unused when interlacing is not supported.
versions 1.0.32 and 1.2.26 [April 2, 2008]
No changes.
version 1.2.27beta01 [April 12, 2008]
Fixed bug (introduced in libpng-1.0.5h) with handling zero-length
unknown chunks.
Added more information about png_set_keep_unknown_chunks() to the
documetation.
Reject tRNS chunk with out-of-range samples instead of masking off
the invalid high bits as done in since libpng-1.2.19beta5.
version 1.2.27beta02 [April 13, 2008]
Revised documentation about unknown chunk and user chunk handling.
Keep tRNS chunk with out-of-range samples and issue a png_warning().
version 1.2.27beta03 [April 14, 2008]
Added check for NULL ptr in TURBOC version of png_free_default().
Removed several unnecessary checks for NULL before calling png_free().
Revised png_set_tRNS() so that calling it twice removes and invalidates
the previous call.
Revised pngtest to check for out-of-range tRNS samples.
version 1.2.27beta04 [April 18, 2008]
Added AC_LIBTOOL_WIN32_DLL to configure.ac
Rebuilt Makefile.in, aclocal.m4, and configure with autoconf-2.62
version 1.2.27beta05 [April 19, 2008]
Added MAINTEINERCLEANFILES variable to Makefile.am
version 1.2.27beta06 [April 21, 2008]
Avoid changing color_type from GRAY to RGB by
png_set_expand_gray_1_2_4_to_8().
version 1.2.27rc01 [April 23, 2008]
Fix broken URL for rfc2083 in png.5 and libpng-*.txt
version 1.0.33 and 1.2.27 [April 30, 2008]
No changes.
version 1.0.34 and 1.2.28 [April 30, 2008]
Rebuilt Makefile.in, aclocal.m4, and configure with autoconf-2.61
due to backward incompatibilities.
Removed a stray object file from contrib/gregbook
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement

31
INSTALL
View File

@@ -1,5 +1,5 @@
Installing libpng version 1.0.34 - April 30, 2008
Installing libpng version 1.2.19beta29 - July 20, 2007
On Unix/Linux and similar systems, you can simply type
@@ -44,7 +44,7 @@ to have access to the zlib.h and zconf.h include files that
correspond to the version of zlib that's installed.
You can rename the directories that you downloaded (they
might be called "libpng-1.0.34" or "lpng109" and "zlib-1.2.1"
might be called "libpng-1.2.19beta29" or "lpng109" and "zlib-1.2.1"
or "zlib121") so that you have directories called "zlib" and "libpng".
Your directory structure should look like this:
@@ -101,9 +101,15 @@ include
CMakeLists.txt => "cmake" script
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
makefile.elf => Linux/ELF makefile symbol versioning,
gcc, creates libpng10.so.0.1.0.34)
gcc, creates libpng12.so.0.1.2.19beta29)
makefile.linux => Linux/ELF makefile
(gcc, creates libpng10.so.0.1.0.34)
(gcc, creates libpng12.so.0.1.2.19beta29)
makefile.gcmmx => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.19beta29,
uses assembler code tuned for Intel MMX platform)
makefile.nommx => Linux/ELF makefile
(gcc, creates libpng12.so.0.1.2.19beta29
does not use Intel MMX assembler code)
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with
ansi2knr (Requires ansi2knr.c from
@@ -120,19 +126,19 @@ include
makefile.intel => Intel C/C++ version 4.0 and later
libpng.icc => Project file for IBM VisualAge/C++ version 4.0 or later
makefile.netbsd => NetBSD/cc makefile, uses PNGGCCRD, makes libpng.so.
makefile.ne10bsd => NetBSD/cc makefile, uses PNGGCCRD,
makes libpng10.so
makefile.ne12bsd => NetBSD/cc makefile, uses PNGGCCRD,
makes libpng12.so
makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib)
makefile.sggcc => Silicon Graphics (gcc,
creates libpng10.so.0.1.0.34)
creates libpng12.so.0.1.2.19beta29)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile (gcc,
creates libpng10.so.0.1.0.34)
creates libpng12.so.0.1.2.19beta29)
makefile.solaris-x86 => Solaris/intelMMX 2.X makefile (gcc,
creates libpng10.so.0.1.0.34)
creates libpng12.so.0.1.2.19beta29)
makefile.so9 => Solaris 9 makefile (gcc,
creates libpng10.so.0.1.0.34)
creates libpng12.so.0.1.2.19beta29)
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
@@ -148,7 +154,10 @@ include
makefile.tc3 => Turbo C 3.0 makefile
makefile.dj2 => DJGPP 2 makefile
makefile.msc => Microsoft C makefile
makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later
makefile.vcawin32 => makefile for Microsoft Visual C++ 5.0 and later (uses
assembler code tuned for Intel MMX platform)
makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later (does
not use assembler code)
makefile.os2 => OS/2 Makefile (gcc and emx, requires pngos2.def)
pngos2.def => OS/2 module definition file used by makefile.os2
makefile.watcom => Watcom 10a+ Makefile, 32-bit flat memory model

View File

@@ -1,22 +1,21 @@
Known bugs in libpng version 1.0.34
Known bugs in libpng version 1.2.19beta29
1. February 23, 2006: The custom makefiles don't build libpng with -lz.
1. April 22, 2001: pnggccrd.c has been reported to crash on NetBSD when
reading interlaced PNG files, when assembler code is enabled but running
on a non-MMX i386 platform.
STATUS: Under investigation. The change to pnggccrd.c in libpng-1.2.1
fixed a problem under FreeBSD but not the problem with NetBSD, which
still fails as of libpng-1.2.2rc1.
2. February 23, 2006: The custom makefiles don't build libpng with -lz.
STATUS: This is a subject of debate. The change will probably be made
as a part of a major overhaul of the makefiles in libpng version 1.4.0.
as a part of a major overhaul of the makefiles in libpng version 1.3.0.
2. February 24, 2006: The Makefile generated by the "configure" script
3. February 24, 2006: The Makefile generated by the "configure" script
fails to install symbolic links
libpng12.so => libpng12.so.0.1.2.9betaN
that are generated by the custom makefiles.
3. September 4, 2007: There is a report that pngtest crashes on MacOS 10.
STATUS: workarounds are
1) Compile without optimization (crashes are observed with
-arch i386 and -O2 or -O3, using gcc-4.0.1).
2) Compile pngtest.c with PNG_DEBUG defined (the bug goes away if
you try to look at it).
3) Ignore the crash. The library itself seems to be OK.

View File

@@ -8,8 +8,8 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
If you modify libpng you may insert additional notices immediately following
this sentence.
libpng versions 1.2.6, August 15, 2004, through 1.0.34, April 30, 2008, are
Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are
libpng versions 1.2.6, August 15, 2004, through 1.2.19beta29, July 20, 2007, are
Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors
@@ -106,4 +106,4 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
April 30, 2008
July 20, 2007

View File

@@ -16,7 +16,7 @@ AUTOMAKE_OPTIONS = foreign
# test programs - run on make check, make distcheck
check_PROGRAMS= pngtest
pngtest_SOURCES = pngtest.c
pngtest_LDADD = libpng10.la
pngtest_LDADD = libpng12.la
TESTS = test-pngtest.sh
TESTS_ENVIRONMENT= srcdir=$(srcdir)
@@ -24,42 +24,39 @@ TESTS_ENVIRONMENT= srcdir=$(srcdir)
dist_man_MANS= libpng.3 libpngpf.3 png.5
# generate the -config scripts if required
binconfigs= libpng10-config
EXTRA_SCRIPTS= libpng-config libpng10-config
binconfigs= libpng12-config
EXTRA_SCRIPTS= libpng-config libpng12-config
bin_SCRIPTS= @binconfigs@
# rules to build libpng, only build the old library on request
lib_LTLIBRARIES=libpng10.la @compatlib@
lib_LTLIBRARIES=libpng12.la @compatlib@
EXTRA_LTLIBRARIES= libpng.la
libpng10_la_SOURCES = png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
libpng12_la_SOURCES = png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
pngwtran.c pngmem.c pngerror.c pngpread.c \
pngwtran.c pngmem.c pngerror.c pngpread.c pnggccrd.c \
png.h pngconf.h
libpng_la_SOURCES = $(libpng10_la_SOURCES)
libpng_la_SOURCES = $(libpng12_la_SOURCES)
libpng_la_CPPFLAGS = @LIBPNG_DEFINES@
libpng10_la_CPPFLAGS = @LIBPNG_DEFINES@
libpng12_la_CPPFLAGS = @LIBPNG_DEFINES@
# MAJOR UPGRADE: the version-number settings below must be changed.
libpng10_la_LDFLAGS = -no-undefined -export-dynamic \
libpng12_la_LDFLAGS = -no-undefined -export-dynamic \
-version-number 0:@PNGLIB_RELEASE@:0
# -rpath is needed as automake doesn't know the directory
libpng_la_LDFLAGS = -rpath '$(libdir)' -no-undefined -export-dynamic \
-version-number 2:@PNGLIB_RELEASE@:0
-version-number 3:@PNGLIB_RELEASE@:0
if HAVE_LD_VERSION_SCRIPT
# Versioned symbols and restricted exports
libpng10_la_LDFLAGS += -Wl,--version-script=libpng.vers
libpng10_la_DEPENDENCIES = libpng.vers
libpng12_la_LDFLAGS += -Wl,--version-script=libpng.vers
libpng12_la_DEPENDENCIES = libpng.vers
else
# Only restricted exports when possible
libpng10_la_LDFLAGS += -export-symbols libpng.sym
libpng10_la_DEPENDENCIES = libpng.sym
libpng12_la_LDFLAGS += -export-symbols libpng.sym
libpng12_la_DEPENDENCIES = libpng.sym
endif
libpng_la_DEPENDENCIES = $(libpng10_la_DEPENDENCIES)
# Avoid depending upon Character Ranges.
AN = '_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
libpng_la_DEPENDENCIES = $(libpng12_la_DEPENDENCIES)
#distribute headers in /usr/include/libpng/*
pkgincludedir= $(includedir)/$(PNGLIB_BASENAME)
@@ -68,7 +65,7 @@ pkginclude_HEADERS= png.h pngconf.h
# pkg-config stuff, note that libpng.pc is always required in order
# to get the correct library
pkgconfigdir = @pkgconfigdir@
pkgconfig_DATA = libpng10.pc
pkgconfig_DATA = libpng12.pc
#extra source distribution files.
EXTRA_DIST= \
@@ -86,14 +83,11 @@ EXTRA_DIST= \
${srcdir}/contrib/pngsuite/* \
${srcdir}/contrib/visupng/* \
$(TESTS) \
example.c libpng-1.0.34.txt pngvcrd.c
example.c libpng.txt pngvcrd.c
CLEANFILES= pngout.png libpng10.pc libpng10-config libpng.vers \
CLEANFILES= pngout.png libpng12.pc libpng12-config libpng.vers \
libpng.sym
MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess config.h.in \
config.sub configure depcomp install-sh ltmain.sh missing
$(PNGLIB_BASENAME).pc: libpng.pc
cp libpng.pc $@
@@ -103,9 +97,8 @@ $(PNGLIB_BASENAME)-config: libpng-config
libpng.sym: png.h pngconf.h
rm -f $@ $@.new
$(CPP) @LIBPNG_DEFINES@ $(CPPFLAGS) -DPNG_BUILDSYMS $(srcdir)/png.h | \
$(SED) -n -e \
's|^.*PNG_FUNCTION_EXPORT[ ]*\([$(AN)]*\).*$$|$(SYMBOL_PREFIX)\1|p' \
-e 's|^.*PNG_DATA_EXPORT[ ]*\([$(AN)]*\).*$$|$(SYMBOL_PREFIX)\1|p' \
$(SED) -n -e 's|^.*PNG_FUNCTION_EXPORT[ ]*\([a-zA-Z0-9_]*\).*$$|\1|p' \
-e 's|^.*PNG_DATA_EXPORT[ ]*\([a-zA-Z0-9_]*\).*$$|\1|p' \
>$@.new
mv $@.new $@
@@ -126,7 +119,7 @@ install-data-hook:
cd $(DESTDIR)$(pkgconfigdir); rm -f libpng.pc
cd $(DESTDIR)$(pkgconfigdir); $(LN_S) $(PNGLIB_BASENAME).pc libpng.pc
# do evil things to libpng to cause libpng10 to be used
# do evil things to libpng to cause libpng12 to be used
install-exec-hook:
cd $(DESTDIR)$(bindir); rm -f libpng-config
cd $(DESTDIR)$(bindir); $(LN_S) $(PNGLIB_BASENAME)-config libpng-config

File diff suppressed because it is too large Load Diff

39
README
View File

@@ -1,12 +1,11 @@
README for libpng version 1.0.34 - April 30, 2008 (shared library 10.0)
README for libpng version 1.2.19beta29 - July 20, 2007 (shared library 12.0)
See the note about version numbers near the top of png.h
See INSTALL for instructions on how to install libpng.
Libpng comes in several distribution formats. Get libpng-*.tar.gz,
libpng-*.tar.lzma, or libpng-*.tar.bz2 if you want UNIX-style line
endings in the text files, or lpng*.7z or lpng*.zip if you want DOS-style
line endings.
Libpng comes in several distribution formats. Get libpng-*.tar.gz
or libpng-*.tar.bz2 if you want UNIX-style line endings in the text
files, or lpng*.zip if you want DOS-style line endings.
Version 0.89 was the first official release of libpng. Don't let the
fact that it's the first release fool you. The libpng library has been in
@@ -78,12 +77,12 @@ compression library that is useful for more things than just PNG files.
You can use zlib as a drop-in replacement for fread() and fwrite() if
you are so inclined.
zlib should be available at the same place that libpng is, or at
ftp://ftp.simplesystems.org/pub/png/src/
zlib should be available at the same place that libpng is, or at.
ftp://ftp.info-zip.org/pub/infozip/zlib
You may also want a copy of the PNG specification. It is available
as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find
these at http://www.libpng.org/pub/png/pngdocs.html
these at http://www.libpng.org/pub/png/documents/
This code is currently being archived at libpng.sf.net in the
[DOWNLOAD] area, and on CompuServe, Lib 20 (PNG SUPPORT)
@@ -114,8 +113,8 @@ given in previous versions of this document. He and Andreas will read mail
addressed to the png-implement list, however.
Please do not send general questions about PNG. Send them to
the (png-mng-misc at lists.sourceforge.net, subscription required, visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement to subscribe)
the (png-list at ccrc.wustl.edu, subscription required, write to
majordomo at ccrc.wustl.edu with "subscribe png-list" in your message).
On the other hand,
please do not send libpng questions to that address, send them to me
or to the png-implement list. I'll
@@ -126,7 +125,7 @@ and ...". If in doubt, send questions to me. I'll bounce them
to others, if necessary.
Please do not send suggestions on how to change PNG. We have
been discussing PNG for twelve years now, and it is official and
been discussing PNG for nine years now, and it is official and
finished. If you have suggestions for libpng, however, I'll
gladly listen. Even if your suggestion is not used immediately,
it may be used later.
@@ -141,7 +140,6 @@ Files in this distribution:
TODO => Things not implemented in the current library
Y2KINFO => Statement of Y2K compliance
example.c => Example code for using libpng functions
libpng-*-*-diff.txt => Diff from previous release
libpng.3 => manual page for libpng (includes libpng.txt)
libpng.txt => Description of libpng and its functions
libpngpf.3 => manual page for libpng's private functions
@@ -149,6 +147,7 @@ Files in this distribution:
png.c => Basic interface functions common to library
png.h => Library function and interface declarations
pngconf.h => System specific library configuration
pngasmrd.h => Header file for assembler-coded functions
pngerror.c => Error/warning message I/O functions
pngget.c => Functions for retrieving info from struct
pngmem.c => Memory handling functions
@@ -191,11 +190,11 @@ Files in this distribution:
descrip.mms => VMS makefile for MMS or MMK
makefile.std => Generic UNIX makefile (cc, creates static libpng.a)
makefile.elf => Linux/ELF makefile symbol versioning,
gcc, creates libpng10.so.0.1.0.34)
gcc, creates libpng12.so.0.1.2.19beta29)
makefile.linux => Linux/ELF makefile
(gcc, creates libpng10.so.0.1.0.34)
(gcc, creates libpng12.so.0.1.2.19beta29)
makefile.gcmmx => Linux/ELF makefile
(gcc, creates libpng10.so.0.1.0.34,
(gcc, creates libpng12.so.0.1.2.19beta29,
uses assembler code tuned for Intel MMX platform)
makefile.gcc => Generic makefile (gcc, creates static libpng.a)
makefile.knr => Archaic UNIX Makefile that converts files with
@@ -213,16 +212,16 @@ Files in this distribution:
makefile.intel => Intel C/C++ version 4.0 and later
libpng.icc => Project file, IBM VisualAge/C++ 4.0 or later
makefile.netbsd => NetBSD/cc makefile, PNGGCCRD, makes libpng.so.
makefile.ne10bsd => NetBSD/cc makefile, PNGGCCRD, makes libpng10.so
makefile.ne12bsd => NetBSD/cc makefile, PNGGCCRD, makes libpng12.so
makefile.openbsd => OpenBSD makefile
makefile.sgi => Silicon Graphics IRIX (cc, creates static lib)
makefile.sggcc => Silicon Graphics
(gcc, creates libpng10.so.0.1.0.34)
(gcc, creates libpng12.so.0.1.2.19beta29)
makefile.sunos => Sun makefile
makefile.solaris => Solaris 2.X makefile
(gcc, creates libpng10.so.0.1.0.34)
(gcc, creates libpng12.so.0.1.2.19beta29)
makefile.so9 => Solaris 9 makefile
(gcc, creates libpng10.so.0.1.0.34)
(gcc, creates libpng12.so.0.1.2.19beta29)
makefile.32sunu => Sun Ultra 32-bit makefile
makefile.64sunu => Sun Ultra 64-bit makefile
makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc
@@ -257,7 +256,7 @@ Good luck, and happy coding.
-Andreas Eric Dilger (former maintainer, 1996-1997)
Internet: adilger at enel.ucalgary.ca
Web: http://members.shaw.ca/adilger/
Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/
-Guy Eric Schalnat (original author and former maintainer, 1995-1996)
(formerly of Group 42, Inc)

View File

@@ -1,13 +1,13 @@
Y2K compliance in libpng:
=========================
April 30, 2008
July 20, 2007
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.0.34 are Y2K compliant. It is my belief that earlier
upward through 1.2.19beta29 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer

9419
aclocal.m4 vendored

File diff suppressed because it is too large Load Diff

15968
configure vendored

File diff suppressed because it is too large Load Diff

View File

@@ -18,15 +18,15 @@ AC_PREREQ(2.59)
dnl Version number stuff here:
AC_INIT([libpng], [1.0.34], [png-mng-implement@lists.sourceforge.net])
AC_INIT([libpng], [1.2.19beta29], [png-mng-implement@lists.sourceforge.net])
AM_INIT_AUTOMAKE
dnl stop configure from automagically running automake
AM_MAINTAINER_MODE
PNGLIB_VERSION=1.0.34
PNGLIB_VERSION=1.2.19beta29
PNGLIB_MAJOR=1
PNGLIB_MINOR=0
PNGLIB_RELEASE=34
PNGLIB_MINOR=2
PNGLIB_RELEASE=19
dnl End of version number stuff
@@ -38,7 +38,6 @@ AC_PROG_CC
AC_PROG_LD
AC_PROG_CPP
AC_CHECK_TOOL(SED, sed, :)
AC_LIBTOOL_WIN32_DLL
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
@@ -85,16 +84,6 @@ else
fi
AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
if test "$have_ld_version_script" = "yes"; then
AC_MSG_CHECKING([for symbol prefix])
SYMBOL_PREFIX=`echo "PREFIX=__USER_LABEL_PREFIX__" \
| ${CPP-${CC-gcc} -E} - 2>&1 \
| ${EGREP-grep} "^PREFIX=" \
| ${SED-sed} "s:^PREFIX=::"`
AC_SUBST(SYMBOL_PREFIX)
AC_MSG_RESULT($SYMBOL_PREFIX)
fi
# Substitutions for .in files
AC_SUBST(PNGLIB_VERSION)
AC_SUBST(PNGLIB_MAJOR)

View File

@@ -1,6 +1,6 @@
---------------------------------------------------------------------------
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
Copyright (c) 1998-2007 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

View File

@@ -56,7 +56,7 @@ mation and links to the latest version of the source code, and Chapters
Greg Roelofs
http://pobox.com/~newt/greg_contact.html
16 March 2008
2 June 2007
BUILD INSTRUCTIONS

View File

@@ -99,7 +99,7 @@ void readpng2_version_info(void)
(compilerID == 2? "GNU C" : "unknown"));
fprintf(stderr, " Processor (x86%s) %s MMX instructions.\n",
#if defined(__x86_64__)
"_64",
"_64"
#else
"",
#endif

View File

@@ -4,7 +4,7 @@
---------------------------------------------------------------------------
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
Copyright (c) 1998-2007 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
@@ -69,12 +69,6 @@
# define Trace(x) ;
#endif
enum rpng2_states {
kPreInit = 0,
kWindowInit,
kDone
};
typedef unsigned char uch;
typedef unsigned short ush;
typedef unsigned long ulg;
@@ -101,7 +95,7 @@ typedef struct _mainprog_info {
int nommxcombine;
int nommxinterlace;
#endif
int state;
int done;
uch bg_red;
uch bg_green;
uch bg_blue;

View File

@@ -23,11 +23,10 @@
command-line parsing bug
- 1.10: enabled "message window"/console (thanks to David Geldreich)
- 2.00: dual-licensed (added GNU GPL)
- 2.01: fixed improper display of usage screen on PNG error(s)
---------------------------------------------------------------------------
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
Copyright (c) 1998-2007 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
@@ -78,7 +77,7 @@
#define PROGNAME "rpng-win"
#define LONGNAME "Simple PNG Viewer for Windows"
#define VERSION "2.01 of 16 March 2008"
#define VERSION "2.00 of 2 June 2007"
#include <stdio.h>
#include <stdlib.h>
@@ -272,11 +271,40 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
}
}
if (!filename)
if (!filename) {
++error;
} else if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error;
} else {
if ((rc = readpng_init(infile, &image_width, &image_height)) != 0) {
switch (rc) {
case 1:
fprintf(stderr, PROGNAME
": [%s] is not a PNG file: incorrect signature\n",
filename);
break;
case 2:
fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n",
filename);
break;
case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n");
break;
default:
fprintf(stderr, PROGNAME
": unknown readpng_init() error\n");
break;
}
++error;
}
if (error)
fclose(infile);
}
/* print usage screen if any errors up to this point */
/* usage screen */
if (error) {
int ch;
@@ -299,47 +327,6 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
ch = _getch();
while (ch != 'q' && ch != 'Q' && ch != 0x1B);
exit(1);
}
if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error;
} else {
if ((rc = readpng_init(infile, &image_width, &image_height)) != 0) {
switch (rc) {
case 1:
fprintf(stderr, PROGNAME
": [%s] is not a PNG file: incorrect signature\n",
filename);
break;
case 2:
fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n", filename);
break;
case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n");
break;
default:
fprintf(stderr, PROGNAME
": unknown readpng_init() error\n");
break;
}
++error;
}
if (error)
fclose(infile);
}
if (error) {
int ch;
fprintf(stderr, PROGNAME ": aborting.\n");
do
ch = _getch();
while (ch != 'q' && ch != 'Q' && ch != 0x1B);
exit(2);
} else {
fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname);
fprintf(stderr,

View File

@@ -25,11 +25,10 @@
- 1.13: fixed XFreeGC() crash bug (thanks to Patrick Welche)
- 1.14: added support for X resources (thanks to Gerhard Niklasch)
- 2.00: dual-licensed (added GNU GPL)
- 2.01: fixed improper display of usage screen on PNG error(s)
---------------------------------------------------------------------------
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
Copyright (c) 1998-2007 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
@@ -80,7 +79,7 @@
#define PROGNAME "rpng-x"
#define LONGNAME "Simple PNG Viewer for X"
#define VERSION "2.01 of 16 March 2008"
#define VERSION "2.00 of 2 June 2007"
#define RESNAME "rpng" /* our X resource application name */
#define RESCLASS "Rpng" /* our X resource class name */
@@ -266,33 +265,9 @@ int main(int argc, char **argv)
}
}
if (!filename)
if (!filename) {
++error;
/* print usage screen if any errors up to this point */
if (error) {
fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname);
readpng_version_info();
fprintf(stderr, "\n"
"Usage: %s [-display xdpy] [-gamma exp] [-bgcolor bg] file.png\n"
" xdpy\tname of the target X display (e.g., ``hostname:0'')\n"
" exp \ttransfer-function exponent (``gamma'') of the display\n"
"\t\t system in floating-point format (e.g., ``%.1f''); equal\n"
"\t\t to the product of the lookup-table exponent (varies)\n"
"\t\t and the CRT exponent (usually 2.2); must be positive\n"
" bg \tdesired background color in 7-character hex RGB format\n"
"\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n"
"\t\t used with transparent images\n"
"\nPress Q, Esc or mouse button 1 (within image window, after image\n"
"is displayed) to quit.\n"
"\n", PROGNAME, default_display_exponent);
exit(1);
}
if (!(infile = fopen(filename, "rb"))) {
} else if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error;
} else {
@@ -305,7 +280,8 @@ int main(int argc, char **argv)
break;
case 2:
fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n", filename);
": [%s] has bad IHDR (libpng longjmp)\n",
filename);
break;
case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n");
@@ -330,9 +306,25 @@ int main(int argc, char **argv)
}
/* usage screen */
if (error) {
fprintf(stderr, PROGNAME ": aborting.\n");
exit(2);
fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname);
readpng_version_info();
fprintf(stderr, "\n"
"Usage: %s [-display xdpy] [-gamma exp] [-bgcolor bg] file.png\n"
" xdpy\tname of the target X display (e.g., ``hostname:0'')\n"
" exp \ttransfer-function exponent (``gamma'') of the display\n"
"\t\t system in floating-point format (e.g., ``%.1f''); equal\n"
"\t\t to the product of the lookup-table exponent (varies)\n"
"\t\t and the CRT exponent (usually 2.2); must be positive\n"
" bg \tdesired background color in 7-character hex RGB format\n"
"\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n"
"\t\t used with transparent images\n"
"\nPress Q, Esc or mouse button 1 (within image window, after image\n"
"is displayed) to quit.\n"
"\n", PROGNAME, default_display_exponent);
exit(1);
}

View File

@@ -10,7 +10,7 @@
tweaking (or maybe not). Thanks to Adam Costello and Pieter S. van der
Meulen for the "diamond" and "radial waves" patterns, respectively.
to do (someday, maybe):
to do:
- handle quoted command-line args (especially filenames with spaces)
- finish resizable checkerboard-gradient (sizes 4-128?)
- use %.1023s to simplify truncation of title-bar string?
@@ -29,13 +29,10 @@
- 1.21: made minor tweak to usage screen to fit within 25-line console
- 1.22: added AMD64/EM64T support (__x86_64__)
- 2.00: dual-licensed (added GNU GPL)
- 2.01: fixed 64-bit typo in readpng2.c
- 2.02: fixed improper display of usage screen on PNG error(s); fixed
unexpected-EOF and file-read-error cases
---------------------------------------------------------------------------
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
Copyright (c) 1998-2007 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
@@ -86,7 +83,7 @@
#define PROGNAME "rpng2-win"
#define LONGNAME "Progressive PNG Viewer for Windows"
#define VERSION "2.02 of 16 March 2008"
#define VERSION "2.00 of 2 June 2007"
#include <stdio.h>
#include <stdlib.h>
@@ -417,11 +414,41 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
}
}
if (!filename)
if (!filename) {
++error;
} else if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error;
} else {
incount = fread(inbuf, 1, INBUFSIZE, infile);
if (incount < 8 || !readpng2_check_sig(inbuf, 8)) {
fprintf(stderr, PROGNAME
": [%s] is not a PNG file: incorrect signature\n",
filename);
++error;
} else if ((rc = readpng2_init(&rpng2_info)) != 0) {
switch (rc) {
case 2:
fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n",
filename);
break;
case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n");
break;
default:
fprintf(stderr, PROGNAME
": unknown readpng2_init() error\n");
break;
}
++error;
}
if (error)
fclose(infile);
}
/* print usage screen if any errors up to this point */
/* usage screen */
if (error) {
int ch;
@@ -461,48 +488,6 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
ch = _getch();
while (ch != 'q' && ch != 'Q' && ch != 0x1B);
exit(1);
}
if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error;
} else {
incount = fread(inbuf, 1, INBUFSIZE, infile);
if (incount < 8 || !readpng2_check_sig(inbuf, 8)) {
fprintf(stderr, PROGNAME
": [%s] is not a PNG file: incorrect signature\n",
filename);
++error;
} else if ((rc = readpng2_init(&rpng2_info)) != 0) {
switch (rc) {
case 2:
fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n", filename);
break;
case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n");
break;
default:
fprintf(stderr, PROGNAME
": unknown readpng2_init() error\n");
break;
}
++error;
}
if (error)
fclose(infile);
}
if (error) {
int ch;
fprintf(stderr, PROGNAME ": aborting.\n");
do
ch = _getch();
while (ch != 'q' && ch != 'Q' && ch != 0x1B);
exit(2);
} else {
fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname);
fprintf(stderr,
@@ -534,7 +519,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
} else
rpng2_info.need_bgcolor = TRUE;
rpng2_info.state = kPreInit;
rpng2_info.done = FALSE;
rpng2_info.mainprog_init = rpng2_win_init;
rpng2_info.mainprog_display_row = rpng2_win_display_row;
rpng2_info.mainprog_finish_display = rpng2_win_finish_display;
@@ -554,27 +539,10 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
if (readpng2_decode_data(&rpng2_info, inbuf, incount))
++error;
Trace((stderr, "done with readpng2_decode_data()\n"))
if (error || incount != INBUFSIZE || rpng2_info.state == kDone) {
if (rpng2_info.state == kDone) {
Trace((stderr, "done decoding PNG image\n"))
} else if (ferror(infile)) {
fprintf(stderr, PROGNAME
": error while reading PNG image file\n");
exit(3);
} else if (feof(infile)) {
fprintf(stderr, PROGNAME ": end of file reached "
"(unexpectedly) while reading PNG image file\n");
exit(3);
} else /* if (error) */ {
// will print error message below
}
if (error || feof(infile) || rpng2_info.done)
break;
}
if (timing)
Sleep(1000L);
incount = fread(inbuf, 1, INBUFSIZE, infile);
}
@@ -621,7 +589,7 @@ static void rpng2_win_init()
ulg rowbytes = rpng2_info.rowbytes;
Trace((stderr, "beginning rpng2_win_init()\n"))
Trace((stderr, " rowbytes = %d\n", rpng2_info.rowbytes))
Trace((stderr, " rowbytes = %ld\n", rpng2_info.rowbytes))
Trace((stderr, " width = %ld\n", rpng2_info.width))
Trace((stderr, " height = %ld\n", rpng2_info.height))
@@ -651,8 +619,6 @@ static void rpng2_win_init()
readpng2_cleanup(&rpng2_info);
return;
}
rpng2_info.state = kWindowInit;
}
@@ -1148,7 +1114,7 @@ static void rpng2_win_finish_display()
* we have nothing to do here except set a flag and let the user know
* that the image is done */
rpng2_info.state = kDone;
rpng2_info.done = TRUE;
printf(
"Done. Press Q, Esc or mouse button 1 (within image window) to quit.\n");
fflush(stdout);

View File

@@ -12,7 +12,7 @@
Thanks to Adam Costello and Pieter S. van der Meulen for the "diamond"
and "radial waves" patterns, respectively.
to do (someday, maybe):
to do:
- fix expose/redraw code: don't draw entire row if only part exposed
- 8-bit (colormapped) X support
- finish resizable checkerboard-gradient (sizes 4-128?)
@@ -36,14 +36,10 @@
- 1.32: added AMD64/EM64T support (__x86_64__); added basic expose/redraw
handling
- 2.00: dual-licensed (added GNU GPL)
- 2.01: fixed 64-bit typo in readpng2.c; fixed -pause usage description
- 2.02: fixed improper display of usage screen on PNG error(s); fixed
unexpected-EOF and file-read-error cases; fixed Trace() cut-and-
paste bugs
---------------------------------------------------------------------------
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
Copyright (c) 1998-2007 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
@@ -94,7 +90,7 @@
#define PROGNAME "rpng2-x"
#define LONGNAME "Progressive PNG Viewer for X"
#define VERSION "2.02 of 16 March 2008"
#define VERSION "2.00 of 2 June 2007"
#define RESNAME "rpng2" /* our X resource application name */
#define RESCLASS "Rpng" /* our X resource class name */
@@ -457,11 +453,49 @@ int main(int argc, char **argv)
}
}
if (!filename)
if (!filename) {
++error;
} else if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error;
} else {
incount = fread(inbuf, 1, INBUFSIZE, infile);
if (incount < 8 || !readpng2_check_sig(inbuf, 8)) {
fprintf(stderr, PROGNAME
": [%s] is not a PNG file: incorrect signature\n",
filename);
++error;
} else if ((rc = readpng2_init(&rpng2_info)) != 0) {
switch (rc) {
case 2:
fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n",
filename);
break;
case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n");
break;
default:
fprintf(stderr, PROGNAME
": unknown readpng2_init() error\n");
break;
}
++error;
} else {
display = XOpenDisplay(displayname);
if (!display) {
readpng2_cleanup(&rpng2_info);
fprintf(stderr, PROGNAME ": can't open X display [%s]\n",
displayname? displayname : "default");
++error;
}
}
if (error)
fclose(infile);
}
/* print usage screen if any errors up to this point */
/* usage screen */
if (error) {
fprintf(stderr, "\n%s %s: %s\n\n", PROGNAME, VERSION, appname);
@@ -499,7 +533,7 @@ int main(int argc, char **argv)
"\t\t row (for demo purposes)\n"
" -timing\tenables delay for every block read, to simulate modem\n"
"\t\t download of image (~36 Kbps)\n"
" -pause\tpauses after displaying each pass until mouse clicked\n"
" -pause\tpauses after displaying each pass until key pressed\n"
"\nPress Q, Esc or mouse button 1 (within image window, after image\n"
"is displayed) to quit.\n"
"\n", PROGNAME,
@@ -511,52 +545,6 @@ int main(int argc, char **argv)
}
if (!(infile = fopen(filename, "rb"))) {
fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename);
++error;
} else {
incount = fread(inbuf, 1, INBUFSIZE, infile);
if (incount < 8 || !readpng2_check_sig(inbuf, 8)) {
fprintf(stderr, PROGNAME
": [%s] is not a PNG file: incorrect signature\n",
filename);
++error;
} else if ((rc = readpng2_init(&rpng2_info)) != 0) {
switch (rc) {
case 2:
fprintf(stderr, PROGNAME
": [%s] has bad IHDR (libpng longjmp)\n", filename);
break;
case 4:
fprintf(stderr, PROGNAME ": insufficient memory\n");
break;
default:
fprintf(stderr, PROGNAME
": unknown readpng2_init() error\n");
break;
}
++error;
} else {
Trace((stderr, "about to call XOpenDisplay()\n"))
display = XOpenDisplay(displayname);
if (!display) {
readpng2_cleanup(&rpng2_info);
fprintf(stderr, PROGNAME ": can't open X display [%s]\n",
displayname? displayname : "default");
++error;
}
}
if (error)
fclose(infile);
}
if (error) {
fprintf(stderr, PROGNAME ": aborting.\n");
exit(2);
}
/* set the title-bar string, but make sure buffer doesn't overflow */
alen = strlen(appname);
@@ -579,7 +567,7 @@ int main(int argc, char **argv)
} else
rpng2_info.need_bgcolor = TRUE;
rpng2_info.state = kPreInit;
rpng2_info.done = FALSE;
rpng2_info.mainprog_init = rpng2_x_init;
rpng2_info.mainprog_display_row = rpng2_x_display_row;
rpng2_info.mainprog_finish_display = rpng2_x_finish_display;
@@ -599,27 +587,10 @@ int main(int argc, char **argv)
if (readpng2_decode_data(&rpng2_info, inbuf, incount))
++error;
Trace((stderr, "done with readpng2_decode_data()\n"))
if (error || incount != INBUFSIZE || rpng2_info.state == kDone) {
if (rpng2_info.state == kDone) {
Trace((stderr, "done decoding PNG image\n"))
} else if (ferror(infile)) {
fprintf(stderr, PROGNAME
": error while reading PNG image file\n");
exit(3);
} else if (feof(infile)) {
fprintf(stderr, PROGNAME ": end of file reached "
"(unexpectedly) while reading PNG image file\n");
exit(3);
} else /* if (error) */ {
// will print error message below
}
if (error || feof(infile) || rpng2_info.done)
break;
}
if (timing)
sleep(1);
incount = fread(inbuf, 1, INBUFSIZE, infile);
}
@@ -639,7 +610,6 @@ int main(int argc, char **argv)
#ifdef FEATURE_LOOP
if (loop && bg_image) {
Trace((stderr, "entering -loop loop (FEATURE_LOOP)\n"))
for (;;) {
int i, use_sleep;
struct timeval now, then;
@@ -735,20 +705,13 @@ int main(int argc, char **argv)
/* wait for the user to tell us when to quit */
if (rpng2_info.state >= kWindowInit) {
Trace((stderr, "entering final wait-for-quit-event loop\n"))
do {
XNextEvent(display, &e);
if (e.type == Expose) {
XExposeEvent *ex = (XExposeEvent *)&e;
rpng2_x_redisplay_image (ex->x, ex->y, ex->width, ex->height);
}
} while (!QUIT(e,k));
} else {
fprintf(stderr, PROGNAME ": init callback never called: probable "
"libpng error while decoding PNG metadata\n");
exit(4);
}
do {
XNextEvent(display, &e);
if (e.type == Expose) {
XExposeEvent *ex = (XExposeEvent *)&e;
rpng2_x_redisplay_image (ex->x, ex->y, ex->width, ex->height);
}
} while (!QUIT(e,k));
/* we're done: clean up all image and X resources and go away */
@@ -773,7 +736,7 @@ static void rpng2_x_init(void)
ulg rowbytes = rpng2_info.rowbytes;
Trace((stderr, "beginning rpng2_x_init()\n"))
Trace((stderr, " rowbytes = %d\n", rpng2_info.rowbytes))
Trace((stderr, " rowbytes = %ld\n", rpng2_info.rowbytes))
Trace((stderr, " width = %ld\n", rpng2_info.width))
Trace((stderr, " height = %ld\n", rpng2_info.height))
@@ -810,8 +773,6 @@ static void rpng2_x_init(void)
rpng2_x_cleanup();
exit(2);
}
rpng2_info.state = kWindowInit;
}
@@ -1595,7 +1556,7 @@ static void rpng2_x_finish_display(void)
* have nothing to do here except set a flag and let the user know that
* the image is done */
rpng2_info.state = kDone;
rpng2_info.done = TRUE;
printf(
"Done. Press Q, Esc or mouse button 1 (within image window) to quit.\n");
fflush(stdout);
@@ -1620,9 +1581,9 @@ static void rpng2_x_redisplay_image(ulg startcol, ulg startrow,
Trace((stderr, "beginning display loop (image_channels == %d)\n",
rpng2_info.channels))
Trace((stderr, " (width = %ld, rowbytes = %d, ximage_rowbytes = %d)\n",
rpng2_info.width, rpng2_info.rowbytes, ximage_rowbytes))
image_channels))
Trace((stderr, " (width = %ld, rowbytes = %ld, ximage_rowbytes = %d)\n",
rpng2_info.width, image_rowbytes, ximage_rowbytes))
Trace((stderr, " (bpp = %d)\n", ximage->bits_per_pixel))
Trace((stderr, " (byte_order = %s)\n", ximage->byte_order == MSBFirst?
"MSBFirst" : (ximage->byte_order == LSBFirst? "LSBFirst" : "unknown")))

View File

@@ -0,0 +1,6 @@
This demonstrates the use of PNG_USER_CONFIG and pngusr.h
To build a minimal read-only decoder, run
gather.sh # to collect needed files from pngminus, libpng, and zlib
make -f makefile.std

View File

@@ -0,0 +1,8 @@
cp ../../pngminus/png2pnm.c pngm2pnm.c
cp ../../../*.h .
cp ../../../*.c .
rm example.c pnggccrd.c pngvcrd.c pngtest.c
# change the following 2 lines if zlib is somewhere else
cp ../../../../zlib/*.h .
cp ../../../../zlib/*.c .
rm minigzip.c example.c compress.c deflate.c

View File

@@ -0,0 +1,44 @@
# Makefile for PngMinus (pngm2pnm)
# Linux / Unix
#CC=cc
CC=gcc
LD=$(CC)
RM=rm -f
CFLAGS=-DPNG_USER_CONFIG -DNO_GZCOMPRESS -DNO_GZIP \
-DdeflateParams\(a,b,c\)=Z_OK -I. -O1
C=.c
O=.o
L=.a
E=
ZOBJS = adler32$(O) crc32$(O) gzio$(O) \
infback$(O) inffast$(O) inflate$(O) inftrees$(O) \
trees$(O) uncompr$(O) zutil$(O)
OBJS = pngm2pnm$(O) png$(O) pngerror$(O) pngget$(O) pngmem$(O) \
pngpread$(O) pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) \
pngset$(O) pngtrans$(O) $(ZOBJS)
# implicit make rules -------------------------------------------------------
.c$(O): png.h pngconf.h pngusr.h zlib.h
$(CC) -c $(CFLAGS) $<
# dependencies
all: pngm2pnm$(E)
pngm2pnm$(E): $(OBJS)
$(LD) -o pngm2pnm$(E) $(OBJS)
strip pngm2pnm$(E)
clean:
$(RM) pngm2pnm$(O)
$(RM) pngm2pnm$(E)
$(RM) $(OBJS)
# End of makefile for pngm2pnm

View File

@@ -0,0 +1,63 @@
/* minrdpngconf.h: headers to make a minimal png-read-only library
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 2007 Glenn Randers-Pehrson
* Derived from pngcrush.h, Copyright 1998-2007, Glenn Randers-Pehrson
*/
#ifndef MINRDPNGCONF_H
#define MINRDPNGCONF_H
#define PNG_NO_GLOBAL_ARRAYS
#define PNG_NO_WARNINGS
#define png_warning(s1,s2) ""
#define png_chunk_warning(s1,s2) ""
#define PNG_NO_MMX_CODE
#define PNG_NO_OPTIMIZED_CODE
#define PNG_NO_READ_GAMMA
#define PNG_NO_READ_BACKGROUND
#define PNG_NO_READ_DITHER
#define PNG_NO_READ_INVERT
#define PNG_NO_READ_SHIFT
#define PNG_NO_READ_PACK
#define PNG_NO_READ_PACKSWAP
#define PNG_NO_READ_FILLER
#define PNG_NO_READ_SWAP_ALPHA
#define PNG_NO_READ_INVERT_ALPHA
#define PNG_NO_READ_RGB_TO_GRAY
#define PNG_NO_READ_USER_TRANSFORM
#define PNG_NO_READ_bKGD
#define PNG_NO_READ_cHRM
#define PNG_NO_READ_gAMA
#define PNG_NO_READ_hIST
#define PNG_NO_READ_iCCP
#define PNG_NO_READ_pCAL
#define PNG_NO_READ_pHYs
#define PNG_NO_READ_sBIT
#define PNG_NO_READ_sCAL
#define PNG_NO_READ_sPLT
#define PNG_NO_READ_TEXT
#define PNG_NO_READ_tIME
#define PNG_NO_READ_UNKNOWN_CHUNKS
#define PNG_NO_READ_USER_CHUNKS
#define PNG_NO_READ_EMPTY_PLTE
#define PNG_NO_READ_OPT_PLTE
#define PNG_NO_READ_STRIP_ALPHA
#define PNG_NO_READ_oFFs
#define PNG_NO_WRITE_SUPPORTED
#define PNG_NO_INFO_IMAGE
#define PNG_NO_USER_MEM
#define PNG_NO_FIXED_POINT_SUPPORTED
#define PNG_NO_MNG_FEATURES
#define PNG_NO_USER_TRANSFORM_PTR
#define PNG_NO_HANDLE_AS_UNKNOWN
#define PNG_NO_CONSOLE_IO
#define PNG_NO_ZALLOC_ZERO
#define PNG_NO_ERROR_NUMBERS
#define PNG_NO_EASY_ACCESS
#define PNG_NO_PROGRESSIVE_READ
#endif /* MINRDPNGCONF_H */

View File

@@ -0,0 +1,6 @@
This demonstrates the use of PNG_USER_CONFIG and pngusr.h
To build a minimal write-only encoder, run
gather.sh # to collect needed files from pngminus, libpng, and zlib
make -f makefile.std

View File

@@ -0,0 +1,27 @@
#include "zlib.h"
int ZEXPORT inflate(strm, flush)
z_streamp strm;
int flush;
{ return Z_OK ; }
int ZEXPORT inflateReset(strm)
z_streamp strm;
{ return Z_OK ; }
int ZEXPORT inflateEnd(strm)
z_streamp strm;
{ return Z_STREAM_ERROR ; }
int ZEXPORT inflateInit_(strm, version, stream_size)
z_streamp strm;
const char *version;
int stream_size;
{ return Z_OK ; }
int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
z_streamp strm;
int windowBits;
const char *version;
int stream_size;
{ return Z_STREAM_ERROR ; }

View File

@@ -0,0 +1,9 @@
cp ../../pngminus/pnm2png.c pnm2pngm.c
cp ../../../*.h .
cp ../../../*.c .
rm example.c pnggccrd.c pngvcrd.c pngtest.c
# Change the next 2 lines if zlib is somewhere else.
cp ../../../../zlib/*.h .
cp ../../../../zlib/*.c .
rm inf*.[ch]
rm minigzip.c example.c

View File

@@ -0,0 +1,44 @@
# Makefile for PngMinus (pnm2pngm)
# Linux / Unix
#CC=cc
CC=gcc
LD=$(CC)
RM=rm -f
CFLAGS=-DPNG_USER_CONFIG -DNO_GZIP -I. -O1
C=.c
O=.o
L=.a
E=
ZOBJS = adler32$(O) compress$(O) crc32$(O) deflate$(O) gzio$(O) \
dummy_inflate$(O) \
trees$(O) uncompr$(O) zutil$(O)
OBJS = pnm2pngm$(O) png$(O) pngerror$(O) pngget$(O) pngmem$(O) \
pngpread$(O) pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) \
pngset$(O) pngtrans$(O) pngwio$(O) pngwrite$(O) \
pngwtran$(O) pngwutil$(O) $(ZOBJS)
# implicit make rules -------------------------------------------------------
.c$(O): png.h pngconf.h pngusr.h zlib.h
$(CC) -c $(CFLAGS) $<
# dependencies
all: pnm2pngm$(E)
pnm2pngm$(E): $(OBJS)
$(LD) -o pnm2pngm$(E) $(OBJS)
strip pnm2pngm$(E)
clean:
$(RM) pnm2pngm$(O)
$(RM) pnm2pngm$(E)
$(RM) $(OBJS)
# End of makefile for pnm2pngm

View File

@@ -0,0 +1,63 @@
/* minwrpngconf.h: headers to make a minimal png-write-only library
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 2007 Glenn Randers-Pehrson
* Derived from pngcrush.h, Copyright 1998-2007, Glenn Randers-Pehrson
*/
#ifndef MINWRPNGCONF_H
#define MINWRPNGCONF_H
#define PNG_NO_GLOBAL_ARRAYS
#define PNG_NO_READ_SUPPORTED
#define PNG_NO_WARNINGS
#define png_warning(s1,s2) ""
#define png_chunk_warning(s1,s2) ""
#define PNG_NO_WRITE_BACKGROUND
#define PNG_NO_WRITE_GAMMA
#define PNG_NO_WRITE_DITHER
#define PNG_NO_WRITE_INVERT
#define PNG_NO_WRITE_SHIFT
#define PNG_NO_WRITE_PACK
#define PNG_NO_WRITE_PACKSWAP
#define PNG_NO_WRITE_FILLER
#define PNG_NO_WRITE_SWAP_ALPHA
#define PNG_NO_WRITE_INVERT_ALPHA
#define PNG_NO_WRITE_RGB_TO_GRAY
#define PNG_NO_WRITE_USER_TRANSFORM
#define PNG_NO_WRITE_bKGD
#define PNG_NO_WRITE_cHRM
#define PNG_NO_WRITE_gAMA
#define PNG_NO_WRITE_sRGB
#define PNG_NO_WRITE_hIST
#define PNG_NO_WRITE_iCCP
#define PNG_NO_WRITE_oFFs
#define PNG_NO_WRITE_pCAL
#define PNG_NO_WRITE_pHYs
#define PNG_NO_WRITE_sBIT
#define PNG_NO_WRITE_sCAL
#define PNG_NO_WRITE_sPLT
#define PNG_NO_WRITE_TEXT
#define PNG_NO_WRITE_tIME
#define PNG_NO_WRITE_UNKNOWN_CHUNKS
#define PNG_NO_WRITE_USER_CHUNKS
#define PNG_NO_WRITE_EMPTY_PLTE
#define PNG_NO_WRITE_OPT_PLTE
#define PNG_NO_WRITE_FILTER
#define PNG_NO_WRITE_WEIGHTED_FILTER
#define PNG_NO_WRITE_INTERLACING_SUPPORTED /* effective libpng-1.3.0 */
#define PNG_NO_INFO_IMAGE
#define PNG_NO_USER_MEM
#define PNG_NO_FIXED_POINT_SUPPORTED
#define PNG_NO_MNG_FEATURES
#define PNG_NO_USER_TRANSFORM_PTR
#define PNG_NO_HANDLE_AS_UNKNOWN
#define PNG_NO_CONSOLE_IO
#define PNG_NO_ZALLOC_ZERO
#define PNG_NO_ERROR_NUMBERS
#define PNG_NO_EASY_ACCESS
#endif /* MINWRPNGCONF_H */

View File

@@ -1,17 +1,13 @@
libpng.txt - A description on how to use and modify libpng
libpng version 1.0.34 - April 30, 2008
libpng version 1.2.19beta29 - July 20, 2007
Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net>
Copyright (c) 1998-2008 Glenn Randers-Pehrson
Copyright (c) 1998-2007 Glenn Randers-Pehrson
For conditions of distribution and use, see copyright
notice in png.h.
Based on:
libpng versions 0.97, January 1998, through 1.0.34 - April 30, 2008
Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2008 Glenn Randers-Pehrson
based on:
libpng 1.0 beta 6 version 0.96 May 28, 1997
Updated and distributed by Andreas Dilger
@@ -51,14 +47,12 @@ a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2003 (E)) at
The W3C and ISO documents have identical technical content.
The PNG-1.2 specification is available at
<http://www.libpng.org/pub/png/documents/>. It is technically equivalent
to the PNG specification (second edition) but has some additional material.
<http://www.libpng.org/pub/png/documents/>
The PNG-1.0 specification is available
as RFC 2083 <http://www.libpng.org/pub/png/documents/> and as a
W3C Recommendation <http://www.w3.org/TR/REC.png.html>.
Some additional chunks are described in the special-purpose public chunks
W3C Recommendation <http://www.w3.org/TR/REC.png.html>. Some
additional chunks are described in the special-purpose public chunks
documents at <http://www.libpng.org/pub/png/documents/>.
Other information
@@ -92,7 +86,9 @@ Libpng is thread safe, provided the threads are using different
instances of the structures. Each thread should have its own
png_struct and png_info instances, and thus its own image.
Libpng does not protect itself against two threads using the
same instance of a structure.
same instance of a structure. Note: thread safety may be defeated
by use of some of the MMX assembler code in pnggccrd.c, which is only
compiled when the user defines PNG_THREAD_UNSAFE_OK.
II. Structures
@@ -266,19 +262,15 @@ input stream. You must supply the function
png_unknown_chunkp chunk);
{
/* The unknown chunk structure contains your
chunk data, along with similar data for any other
unknown chunks: */
chunk data: */
png_byte name[5];
png_byte *data;
png_size_t size;
/* Note that libpng has already taken care of
the CRC handling */
/* put your code here. Search for your chunk in the
unknown chunk structure, process it, and return one
of the following: */
/* put your code here. Return one of the
following: */
return (-n); /* chunk had an error */
return (0); /* did not recognize */
@@ -298,11 +290,6 @@ you can retrieve with
png_get_user_chunk_ptr(png_ptr);
If you call the png_set_read_user_chunk_fn() function, then all unknown
chunks will be saved when read, in case your callback function will need
one or more of them. This behavior can be changed with the
png_set_keep_unknown_chunks() function, described below.
At this point, you can set up a callback function that will be
called after each row has been read, which you can use to control
a progress meter or the like. It's demonstrated in pngtest.c.
@@ -320,18 +307,40 @@ To inform libpng about your function, use
png_set_read_status_fn(png_ptr, read_row_callback);
Width and height limits
The PNG specification allows the width and height of an image to be as
large as 2^31-1 (0x7fffffff), or about 2.147 billion rows and columns.
Since very few applications really need to process such large images,
we have imposed an arbitrary 1-million limit on rows and columns.
Larger images will be rejected immediately with a png_error() call. If
you wish to override this limit, you can use
png_set_user_limits(png_ptr, width_max, height_max);
to set your own limits, or use width_max = height_max = 0x7fffffffL
to allow all valid dimensions (libpng may reject some very large images
anyway because of potential buffer overflow conditions).
You should put this statement after you create the PNG structure and
before calling png_read_info(), png_read_png(), or png_process_data().
If you need to retrieve the limits that are being applied, use
width_max = png_get_user_width_max(png_ptr);
height_max = png_get_user_height_max(png_ptr);
Unknown-chunk handling
Now you get to set the way the library processes unknown chunks in the
input PNG stream. Both known and unknown chunks will be read. Normal
behavior is that known chunks will be parsed into information in
various info_ptr members while unknown chunks will be discarded. To change
various info_ptr members; unknown chunks will be discarded. To change
this, you can call:
png_set_keep_unknown_chunks(png_ptr, keep,
chunk_list, num_chunks);
keep - 0: default unknown chunk handling
1: ignore; do not keep
keep - 0: do not handle as unknown
1: do not keep
2: keep only if safe-to-copy
3: keep even if unsafe-to-copy
You can use these definitions:
@@ -354,37 +363,6 @@ instances of png_set_keep_unknown_chunks(), the final instance will
take precedence. The IHDR and IEND chunks should not be named in
chunk_list; if they are, libpng will process them normally anyway.
Here is an example of the usage of png_set_keep_unknown_chunks(),
where the private "vpAg" chunk will later be processed by a user chunk
callback function:
png_byte vpAg[5]={118, 112, 65, 103, (png_byte) '\0'};
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
png_byte unused_chunks[]=
{
104, 73, 83, 84, (png_byte) '\0', /* hIST */
105, 84, 88, 116, (png_byte) '\0', /* iTXt */
112, 67, 65, 76, (png_byte) '\0', /* pCAL */
115, 67, 65, 76, (png_byte) '\0', /* sCAL */
115, 80, 76, 84, (png_byte) '\0', /* sPLT */
116, 73, 77, 69, (png_byte) '\0', /* tIME */
};
#endif
...
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
/* ignore all unknown chunks: */
png_set_keep_unknown_chunks(read_ptr, 1, NULL, 0);
/* except for vpAg: */
png_set_keep_unknown_chunks(read_ptr, 2, vpAg, 1);
/* also ignore unused known chunks: */
png_set_keep_unknown_chunks(read_ptr, 1, unused_chunks,
(int)sizeof(unused_chunks)/5);
#endif
The high-level read interface
At this point there are two ways to proceed; through the high-level
@@ -793,7 +771,7 @@ unless the library has been told to transform it into another format.
For example, 4 bit/pixel paletted or grayscale data will be returned
2 pixels/byte with the leftmost pixel in the high-order bits of the
byte, unless png_set_packing() is called. 8-bit RGB data will be stored
in RGB RGB RGB format unless png_set_filler()
in RGB RGB RGB format unless png_set_filler() or png_set_add_alpha()
is called to insert filler bytes, either before or after each RGB triplet.
16-bit RGB data will be returned RRGGBB RRGGBB, with the most significant
byte of the color value first, unless png_set_strip_16() is called to
@@ -801,7 +779,7 @@ transform it to regular RGB RGB triplets, or png_set_filler() or
png_set_add alpha() is called to insert filler bytes, either before or
after each RRGGBB triplet. Similarly, 8-bit or 16-bit grayscale data can
be modified with
png_set_filler() or png_set_strip_16().
png_set_filler(), png_set_add_alpha(), or png_set_strip_16().
The following code transforms grayscale images of less than 8 to 8 bits,
changes paletted images to RGB, and adds a full alpha channel if there is
@@ -813,7 +791,7 @@ viewing application that wishes to treat all images in the same way.
png_set_palette_to_rgb(png_ptr);
if (color_type == PNG_COLOR_TYPE_GRAY &&
bit_depth < 8) png_set_gray_1_2_4_to_8(png_ptr);
bit_depth < 8) png_set_expand_gray_1_2_4_to_8(png_ptr);
if (png_get_valid(png_ptr, info_ptr,
PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png_ptr);
@@ -823,6 +801,10 @@ in libpng version 1.0.4, with the function names expanded to improve code
readability. In some future version they may actually do different
things.
As of libpng version 1.2.9, png_set_expand_gray_1_2_4_to_8() was
added. It expands the sample depth without changing tRNS to alpha.
At the same time, png_set_gray_1_2_4_to_8() was deprecated, and it
will be removed from a future version.
PNG can have files with 16 bits per channel. If you only can handle
8 bits per channel, this will strip the pixels down to 8 bit.
@@ -887,7 +869,16 @@ does not affect images that already have full alpha channels. To add an
opaque alpha channel, use filler=0xff or 0xffff and PNG_FILLER_AFTER which
will generate RGBA pixels.
Note that png_set_filler() does not change the color type. If you want
to do that, you can add a true alpha channel with
if (color_type == PNG_COLOR_TYPE_RGB ||
color_type == PNG_COLOR_TYPE_GRAY)
png_set_add_alpha(png_ptr, filler, PNG_FILLER_AFTER);
where "filler" contains the alpha value to assign to each pixel.
This function was added in libpng-1.2.7.
If you are reading an image with an alpha channel, and you need the
data as ARGB instead of the normal PNG format RGBA:
@@ -1754,11 +1745,6 @@ Some of the more important parts of the png_info are:
can also be
PNG_INTRAPIXEL_DIFFERENCING)
If you call png_set_IHDR(), the call must appear before any of the
other png_set_*() functions, which might require access to some of
the IHDR settings. The remaining png_set_*() functions can be called
in any order.
png_set_PLTE(png_ptr, info_ptr, palette,
num_palette);
palette - the palette for the file
@@ -2369,13 +2355,17 @@ For a more compact example of writing a PNG image, see the file example.c.
V. Modifying/Customizing libpng:
There are two issues here. The first is changing how libpng does
There are three issues here. The first is changing how libpng does
standard things like memory allocation, input/output, and error handling.
The second deals with more complicated things like adding new chunks,
adding new transformations, and generally changing how libpng works.
Both of those are compile-time issues; that is, they are generally
determined at the time the code is written, and there is rarely a need
to provide the user with a means of changing them.
to provide the user with a means of changing them. The third is a
run-time issue: choosing between and/or tuning one or more alternate
versions of computationally intensive routines; specifically, optimized
assembly-language (and therefore compiler- and platform-dependent)
versions.
Memory allocation, input/output, and error handling
@@ -2407,9 +2397,6 @@ Your malloc_fn() must return NULL in case of failure. The png_malloc()
function will normally call png_error() if it receives a NULL from the
system memory allocator or from your replacement malloc_fn().
Your free_fn() will never be called with a NULL ptr, since libpng's
png_free() checks for NULL before calling free_fn().
Input/Output in libpng is done through png_read() and png_write(),
which currently just call fread() and fwrite(). The FILE * is stored in
png_struct and is initialized via png_init_io(). If you wish to change
@@ -2739,6 +2726,125 @@ When PNG_DEBUG = 1, the macros are defined, but only png_debug statements
having level = 0 will be printed. There aren't any such statements in
this version of libpng, but if you insert some they will be printed.
VI. Runtime optimization
A new feature in libpng 1.2.0 is the ability to dynamically switch between
standard and optimized versions of some routines. Currently these are
limited to three computationally intensive tasks when reading PNG files:
decoding row filters, expanding interlacing, and combining interlaced or
transparent row data with previous row data. Currently the optimized
versions are available only for x86 (Intel, AMD, etc.) platforms with
MMX support, though this may change in future versions. (For example,
the non-MMX assembler optimizations for zlib might become similarly
runtime-selectable in future releases, in which case libpng could be
extended to support them. Alternatively, the compile-time choice of
floating-point versus integer routines for gamma correction might become
runtime-selectable.)
Because such optimizations tend to be very platform- and compiler-dependent,
both in how they are written and in how they perform, the new runtime code
in libpng has been written to allow programs to query, enable, and disable
either specific optimizations or all such optimizations. For example, to
enable all possible optimizations (bearing in mind that some "optimizations"
may actually run more slowly in rare cases):
#if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
png_uint_32 mask, flags;
flags = png_get_asm_flags(png_ptr);
mask = png_get_asm_flagmask(PNG_SELECT_READ | PNG_SELECT_WRITE);
png_set_asm_flags(png_ptr, flags | mask);
#endif
To enable only optimizations relevant to reading PNGs, use PNG_SELECT_READ
by itself when calling png_get_asm_flagmask(); similarly for optimizing
only writing. To disable all optimizations:
#if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
flags = png_get_asm_flags(png_ptr);
mask = png_get_asm_flagmask(PNG_SELECT_READ | PNG_SELECT_WRITE);
png_set_asm_flags(png_ptr, flags & ~mask);
#endif
To enable or disable only MMX-related features, use png_get_mmx_flagmask()
in place of png_get_asm_flagmask(). The mmx version takes one additional
parameter:
#if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
int selection = PNG_SELECT_READ | PNG_SELECT_WRITE;
int compilerID;
mask = png_get_mmx_flagmask(selection, &compilerID);
#endif
On return, compilerID will indicate which version of the MMX assembler
optimizations was compiled. Currently two flavors exist: Microsoft
Visual C++ (compilerID == 1) and GNU C (a.k.a. gcc/gas, compilerID == 2).
On non-x86 platforms or on systems compiled without MMX optimizations, a
value of -1 is used.
Note that both png_get_asm_flagmask() and png_get_mmx_flagmask() return
all valid, settable optimization bits for the version of the library that's
currently in use. In the case of shared (dynamically linked) libraries,
this may include optimizations that did not exist at the time the code was
written and compiled. It is also possible, of course, to enable only known,
specific optimizations; for example:
#if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
flags = PNG_ASM_FLAG_MMX_READ_COMBINE_ROW \
| PNG_ASM_FLAG_MMX_READ_INTERLACE \
| PNG_ASM_FLAG_MMX_READ_FILTER_SUB \
| PNG_ASM_FLAG_MMX_READ_FILTER_UP \
| PNG_ASM_FLAG_MMX_READ_FILTER_AVG \
| PNG_ASM_FLAG_MMX_READ_FILTER_PAETH ;
png_set_asm_flags(png_ptr, flags);
#endif
This method would enable only the MMX read-optimizations available at the
time of libpng 1.2.0's release, regardless of whether a later version of
the DLL were actually being used. (Also note that these functions did not
exist in versions older than 1.2.0, so any attempt to run a dynamically
linked app on such an older version would fail.)
To determine whether the processor supports MMX instructions at all, use
the png_mmx_support() function:
#if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
mmxsupport = png_mmx_support();
#endif
It returns -1 if MMX support is not compiled into libpng, 0 if MMX code
is compiled but MMX is not supported by the processor, or 1 if MMX support
is fully available. Note that png_mmx_support(), png_get_mmx_flagmask(),
and png_get_asm_flagmask() all may be called without allocating and ini-
tializing any PNG structures (for example, as part of a usage screen or
"about" box).
The following code can be used to prevent an application from using the
thread_unsafe features, even if libpng was built with PNG_THREAD_UNSAFE_OK
defined:
#if defined(PNG_USE_PNGGCCRD) && defined(PNG_ASSEMBLER_CODE_SUPPORTED) \
&& defined(PNG_THREAD_UNSAFE_OK)
/* Disable thread-unsafe features of pnggccrd */
if (png_access_version_number() >= 10200)
{
png_uint_32 mmx_disable_mask = 0;
png_uint_32 asm_flags;
mmx_disable_mask |= ( PNG_ASM_FLAG_MMX_READ_COMBINE_ROW \
| PNG_ASM_FLAG_MMX_READ_FILTER_SUB \
| PNG_ASM_FLAG_MMX_READ_FILTER_AVG \
| PNG_ASM_FLAG_MMX_READ_FILTER_PAETH );
asm_flags = png_get_asm_flags(png_ptr);
png_set_asm_flags(png_ptr, asm_flags & ~mmx_disable_mask);
}
#endif
For more extensive examples of runtime querying, enabling and disabling
of optimized features, see contrib/gregbook/readpng2.c in the libpng
source-code distribution.
VII. MNG support
The MNG specification (available at http://www.libpng.org/pub/mng) allows
@@ -2764,7 +2870,7 @@ or any other MNG chunks; your application must provide its own support for
them. You may wish to consider using libmng (available at
http://www.libmng.com) instead.
VII. Changes to Libpng from version 0.88
VIII. Changes to Libpng from version 0.88
It should be noted that versions of libpng later than 0.96 are not
distributed by the original libpng author, Guy Schalnat, nor by
@@ -2813,15 +2919,15 @@ application:
png_uint_32 application_vn = PNG_LIBPNG_VER;
VIII. Y2K Compliance in libpng
IX. Y2K Compliance in libpng
April 30, 2008
July 20, 2007
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.0.34 are Y2K compliant. It is my belief that earlier
upward through 1.2.19beta29 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer that

312
libpng.3
View File

@@ -1,6 +1,6 @@
.TH LIBPNG 3 "April 30, 2008"
.TH LIBPNG 3 "July 20, 2007"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.34
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.19beta29
.SH SYNOPSIS
\fB
#include <png.h>\fP
@@ -410,18 +410,14 @@ Following is a copy of the libpng.txt file that accompanies libpng.
.SH LIBPNG.TXT
libpng.txt - A description on how to use and modify libpng
libpng version 1.0.34 - April 30, 2008
libpng version 1.2.19beta29 - July 20, 2007
Updated and distributed by Glenn Randers-Pehrson
<glennrp at users.sourceforge.net>
Copyright (c) 1998-2008 Glenn Randers-Pehrson
Copyright (c) 1998-2007 Glenn Randers-Pehrson
For conditions of distribution and use, see copyright
notice in png.h.
Based on:
libpng versions 0.97, January 1998, through 1.0.34 - April 30, 2008
Updated and distributed by Glenn Randers-Pehrson
Copyright (c) 1998-2008 Glenn Randers-Pehrson
based on:
libpng 1.0 beta 6 version 0.96 May 28, 1997
Updated and distributed by Andreas Dilger
@@ -461,14 +457,12 @@ a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2003 (E)) at
The W3C and ISO documents have identical technical content.
The PNG-1.2 specification is available at
<http://www.libpng.org/pub/png/documents/>. It is technically equivalent
to the PNG specification (second edition) but has some additional material.
<http://www.libpng.org/pub/png/documents/>
The PNG-1.0 specification is available
as RFC 2083 <http://www.libpng.org/pub/png/documents/> and as a
W3C Recommendation <http://www.w3.org/TR/REC.png.html>.
Some additional chunks are described in the special-purpose public chunks
W3C Recommendation <http://www.w3.org/TR/REC.png.html>. Some
additional chunks are described in the special-purpose public chunks
documents at <http://www.libpng.org/pub/png/documents/>.
Other information
@@ -502,7 +496,9 @@ Libpng is thread safe, provided the threads are using different
instances of the structures. Each thread should have its own
png_struct and png_info instances, and thus its own image.
Libpng does not protect itself against two threads using the
same instance of a structure.
same instance of a structure. Note: thread safety may be defeated
by use of some of the MMX assembler code in pnggccrd.c, which is only
compiled when the user defines PNG_THREAD_UNSAFE_OK.
.SH II. Structures
@@ -676,19 +672,15 @@ input stream. You must supply the function
png_unknown_chunkp chunk);
{
/* The unknown chunk structure contains your
chunk data, along with similar data for any other
unknown chunks: */
chunk data: */
png_byte name[5];
png_byte *data;
png_size_t size;
/* Note that libpng has already taken care of
the CRC handling */
/* put your code here. Search for your chunk in the
unknown chunk structure, process it, and return one
of the following: */
/* put your code here. Return one of the
following: */
return (-n); /* chunk had an error */
return (0); /* did not recognize */
@@ -708,11 +700,6 @@ you can retrieve with
png_get_user_chunk_ptr(png_ptr);
If you call the png_set_read_user_chunk_fn() function, then all unknown
chunks will be saved when read, in case your callback function will need
one or more of them. This behavior can be changed with the
png_set_keep_unknown_chunks() function, described below.
At this point, you can set up a callback function that will be
called after each row has been read, which you can use to control
a progress meter or the like. It's demonstrated in pngtest.c.
@@ -730,18 +717,40 @@ To inform libpng about your function, use
png_set_read_status_fn(png_ptr, read_row_callback);
.SS Width and height limits
The PNG specification allows the width and height of an image to be as
large as 2^31-1 (0x7fffffff), or about 2.147 billion rows and columns.
Since very few applications really need to process such large images,
we have imposed an arbitrary 1-million limit on rows and columns.
Larger images will be rejected immediately with a png_error() call. If
you wish to override this limit, you can use
png_set_user_limits(png_ptr, width_max, height_max);
to set your own limits, or use width_max = height_max = 0x7fffffffL
to allow all valid dimensions (libpng may reject some very large images
anyway because of potential buffer overflow conditions).
You should put this statement after you create the PNG structure and
before calling png_read_info(), png_read_png(), or png_process_data().
If you need to retrieve the limits that are being applied, use
width_max = png_get_user_width_max(png_ptr);
height_max = png_get_user_height_max(png_ptr);
.SS Unknown-chunk handling
Now you get to set the way the library processes unknown chunks in the
input PNG stream. Both known and unknown chunks will be read. Normal
behavior is that known chunks will be parsed into information in
various info_ptr members while unknown chunks will be discarded. To change
various info_ptr members; unknown chunks will be discarded. To change
this, you can call:
png_set_keep_unknown_chunks(png_ptr, keep,
chunk_list, num_chunks);
keep - 0: default unknown chunk handling
1: ignore; do not keep
keep - 0: do not handle as unknown
1: do not keep
2: keep only if safe-to-copy
3: keep even if unsafe-to-copy
You can use these definitions:
@@ -764,37 +773,6 @@ instances of png_set_keep_unknown_chunks(), the final instance will
take precedence. The IHDR and IEND chunks should not be named in
chunk_list; if they are, libpng will process them normally anyway.
Here is an example of the usage of png_set_keep_unknown_chunks(),
where the private "vpAg" chunk will later be processed by a user chunk
callback function:
png_byte vpAg[5]={118, 112, 65, 103, (png_byte) '\0'};
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
png_byte unused_chunks[]=
{
104, 73, 83, 84, (png_byte) '\0', /* hIST */
105, 84, 88, 116, (png_byte) '\0', /* iTXt */
112, 67, 65, 76, (png_byte) '\0', /* pCAL */
115, 67, 65, 76, (png_byte) '\0', /* sCAL */
115, 80, 76, 84, (png_byte) '\0', /* sPLT */
116, 73, 77, 69, (png_byte) '\0', /* tIME */
};
#endif
...
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
/* ignore all unknown chunks: */
png_set_keep_unknown_chunks(read_ptr, 1, NULL, 0);
/* except for vpAg: */
png_set_keep_unknown_chunks(read_ptr, 2, vpAg, 1);
/* also ignore unused known chunks: */
png_set_keep_unknown_chunks(read_ptr, 1, unused_chunks,
(int)sizeof(unused_chunks)/5);
#endif
.SS The high-level read interface
At this point there are two ways to proceed; through the high-level
@@ -1203,7 +1181,7 @@ unless the library has been told to transform it into another format.
For example, 4 bit/pixel paletted or grayscale data will be returned
2 pixels/byte with the leftmost pixel in the high-order bits of the
byte, unless png_set_packing() is called. 8-bit RGB data will be stored
in RGB RGB RGB format unless png_set_filler()
in RGB RGB RGB format unless png_set_filler() or png_set_add_alpha()
is called to insert filler bytes, either before or after each RGB triplet.
16-bit RGB data will be returned RRGGBB RRGGBB, with the most significant
byte of the color value first, unless png_set_strip_16() is called to
@@ -1211,7 +1189,7 @@ transform it to regular RGB RGB triplets, or png_set_filler() or
png_set_add alpha() is called to insert filler bytes, either before or
after each RRGGBB triplet. Similarly, 8-bit or 16-bit grayscale data can
be modified with
png_set_filler() or png_set_strip_16().
png_set_filler(), png_set_add_alpha(), or png_set_strip_16().
The following code transforms grayscale images of less than 8 to 8 bits,
changes paletted images to RGB, and adds a full alpha channel if there is
@@ -1223,7 +1201,7 @@ viewing application that wishes to treat all images in the same way.
png_set_palette_to_rgb(png_ptr);
if (color_type == PNG_COLOR_TYPE_GRAY &&
bit_depth < 8) png_set_gray_1_2_4_to_8(png_ptr);
bit_depth < 8) png_set_expand_gray_1_2_4_to_8(png_ptr);
if (png_get_valid(png_ptr, info_ptr,
PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png_ptr);
@@ -1233,6 +1211,10 @@ in libpng version 1.0.4, with the function names expanded to improve code
readability. In some future version they may actually do different
things.
As of libpng version 1.2.9, png_set_expand_gray_1_2_4_to_8() was
added. It expands the sample depth without changing tRNS to alpha.
At the same time, png_set_gray_1_2_4_to_8() was deprecated, and it
will be removed from a future version.
PNG can have files with 16 bits per channel. If you only can handle
8 bits per channel, this will strip the pixels down to 8 bit.
@@ -1297,7 +1279,16 @@ does not affect images that already have full alpha channels. To add an
opaque alpha channel, use filler=0xff or 0xffff and PNG_FILLER_AFTER which
will generate RGBA pixels.
Note that png_set_filler() does not change the color type. If you want
to do that, you can add a true alpha channel with
if (color_type == PNG_COLOR_TYPE_RGB ||
color_type == PNG_COLOR_TYPE_GRAY)
png_set_add_alpha(png_ptr, filler, PNG_FILLER_AFTER);
where "filler" contains the alpha value to assign to each pixel.
This function was added in libpng-1.2.7.
If you are reading an image with an alpha channel, and you need the
data as ARGB instead of the normal PNG format RGBA:
@@ -2164,11 +2155,6 @@ Some of the more important parts of the png_info are:
can also be
PNG_INTRAPIXEL_DIFFERENCING)
If you call png_set_IHDR(), the call must appear before any of the
other png_set_*() functions, which might require access to some of
the IHDR settings. The remaining png_set_*() functions can be called
in any order.
png_set_PLTE(png_ptr, info_ptr, palette,
num_palette);
palette - the palette for the file
@@ -2779,13 +2765,17 @@ For a more compact example of writing a PNG image, see the file example.c.
.SH V. Modifying/Customizing libpng:
There are two issues here. The first is changing how libpng does
There are three issues here. The first is changing how libpng does
standard things like memory allocation, input/output, and error handling.
The second deals with more complicated things like adding new chunks,
adding new transformations, and generally changing how libpng works.
Both of those are compile-time issues; that is, they are generally
determined at the time the code is written, and there is rarely a need
to provide the user with a means of changing them.
to provide the user with a means of changing them. The third is a
run-time issue: choosing between and/or tuning one or more alternate
versions of computationally intensive routines; specifically, optimized
assembly-language (and therefore compiler- and platform-dependent)
versions.
Memory allocation, input/output, and error handling
@@ -2817,9 +2807,6 @@ Your malloc_fn() must return NULL in case of failure. The png_malloc()
function will normally call png_error() if it receives a NULL from the
system memory allocator or from your replacement malloc_fn().
Your free_fn() will never be called with a NULL ptr, since libpng's
png_free() checks for NULL before calling free_fn().
Input/Output in libpng is done through png_read() and png_write(),
which currently just call fread() and fwrite(). The FILE * is stored in
png_struct and is initialized via png_init_io(). If you wish to change
@@ -3149,6 +3136,125 @@ When PNG_DEBUG = 1, the macros are defined, but only png_debug statements
having level = 0 will be printed. There aren't any such statements in
this version of libpng, but if you insert some they will be printed.
.SH VI. Runtime optimization
A new feature in libpng 1.2.0 is the ability to dynamically switch between
standard and optimized versions of some routines. Currently these are
limited to three computationally intensive tasks when reading PNG files:
decoding row filters, expanding interlacing, and combining interlaced or
transparent row data with previous row data. Currently the optimized
versions are available only for x86 (Intel, AMD, etc.) platforms with
MMX support, though this may change in future versions. (For example,
the non-MMX assembler optimizations for zlib might become similarly
runtime-selectable in future releases, in which case libpng could be
extended to support them. Alternatively, the compile-time choice of
floating-point versus integer routines for gamma correction might become
runtime-selectable.)
Because such optimizations tend to be very platform- and compiler-dependent,
both in how they are written and in how they perform, the new runtime code
in libpng has been written to allow programs to query, enable, and disable
either specific optimizations or all such optimizations. For example, to
enable all possible optimizations (bearing in mind that some "optimizations"
may actually run more slowly in rare cases):
#if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
png_uint_32 mask, flags;
flags = png_get_asm_flags(png_ptr);
mask = png_get_asm_flagmask(PNG_SELECT_READ | PNG_SELECT_WRITE);
png_set_asm_flags(png_ptr, flags | mask);
#endif
To enable only optimizations relevant to reading PNGs, use PNG_SELECT_READ
by itself when calling png_get_asm_flagmask(); similarly for optimizing
only writing. To disable all optimizations:
#if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
flags = png_get_asm_flags(png_ptr);
mask = png_get_asm_flagmask(PNG_SELECT_READ | PNG_SELECT_WRITE);
png_set_asm_flags(png_ptr, flags & ~mask);
#endif
To enable or disable only MMX-related features, use png_get_mmx_flagmask()
in place of png_get_asm_flagmask(). The mmx version takes one additional
parameter:
#if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
int selection = PNG_SELECT_READ | PNG_SELECT_WRITE;
int compilerID;
mask = png_get_mmx_flagmask(selection, &compilerID);
#endif
On return, compilerID will indicate which version of the MMX assembler
optimizations was compiled. Currently two flavors exist: Microsoft
Visual C++ (compilerID == 1) and GNU C (a.k.a. gcc/gas, compilerID == 2).
On non-x86 platforms or on systems compiled without MMX optimizations, a
value of -1 is used.
Note that both png_get_asm_flagmask() and png_get_mmx_flagmask() return
all valid, settable optimization bits for the version of the library that's
currently in use. In the case of shared (dynamically linked) libraries,
this may include optimizations that did not exist at the time the code was
written and compiled. It is also possible, of course, to enable only known,
specific optimizations; for example:
#if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
flags = PNG_ASM_FLAG_MMX_READ_COMBINE_ROW \
| PNG_ASM_FLAG_MMX_READ_INTERLACE \
| PNG_ASM_FLAG_MMX_READ_FILTER_SUB \
| PNG_ASM_FLAG_MMX_READ_FILTER_UP \
| PNG_ASM_FLAG_MMX_READ_FILTER_AVG \
| PNG_ASM_FLAG_MMX_READ_FILTER_PAETH ;
png_set_asm_flags(png_ptr, flags);
#endif
This method would enable only the MMX read-optimizations available at the
time of libpng 1.2.0's release, regardless of whether a later version of
the DLL were actually being used. (Also note that these functions did not
exist in versions older than 1.2.0, so any attempt to run a dynamically
linked app on such an older version would fail.)
To determine whether the processor supports MMX instructions at all, use
the png_mmx_support() function:
#if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
mmxsupport = png_mmx_support();
#endif
It returns -1 if MMX support is not compiled into libpng, 0 if MMX code
is compiled but MMX is not supported by the processor, or 1 if MMX support
is fully available. Note that png_mmx_support(), png_get_mmx_flagmask(),
and png_get_asm_flagmask() all may be called without allocating and ini-
tializing any PNG structures (for example, as part of a usage screen or
"about" box).
The following code can be used to prevent an application from using the
thread_unsafe features, even if libpng was built with PNG_THREAD_UNSAFE_OK
defined:
#if defined(PNG_USE_PNGGCCRD) && defined(PNG_ASSEMBLER_CODE_SUPPORTED) \
&& defined(PNG_THREAD_UNSAFE_OK)
/* Disable thread-unsafe features of pnggccrd */
if (png_access_version_number() >= 10200)
{
png_uint_32 mmx_disable_mask = 0;
png_uint_32 asm_flags;
mmx_disable_mask |= ( PNG_ASM_FLAG_MMX_READ_COMBINE_ROW \
| PNG_ASM_FLAG_MMX_READ_FILTER_SUB \
| PNG_ASM_FLAG_MMX_READ_FILTER_AVG \
| PNG_ASM_FLAG_MMX_READ_FILTER_PAETH );
asm_flags = png_get_asm_flags(png_ptr);
png_set_asm_flags(png_ptr, asm_flags & ~mmx_disable_mask);
}
#endif
For more extensive examples of runtime querying, enabling and disabling
of optimized features, see contrib/gregbook/readpng2.c in the libpng
source-code distribution.
.SH VII. MNG support
The MNG specification (available at http://www.libpng.org/pub/mng) allows
@@ -3174,7 +3280,7 @@ or any other MNG chunks; your application must provide its own support for
them. You may wish to consider using libmng (available at
http://www.libmng.com) instead.
.SH VII. Changes to Libpng from version 0.88
.SH VIII. Changes to Libpng from version 0.88
It should be noted that versions of libpng later than 0.96 are not
distributed by the original libpng author, Guy Schalnat, nor by
@@ -3223,15 +3329,15 @@ application:
png_uint_32 application_vn = PNG_LIBPNG_VER;
.SH VIII. Y2K Compliance in libpng
.SH IX. Y2K Compliance in libpng
April 30, 2008
July 20, 2007
Since the PNG Development group is an ad-hoc body, we can't make
an official declaration.
This is your unofficial assurance that libpng from version 0.71 and
upward through 1.0.34 are Y2K compliant. It is my belief that earlier
upward through 1.2.19beta29 are Y2K compliant. It is my belief that earlier
versions were also Y2K compliant.
Libpng only has three year fields. One is a 2-byte unsigned integer that
@@ -3420,45 +3526,7 @@ the first widely used release:
1.2.17 13 10217 12.so.0.17[.0]
1.0.26 10 10026 10.so.0.26[.0]
1.2.18 13 10218 12.so.0.18[.0]
1.2.19beta1-31 13 10219 12.so.0.19[.0]
1.0.27rc1-6 10 10027 10.so.0.27[.0]
1.2.19rc1-6 13 10219 12.so.0.19[.0]
1.0.27 10 10027 10.so.0.27[.0]
1.2.19 13 10219 12.so.0.19[.0]
1.2.20beta01-04 13 10220 12.so.0.20[.0]
1.0.28rc1-6 10 10028 10.so.0.28[.0]
1.2.20rc1-6 13 10220 12.so.0.20[.0]
1.0.28 10 10028 10.so.0.28[.0]
1.2.20 13 10220 12.so.0.20[.0]
1.2.21beta1-2 13 10221 12.so.0.21[.0]
1.2.21rc1-3 13 10221 12.so.0.21[.0]
1.0.29 10 10029 10.so.0.29[.0]
1.2.21 13 10221 12.so.0.21[.0]
1.2.22beta1-4 13 10222 12.so.0.22[.0]
1.0.30rc1 13 10030 10.so.0.30[.0]
1.2.22rc1 13 10222 12.so.0.22[.0]
1.0.30 10 10030 10.so.0.30[.0]
1.2.22 13 10222 12.so.0.22[.0]
1.2.23beta01-05 13 10223 12.so.0.23[.0]
1.2.23rc01 13 10223 12.so.0.23[.0]
1.2.23 13 10223 12.so.0.23[.0]
1.2.24beta01-02 13 10224 12.so.0.24[.0]
1.2.24rc01 13 10224 12.so.0.24[.0]
1.2.24 13 10224 12.so.0.24[.0]
1.2.25beta01-06 13 10225 12.so.0.25[.0]
1.2.25rc01-02 13 10225 12.so.0.25[.0]
1.0.31 10 10031 10.so.0.31[.0]
1.2.25 13 10225 12.so.0.25[.0]
1.2.26beta01-06 13 10226 12.so.0.26[.0]
1.2.26rc01 13 10226 12.so.0.26[.0]
1.2.26 13 10226 12.so.0.26[.0]
1.0.32 10 10032 10.so.0.32[.0]
1.2.27beta01-06 13 10227 12.so.0.27[.0]
1.2.27rc01 13 10227 12.so.0.27[.0]
1.0.33 10 10033 10.so.0.33[.0]
1.2.27 13 10227 12.so.0.27[.0]
1.0.34 10 10034 10.so.0.34[.0]
1.2.28 13 10228 12.so.0.28[.0]
1.2.19beta1-28 13 10219 12.so.0.19[.0]
Henceforth the source version will match the shared-library minor
and patch numbers; the shared-library major version number will be
@@ -3494,7 +3562,7 @@ ftp://ftp.info-zip.org/pub/infozip/zlib
.I libpng
or at
.br
ftp://ftp.rfc-editor.org:/in-notes/rfc2083.txt
ftp://ds.internic.net/rfc/rfc2083.txt
.br
or (as a W3C Recommendation) at
.br
@@ -3514,7 +3582,7 @@ possible without all of you.
Thanks to Frank J. T. Wojcik for helping with the documentation.
Libpng version 1.0.34 - April 30, 2008:
Libpng version 1.2.19beta29 - July 20, 2007:
Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
@@ -3535,8 +3603,8 @@ included in the libpng distribution, the latter shall prevail.)
If you modify libpng you may insert additional notices immediately following
this sentence.
libpng versions 1.2.6, August 15, 2004, through 1.0.34, April 30, 2008, are
Copyright (c) 2004,2006-2008 Glenn Randers-Pehrson, and are
libpng versions 1.2.6, August 15, 2004, through 1.2.19beta29, July 20, 2007, are
Copyright (c) 2004,2006-2007 Glenn Randers-Pehrson, and are
distributed according to the same disclaimer and license as libpng-1.2.5
with the following individual added to the list of Contributing Authors
@@ -3634,7 +3702,7 @@ certification mark of the Open Source Initiative.
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
April 30, 2008
July 20, 2007
.\" end of man page

View File

@@ -1,6 +1,6 @@
.TH LIBPNGPF 3 "April 30, 2008"
.TH LIBPNGPF 3 "July 20, 2007"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.0.34
libpng \- Portable Network Graphics (PNG) Reference Library 1.2.19beta29
(private functions)
.SH SYNOPSIS
\fB#include <png.h>\fP

4
png.5
View File

@@ -1,4 +1,4 @@
.TH PNG 5 "April 30, 2008"
.TH PNG 5 "July 20, 2007"
.SH NAME
png \- Portable Network Graphics (PNG) format
.SH DESCRIPTION
@@ -35,7 +35,7 @@ PNG 1.0 specification, October 1996:
RFC 2083
.IP
.br
ftp://ftp.rfc-editor.org:/in-notes/rfc2083.txt
ftp://ds.internic.net/rfc/rfc2083.txt
.br
or (as a W3C Recommendation) at
.br

121
png.c
View File

@@ -1,7 +1,7 @@
/* png.c - location for general purpose libpng functions
*
* Last changed in libpng 1.2.21 October 4, 2007
* Last changed in libpng 1.2.19 July 20, 2007
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -13,7 +13,7 @@
#include "png.h"
/* Generate a compiler error if there is an old png.h in the search path. */
typedef version_1_0_34 Your_png_h_is_not_version_1_0_34;
typedef version_1_2_19beta29 Your_png_h_is_not_version_1_2_19beta29;
/* Version information for C files. This had better match the version
* string defined in png.h. */
@@ -67,6 +67,11 @@ PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
/* offset to next interlace block in the y direction */
PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
/* width of interlace block (used in assembler routines only) */
#if defined(PNG_HAVE_MMX_COMBINE_ROW) || defined(PNG_OPTIMIZED_CODE_SUPPORTED)
PNG_CONST int FARDATA png_pass_width[] = {8, 4, 4, 2, 2, 1, 1};
#endif
/* Height of interlace block. This is not currently used - if you need
* it, uncomment it here and in png.h
PNG_CONST int FARDATA png_pass_height[] = {8, 8, 4, 4, 2, 2, 1};
@@ -687,14 +692,22 @@ png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
}
#endif /* PNG_TIME_RFC1123_SUPPORTED */
#if 0
/* Signature string for a PNG file. */
png_bytep PNGAPI
png_sig_bytes(void)
{
return ((png_bytep)"\211\120\116\107\015\012\032\012");
}
#endif
#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
png_charp PNGAPI
png_get_copyright(png_structp png_ptr)
{
png_ptr = png_ptr; /* silence compiler warning about unused png_ptr */
return ((png_charp) "\n libpng version 1.0.34 - April 30, 2008\n\
Copyright (c) 1998-2008 Glenn Randers-Pehrson\n\
return ((png_charp) "\n libpng version 1.2.19beta29 - July 20, 2007\n\
Copyright (c) 1998-2007 Glenn Randers-Pehrson\n\
Copyright (c) 1996-1997 Andreas Dilger\n\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
}
@@ -729,10 +742,52 @@ png_get_header_version(png_structp png_ptr)
/* Returns longer string containing both version and date */
png_ptr = png_ptr; /* silence compiler warning about unused png_ptr */
return ((png_charp) PNG_HEADER_VERSION_STRING
#ifndef PNG_READ_SUPPORTED
" (NO READ SUPPORT)"
#ifdef PNG_READ_SUPPORTED
# ifdef PNG_USE_PNGGCCRD
# ifdef __x86_64__
# ifdef __PIC__
" (PNGGCRD x86_64, PIC)\n"
# else
# ifdef PNG_THREAD_UNSAFE_OK
" (PNGGCRD x86_64, Thread unsafe)\n"
# else
" (PNGGCRD x86_64, Thread safe)\n"
# endif
# endif
# else
# ifdef PNG_THREAD_UNSAFE_OK
" (PNGGCRD, Thread unsafe)\n"
# else
" (PNGGCRD, Thread safe)\n"
# endif
# endif
# else
# ifdef PNG_USE_PNGVCRD
# ifdef __x86_64__
" (x86_64 PNGVCRD)\n"
# else
" (PNGVCRD)\n"
# endif
# else
# ifdef __x86_64__
# ifdef PNG_OPTIMIZED_CODE_SUPPORTED
" (x86_64 OPTIMIZED)\n"
# else
" (x86_64 NOT OPTIMIZED)\n"
# endif
# else
# ifdef PNG_OPTIMIZED_CODE_SUPPORTED
" (OPTIMIZED)\n"
# else
" (NOT OPTIMIZED)\n"
# endif
# endif
# endif
# endif
#else
" (NO READ SUPPORT)\n"
#endif
"\n");
);
}
#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
@@ -773,13 +828,63 @@ png_access_version_number(void)
#if defined(PNG_READ_SUPPORTED) && defined(PNG_ASSEMBLER_CODE_SUPPORTED)
#if !defined(PNG_1_0_X)
#if defined(PNG_MMX_CODE_SUPPORTED)
/* this INTERNAL function was added to libpng 1.2.0 */
void /* PRIVATE */
png_init_mmx_flags (png_structp png_ptr)
{
if(png_ptr == NULL) return;
png_ptr->mmx_rowbytes_threshold = 0;
png_ptr->mmx_bitdepth_threshold = 0;
# if (defined(PNG_USE_PNGVCRD) || defined(PNG_USE_PNGGCCRD))
png_ptr->asm_flags |= PNG_ASM_FLAG_MMX_SUPPORT_COMPILED;
if (png_mmx_support() > 0) {
png_ptr->asm_flags |= PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU
# ifdef PNG_HAVE_MMX_COMBINE_ROW
| PNG_ASM_FLAG_MMX_READ_COMBINE_ROW
# endif
# ifdef PNG_HAVE_MMX_READ_INTERLACE
| PNG_ASM_FLAG_MMX_READ_INTERLACE
# endif
# ifndef PNG_HAVE_MMX_READ_FILTER_ROW
;
# else
| PNG_ASM_FLAG_MMX_READ_FILTER_SUB
| PNG_ASM_FLAG_MMX_READ_FILTER_UP
| PNG_ASM_FLAG_MMX_READ_FILTER_AVG
| PNG_ASM_FLAG_MMX_READ_FILTER_PAETH ;
png_ptr->mmx_rowbytes_threshold = PNG_MMX_ROWBYTES_THRESHOLD_DEFAULT;
png_ptr->mmx_bitdepth_threshold = PNG_MMX_BITDEPTH_THRESHOLD_DEFAULT;
# endif
} else {
png_ptr->asm_flags &= ~( PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU
| PNG_MMX_READ_FLAGS
| PNG_MMX_WRITE_FLAGS );
}
# else /* !(PNGVCRD || PNGGCCRD) */
/* clear all MMX flags; no support is compiled in */
png_ptr->asm_flags &= ~( PNG_MMX_FLAGS );
# endif /* ?(PNGVCRD || PNGGCCRD) */
}
#endif /* !(PNG_MMX_CODE_SUPPORTED) */
/* this function was added to libpng 1.2.0 */
#if !defined(PNG_USE_PNGGCCRD) && \
!(defined(PNG_MMX_CODE_SUPPORTED) && defined(PNG_USE_PNGVCRD))
int PNGAPI
png_mmx_support(void)
{
/* obsolete, to be removed from libpng-1.4.0 */
return -1;
}
#endif
#endif /* PNG_1_0_X */
#endif /* PNG_READ_SUPPORTED && PNG_ASSEMBLER_CODE_SUPPORTED */

101
png.h
View File

@@ -1,14 +1,15 @@
/* png.h - header file for PNG reference library
*
* libpng version 1.0.34 - April 30, 2008
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* libpng version 1.2.19beta29 - July 20, 2007
* Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.0.34 - April 30, 2008: Glenn
* libpng versions 0.97, January 1998, through 1.2.19beta29 - July 20, 2007: Glenn
* See also "Contributing Authors", below.
*
* Note about libpng version numbers:
@@ -149,45 +150,7 @@
* 1.2.17 13 10217 12.so.0.17[.0]
* 1.0.26 10 10026 10.so.0.26[.0]
* 1.2.18 13 10218 12.so.0.18[.0]
* 1.2.19beta1-31 13 10219 12.so.0.19[.0]
* 1.0.27rc1-6 10 10027 10.so.0.27[.0]
* 1.2.19rc1-6 13 10219 12.so.0.19[.0]
* 1.0.27 10 10027 10.so.0.27[.0]
* 1.2.19 13 10219 12.so.0.19[.0]
* 1.2.20beta01-04 13 10220 12.so.0.20[.0]
* 1.0.28rc1-6 10 10028 10.so.0.28[.0]
* 1.2.20rc1-6 13 10220 12.so.0.20[.0]
* 1.0.28 10 10028 10.so.0.28[.0]
* 1.2.20 13 10220 12.so.0.20[.0]
* 1.2.21beta1-2 13 10221 12.so.0.21[.0]
* 1.2.21rc1-3 13 10221 12.so.0.21[.0]
* 1.0.29 10 10029 10.so.0.29[.0]
* 1.2.21 13 10221 12.so.0.21[.0]
* 1.2.22beta1-4 13 10222 12.so.0.22[.0]
* 1.0.30rc1 10 10030 10.so.0.30[.0]
* 1.2.22rc1 13 10222 12.so.0.22[.0]
* 1.0.30 10 10030 10.so.0.30[.0]
* 1.2.22 13 10222 12.so.0.22[.0]
* 1.2.23beta01-05 13 10223 12.so.0.23[.0]
* 1.2.23rc01 13 10223 12.so.0.23[.0]
* 1.2.23 13 10223 12.so.0.23[.0]
* 1.2.24beta01-02 13 10224 12.so.0.24[.0]
* 1.2.24rc01 13 10224 12.so.0.24[.0]
* 1.2.24 13 10224 12.so.0.24[.0]
* 1.2.25beta01-06 13 10225 12.so.0.25[.0]
* 1.2.25rc01-02 13 10225 12.so.0.25[.0]
* 1.0.31 10 10031 10.so.0.31[.0]
* 1.2.25 13 10225 12.so.0.25[.0]
* 1.2.26beta01-06 13 10226 12.so.0.26[.0]
* 1.2.26rc01 13 10226 12.so.0.26[.0]
* 1.2.26 13 10226 12.so.0.26[.0]
* 1.0.32 10 10032 10.so.0.32[.0]
* 1.2.27beta01-06 13 10227 12.so.0.27[.0]
* 1.2.27rc01 13 10227 12.so.0.27[.0]
* 1.0.33 10 10033 10.so.0.33[.0]
* 1.2.27 13 10227 12.so.0.27[.0]
* 1.0.34 10 10034 10.so.0.34[.0]
* 1.2.28 13 10228 12.so.0.28[.0]
* 1.2.19beta1-28 13 10219 12.so.0.19[.0]
*
* Henceforth the source version will match the shared-library major
* and minor numbers; the shared-library major version number will be
@@ -197,7 +160,7 @@
* to the source version x.y.z (leading zeros in y and z). Beta versions
* were given the previous public release number plus a letter, until
* version 1.0.6j; from then on they were given the upcoming public
* release number plus "betaNN" or "rcNN".
* release number plus "betaNN" or "rcN".
*
* Binary incompatibility exists only when applications make direct access
* to the info_ptr or png_ptr members through png.h, and the compiled
@@ -217,8 +180,8 @@
* If you modify libpng you may insert additional notices immediately following
* this sentence.
*
* libpng versions 1.2.6, August 15, 2004, through 1.0.34, April 30, 2008, are
* Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are
* libpng versions 1.2.6, August 15, 2004, through 1.2.19beta29, July 20, 2007, are
* Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are
* distributed according to the same disclaimer and license as libpng-1.2.5
* with the following individual added to the list of Contributing Authors:
*
@@ -329,13 +292,13 @@
* Y2K compliance in libpng:
* =========================
*
* April 30, 2008
* July 20, 2007
*
* Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration.
*
* This is your unofficial assurance that libpng from version 0.71 and
* upward through 1.0.34 are Y2K compliant. It is my belief that earlier
* upward through 1.2.19beta29 are Y2K compliant. It is my belief that earlier
* versions were also Y2K compliant.
*
* Libpng only has three year fields. One is a 2-byte unsigned integer
@@ -391,21 +354,21 @@
*/
/* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.0.34"
#define PNG_LIBPNG_VER_STRING "1.2.19beta29"
#define PNG_HEADER_VERSION_STRING \
" libpng version 1.0.34 - April 30, 2008\n"
" libpng version 1.2.19beta29 - July 20, 2007\n"
#define PNG_LIBPNG_VER_SONUM 0
#define PNG_LIBPNG_VER_DLLNUM 10
#define PNG_LIBPNG_VER_DLLNUM 13
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
#define PNG_LIBPNG_VER_MAJOR 1
#define PNG_LIBPNG_VER_MINOR 0
#define PNG_LIBPNG_VER_RELEASE 34
#define PNG_LIBPNG_VER_MINOR 2
#define PNG_LIBPNG_VER_RELEASE 19
/* This should match the numeric part of the final component of
* PNG_LIBPNG_VER_STRING, omitting any leading zero: */
#define PNG_LIBPNG_VER_BUILD 0
#define PNG_LIBPNG_VER_BUILD 29
/* Release Status */
#define PNG_LIBPNG_BUILD_ALPHA 1
@@ -422,14 +385,14 @@
#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
PNG_LIBPNG_BUILD_PRIVATE */
#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE
#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_BETA
/* Careful here. At one time, Guy wanted to use 082, but that would be octal.
* We must not include leading zeros.
* Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
* version 1.0.0 was mis-numbered 100 instead of 10000). From
* version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release */
#define PNG_LIBPNG_VER 10034 /* 1.0.34 */
#define PNG_LIBPNG_VER 10219 /* 1.2.19 */
#ifndef PNG_VERSION_INFO_ONLY
/* include the compression library's header */
@@ -532,6 +495,9 @@ PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_ystart[7];
PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_yinc[7];
PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_mask[7];
PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_dsp_mask[7];
#if defined(PNG_HAVE_MMX_COMBINE_ROW) || defined(PNG_OPTIMIZED_CODE_SUPPORTED)
PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_width[7];
#endif
/* This isn't currently used. If you need it, see png.c for more details.
PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_height[7];
*/
@@ -670,10 +636,9 @@ typedef png_time FAR * FAR * png_timepp;
* up private chunks for output even though the library doesn't actually
* know about their semantics.
*/
#define PNG_CHUNK_NAME_LENGTH 5
typedef struct png_unknown_chunk_t
{
png_byte name[PNG_CHUNK_NAME_LENGTH];
png_byte name[5];
png_byte *data;
png_size_t size;
@@ -1200,12 +1165,10 @@ struct png_struct_def
png_uint_32 row_number; /* current row in interlace pass */
png_bytep prev_row; /* buffer to save previous (unfiltered) row */
png_bytep row_buf; /* buffer to save current (unfiltered) row */
#ifndef PNG_NO_WRITE_FILTERING
png_bytep sub_row; /* buffer to save "sub" row when filtering */
png_bytep up_row; /* buffer to save "up" row when filtering */
png_bytep avg_row; /* buffer to save "avg" row when filtering */
png_bytep paeth_row; /* buffer to save "Paeth" row when filtering */
#endif
png_row_info row_info; /* used for transformation routines */
png_uint_32 idat_size; /* current IDAT size for read */
@@ -1307,7 +1270,8 @@ struct png_struct_def
png_size_t current_text_left; /* how much text left to read in input */
png_charp current_text; /* current text chunk buffer */
png_charp current_text_ptr; /* current location in current_text */
# endif /* PNG_TEXT_SUPPORTED */
# endif /* PNG_PROGRESSIVE_READ_SUPPORTED && PNG_TEXT_SUPPORTED */
#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
@@ -1437,16 +1401,13 @@ struct png_struct_def
/* storage for unknown chunk that the library doesn't recognize. */
png_unknown_chunk unknown_chunk;
#endif
/* New members added in libpng-1.2.26 */
png_uint_32 old_big_row_buf_size, old_prev_row_size;
};
/* This triggers a compiler error in png.c, if png.c and png.h
* do not agree upon the version number.
*/
typedef png_structp version_1_0_34;
typedef png_structp version_1_2_19beta29;
typedef png_struct FAR * FAR * png_structpp;
@@ -2094,7 +2055,6 @@ extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr,
int check));
#endif /* USE_FAR_KEYWORD */
#ifndef PNG_NO_ERROR_TEXT
/* Fatal error in PNG image of libpng - can't continue */
extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr,
png_const_charp error_message));
@@ -2102,10 +2062,6 @@ extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr,
/* The same, but the chunk name is prepended to the error string. */
extern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr,
png_const_charp error_message));
#else
/* Fatal error in PNG image of libpng - can't continue */
extern PNG_EXPORT(void,png_err) PNGARG((png_structp png_ptr));
#endif
#ifndef PNG_NO_WARNINGS
/* Non-fatal error in libpng. Can continue, but may have a problem. */
@@ -2539,6 +2495,10 @@ extern PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr,
#define png_debug2(l, m, p1, p2)
#endif
#if 0
extern PNG_EXPORT(png_bytep,png_sig_bytes) PNGARG((void));
#endif
extern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr));
extern PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr));
extern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr));
@@ -2864,6 +2824,9 @@ extern PNG_EXPORT(void,png_save_uint_16)
#ifdef PNG_USE_GLOBAL_ARRAYS
PNG_EXPORT_VAR (PNG_CONST png_byte FARDATA) png_sig[8];
#else
#if 0
#define png_sig png_sig_bytes(NULL)
#endif
#endif
#endif /* PNG_NO_EXTERN */

142
pngconf.h
View File

@@ -1,9 +1,9 @@
/* pngconf.h - machine configurable file for libpng
*
* libpng version 1.0.34 - April 30, 2008
* libpng version 1.2.19beta29 - July 20, 2007
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -17,12 +17,18 @@
#ifndef PNGCONF_H
#define PNGCONF_H
#define PNG_1_0_X
#define PNG_1_2_X
/*
* PNG_USER_CONFIG has to be defined on the compiler command line. This
* includes the resource compiler for Windows DLL configurations.
*/
#ifdef PNG_USER_CONFIG
# ifndef PNG_USER_PRIVATEBUILD
# define PNG_USER_PRIVATEBUILD
# endif
#include "pngusr.h"
#endif
/* PNG_CONFIGURE_LIBPNG is set by the "configure" script. */
#ifdef PNG_CONFIGURE_LIBPNG
@@ -69,14 +75,6 @@
/* End of material added to libpng-1.2.8 */
/* Added at libpng-1.2.19, removed at libpng-1.2.20 because it caused trouble
Restored at libpng-1.2.21 */
#if !defined(PNG_NO_WARN_UNINITIALIZED_ROW) && \
!defined(PNG_WARN_UNINITIALIZED_ROW)
# define PNG_WARN_UNINITIALIZED_ROW 1
#endif
/* End of material added at libpng-1.2.19/1.2.21 */
/* This is the size of the compression buffer, and thus the size of
* an IDAT chunk. Make this whatever size you feel is best for your
* machine. One of these will be allocated per png_struct. When this
@@ -317,7 +315,7 @@
/* If you encounter a compiler error here, see the explanation
* near the end of INSTALL.
*/
__pngconf.h__ already includes setjmp.h;
__png.h__ already includes setjmp.h;
__dont__ include it again.;
# endif
# endif /* __linux__ */
@@ -327,9 +325,7 @@
# ifdef __linux__
# ifdef PNG_SAVE_BSD_SOURCE
# ifndef _BSD_SOURCE
# define _BSD_SOURCE
# endif
# define _BSD_SOURCE
# undef PNG_SAVE_BSD_SOURCE
# endif
# endif /* __linux__ */
@@ -599,10 +595,10 @@
#endif /* PNG_READ_TRANSFORMS_SUPPORTED */
#if !defined(PNG_NO_PROGRESSIVE_READ) && \
!defined(PNG_PROGRESSIVE_READ_SUPPORTED) /* if you don't do progressive */
# define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */
#endif /* about interlacing capability! You'll */
/* still have interlacing unless you change the following line: */
!defined(PNG_PROGRESSIVE_READ_NOT_SUPPORTED) /* if you don't do progressive */
# define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */
#endif /* about interlacing capability! You'll */
/* still have interlacing unless you change the following line: */
#define PNG_READ_INTERLACING_SUPPORTED /* required in PNG-compliant decoders */
@@ -726,8 +722,15 @@
#endif
/* PNG_ASSEMBLER_CODE was enabled by default in version 1.2.0
* and removed from version 1.2.20. The following will be removed
* from libpng-1.4.0
* even when PNG_USE_PNGVCRD or PNG_USE_PNGGCCRD is not defined.
*
* PNG_NO_ASSEMBLER_CODE disables use of all assembler code,
* and removes several functions from the API.
*
* PNG_NO_MMX_CODE disables the use of MMX code without changing the API.
* When MMX code is off, then optimized C replacement functions are used,
* if PNG_NO_OPTIMIZED_CODE is not enabled. This was added in version
* 1.2.19.
*/
#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_OPTIMIZED_CODE)
@@ -741,31 +744,26 @@
# define PNG_ASSEMBLER_CODE_SUPPORTED
# endif
# if defined(__GNUC__) && defined(__x86_64__) && (__GNUC__ < 4)
/* work around 64-bit gcc compiler bugs in gcc-3.x */
# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
# define PNG_NO_MMX_CODE
# endif
# endif
# if defined(__APPLE__)
# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
# define PNG_NO_MMX_CODE
# endif
# endif
# if (defined(__MWERKS__) && ((__MWERKS__ < 0x0900) || macintosh))
# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
# define PNG_NO_MMX_CODE
# endif
# endif
# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
# define PNG_MMX_CODE_SUPPORTED
# define PNG_MMX_CODE_SUPPORTED
# endif
# if !defined(PNG_USE_PNGVCRD) && !defined(PNG_NO_MMX_CODE) && \
defined(_MSC_VER)
# define PNG_USE_PNGVCRD
# endif
# if !defined(PNG_USE_PNGGCCRD) && !defined(PNG_NO_MMX_CODE) && \
!defined(PNG_USE_PNGVCRD)
# define PNG_USE_PNGGCCRD
# endif
/* If you are sure that you don't need thread safety and you are compiling
with PNG_USE_PNGCCRD for an MMX application, you can define this for
faster execution. See pnggccrd.c.
#define PNG_THREAD_UNSAFE_OK
*/
#endif
/* end of obsolete code to be removed from libpng-1.4.0 */
#if !defined(PNG_1_0_X)
#if !defined(PNG_NO_USER_MEM) && !defined(PNG_USER_MEM_SUPPORTED)
@@ -1287,8 +1285,7 @@ typedef z_stream FAR * png_zstreamp;
* but might be required for some pre-1.0.5c applications.
*/
#if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS)
# if defined(PNG_NO_GLOBAL_ARRAYS) || \
(defined(__GNUC__) && defined(PNG_DLL)) || defined(_MSC_VER)
# if defined(PNG_NO_GLOBAL_ARRAYS) || (defined(__GNUC__) && defined(PNG_DLL))
# define PNG_USE_LOCAL_ARRAYS
# else
# define PNG_USE_GLOBAL_ARRAYS
@@ -1426,6 +1423,8 @@ typedef z_stream FAR * png_zstreamp;
# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK))
# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK))
# define png_snprintf _fsnprintf /* Added to v 1.2.19 */
# define png_strcpy _fstrcpy
# define png_strncpy _fstrncpy /* Added to v 1.2.6 */
# define png_strlen _fstrlen
# define png_memcmp _fmemcmp /* SJT: added */
# define png_memcpy _fmemcpy
@@ -1454,6 +1453,8 @@ typedef z_stream FAR * png_zstreamp;
# define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \
sprintf(s1,fmt,x1,x2,x3,x4,x5,x6)
# endif
# define png_strcpy strcpy
# define png_strncpy strncpy /* Added to v 1.2.6 */
# define png_strlen strlen
# define png_memcmp memcmp /* SJT: added */
# define png_memcpy memcpy
@@ -1469,6 +1470,59 @@ typedef z_stream FAR * png_zstreamp;
# define PNG_ZBUF_SIZE 65536L
#endif
#ifdef PNG_READ_SUPPORTED
/* Prior to libpng-1.0.9, this block was in pngasmrd.h */
#if defined(PNG_INTERNAL)
/* These are the default thresholds before the MMX code kicks in; if either
* rowbytes or bitdepth is below the threshold, plain C code is used. These
* can be overridden at runtime via the png_set_mmx_thresholds() call in
* libpng 1.2.0 and later. The values below were chosen by Intel.
*/
#ifndef PNG_MMX_ROWBYTES_THRESHOLD_DEFAULT
# define PNG_MMX_ROWBYTES_THRESHOLD_DEFAULT 128 /* >= */
#endif
#ifndef PNG_MMX_BITDEPTH_THRESHOLD_DEFAULT
# define PNG_MMX_BITDEPTH_THRESHOLD_DEFAULT 9 /* >= */
#endif
/* Set this in the makefile for VC++ on Pentium, not here. */
/* Platform must be Pentium. Makefile must assemble and load pngvcrd.c .
* MMX will be detected at run time and used if present.
*/
#ifdef PNG_USE_PNGVCRD
# ifndef PNG_NO_MMX_COMBINE_ROW
# define PNG_HAVE_MMX_COMBINE_ROW
# endif
# ifndef PNG_NO_MMX_READ_INTERLACE
# define PNG_HAVE_MMX_READ_INTERLACE
# endif
# ifndef PNG_NO_MMX_READ_FILTER_ROW
# define PNG_HAVE_MMX_READ_FILTER_ROW
# endif
#endif
/* Set this in the makefile for gcc/as on Pentium, not here. */
/* Platform must be Pentium. Makefile must assemble and load pnggccrd.c .
* MMX will be detected at run time and used if present.
*/
#ifdef PNG_USE_PNGGCCRD
# ifndef PNG_NO_MMX_COMBINE_ROW
# define PNG_HAVE_MMX_COMBINE_ROW
# endif
# ifndef PNG_NO_MMX_READ_INTERLACE
# define PNG_HAVE_MMX_READ_INTERLACE
# endif
# ifndef PNG_NO_MMX_READ_FILTER_ROW
# define PNG_HAVE_MMX_READ_FILTER_ROW
# endif
#endif
/* - see pnggccrd.c for info about what is currently enabled */
#endif /* PNG_INTERNAL */
#endif /* PNG_READ_SUPPORTED */
/* Added at libpng-1.2.8 */
#endif /* PNG_VERSION_INFO_ONLY */

View File

@@ -1,7 +1,7 @@
/* pngerror.c - stub functions for i/o and memory allocation
*
* Last changed in libpng 1.2.22 [October 13, 2007]
* Last changed in libpng 1.2.19 July 20, 2007
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -31,7 +31,6 @@ png_default_warning PNGARG((png_structp png_ptr,
* you should supply a replacement error function and use png_set_error_fn()
* to replace the error function at run-time.
*/
#ifndef PNG_NO_ERROR_TEXT
void PNGAPI
png_error(png_structp png_ptr, png_const_charp error_message)
{
@@ -78,18 +77,6 @@ png_error(png_structp png_ptr, png_const_charp error_message)
use the default handler, which will not return. */
png_default_error(png_ptr, error_message);
}
#else
void PNGAPI
png_err(png_structp png_ptr)
{
if (png_ptr != NULL && png_ptr->error_fn != NULL)
(*(png_ptr->error_fn))(png_ptr, '\0');
/* If the custom handler doesn't exist, or if it returns,
use the default handler, which will not return. */
png_default_error(png_ptr, '\0');
}
#endif /* PNG_NO_ERROR_TEXT */
#ifndef PNG_NO_WARNINGS
/* This function is called whenever there is a non-fatal error. This function
@@ -136,9 +123,6 @@ static PNG_CONST char png_digit[16] = {
'A', 'B', 'C', 'D', 'E', 'F'
};
#define PNG_MAX_ERROR_TEXT 64
#if !defined(PNG_NO_WARNINGS) || !defined(PNG_NO_ERROR_TEXT)
static void /* PRIVATE */
png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp
error_message)
@@ -162,13 +146,13 @@ png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp
}
if (error_message == NULL)
buffer[iout] = '\0';
buffer[iout] = 0;
else
{
buffer[iout++] = ':';
buffer[iout++] = ' ';
png_memcpy(buffer+iout, error_message, PNG_MAX_ERROR_TEXT);
buffer[iout+PNG_MAX_ERROR_TEXT-1] = '\0';
png_strncpy(buffer+iout, error_message, 63);
buffer[iout+63] = 0;
}
}
@@ -176,7 +160,7 @@ png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp
void PNGAPI
png_chunk_error(png_structp png_ptr, png_const_charp error_message)
{
char msg[18+PNG_MAX_ERROR_TEXT];
char msg[18+64];
if (png_ptr == NULL)
png_error(png_ptr, error_message);
else
@@ -185,14 +169,12 @@ png_chunk_error(png_structp png_ptr, png_const_charp error_message)
png_error(png_ptr, msg);
}
}
#endif /* PNG_READ_SUPPORTED */
#endif /* !defined(PNG_NO_WARNINGS) || !defined(PNG_NO_ERROR_TEXT) */
#ifndef PNG_NO_WARNINGS
void PNGAPI
png_chunk_warning(png_structp png_ptr, png_const_charp warning_message)
{
char msg[18+PNG_MAX_ERROR_TEXT];
char msg[18+64];
if (png_ptr == NULL)
png_warning(png_ptr, warning_message);
else
@@ -203,6 +185,7 @@ png_chunk_warning(png_structp png_ptr, png_const_charp warning_message)
}
#endif /* PNG_NO_WARNINGS */
#endif /* PNG_READ_SUPPORTED */
/* This is the default error handling function. Note that replacements for
* this function MUST NOT RETURN, or the program will likely crash. This

5923
pnggccrd.c

File diff suppressed because it is too large Load Diff

View File

@@ -841,44 +841,105 @@ png_get_compression_buffer_size(png_structp png_ptr)
png_uint_32 PNGAPI
png_get_asm_flags (png_structp png_ptr)
{
/* obsolete, to be removed from libpng-1.4.0 */
#ifdef PNG_MMX_CODE_SUPPORTED
return (png_uint_32)(png_ptr? png_ptr->asm_flags : 0L);
#else
return (png_ptr? 0L: 0L);
#endif
}
/* this function was added to libpng 1.2.0 and should exist by default */
png_uint_32 PNGAPI
png_get_asm_flagmask (int flag_select)
{
/* obsolete, to be removed from libpng-1.4.0 */
flag_select=flag_select;
return 0L;
#ifdef PNG_MMX_CODE_SUPPORTED
png_uint_32 settable_asm_flags = 0;
if (flag_select & PNG_SELECT_READ)
settable_asm_flags |=
PNG_ASM_FLAG_MMX_READ_COMBINE_ROW |
PNG_ASM_FLAG_MMX_READ_INTERLACE |
PNG_ASM_FLAG_MMX_READ_FILTER_SUB |
PNG_ASM_FLAG_MMX_READ_FILTER_UP |
PNG_ASM_FLAG_MMX_READ_FILTER_AVG |
PNG_ASM_FLAG_MMX_READ_FILTER_PAETH ;
/* no non-MMX flags yet */
#if 0
/* GRR: no write-flags yet, either, but someday... */
if (flag_select & PNG_SELECT_WRITE)
settable_asm_flags |=
PNG_ASM_FLAG_MMX_WRITE_ [whatever] ;
#endif /* 0 */
return settable_asm_flags; /* _theoretically_ settable capabilities only */
#else
return (0L);
#endif /* PNG_MMX_CODE_SUPPORTED */
}
/* GRR: could add this: && defined(PNG_MMX_CODE_SUPPORTED) */
/* this function was added to libpng 1.2.0 */
png_uint_32 PNGAPI
png_get_mmx_flagmask (int flag_select, int *compilerID)
{
/* obsolete, to be removed from libpng-1.4.0 */
flag_select=flag_select;
*compilerID = -1; /* unknown (i.e., no asm/MMX code compiled) */
return 0L;
#if defined(PNG_MMX_CODE_SUPPORTED)
png_uint_32 settable_mmx_flags = 0;
if (flag_select & PNG_SELECT_READ)
settable_mmx_flags |=
PNG_ASM_FLAG_MMX_READ_COMBINE_ROW |
PNG_ASM_FLAG_MMX_READ_INTERLACE |
PNG_ASM_FLAG_MMX_READ_FILTER_SUB |
PNG_ASM_FLAG_MMX_READ_FILTER_UP |
PNG_ASM_FLAG_MMX_READ_FILTER_AVG |
PNG_ASM_FLAG_MMX_READ_FILTER_PAETH ;
#if 0
/* GRR: no MMX write support yet, but someday... */
if (flag_select & PNG_SELECT_WRITE)
settable_mmx_flags |=
PNG_ASM_FLAG_MMX_WRITE_ [whatever] ;
#endif /* 0 */
if (compilerID != NULL) {
#ifdef PNG_USE_PNGVCRD
*compilerID = 1; /* MSVC */
#else
#ifdef PNG_USE_PNGGCCRD
*compilerID = 2; /* gcc/gas */
#else
*compilerID = -1; /* unknown (i.e., no asm/MMX code compiled) */
#endif
#endif
}
return settable_mmx_flags; /* _theoretically_ settable capabilities only */
#else
return (0L);
#endif /* ?PNG_MMX_CODE_SUPPORTED */
}
/* this function was added to libpng 1.2.0 */
png_byte PNGAPI
png_get_mmx_bitdepth_threshold (png_structp png_ptr)
{
/* obsolete, to be removed from libpng-1.4.0 */
#if defined(PNG_MMX_CODE_SUPPORTED)
return (png_byte)(png_ptr? png_ptr->mmx_bitdepth_threshold : 0);
#else
return (png_ptr? 0: 0);
#endif /* ?PNG_MMX_CODE_SUPPORTED */
}
/* this function was added to libpng 1.2.0 */
png_uint_32 PNGAPI
png_get_mmx_rowbytes_threshold (png_structp png_ptr)
{
/* obsolete, to be removed from libpng-1.4.0 */
#if defined(PNG_MMX_CODE_SUPPORTED)
return (png_uint_32)(png_ptr? png_ptr->mmx_rowbytes_threshold : 0L);
#else
return (png_ptr? 0L: 0L);
#endif /* ?PNG_MMX_CODE_SUPPORTED */
}
#endif /* ?PNG_1_0_X */
#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */

View File

@@ -1,9 +1,9 @@
/* pngmem.c - stub functions for memory allocation
*
* Last changed in libpng 1.2.27 [April 29, 2008]
* Last changed in libpng 1.2.13 November 13, 2006
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* Copyright (c) 1998-2006 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -293,7 +293,7 @@ png_free_default(png_structp png_ptr, png_voidp ptr)
{
#endif /* PNG_USER_MEM_SUPPORTED */
if(png_ptr == NULL || ptr == NULL) return;
if(png_ptr == NULL) return;
if (png_ptr->offset_table != NULL)
{
@@ -456,7 +456,7 @@ png_malloc_default(png_structp png_ptr, png_uint_32 size)
if (size > (png_uint_32)65536L)
{
#ifndef PNG_USER_MEM_SUPPORTED
if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
if(png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
png_error(png_ptr, "Cannot Allocate > 64K");
else
#endif

View File

@@ -1,9 +1,9 @@
/* pngpread.c - read a png file in push mode
*
* Last changed in libpng 1.2.27 [April 29, 2008]
* Last changed in libpng 1.2.19 July 20, 2007
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -28,7 +28,7 @@ void PNGAPI
png_process_data(png_structp png_ptr, png_infop info_ptr,
png_bytep buffer, png_size_t buffer_size)
{
if(png_ptr == NULL || info_ptr == NULL) return;
if(png_ptr == NULL) return;
png_push_restore_buffer(png_ptr, buffer, buffer_size);
while (png_ptr->buffer_size)
@@ -216,7 +216,7 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
}
if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
if (!png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
if(png_ptr->mode & PNG_AFTER_IDAT)
png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
@@ -224,8 +224,6 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
{
if (png_ptr->push_length + 4 > png_ptr->buffer_size)
{
if (png_ptr->push_length != 13)
png_error(png_ptr, "Invalid IHDR length");
png_push_save_buffer(png_ptr);
return;
}
@@ -275,7 +273,7 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
}
png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length);
}
else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
else if (!png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
{
/* If we reach an IDAT chunk, this means we have read all of the
* header chunks, and we can start reading the image (or if this
@@ -680,7 +678,7 @@ png_push_read_IDAT(png_structp png_ptr)
png_crc_read(png_ptr, png_ptr->chunk_name, 4);
png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
if (png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
{
png_ptr->process_mode = PNG_READ_CHUNK_MODE;
if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
@@ -1003,6 +1001,11 @@ png_read_push_finish_row(png_structp png_ptr)
/* offset to next interlace block in the y direction */
PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
/* Width of interlace block. This is not currently used - if you need
* it, uncomment it here and in png.h
PNG_CONST int FARDATA png_pass_width[] = {8, 4, 4, 2, 2, 1, 1};
*/
/* Height of interlace block. This is not currently used - if you need
* it, uncomment it here and in png.h
PNG_CONST int FARDATA png_pass_height[] = {8, 8, 4, 4, 2, 2, 1};
@@ -1020,37 +1023,32 @@ png_read_push_finish_row(png_structp png_ptr)
png_ptr->rowbytes + 1);
do
{
int pass;
pass = png_ptr->pass;
pass++;
if ((pass == 1 && png_ptr->width < 5) ||
(pass == 3 && png_ptr->width < 3) ||
(pass == 5 && png_ptr->width < 2))
pass++;
png_ptr->pass++;
if ((png_ptr->pass == 1 && png_ptr->width < 5) ||
(png_ptr->pass == 3 && png_ptr->width < 3) ||
(png_ptr->pass == 5 && png_ptr->width < 2))
png_ptr->pass++;
if (pass > 7)
pass--;
png_ptr->pass = (png_byte) pass;
if (pass < 7)
{
png_ptr->iwidth = (png_ptr->width +
png_pass_inc[pass] - 1 -
png_pass_start[pass]) /
png_pass_inc[pass];
if (png_ptr->pass > 7)
png_ptr->pass--;
if (png_ptr->pass >= 7)
break;
png_ptr->irowbytes = PNG_ROWBYTES(png_ptr->pixel_depth,
png_ptr->iwidth) + 1;
png_ptr->iwidth = (png_ptr->width +
png_pass_inc[png_ptr->pass] - 1 -
png_pass_start[png_ptr->pass]) /
png_pass_inc[png_ptr->pass];
if (png_ptr->transformations & PNG_INTERLACE)
break;
png_ptr->irowbytes = PNG_ROWBYTES(png_ptr->pixel_depth,
png_ptr->iwidth) + 1;
png_ptr->num_rows = (png_ptr->height +
png_pass_yinc[pass] - 1 -
png_pass_ystart[pass]) /
png_pass_yinc[pass];
}
else
break;
if (png_ptr->transformations & PNG_INTERLACE)
break;
png_ptr->num_rows = (png_ptr->height +
png_pass_yinc[png_ptr->pass] - 1 -
png_pass_ystart[png_ptr->pass]) /
png_pass_yinc[png_ptr->pass];
} while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0);
}
@@ -1127,7 +1125,7 @@ png_push_read_tEXt(png_structp png_ptr, png_infop info_ptr)
for (text = key; *text; text++)
/* empty loop */ ;
if (text < key + png_ptr->current_text_size)
if (text != key + png_ptr->current_text_size)
text++;
text_ptr = (png_textp)png_malloc(png_ptr,
@@ -1222,7 +1220,7 @@ png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
/* empty loop */ ;
/* zTXt can't have zero text */
if (text >= key + png_ptr->current_text_size)
if (text == key + png_ptr->current_text_size)
{
png_ptr->current_text = NULL;
png_free(png_ptr, key);
@@ -1419,7 +1417,7 @@ png_push_read_iTXt(png_structp png_ptr, png_infop info_ptr)
for (lang = key; *lang; lang++)
/* empty loop */ ;
if (lang < key + png_ptr->current_text_size - 3)
if (lang != key + png_ptr->current_text_size)
lang++;
comp_flag = *lang++;
@@ -1429,14 +1427,10 @@ png_push_read_iTXt(png_structp png_ptr, png_infop info_ptr)
/* empty loop */ ;
lang_key++; /* skip NUL separator */
text=lang_key;
if (lang_key < key + png_ptr->current_text_size - 1)
{
for (; *text; text++)
/* empty loop */ ;
}
for (text = lang_key; *text; text++)
/* empty loop */ ;
if (text < key + png_ptr->current_text_size)
if (text != key + png_ptr->current_text_size)
text++;
text_ptr = (png_textp)png_malloc(png_ptr,
@@ -1474,66 +1468,59 @@ png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32
if (!(png_ptr->chunk_name[0] & 0x20))
{
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
PNG_HANDLE_CHUNK_ALWAYS
if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
PNG_HANDLE_CHUNK_ALWAYS
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
&& png_ptr->read_user_chunk_fn == NULL
&& png_ptr->read_user_chunk_fn == NULL
#endif
)
)
#endif
png_chunk_error(png_ptr, "unknown critical chunk");
png_chunk_error(png_ptr, "unknown critical chunk");
info_ptr = info_ptr; /* to quiet some compiler warnings */
info_ptr = info_ptr; /* to quiet some compiler warnings */
}
#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
if (png_ptr->flags & PNG_FLAG_KEEP_UNKNOWN_CHUNKS)
{
#ifdef PNG_MAX_MALLOC_64K
if (length > (png_uint_32)65535L)
{
png_warning(png_ptr, "unknown chunk too large to fit in memory");
skip = length - (png_uint_32)65535L;
length = (png_uint_32)65535L;
}
if (length > (png_uint_32)65535L)
{
png_warning(png_ptr, "unknown chunk too large to fit in memory");
skip = length - (png_uint_32)65535L;
length = (png_uint_32)65535L;
}
#endif
png_memcpy((png_charp)png_ptr->unknown_chunk.name,
(png_charp)png_ptr->chunk_name,
png_sizeof(png_ptr->unknown_chunk.name));
png_ptr->unknown_chunk.name[png_sizeof(png_ptr->unknown_chunk.name)-1]='\0';
png_ptr->unknown_chunk.size = (png_size_t)length;
if (length == 0)
png_ptr->unknown_chunk.data = NULL;
else
{
png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr, length);
png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
}
png_strncpy((png_charp)png_ptr->unknown_chunk.name,
(png_charp)png_ptr->chunk_name,
png_sizeof((png_charp)png_ptr->chunk_name));
png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr, length);
png_ptr->unknown_chunk.size = (png_size_t)length;
png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
if(png_ptr->read_user_chunk_fn != NULL)
{
/* callback to user unknown chunk handler */
int ret;
ret = (*(png_ptr->read_user_chunk_fn))
(png_ptr, &png_ptr->unknown_chunk);
if (ret < 0)
png_chunk_error(png_ptr, "error in user chunk");
if (ret == 0)
{
if (!(png_ptr->chunk_name[0] & 0x20))
if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
PNG_HANDLE_CHUNK_ALWAYS)
png_chunk_error(png_ptr, "unknown critical chunk");
png_set_unknown_chunks(png_ptr, info_ptr,
&png_ptr->unknown_chunk, 1);
}
}
else
if(png_ptr->read_user_chunk_fn != NULL)
{
/* callback to user unknown chunk handler */
int ret;
ret = (*(png_ptr->read_user_chunk_fn))
(png_ptr, &png_ptr->unknown_chunk);
if (ret < 0)
png_chunk_error(png_ptr, "error in user chunk");
if (ret == 0)
{
if (!(png_ptr->chunk_name[0] & 0x20))
if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
PNG_HANDLE_CHUNK_ALWAYS)
png_chunk_error(png_ptr, "unknown critical chunk");
png_set_unknown_chunks(png_ptr, info_ptr,
&png_ptr->unknown_chunk, 1);
}
}
#else
png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1);
#endif
png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1);
png_free(png_ptr, png_ptr->unknown_chunk.data);
png_ptr->unknown_chunk.data = NULL;
png_free(png_ptr, png_ptr->unknown_chunk.data);
png_ptr->unknown_chunk.data = NULL;
}
else
#endif

View File

@@ -1,9 +1,9 @@
/* pngread.c - read a PNG file
*
* Last changed in libpng 1.2.25 [February 18, 2008]
* Last changed in libpng 1.2.19 July 20, 2007
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -55,6 +55,12 @@ png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
if (png_ptr == NULL)
return (NULL);
#if !defined(PNG_1_0_X)
#ifdef PNG_MMX_CODE_SUPPORTED
png_init_mmx_flags(png_ptr); /* 1.2.0 addition */
#endif
#endif /* PNG_1_0_X */
/* added at libpng-1.2.6 */
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
@@ -89,18 +95,12 @@ png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
if(user_png_ver)
i=0;
do
{
i=0;
do
{
if(user_png_ver[i] != png_libpng_ver[i])
png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
} while (png_libpng_ver[i++]);
}
else
if(user_png_ver[i] != png_libpng_ver[i])
png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
} while (png_libpng_ver[i++]);
if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
{
@@ -324,7 +324,7 @@ png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
void PNGAPI
png_read_info(png_structp png_ptr, png_infop info_ptr)
{
if(png_ptr == NULL || info_ptr == NULL) return;
if(png_ptr == NULL) return;
png_debug(1, "in png_read_info\n");
/* If we haven't checked all of the PNG signature bytes, do so now. */
if (png_ptr->sig_bytes < 8)
@@ -421,7 +421,7 @@ png_read_info(png_structp png_ptr, png_infop info_ptr)
/* This should be a binary subdivision search or a hash for
* matching the chunk name rather than a linear search.
*/
if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
if (!png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
if(png_ptr->mode & PNG_AFTER_IDAT)
png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
@@ -1105,22 +1105,13 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
png_structp png_ptr = NULL;
png_infop info_ptr = NULL, end_info_ptr = NULL;
#ifdef PNG_USER_MEM_SUPPORTED
png_free_ptr free_fn = NULL;
png_voidp mem_ptr = NULL;
png_free_ptr free_fn;
png_voidp mem_ptr;
#endif
png_debug(1, "in png_destroy_read_struct\n");
if (png_ptr_ptr != NULL)
{
png_ptr = *png_ptr_ptr;
}
if (png_ptr == NULL)
return;
#ifdef PNG_USER_MEM_SUPPORTED
free_fn = png_ptr->free_fn;
mem_ptr = png_ptr->mem_ptr;
#endif
if (info_ptr_ptr != NULL)
info_ptr = *info_ptr_ptr;
@@ -1128,6 +1119,11 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
if (end_info_ptr_ptr != NULL)
end_info_ptr = *end_info_ptr_ptr;
#ifdef PNG_USER_MEM_SUPPORTED
free_fn = png_ptr->free_fn;
mem_ptr = png_ptr->mem_ptr;
#endif
png_read_destroy(png_ptr, info_ptr, end_info_ptr);
if (info_ptr != NULL)
@@ -1159,13 +1155,16 @@ png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
*end_info_ptr_ptr = NULL;
}
if (png_ptr != NULL)
{
#ifdef PNG_USER_MEM_SUPPORTED
png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn,
(png_voidp)mem_ptr);
png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn,
(png_voidp)mem_ptr);
#else
png_destroy_struct((png_voidp)png_ptr);
png_destroy_struct((png_voidp)png_ptr);
#endif
*png_ptr_ptr = NULL;
*png_ptr_ptr = NULL;
}
}
/* free all memory used by the read (old method) */

View File

@@ -1,9 +1,9 @@
/* pngrtran.c - transforms the data in a row for PNG readers
*
* Last changed in libpng 1.2.27 [April 29, 2008]
* Last changed in libpng 1.2.19 July 20, 2007
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -548,7 +548,6 @@ png_set_expand(png_structp png_ptr)
png_debug(1, "in png_set_expand\n");
if(png_ptr == NULL) return;
png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
}
/* GRR 19990627: the following three functions currently are identical
@@ -575,7 +574,6 @@ png_set_palette_to_rgb(png_structp png_ptr)
png_debug(1, "in png_set_palette_to_rgb\n");
if(png_ptr == NULL) return;
png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
}
#if !defined(PNG_1_0_X)
@@ -586,7 +584,6 @@ png_set_expand_gray_1_2_4_to_8(png_structp png_ptr)
png_debug(1, "in png_set_expand_gray_1_2_4_to_8\n");
if(png_ptr == NULL) return;
png_ptr->transformations |= PNG_EXPAND;
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
}
#endif
@@ -607,9 +604,8 @@ png_set_gray_1_2_4_to_8(png_structp png_ptr)
void PNGAPI
png_set_tRNS_to_alpha(png_structp png_ptr)
{
png_debug(1, "in png_set_tRNS_to_alpha\n");
png_debug(1, "in png_set_expand\n");
png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
}
#endif /* defined(PNG_READ_EXPAND_SUPPORTED) */
@@ -619,7 +615,6 @@ png_set_gray_to_rgb(png_structp png_ptr)
{
png_debug(1, "in png_set_gray_to_rgb\n");
png_ptr->transformations |= PNG_GRAY_TO_RGB;
png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
}
#endif
@@ -847,7 +842,7 @@ png_init_read_transformations(png_structp png_ptr)
k=1; /* partial transparency is present */
}
if (k == 0)
png_ptr->transformations &= ~PNG_GAMMA;
png_ptr->transformations &= (~PNG_GAMMA);
}
if ((png_ptr->transformations & (PNG_GAMMA | PNG_RGB_TO_GRAY)) &&
@@ -954,14 +949,6 @@ png_init_read_transformations(png_structp png_ptr)
palette[i].blue = png_ptr->gamma_table[palette[i].blue];
}
}
/* Prevent the transformations being done again, and make sure
* that the now spurious alpha channel is stripped - the code
* has just reduced background composition and gamma correction
* to a simple alpha channel strip.
*/
png_ptr->transformations &= ~PNG_BACKGROUND;
png_ptr->transformations &= ~PNG_GAMMA;
png_ptr->transformations |= PNG_STRIP_ALPHA;
}
/* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN) */
else
@@ -1036,9 +1023,6 @@ png_init_read_transformations(png_structp png_ptr)
palette[i].green = png_ptr->gamma_table[palette[i].green];
palette[i].blue = png_ptr->gamma_table[palette[i].blue];
}
/* Done the gamma correction. */
png_ptr->transformations &= ~PNG_GAMMA;
}
}
#if defined(PNG_READ_BACKGROUND_SUPPORTED)
@@ -1076,10 +1060,6 @@ png_init_read_transformations(png_structp png_ptr)
png_ptr->trans[i], back.blue);
}
}
/* Handled alpha, still need to strip the channel. */
png_ptr->transformations &= ~PNG_BACKGROUND;
png_ptr->transformations |= PNG_STRIP_ALPHA;
}
#endif /* PNG_READ_BACKGROUND_SUPPORTED */
@@ -1128,8 +1108,7 @@ png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
{
if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
{
if (png_ptr->num_trans &&
(png_ptr->transformations & PNG_EXPAND_tRNS))
if (png_ptr->num_trans && (png_ptr->transformations & PNG_EXPAND_tRNS))
info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
else
info_ptr->color_type = PNG_COLOR_TYPE_RGB;
@@ -1142,10 +1121,8 @@ png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
{
if (png_ptr->transformations & PNG_EXPAND_tRNS)
info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
#if 0 /* Removed from libpng-1.2.27 */
else
info_ptr->color_type |= PNG_COLOR_MASK_COLOR;
#endif
}
if (info_ptr->bit_depth < 8)
info_ptr->bit_depth = 8;
@@ -1280,17 +1257,6 @@ png_do_read_transformations(png_structp png_ptr)
png_error(png_ptr, "NULL row buffer");
#endif
}
#ifdef PNG_WARN_UNINITIALIZED_ROW
if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
/* Application has failed to call either png_read_start_image()
* or png_read_update_info() after setting transforms that expand
* pixels. This check added to libpng-1.2.19 */
#if (PNG_WARN_UNINITIALIZED_ROW==1)
png_error(png_ptr, "Uninitialized row");
#else
png_warning(png_ptr, "Uninitialized row");
#endif
#endif
#if defined(PNG_READ_EXPAND_SUPPORTED)
if (png_ptr->transformations & PNG_EXPAND)
@@ -3875,9 +3841,9 @@ png_do_expand(png_row_infop row_info, png_bytep row,
}
else if (row_info->bit_depth == 16)
{
png_byte red_high = (trans_value->red >> 8) & 0xff;
png_byte green_high = (trans_value->green >> 8) & 0xff;
png_byte blue_high = (trans_value->blue >> 8) & 0xff;
png_byte red_high = (trans_value->red > 8) & 0xff;
png_byte green_high = (trans_value->green > 8) & 0xff;
png_byte blue_high = (trans_value->blue > 8) & 0xff;
png_byte red_low = trans_value->red & 0xff;
png_byte green_low = trans_value->green & 0xff;
png_byte blue_low = trans_value->blue & 0xff;

1152
pngrutil.c

File diff suppressed because it is too large Load Diff

205
pngset.c
View File

@@ -1,9 +1,9 @@
/* pngset.c - storage of image information into info struct
*
* Last changed in libpng 1.2.27 [April 29, 2008]
* Last changed in libpng 1.2.17 May 15, 2007
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -41,13 +41,7 @@ png_set_cHRM(png_structp png_ptr, png_infop info_ptr,
png_debug1(1, "in %s storage function\n", "cHRM");
if (png_ptr == NULL || info_ptr == NULL)
return;
if (!(white_x || white_y || red_x || red_y || green_x || green_y ||
blue_x || blue_y))
{
png_warning(png_ptr,
"Ignoring attempt to set all-zero chromaticity values");
return;
}
if (white_x < 0.0 || white_y < 0.0 ||
red_x < 0.0 || red_y < 0.0 ||
green_x < 0.0 || green_y < 0.0 ||
@@ -99,13 +93,6 @@ png_set_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
if (png_ptr == NULL || info_ptr == NULL)
return;
if (!(white_x || white_y || red_x || red_y || green_x || green_y ||
blue_x || blue_y))
{
png_warning(png_ptr,
"Ignoring attempt to set all-zero chromaticity values");
return;
}
if (white_x < 0 || white_y < 0 ||
red_x < 0 || red_y < 0 ||
green_x < 0 || green_y < 0 ||
@@ -115,14 +102,25 @@ png_set_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
"Ignoring attempt to set negative chromaticity value");
return;
}
if (white_x > (png_fixed_point) PNG_UINT_31_MAX ||
white_y > (png_fixed_point) PNG_UINT_31_MAX ||
red_x > (png_fixed_point) PNG_UINT_31_MAX ||
red_y > (png_fixed_point) PNG_UINT_31_MAX ||
green_x > (png_fixed_point) PNG_UINT_31_MAX ||
green_y > (png_fixed_point) PNG_UINT_31_MAX ||
blue_x > (png_fixed_point) PNG_UINT_31_MAX ||
blue_y > (png_fixed_point) PNG_UINT_31_MAX )
#ifdef PNG_FLOATING_POINT_SUPPORTED
if (white_x > (double) PNG_UINT_31_MAX ||
white_y > (double) PNG_UINT_31_MAX ||
red_x > (double) PNG_UINT_31_MAX ||
red_y > (double) PNG_UINT_31_MAX ||
green_x > (double) PNG_UINT_31_MAX ||
green_y > (double) PNG_UINT_31_MAX ||
blue_x > (double) PNG_UINT_31_MAX ||
blue_y > (double) PNG_UINT_31_MAX)
#else
if (white_x > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
white_y > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
red_x > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
red_y > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
green_x > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
green_y > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
blue_x > (png_fixed_point) PNG_UINT_31_MAX/100000L ||
blue_y > (png_fixed_point) PNG_UINT_31_MAX/100000L)
#endif
{
png_warning(png_ptr,
"Ignoring attempt to set chromaticity value exceeding 21474.83");
@@ -224,7 +222,7 @@ png_set_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p hist)
png_debug1(1, "in %s storage function\n", "hIST");
if (png_ptr == NULL || info_ptr == NULL)
return;
if (info_ptr->num_palette == 0 || info_ptr->num_palette
if (info_ptr->num_palette <= 0 || info_ptr->num_palette
> PNG_MAX_PALETTE_LENGTH)
{
png_warning(png_ptr,
@@ -488,7 +486,6 @@ png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
{
png_warning(png_ptr,
"Memory allocation failed while processing sCAL.");
return;
}
png_memcpy(info_ptr->scal_s_width, swidth, (png_size_t)length);
@@ -500,9 +497,9 @@ png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
png_free (png_ptr, info_ptr->scal_s_width);
png_warning(png_ptr,
"Memory allocation failed while processing sCAL.");
return;
}
png_memcpy(info_ptr->scal_s_height, sheight, (png_size_t)length);
info_ptr->valid |= PNG_INFO_sCAL;
#ifdef PNG_FREE_ME_SUPPORTED
info_ptr->free_me |= PNG_FREE_SCAL;
@@ -682,20 +679,18 @@ png_set_iCCP(png_structp png_ptr, png_infop info_ptr,
{
png_charp new_iccp_name;
png_charp new_iccp_profile;
png_uint_32 length;
png_debug1(1, "in %s storage function\n", "iCCP");
if (png_ptr == NULL || info_ptr == NULL || name == NULL || profile == NULL)
return;
length = png_strlen(name)+1;
new_iccp_name = (png_charp)png_malloc_warn(png_ptr, length);
new_iccp_name = (png_charp)png_malloc_warn(png_ptr, png_strlen(name)+1);
if (new_iccp_name == NULL)
{
png_warning(png_ptr, "Insufficient memory to process iCCP chunk.");
return;
}
png_memcpy(new_iccp_name, name, length);
png_strncpy(new_iccp_name, name, png_sizeof(new_iccp_name));
new_iccp_profile = (png_charp)png_malloc_warn(png_ptr, proflen);
if (new_iccp_profile == NULL)
{
@@ -884,6 +879,9 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
textp->itxt_length = 0;
#endif
}
#if 0 /* appears to be redundant; */
info_ptr->text[info_ptr->num_text]= *textp;
#endif
info_ptr->num_text++;
png_debug1(3, "transferred text chunk %d\n", info_ptr->num_text);
}
@@ -914,8 +912,6 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
if (png_ptr == NULL || info_ptr == NULL)
return;
png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
if (trans != NULL)
{
/*
@@ -923,41 +919,30 @@ png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
* we do it for backward compatibility with the way the png_handle_tRNS
* function used to do the allocation.
*/
#ifdef PNG_FREE_ME_SUPPORTED
png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
#endif
/* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
png_ptr->trans = info_ptr->trans = (png_bytep)png_malloc(png_ptr,
(png_uint_32)PNG_MAX_PALETTE_LENGTH);
if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH)
if (num_trans <= PNG_MAX_PALETTE_LENGTH)
png_memcpy(info_ptr->trans, trans, (png_size_t)num_trans);
#ifdef PNG_FREE_ME_SUPPORTED
info_ptr->free_me |= PNG_FREE_TRNS;
#else
png_ptr->flags |= PNG_FLAG_FREE_TRNS;
#endif
}
if (trans_values != NULL)
{
int sample_max = (1 << info_ptr->bit_depth);
if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY &&
(int)trans_values->gray > sample_max) ||
(info_ptr->color_type == PNG_COLOR_TYPE_RGB &&
((int)trans_values->red > sample_max ||
(int)trans_values->green > sample_max ||
(int)trans_values->blue > sample_max)))
png_warning(png_ptr,
"tRNS chunk has out-of-range samples for bit_depth");
png_memcpy(&(info_ptr->trans_values), trans_values,
png_sizeof(png_color_16));
if (num_trans == 0)
num_trans = 1;
}
info_ptr->num_trans = (png_uint_16)num_trans;
if (num_trans != 0)
{
info_ptr->valid |= PNG_INFO_tRNS;
#ifdef PNG_FREE_ME_SUPPORTED
info_ptr->free_me |= PNG_FREE_TRNS;
#else
png_ptr->flags |= PNG_FLAG_FREE_TRNS;
#endif
}
info_ptr->valid |= PNG_INFO_tRNS;
}
#endif
@@ -989,29 +974,28 @@ png_set_sPLT(png_structp png_ptr,
{
png_sPLT_tp to = np + info_ptr->splt_palettes_num + i;
png_sPLT_tp from = entries + i;
png_uint_32 length;
length = png_strlen(from->name) + 1;
to->name = (png_charp)png_malloc_warn(png_ptr, length);
to->name = (png_charp)png_malloc_warn(png_ptr,
png_strlen(from->name) + 1);
if (to->name == NULL)
{
png_warning(png_ptr,
"Out of memory while processing sPLT chunk");
continue;
}
png_memcpy(to->name, from->name, length);
/* TODO: use png_malloc_warn */
png_strncpy(to->name, from->name, png_strlen(from->name));
to->entries = (png_sPLT_entryp)png_malloc_warn(png_ptr,
from->nentries * png_sizeof(png_sPLT_entry));
/* TODO: use png_malloc_warn */
png_memcpy(to->entries, from->entries,
from->nentries * png_sizeof(png_sPLT_entry));
if (to->entries == NULL)
{
png_warning(png_ptr,
"Out of memory while processing sPLT chunk");
png_free(png_ptr,to->name);
to->name = NULL;
continue;
}
png_memcpy(to->entries, from->entries,
from->nentries * png_sizeof(png_sPLT_entry));
to->nentries = from->nentries;
to->depth = from->depth;
}
@@ -1053,31 +1037,24 @@ png_set_unknown_chunks(png_structp png_ptr,
for (i = 0; i < num_unknowns; i++)
{
png_unknown_chunkp to = np + info_ptr->unknown_chunks_num + i;
png_unknown_chunkp from = unknowns + i;
png_unknown_chunkp to = np + info_ptr->unknown_chunks_num + i;
png_unknown_chunkp from = unknowns + i;
png_memcpy((png_charp)to->name,
(png_charp)from->name,
png_sizeof(from->name));
to->name[png_sizeof(to->name)-1] = '\0';
to->size = from->size;
/* note our location in the read or write sequence */
to->location = (png_byte)(png_ptr->mode & 0xff);
if (from->size == 0)
to->data=NULL;
else
{
to->data = (png_bytep)png_malloc_warn(png_ptr, from->size);
if (to->data == NULL)
{
png_warning(png_ptr,
png_strncpy((png_charp)to->name, (png_charp)from->name, 5);
to->data = (png_bytep)png_malloc_warn(png_ptr, from->size);
if (to->data == NULL)
{
png_warning(png_ptr,
"Out of memory while processing unknown chunk.");
to->size=0;
}
else
png_memcpy(to->data, from->data, from->size);
}
}
else
{
png_memcpy(to->data, from->data, from->size);
to->size = from->size;
/* note our location in the read or write sequence */
to->location = (png_byte)(png_ptr->mode & 0xff);
}
}
info_ptr->unknown_chunks = np;
@@ -1108,7 +1085,7 @@ png_permit_empty_plte (png_structp png_ptr, int empty_plte_permitted)
if (png_ptr == NULL)
return;
png_ptr->mng_features_permitted = (png_byte)
((png_ptr->mng_features_permitted & (~PNG_FLAG_MNG_EMPTY_PLTE)) |
((png_ptr->mng_features_permitted & (~(PNG_FLAG_MNG_EMPTY_PLTE))) |
((empty_plte_permitted & PNG_FLAG_MNG_EMPTY_PLTE)));
}
#endif
@@ -1209,7 +1186,8 @@ png_set_compression_buffer_size(png_structp png_ptr, png_uint_32 size)
{
if (png_ptr == NULL)
return;
png_free(png_ptr, png_ptr->zbuf);
if(png_ptr->zbuf)
png_free(png_ptr, png_ptr->zbuf);
png_ptr->zbuf_size = (png_size_t)size;
png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, size);
png_ptr->zstream.next_out = png_ptr->zbuf;
@@ -1221,19 +1199,57 @@ void PNGAPI
png_set_invalid(png_structp png_ptr, png_infop info_ptr, int mask)
{
if (png_ptr && info_ptr)
info_ptr->valid &= ~mask;
info_ptr->valid &= ~(mask);
}
#ifndef PNG_1_0_X
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
/* function was added to libpng 1.2.0 and should always exist by default */
/* this function was added to libpng 1.2.0 and should always exist by default */
void PNGAPI
png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags)
{
/* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */
if (png_ptr != NULL)
png_ptr->asm_flags = 0;
#ifdef PNG_MMX_CODE_SUPPORTED
png_uint_32 settable_asm_flags;
png_uint_32 settable_mmx_flags;
#endif
if (png_ptr == NULL)
return;
#ifdef PNG_MMX_CODE_SUPPORTED
settable_mmx_flags =
#ifdef PNG_HAVE_MMX_COMBINE_ROW
PNG_ASM_FLAG_MMX_READ_COMBINE_ROW |
#endif
#ifdef PNG_HAVE_MMX_READ_INTERLACE
PNG_ASM_FLAG_MMX_READ_INTERLACE |
#endif
#ifdef PNG_HAVE_MMX_READ_FILTER_ROW
PNG_ASM_FLAG_MMX_READ_FILTER_SUB |
PNG_ASM_FLAG_MMX_READ_FILTER_UP |
PNG_ASM_FLAG_MMX_READ_FILTER_AVG |
PNG_ASM_FLAG_MMX_READ_FILTER_PAETH |
#endif
0;
/* could be some non-MMX ones in the future, but not currently: */
settable_asm_flags = settable_mmx_flags;
if (!(png_ptr->asm_flags & PNG_ASM_FLAG_MMX_SUPPORT_COMPILED) ||
!(png_ptr->asm_flags & PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU))
{
/* clear all MMX flags if MMX isn't supported */
settable_asm_flags &= ~settable_mmx_flags;
png_ptr->asm_flags &= ~settable_mmx_flags;
}
/* we're replacing the settable bits with those passed in by the user,
* so first zero them out of the master copy, then bitwise-OR in the
* allowed subset that was requested */
png_ptr->asm_flags &= ~settable_asm_flags; /* zero them */
png_ptr->asm_flags |= (asm_flags & settable_asm_flags); /* set them */
#endif /* ?PNG_MMX_CODE_SUPPORTED */
}
/* this function was added to libpng 1.2.0 */
@@ -1242,9 +1258,12 @@ png_set_mmx_thresholds (png_structp png_ptr,
png_byte mmx_bitdepth_threshold,
png_uint_32 mmx_rowbytes_threshold)
{
/* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */
if (png_ptr == NULL)
return;
#ifdef PNG_MMX_CODE_SUPPORTED
png_ptr->mmx_bitdepth_threshold = mmx_bitdepth_threshold;
png_ptr->mmx_rowbytes_threshold = mmx_rowbytes_threshold;
#endif /* ?PNG_MMX_CODE_SUPPORTED */
}
#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */

View File

@@ -1,9 +1,9 @@
/* pngtest.c - a simple test program to test libpng
*
* Last changed in libpng 1.2.27 - [April 29, 2008]
* Last changed in libpng 1.2.6 - August 15, 2004
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* Copyright (c) 1998-2004 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -82,9 +82,8 @@ static float t_start, t_stop, t_decode, t_encode, t_misc;
#endif
#if defined(PNG_TIME_RFC1123_SUPPORTED)
#define PNG_tIME_STRING_LENGTH 30
static int tIME_chunk_present=0;
static char tIME_string[PNG_tIME_STRING_LENGTH] = "no tIME chunk present in file";
static char tIME_string[30] = "no tIME chunk present in file";
#endif
static int verbose = 0;
@@ -689,7 +688,8 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
#endif
{
fprintf(STDERR, "%s -> %s: libpng read error\n", inname, outname);
png_free(read_ptr, row_buf);
if (row_buf)
png_free(read_ptr, row_buf);
png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr);
#ifdef PNG_WRITE_SUPPORTED
png_destroy_info_struct(write_ptr, &write_end_info_ptr);
@@ -1002,13 +1002,11 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
{
png_set_tIME(write_ptr, write_info_ptr, mod_time);
#if defined(PNG_TIME_RFC1123_SUPPORTED)
/* we have to use png_memcpy instead of "=" because the string
/* we have to use png_strncpy instead of "=" because the string
pointed to by png_convert_to_rfc1123() gets free'ed before
we use it */
png_memcpy(tIME_string,
png_convert_to_rfc1123(read_ptr, mod_time),
png_sizeof(tIME_string));
tIME_string[png_sizeof(tIME_string)-1] = '\0';
png_strncpy(tIME_string,png_convert_to_rfc1123(read_ptr,
mod_time),30);
tIME_chunk_present++;
#endif /* PNG_TIME_RFC1123_SUPPORTED */
}
@@ -1023,16 +1021,8 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
if (png_get_tRNS(read_ptr, read_info_ptr, &trans, &num_trans,
&trans_values))
{
int sample_max = (1 << read_info_ptr->bit_depth);
/* libpng doesn't reject a tRNS chunk with out-of-range samples */
if (!((read_info_ptr->color_type == PNG_COLOR_TYPE_GRAY &&
(int)trans_values->gray > sample_max) ||
(read_info_ptr->color_type == PNG_COLOR_TYPE_RGB &&
((int)trans_values->red > sample_max ||
(int)trans_values->green > sample_max ||
(int)trans_values->blue > sample_max))))
png_set_tRNS(write_ptr, write_info_ptr, trans, num_trans,
trans_values);
png_set_tRNS(write_ptr, write_info_ptr, trans, num_trans,
trans_values);
}
}
#endif
@@ -1153,13 +1143,11 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
{
png_set_tIME(write_ptr, write_end_info_ptr, mod_time);
#if defined(PNG_TIME_RFC1123_SUPPORTED)
/* we have to use png_memcpy instead of "=" because the string
/* we have to use png_strncpy instead of "=" because the string
pointed to by png_convert_to_rfc1123() gets free'ed before
we use it */
png_memcpy(tIME_string,
png_convert_to_rfc1123(read_ptr, mod_time),
png_sizeof(tIME_string));
tIME_string[png_sizeof(tIME_string)-1] = '\0';
png_strncpy(tIME_string,png_convert_to_rfc1123(read_ptr,
mod_time),30);
tIME_chunk_present++;
#endif /* PNG_TIME_RFC1123_SUPPORTED */
}
@@ -1560,4 +1548,4 @@ main(int argc, char *argv[])
}
/* Generate a compiler error if there is an old png.h in the search path. */
typedef version_1_0_34 your_png_h_is_not_version_1_0_34;
typedef version_1_2_19beta29 your_png_h_is_not_version_1_2_19beta29;

3908
pngvcrd.c

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,9 @@
/* pngwrite.c - general routines to write a PNG file
*
* Last changed in libpng 1.2.27 [April 29, 2008]
* Last changed in libpng 1.2.15 January 5, 2007
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -112,8 +112,6 @@ png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
(png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
{
if (up->size == 0)
png_warning(png_ptr, "Writing zero-length unknown chunk");
png_write_chunk(png_ptr, up->name, up->data, up->size);
}
}
@@ -393,6 +391,11 @@ png_write_end(png_structp png_ptr, png_infop info_ptr)
/* write end of PNG file */
png_write_IEND(png_ptr);
#if 0
/* This flush, added in libpng-1.0.8, causes some applications to crash
because they do not set png_ptr->output_flush_fn */
png_flush(png_ptr);
#endif
}
#if defined(PNG_WRITE_tIME_SUPPORTED)
@@ -456,6 +459,14 @@ png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
if (png_ptr == NULL)
return (NULL);
#if !defined(PNG_1_0_X)
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
#ifdef PNG_MMX_CODE_SUPPORTED
png_init_mmx_flags(png_ptr); /* 1.2.0 addition */
#endif
#endif
#endif /* PNG_1_0_X */
/* added at libpng-1.2.6 */
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
@@ -484,15 +495,12 @@ png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
#endif /* PNG_USER_MEM_SUPPORTED */
png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
if(user_png_ver)
i=0;
do
{
i=0;
do
{
if(user_png_ver[i] != png_libpng_ver[i])
png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
} while (png_libpng_ver[i++]);
}
if(user_png_ver[i] != png_libpng_ver[i])
png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
} while (png_libpng_ver[i++]);
if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
{
@@ -667,6 +675,14 @@ png_write_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
#endif
#if !defined(PNG_1_0_X)
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
#ifdef PNG_MMX_CODE_SUPPORTED
png_init_mmx_flags(png_ptr); /* 1.2.0 addition */
#endif
#endif
#endif /* PNG_1_0_X */
#ifdef PNG_SETJMP_SUPPORTED
/* restore jump buffer */
png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof (jmp_buf));
@@ -1005,32 +1021,21 @@ png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)
#endif
}
#ifdef PNG_USER_MEM_SUPPORTED
if (png_ptr != NULL)
{
free_fn = png_ptr->free_fn;
mem_ptr = png_ptr->mem_ptr;
}
#endif
if (info_ptr_ptr != NULL)
info_ptr = *info_ptr_ptr;
if (info_ptr != NULL)
{
if (png_ptr != NULL)
{
png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1);
png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1);
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
if (png_ptr->num_chunk_list)
{
png_free(png_ptr, png_ptr->chunk_list);
png_ptr->chunk_list=NULL;
png_ptr->num_chunk_list=0;
}
#endif
if (png_ptr->num_chunk_list)
{
png_free(png_ptr, png_ptr->chunk_list);
png_ptr->chunk_list=NULL;
png_ptr->num_chunk_list=0;
}
#endif
#ifdef PNG_USER_MEM_SUPPORTED
png_destroy_struct_2((png_voidp)info_ptr, (png_free_ptr)free_fn,
@@ -1076,13 +1081,11 @@ png_write_destroy(png_structp png_ptr)
/* free our memory. png_free checks NULL for us. */
png_free(png_ptr, png_ptr->zbuf);
png_free(png_ptr, png_ptr->row_buf);
#ifndef PNG_NO_WRITE_FILTERING
png_free(png_ptr, png_ptr->prev_row);
png_free(png_ptr, png_ptr->sub_row);
png_free(png_ptr, png_ptr->up_row);
png_free(png_ptr, png_ptr->avg_row);
png_free(png_ptr, png_ptr->paeth_row);
#endif
#if defined(PNG_TIME_RFC1123_SUPPORTED)
png_free(png_ptr, png_ptr->time_buffer);

View File

@@ -1,9 +1,9 @@
/* pngwutil.c - utilities to write a PNG file
*
* Last changed in libpng 1.2.27 [April 29, 2008]
* Last changed in libpng 1.2.19 July 20, 2007
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1998-2008 Glenn Randers-Pehrson
* Copyright (c) 1998-2007 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*/
@@ -380,8 +380,6 @@ png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
#ifdef PNG_USE_LOCAL_ARRAYS
PNG_IHDR;
#endif
int ret;
png_byte buf[13]; /* buffer to store the IHDR info */
png_debug(1, "in png_write_IHDR\n");
@@ -496,7 +494,7 @@ png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
buf[12] = (png_byte)interlace_type;
/* write the chunk */
png_write_chunk(png_ptr, png_IHDR, buf, (png_size_t)13);
png_write_chunk(png_ptr, (png_bytep)png_IHDR, buf, (png_size_t)13);
/* initialize zlib with PNG info */
png_ptr->zstream.zalloc = png_zalloc;
@@ -525,19 +523,10 @@ png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
png_ptr->zlib_window_bits = 15;
if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_METHOD))
png_ptr->zlib_method = 8;
ret = deflateInit2(&png_ptr->zstream, png_ptr->zlib_level,
png_ptr->zlib_method, png_ptr->zlib_window_bits,
png_ptr->zlib_mem_level, png_ptr->zlib_strategy);
if (ret != Z_OK)
{
if (ret == Z_VERSION_ERROR) png_error(png_ptr,
"zlib failed to initialize compressor -- version error");
if (ret == Z_STREAM_ERROR) png_error(png_ptr,
"zlib failed to initialize compressor -- stream error");
if (ret == Z_MEM_ERROR) png_error(png_ptr,
"zlib failed to initialize compressor -- mem error");
png_error(png_ptr, "zlib failed to initialize compressor");
}
if (deflateInit2(&png_ptr->zstream, png_ptr->zlib_level,
png_ptr->zlib_method, png_ptr->zlib_window_bits,
png_ptr->zlib_mem_level, png_ptr->zlib_strategy) != Z_OK)
png_error(png_ptr, "zlib failed to initialize compressor");
png_ptr->zstream.next_out = png_ptr->zbuf;
png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
/* libpng is not interested in zstream.data_type */
@@ -661,7 +650,7 @@ png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length)
"Invalid zlib compression method or flags in IDAT");
}
png_write_chunk(png_ptr, png_IDAT, data, length);
png_write_chunk(png_ptr, (png_bytep)png_IDAT, data, length);
png_ptr->mode |= PNG_HAVE_IDAT;
}
@@ -673,7 +662,7 @@ png_write_IEND(png_structp png_ptr)
PNG_IEND;
#endif
png_debug(1, "in png_write_IEND\n");
png_write_chunk(png_ptr, png_IEND, png_bytep_NULL,
png_write_chunk(png_ptr, (png_bytep)png_IEND, png_bytep_NULL,
(png_size_t)0);
png_ptr->mode |= PNG_HAVE_IEND;
}
@@ -694,7 +683,7 @@ png_write_gAMA(png_structp png_ptr, double file_gamma)
/* file_gamma is saved in 1/100,000ths */
igamma = (png_uint_32)(file_gamma * 100000.0 + 0.5);
png_save_uint_32(buf, igamma);
png_write_chunk(png_ptr, png_gAMA, buf, (png_size_t)4);
png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, (png_size_t)4);
}
#endif
#ifdef PNG_FIXED_POINT_SUPPORTED
@@ -709,7 +698,7 @@ png_write_gAMA_fixed(png_structp png_ptr, png_fixed_point file_gamma)
png_debug(1, "in png_write_gAMA\n");
/* file_gamma is saved in 1/100,000ths */
png_save_uint_32(buf, (png_uint_32)file_gamma);
png_write_chunk(png_ptr, png_gAMA, buf, (png_size_t)4);
png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, (png_size_t)4);
}
#endif
#endif
@@ -729,7 +718,7 @@ png_write_sRGB(png_structp png_ptr, int srgb_intent)
png_warning(png_ptr,
"Invalid sRGB rendering intent specified");
buf[0]=(png_byte)srgb_intent;
png_write_chunk(png_ptr, png_sRGB, buf, (png_size_t)1);
png_write_chunk(png_ptr, (png_bytep)png_sRGB, buf, (png_size_t)1);
}
#endif
@@ -942,7 +931,7 @@ png_write_sBIT(png_structp png_ptr, png_color_8p sbit, int color_type)
buf[size++] = sbit->alpha;
}
png_write_chunk(png_ptr, png_sBIT, buf, size);
png_write_chunk(png_ptr, (png_bytep)png_sBIT, buf, size);
}
#endif
@@ -1006,7 +995,7 @@ png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
itemp = (png_uint_32)(blue_y * 100000.0 + 0.5);
png_save_uint_32(buf + 28, itemp);
png_write_chunk(png_ptr, png_cHRM, buf, (png_size_t)32);
png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
}
#endif
#ifdef PNG_FIXED_POINT_SUPPORTED
@@ -1058,7 +1047,7 @@ png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
png_save_uint_32(buf + 24, (png_uint_32)blue_x);
png_save_uint_32(buf + 28, (png_uint_32)blue_y);
png_write_chunk(png_ptr, png_cHRM, buf, (png_size_t)32);
png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
}
#endif
#endif
@@ -1083,7 +1072,7 @@ png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
return;
}
/* write the chunk out as it is */
png_write_chunk(png_ptr, png_tRNS, trans, (png_size_t)num_trans);
png_write_chunk(png_ptr, (png_bytep)png_tRNS, trans, (png_size_t)num_trans);
}
else if (color_type == PNG_COLOR_TYPE_GRAY)
{
@@ -1095,7 +1084,7 @@ png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
return;
}
png_save_uint_16(buf, tran->gray);
png_write_chunk(png_ptr, png_tRNS, buf, (png_size_t)2);
png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, (png_size_t)2);
}
else if (color_type == PNG_COLOR_TYPE_RGB)
{
@@ -1109,7 +1098,7 @@ png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
"Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8");
return;
}
png_write_chunk(png_ptr, png_tRNS, buf, (png_size_t)6);
png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, (png_size_t)6);
}
else
{
@@ -1142,7 +1131,7 @@ png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type)
return;
}
buf[0] = back->index;
png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)1);
png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)1);
}
else if (color_type & PNG_COLOR_MASK_COLOR)
{
@@ -1155,7 +1144,7 @@ png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type)
"Ignoring attempt to write 16-bit bKGD chunk when bit_depth is 8");
return;
}
png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)6);
png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)6);
}
else
{
@@ -1166,7 +1155,7 @@ png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type)
return;
}
png_save_uint_16(buf, back->gray);
png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)2);
png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)2);
}
}
#endif
@@ -1357,7 +1346,7 @@ png_write_tEXt(png_structp png_ptr, png_charp key, png_charp text,
text_len = png_strlen(text);
/* make sure we include the 0 after the key */
png_write_chunk_start(png_ptr, png_tEXt, (png_uint_32)key_len+text_len+1);
png_write_chunk_start(png_ptr, (png_bytep)png_tEXt, (png_uint_32)key_len+text_len+1);
/*
* We leave it to the application to meet PNG-1.0 requirements on the
* contents of the text. PNG-1.0 through PNG-1.2 discourage the use of
@@ -1415,7 +1404,7 @@ png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text,
&comp);
/* write start of chunk */
png_write_chunk_start(png_ptr, png_zTXt, (png_uint_32)
png_write_chunk_start(png_ptr, (png_bytep)png_zTXt, (png_uint_32)
(key_len+text_len+2));
/* write key */
png_write_chunk_data(png_ptr, (png_bytep)new_key, key_len + 1);
@@ -1483,7 +1472,7 @@ png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
/* make sure we include the compression flag, the compression byte,
* and the NULs after the key, lang, and lang_key parts */
png_write_chunk_start(png_ptr, png_iTXt,
png_write_chunk_start(png_ptr, (png_bytep)png_iTXt,
(png_uint_32)(
5 /* comp byte, comp flag, terminators for key, lang and lang_key */
+ key_len
@@ -1516,7 +1505,8 @@ png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
png_write_chunk_end(png_ptr);
png_free(png_ptr, new_key);
png_free(png_ptr, new_lang);
if (new_lang)
png_free(png_ptr, new_lang);
}
#endif
@@ -1736,7 +1726,6 @@ png_write_tIME(png_structp png_ptr, png_timep mod_time)
void /* PRIVATE */
png_write_start_row(png_structp png_ptr)
{
#ifdef PNG_WRITE_INTERLACING_SUPPORTED
#ifdef PNG_USE_LOCAL_ARRAYS
/* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
@@ -1751,7 +1740,6 @@ png_write_start_row(png_structp png_ptr)
/* offset to next interlace block in the y direction */
int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
#endif
#endif
png_size_t buf_size;
@@ -1834,7 +1822,6 @@ png_write_start_row(png_structp png_ptr)
void /* PRIVATE */
png_write_finish_row(png_structp png_ptr)
{
#ifdef PNG_WRITE_INTERLACING_SUPPORTED
#ifdef PNG_USE_LOCAL_ARRAYS
/* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
@@ -1849,7 +1836,6 @@ png_write_finish_row(png_structp png_ptr)
/* offset to next interlace block in the y direction */
int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
#endif
#endif
int ret;
@@ -2124,9 +2110,7 @@ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
void /* PRIVATE */
png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
{
png_bytep best_row;
#ifndef PNG_NO_WRITE_FILTER
png_bytep prev_row, row_buf;
png_bytep prev_row, best_row, row_buf;
png_uint_32 mins, bpp;
png_byte filter_to_do = png_ptr->do_filter;
png_uint_32 row_bytes = row_info->rowbytes;
@@ -2139,10 +2123,8 @@ png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
bpp = (row_info->pixel_depth + 7) >> 3;
prev_row = png_ptr->prev_row;
#endif
best_row = png_ptr->row_buf;
best_row = row_buf = png_ptr->row_buf;
#ifndef PNG_NO_WRITE_FILTER
row_buf = best_row;
mins = PNG_MAXSUM;
/* The prediction method we use is to find which method provides the
@@ -2722,7 +2704,6 @@ png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
png_write_filtered_row(png_ptr, best_row);
#ifndef PNG_NO_WRITE_FILTER
#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)
/* Save the type of filter we picked this time for future calculations */
if (png_ptr->num_prev_filters > 0)
@@ -2735,7 +2716,6 @@ png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
png_ptr->prev_filters[j] = best_row[0];
}
#endif
#endif /* PNG_NO_WRITE_FILTER */
}

View File

@@ -31,11 +31,11 @@ To use:
This project builds the libpng binaries as follows:
* Win32_DLL_Release\libpng10.dll DLL build
* Win32_DLL_Debug\libpng10d.dll DLL build (debug version)
* Win32_DLL_ASM_Release\libpng10.dll DLL build using ASM code
* Win32_DLL_ASM_Debug\libpng10d.dll DLL build using ASM (debug version)
* Win32_DLL_VB\libpng10vb.dll DLL build for Visual Basic, using stdcall
* Win32_DLL_Release\libpng13.dll DLL build
* Win32_DLL_Debug\libpng13d.dll DLL build (debug version)
* Win32_DLL_ASM_Release\libpng13.dll DLL build using ASM code
* Win32_DLL_ASM_Debug\libpng13d.dll DLL build using ASM (debug version)
* Win32_DLL_VB\libpng13vb.dll DLL build for Visual Basic, using stdcall
* Win32_LIB_Release\libpng.lib static build
* Win32_LIB_Debug\libpngd.lib static build (debug version)
* Win32_LIB_ASM_Release\libpng.lib static build using ASM code

View File

@@ -50,7 +50,7 @@ CFG=libpng - Win32 DLL Release
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
# SUBTRACT BASE CPP /YX /Yc /Yu
# ADD CPP /nologo /MD /W3 /O2 /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "PNG_BUILD_DLL" /D "PNG_NO_MMX_CODE" /D "ZLIB_DLL" /D "_CRT_SECURE_NO_WARNINGS" /FD /c
# ADD CPP /nologo /MD /W3 /O2 /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /FD /c
# SUBTRACT CPP /YX /Yc /Yu
MTL=midl.exe
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -63,7 +63,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /dll /machine:I386
# ADD LINK32 zlib1.lib /nologo /dll /machine:I386 /out:"Win32_DLL_Release\libpng10.dll" /libpath:"..\..\..\zlib\projects\visualc6\Win32_DLL_Release"
# ADD LINK32 zlib1.lib /nologo /dll /machine:I386 /out:"Win32_DLL_Release\libpng13.dll" /libpath:"..\..\..\zlib\projects\visualc6\Win32_DLL_Release"
!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug"
@@ -81,7 +81,7 @@ LINK32=link.exe
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
# SUBTRACT BASE CPP /YX /Yc /Yu
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "PNG_NO_MMX_CODE" /D PNG_DEBUG=1 /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /D "_CRT_SECURE_NO_WARNINGS" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "DEBUG" /D PNG_DEBUG=1 /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /FD /GZ /c
# SUBTRACT CPP /YX /Yc /Yu
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
@@ -94,7 +94,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 zlib1d.lib /nologo /dll /debug /machine:I386 /out:"Win32_DLL_Debug\libpng10d.dll" /libpath:"..\..\..\zlib\projects\visualc6\Win32_DLL_Debug"
# ADD LINK32 zlib1d.lib /nologo /dll /debug /machine:I386 /out:"Win32_DLL_Debug\libpng13d.dll" /libpath:"..\..\..\zlib\projects\visualc6\Win32_DLL_Debug"
!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM Release"
@@ -112,7 +112,7 @@ LINK32=link.exe
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
# SUBTRACT BASE CPP /YX /Yc /Yu
# ADD CPP /nologo /MD /W3 /O2 /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "PNG_USE_PNGVCRD" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /D "PNG_LIBPNG_SPECIALBUILD" /D "_CRT_SECURE_NO_WARNINGS" /FD /c
# ADD CPP /nologo /MD /W3 /O2 /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "PNG_USE_PNGVCRD" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /D "PNG_LIBPNG_SPECIALBUILD" /FD /c
# SUBTRACT CPP /YX /Yc /Yu
MTL=midl.exe
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -125,7 +125,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /dll /machine:I386
# ADD LINK32 zlib1.lib /nologo /dll /machine:I386 /out:"Win32_DLL_ASM_Release\libpng10.dll" /libpath:"..\..\..\zlib\projects\visualc6\Win32_DLL_ASM_Release"
# ADD LINK32 zlib1.lib /nologo /dll /machine:I386 /out:"Win32_DLL_ASM_Release\libpng13.dll" /libpath:"..\..\..\zlib\projects\visualc6\Win32_DLL_ASM_Release"
!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM Debug"
@@ -143,7 +143,7 @@ LINK32=link.exe
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
# SUBTRACT BASE CPP /YX /Yc /Yu
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "DEBUG" /D PNG_DEBUG=1 /D "PNG_USE_PNGVCRD" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /D "PNG_LIBPNG_SPECIALBUILD" /D "_CRT_SECURE_NO_WARNINGS" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "DEBUG" /D PNG_DEBUG=1 /D "PNG_USE_PNGVCRD" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /D "PNG_LIBPNG_SPECIALBUILD" /FD /GZ /c
# SUBTRACT CPP /YX /Yc /Yu
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
@@ -156,7 +156,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 zlib1d.lib /nologo /dll /debug /machine:I386 /out:"Win32_DLL_ASM_Debug\libpng10d.dll" /libpath:"..\..\..\zlib\projects\visualc6\Win32_DLL_ASM_Debug"
# ADD LINK32 zlib1d.lib /nologo /dll /debug /machine:I386 /out:"Win32_DLL_ASM_Debug\libpng13d.dll" /libpath:"..\..\..\zlib\projects\visualc6\Win32_DLL_ASM_Debug"
!ELSEIF "$(CFG)" == "libpng - Win32 DLL VB"
@@ -174,7 +174,7 @@ LINK32=link.exe
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
# SUBTRACT BASE CPP /YX /Yc /Yu
# ADD CPP /nologo /MD /W3 /O2 /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /D PNGAPI=__stdcall /D "PNG_NO_MODULEDEF" /D "PNG_LIBPNG_SPECIALBUILD" /D "_CRT_SECURE_NO_WARNINGS" /FD /c
# ADD CPP /nologo /MD /W3 /O2 /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "PNG_BUILD_DLL" /D "ZLIB_DLL" /D PNGAPI=__stdcall /D "PNG_NO_MODULEDEF" /D "PNG_LIBPNG_SPECIALBUILD" /FD /c
# SUBTRACT CPP /YX /Yc /Yu
MTL=midl.exe
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -187,10 +187,10 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /dll /machine:I386
# ADD LINK32 zlib1.lib /nologo /dll /machine:I386 /out:"Win32_DLL_VB\libpng10vb.dll" /libpath:"..\..\..\zlib\projects\visualc6\Win32_DLL_Release"
# ADD LINK32 zlib1.lib /nologo /dll /machine:I386 /out:"Win32_DLL_VB\libpng13vb.dll" /libpath:"..\..\..\zlib\projects\visualc6\Win32_DLL_Release"
# Begin Special Build Tool
OutDir=.\Win32_DLL_VB
TargetName=libpng10vb
TargetName=libpng13vb
SOURCE="$(InputPath)"
PostBuild_Cmds=echo Deleting $(targetname) import library and export file (Not required for VB projects) del $(outdir)\$(targetname).lib del $(outdir)\$(targetname).exp
# End Special Build Tool
@@ -210,7 +210,7 @@ PostBuild_Cmds=echo Deleting $(targetname) import library and export file (No
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
# SUBTRACT BASE CPP /YX /Yc /Yu
# ADD CPP /nologo /MD /W3 /O2 /I "..\.." /I "..\..\..\zlib" /D "PNG_NO_MMX_CODE" /D "WIN32" /D "NDEBUG" /D "_CRT_SECURE_NO_WARNINGS" /FD /c
# ADD CPP /nologo /MD /W3 /O2 /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /FD /c
# SUBTRACT CPP /YX /Yc /Yu
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
@@ -237,7 +237,7 @@ LIB32=link.exe -lib
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
# SUBTRACT BASE CPP /YX /Yc /Yu
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "PNG_NO_MMX_CODE" /D PNG_DEBUG=1 /D "_CRT_SECURE_NO_WARNINGS" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "DEBUG" /D PNG_DEBUG=1 /FD /GZ /c
# SUBTRACT CPP /YX /Yc /Yu
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
@@ -264,7 +264,7 @@ LIB32=link.exe -lib
CPP=cl.exe
# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
# SUBTRACT BASE CPP /YX /Yc /Yu
# ADD CPP /nologo /MD /W3 /O2 /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "PNG_USE_PNGVCRD" /D "PNG_LIBPNG_SPECIALBUILD" /D "_CRT_SECURE_NO_WARNINGS" /FD /c
# ADD CPP /nologo /MD /W3 /O2 /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "NDEBUG" /D "PNG_USE_PNGVCRD" /D "PNG_LIBPNG_SPECIALBUILD" /FD /c
# SUBTRACT CPP /YX /Yc /Yu
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
@@ -291,7 +291,7 @@ LIB32=link.exe -lib
CPP=cl.exe
# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
# SUBTRACT BASE CPP /YX /Yc /Yu
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "DEBUG" /D PNG_DEBUG=1 /D "PNG_USE_PNGVCRD" /D "PNG_LIBPNG_SPECIALBUILD" /D "_CRT_SECURE_NO_WARNINGS" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "..\.." /I "..\..\..\zlib" /D "WIN32" /D "_DEBUG" /D "DEBUG" /D PNG_DEBUG=1 /D "PNG_USE_PNGVCRD" /D "PNG_LIBPNG_SPECIALBUILD" /FD /GZ /c
# SUBTRACT CPP /YX /Yc /Yu
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
@@ -365,6 +365,41 @@ SOURCE=..\..\pngtrans.c
# End Source File
# Begin Source File
SOURCE=..\..\pngvcrd.c
!IF "$(CFG)" == "libpng - Win32 DLL Release"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "libpng - Win32 DLL Debug"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM Release"
!ELSEIF "$(CFG)" == "libpng - Win32 DLL ASM Debug"
!ELSEIF "$(CFG)" == "libpng - Win32 DLL VB"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "libpng - Win32 LIB Release"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "libpng - Win32 LIB Debug"
# PROP Exclude_From_Build 1
!ELSEIF "$(CFG)" == "libpng - Win32 LIB ASM Release"
!ELSEIF "$(CFG)" == "libpng - Win32 LIB ASM Debug"
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\scripts\pngw32.def
!IF "$(CFG)" == "libpng - Win32 DLL Release"

View File

@@ -58,7 +58,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:console /machine:I386
# ADD LINK32 Win32_DLL_Release\libpng10.lib ..\..\..\zlib\projects\visualc6\Win32_DLL_Release\zlib1.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 Win32_DLL_Release\libpng13.lib ..\..\..\zlib\projects\visualc6\Win32_DLL_Release\zlib1.lib /nologo /subsystem:console /machine:I386
# Begin Special Build Tool
OutDir=.\Win32_DLL_Release
SOURCE="$(InputPath)"
@@ -90,7 +90,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 Win32_DLL_Debug\libpng10d.lib ..\..\..\zlib\projects\visualc6\Win32_DLL_Debug\zlib1d.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 Win32_DLL_Debug\libpng13d.lib ..\..\..\zlib\projects\visualc6\Win32_DLL_Debug\zlib1d.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# Begin Special Build Tool
OutDir=.\Win32_DLL_Debug
SOURCE="$(InputPath)"
@@ -122,7 +122,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:console /machine:I386
# ADD LINK32 Win32_DLL_ASM_Release\libpng10.lib ..\..\..\zlib\projects\visualc6\Win32_DLL_ASM_Release\zlib1.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 Win32_DLL_ASM_Release\libpng13.lib ..\..\..\zlib\projects\visualc6\Win32_DLL_ASM_Release\zlib1.lib /nologo /subsystem:console /machine:I386
# Begin Special Build Tool
OutDir=.\Win32_DLL_ASM_Release
SOURCE="$(InputPath)"
@@ -154,7 +154,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 Win32_DLL_ASM_Debug\libpng10d.lib ..\..\..\zlib\projects\visualc6\Win32_DLL_ASM_Debug\zlib1d.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 Win32_DLL_ASM_Debug\libpng13d.lib ..\..\..\zlib\projects\visualc6\Win32_DLL_ASM_Debug\zlib1d.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# Begin Special Build Tool
OutDir=.\Win32_DLL_ASM_Debug
SOURCE="$(InputPath)"

View File

@@ -32,11 +32,11 @@ To use:
This project builds the libpng binaries as follows:
* Win32_DLL_Release\libpng10.dll DLL build
* Win32_DLL_Debug\libpng10d.dll DLL build (debug version)
* Win32_DLL_ASM_Release\libpng10.dll DLL build using ASM code
* Win32_DLL_ASM_Debug\libpng10d.dll DLL build using ASM (debug version)
* Win32_DLL_VB\libpng10vb.dll DLL build for Visual Basic, using stdcall
* Win32_DLL_Release\libpng13.dll DLL build
* Win32_DLL_Debug\libpng13d.dll DLL build (debug version)
* Win32_DLL_ASM_Release\libpng13.dll DLL build using ASM code
* Win32_DLL_ASM_Debug\libpng13d.dll DLL build using ASM (debug version)
* Win32_DLL_VB\libpng13vb.dll DLL build for Visual Basic, using stdcall
* Win32_LIB_Release\libpng.lib static build
* Win32_LIB_Debug\libpngd.lib static build (debug version)
* Win32_LIB_ASM_Release\libpng.lib static build using ASM code

View File

@@ -18,7 +18,7 @@
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;PNG_NO_MMX_CODE;NDEBUG;PNG_BUILD_DLL;ZLIB_DLL;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_BUILD_DLL;ZLIB_DLL"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -30,7 +30,7 @@
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/libpng10.dll"
OutputFile="$(OutDir)/libpng13.dll"
LinkIncremental="1"
ModuleDefinitionFile="..\..\scripts\pngw32.def"/>
<Tool
@@ -43,7 +43,7 @@
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/>
<Tool
@@ -66,7 +66,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_NO_MMX_CODE;PNG_DEBUG=1;PNG_BUILD_DLL;ZLIB_DLL;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;PNG_BUILD_DLL;ZLIB_DLL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="3"
@@ -78,7 +78,7 @@
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/libpng10d.dll"
OutputFile="$(OutDir)/libpng13d.dll"
ModuleDefinitionFile="..\..\scripts\pngw32.def"
GenerateDebugInformation="TRUE"/>
<Tool
@@ -91,7 +91,7 @@
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG,PNG_DEBUG=1;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="_DEBUG,PNG_DEBUG=1"
Culture="1033"
AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/>
<Tool
@@ -114,7 +114,7 @@
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_USE_PNGVCRD;PNG_BUILD_DLL;ZLIB_DLL;PNG_LIBPNG_SPECIALBUILD;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_USE_PNGVCRD;PNG_BUILD_DLL;ZLIB_DLL;PNG_LIBPNG_SPECIALBUILD"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -126,7 +126,7 @@
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/libpng10.dll"
OutputFile="$(OutDir)/libpng13.dll"
LinkIncremental="1"
ModuleDefinitionFile="..\..\scripts\pngw32.def"/>
<Tool
@@ -140,7 +140,7 @@
<Tool
Name="VCResourceCompilerTool"
AdditionalOptions="/d PNG_LIBPNG_SPECIALBUILD=&quot;&quot;&quot;&quot;Use MMX instructions&quot;&quot;&quot;&quot;"
PreprocessorDefinitions="NDEBUG;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/>
<Tool
@@ -163,7 +163,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;PNG_USE_PNGVCRD;PNG_BUILD_DLL;ZLIB_DLL;PNG_LIBPNG_SPECIALBUILD;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;PNG_USE_PNGVCRD;PNG_BUILD_DLL;ZLIB_DLL;PNG_LIBPNG_SPECIALBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="3"
@@ -175,7 +175,7 @@
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/libpng10d.dll"
OutputFile="$(OutDir)/libpng13d.dll"
ModuleDefinitionFile="..\..\scripts\pngw32.def"
GenerateDebugInformation="TRUE"/>
<Tool
@@ -189,7 +189,7 @@
<Tool
Name="VCResourceCompilerTool"
AdditionalOptions="/d PNG_LIBPNG_SPECIALBUILD=&quot;&quot;&quot;&quot;Use MMX instructions&quot;&quot;&quot;&quot;"
PreprocessorDefinitions="_DEBUG,PNG_DEBUG=1;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="_DEBUG,PNG_DEBUG=1"
Culture="1033"
AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/>
<Tool
@@ -212,7 +212,7 @@
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_BUILD_DLL;ZLIB_DLL;PNGAPI=__stdcall;PNG_NO_MMX_CODE;PNG_NO_MODULEDEF;PNG_LIBPNG_SPECIALBUILD;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_BUILD_DLL;ZLIB_DLL;PNGAPI=__stdcall;PNG_NO_MODULEDEF;PNG_LIBPNG_SPECIALBUILD"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -224,7 +224,7 @@
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/libpng10vb.dll"
OutputFile="$(OutDir)/libpng13vb.dll"
LinkIncremental="1"/>
<Tool
Name="VCMIDLTool"/>
@@ -237,7 +237,7 @@
<Tool
Name="VCResourceCompilerTool"
AdditionalOptions="/d PNG_LIBPNG_DLLFNAME_POSTFIX=&quot;&quot;&quot;&quot;VB&quot;&quot;&quot;&quot; /d PNG_LIBPNG_SPECIALBUILD=&quot;&quot;&quot;&quot;__stdcall calling convention used for exported functions&quot;&quot;&quot;&quot;"
PreprocessorDefinitions="NDEBUG;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="..\..;..\..\..\zlib;$(IntDir)"/>
<Tool
@@ -260,7 +260,7 @@
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="PNG_NO_MMX_CODE;WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="WIN32;NDEBUG"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -301,7 +301,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..;..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_NO_MMX_CODE;PNG_DEBUG=1;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="3"
@@ -342,7 +342,7 @@
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..,..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_USE_PNGVCRD;PNG_LIBPNG_SPECIALBUILD;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="WIN32;NDEBUG;PNG_USE_PNGVCRD;PNG_LIBPNG_SPECIALBUILD"
StringPooling="TRUE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="TRUE"
@@ -383,7 +383,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..,..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;PNG_USE_PNGVCRD;PNG_LIBPNG_SPECIALBUILD;_CRT_SECURE_NO_WARNINGS"
PreprocessorDefinitions="WIN32;_DEBUG;DEBUG;PNG_DEBUG=1;PNG_USE_PNGVCRD;PNG_LIBPNG_SPECIALBUILD"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="3"
@@ -563,6 +563,39 @@
<File
RelativePath="..\..\pngtrans.c">
</File>
<File
RelativePath="..\..\pngvcrd.c">
<FileConfiguration
Name="DLL Release|Win32"
ExcludedFromBuild="TRUE">
<Tool
Name="VCCLCompilerTool"/>
</FileConfiguration>
<FileConfiguration
Name="DLL Debug|Win32"
ExcludedFromBuild="TRUE">
<Tool
Name="VCCLCompilerTool"/>
</FileConfiguration>
<FileConfiguration
Name="DLL VB|Win32"
ExcludedFromBuild="TRUE">
<Tool
Name="VCCLCompilerTool"/>
</FileConfiguration>
<FileConfiguration
Name="LIB Release|Win32"
ExcludedFromBuild="TRUE">
<Tool
Name="VCCLCompilerTool"/>
</FileConfiguration>
<FileConfiguration
Name="LIB Debug|Win32"
ExcludedFromBuild="TRUE">
<Tool
Name="VCCLCompilerTool"/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\scripts\pngw32.def">
<FileConfiguration

View File

@@ -226,7 +226,7 @@ $(TargetPath) ..\..\pngtest.png $(IntDir)\pngout.png"
Name="VCLinkerTool"
OutputFile="$(OutDir)/pngtest.exe"
LinkIncremental="1"
IgnoreDefaultLibraryNames="$(IntDir)\libpng10vb.lib"
IgnoreDefaultLibraryNames="$(IntDir)\libpng13vb.lib"
SubSystem="1"
TargetMachine="1"/>
<Tool

View File

@@ -1,12 +1,11 @@
project(PNG)
# Copyright (C) 2007 Glenn Randers-Pehrson
# For conditions of distribution and use, see copyright notice in png.h
set(PNGLIB_MAJOR 1)
set(PNGLIB_MINOR 0)
set(PNGLIB_RELEASE 34)
set(PNGLIB_MINOR 2)
set(PNGLIB_RELEASE 19)
set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR})
set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE})
@@ -30,11 +29,7 @@ endif(NOT WIN32)
# COMMAND LINE OPTIONS
option(PNG_SHARED "Build shared lib" YES)
option(PNG_STATIC "Build static lib" YES)
if(MINGW)
option(PNG_TESTS "Build pngtest" NO)
else(MINGW)
option(PNG_TESTS "Build pngtest" YES)
endif(MINGW)
option(PNG_TESTS "Build pngtest" YES)
option(PNG_NO_CONSOLE_IO "FIXME" YES)
option(PNG_NO_STDIO "FIXME" YES)
option(PNG_DEBUG "Build with debug output" YES)
@@ -62,6 +57,8 @@ else(NOT WIN32)
endif("$ENV{${TEXT}}" STREQUAL "")
endif(NOT WIN32)
option(PNG_MMX "Use MMX assembler code (x86 only)" ${png_asm_tmp})
# SET LIBNAME
# msvc does not append 'lib' - do it here to have consistent name
if(MSVC)
@@ -97,14 +94,23 @@ set(pngtest_sources
pngtest.c
)
# SOME NEEDED DEFINITIONS
if(MSVC)
add_definitions(-DPNG_NO_MODULEDEF -D_CRT_SECURE_NO_DEPRECATE)
endif(MSVC)
add_definitions(-DZLIB_DLL)
add_definitions(-DLIBPNG_NO_MMX)
add_definitions(-DPNG_NO_MMX_CODE)
if(PNG_MMX)
if(MSVC)
add_definitions(-DPNG_NO_MODULEDEF -D_CRT_SECURE_NO_DEPRECATE)
set(libpng_sources ${libpng_sources}
pngvcrd.c
)
else(MSVC)
set(libpng_sources ${libpng_sources}
pnggccrd.c
)
endif(MSVC)
else(PNG_MMX)
add_definitions(-DLIBPNG_NO_MMX)
add_definitions(-DPNG_NO_MMX_CODE)
endif(PNG_MMX)
if(PNG_CONSOLE_IO_SUPPORTED)
add_definitions(-DPNG_CONSOLE_IO_SUPPORTED)
@@ -169,22 +175,16 @@ configure_file(${PNG_SOURCE_DIR}/scripts/libpng-config.in
# SET UP LINKS
set_target_properties(${PNG_LIB_NAME} PROPERTIES
# VERSION 0.${PNGLIB_RELEASE}.1.0.34
# VERSION 0.${PNGLIB_RELEASE}.1.2.19beta29
VERSION 0.${PNGLIB_RELEASE}.0
SOVERSION 0
CLEAN_DIRECT_OUTPUT 1)
if(NOT WIN32)
# that's uncool on win32 - it overwrites our static import lib...
set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES
set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES
OUTPUT_NAME ${PNG_LIB_NAME}
CLEAN_DIRECT_OUTPUT 1)
endif(NOT WIN32)
# INSTALL
install_targets(/lib ${PNG_LIB_NAME})
if(PNG_STATIC)
install_targets(/lib ${PNG_LIB_NAME_STATIC})
endif(PNG_STATIC)
# INSTALL
install_targets(/lib ${PNG_LIB_NAME} ${PNG_LIB_NAME_STATIC})
install(FILES png.h pngconf.h DESTINATION include)
install(FILES png.h pngconf.h DESTINATION include/${PNGLIB_NAME})
install(FILES libpng.3 libpngpf.3 DESTINATION man/man3)
@@ -207,4 +207,3 @@ install(FILES ${PNG_BINARY_DIR}/${PNGLIB_NAME}-config DESTINATION bin)
# to create msvc import lib for mingw compiled shared lib
# pexports libpng.dll > libpng.def
# lib /def:libpng.def /machine:x86

View File

@@ -8,7 +8,7 @@
# Modeled after libxml-config.
version=1.0.34
version=1.2.19beta29
prefix=""
libdir=""
libs=""

View File

@@ -1,10 +1,10 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@/libpng10
includedir=@includedir@/libpng12
Name: libpng
Description: Loads and saves PNG files
Version: 1.0.34
Libs: -L${libdir} -lpng10
Version: 1.2.19beta29
Libs: -L${libdir} -lpng12
Cflags: -I${includedir} @LIBPNG_NO_MMX@

View File

@@ -1,10 +1,10 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@/libpng10
includedir=@includedir@/libpng12
Name: libpng
Description: Loads and saves PNG files
Version: 1.0.34
Libs: -L${libdir} -lpng10
Version: 1.2.19beta29
Libs: -L${libdir} -lpng12
Cflags: -I${includedir}

View File

@@ -6,9 +6,9 @@
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME=libpng10
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -16,8 +16,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
CC=cc
@@ -30,7 +30,7 @@ RM_F=/bin/rm -f
SUN_CC_FLAGS=-fast -xtarget=ultra
SUN_LD_FLAGS=-fast -xtarget=ultra
# where make install puts libpng.a, libpng10.so and libpng10/png.h
# where make install puts libpng.a, libpng12.so and libpng12/png.h
prefix=/a
exec_prefix=$(prefix)
@@ -88,11 +88,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -103,7 +99,7 @@ libpng-config:
echo R_opts=\"-R$(LIBPATH)\"; \
echo ccopts=\"-xtarget=ultra\"; \
echo ldopts=\"-xtarget=ultra\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -6,9 +6,9 @@
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME=libpng10
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -16,8 +16,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
CC=cc
@@ -30,7 +30,7 @@ RM_F=/bin/rm -f
SUN_CC_FLAGS=-fast -xtarget=ultra -xarch=v9
SUN_LD_FLAGS=-fast -xtarget=ultra -xarch=v9
# where make install puts libpng.a, libpng10.so and libpng10/png.h
# where make install puts libpng.a, libpng12.so and libpng12/png.h
prefix=/a
exec_prefix=$(prefix)
@@ -48,7 +48,7 @@ WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
-Wstrict-prototypes -Wmissing-prototypes #-Wconversion
CFLAGS=-I$(ZLIBINC) $(SUN_CC_FLAGS) \
# $(WARNMORE) -g -DPNG_DEBUG=5
LDFLAGS=-L. -R. $(SUN_LD_FLAGS) -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng10 -lz -lm
LDFLAGS=-L. -R. $(SUN_LD_FLAGS) -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng12 -lz -lm
INCPATH=$(prefix)/include
LIBPATH=$(exec_prefix)/lib
@@ -88,11 +88,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -103,7 +99,7 @@ libpng-config:
echo R_opts=\"-R$(LIBPATH)\"; \
echo ccopts=\"-xtarget=ultra -xarch=v9\"; \
echo ldopts=\"-xtarget=ultra -xarch=v9\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -18,9 +18,9 @@ RANLIB = ranlib
RM_F = rm -f
LN_SF = ln -f -s
LIBNAME=libpng10
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
prefix=/usr/local
@@ -46,7 +46,7 @@ CRELEASE = -O2
LDRELEASE = -s
WARNMORE=-Wall
CFLAGS = -I$(ZLIBINC) $(WARNMORE) $(CRELEASE)
LDFLAGS = -L. -L$(ZLIBLIB) -lpng10 -lz -lm $(LDRELEASE)
LDFLAGS = -L. -L$(ZLIBLIB) -lpng12 -lz -lm $(LDRELEASE)
# File extensions
O=.o

View File

@@ -6,9 +6,9 @@
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME=libpng10
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -16,8 +16,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
CC=gcc
@@ -46,7 +46,7 @@ CFLAGS=-I$(ZLIBINC) -Wall -O1 -funroll-loops \
# LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng -lz
LDFLAGS=-L. -Wl,-soname=$(LIBSOMAJ) -L$(ZLIBLIB) -lz
# where make install puts libpng.a, libpng10.so*, and png.h
# where make install puts libpng.a, libpng12.so*, and png.h
prefix=/usr/local
exec_prefix=$(prefix)
INCPATH=$(prefix)/include
@@ -84,17 +84,13 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
echo prefix=\"$(prefix)\"; \
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo libs=\"-lpng10 -lz \"; \
echo libs=\"-lpng12 -lz \"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config
@@ -114,7 +110,7 @@ $(OLDSOVER): $(OBJSDLL)
$(OLDSOVER) $(OBJSDLL) $(LDFLAGS)
pngtest: pngtest.o $(LIBSO)
$(CC) -L$(ZLIBLIB) -L. -lz -lpng10 -o pngtest pngtest.o
$(CC) -L$(ZLIBLIB) -L. -lz -lpng12 -o pngtest pngtest.o
test: pngtest
./pngtest

View File

@@ -31,6 +31,9 @@ endif
DESTDIR=
# To disable assembler optimizations, add '-DPNG_NO_MMX_CODE' to
# $CFLAGS. To enable, add pnggccrd.o to the dependencies.
CC=gcc
ifdef MINGW
MINGW_CCFLAGS=-mno-cygwin -I/usr/include/mingw
@@ -71,10 +74,10 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
-Wall -O3 $(ALIGN) -funroll-loops -DPNG_NO_MMX_CODE \
-fomit-frame-pointer) # $(WARNMORE) -g -DPNG_DEBUG=5
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
CYGDLL = 10
PNGMIN = 1.0.34
CYGDLL = 12
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
SHAREDLIB=cygpng$(CYGDLL).dll
@@ -109,7 +112,7 @@ DL =$(D)$(LIBPATH)
OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
pngwtran.o pngmem.o pngerror.o pngpread.o
pngwtran.o pngmem.o pngerror.o pngpread.o # pnggccrd.o
OBJSDLL = $(OBJS:.o=.pic.o)
@@ -134,11 +137,8 @@ buildsetup-tell:
libpng.pc: scripts/libpng.pc.in
@echo -e Making pkg-config file for this libpng installation..'\n' \
using PREFIX=\"$(prefix)\"'\n'
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz! > libpng.pc
cat $(S)/scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! | \
sed -e s/-lm// > libpng.pc
libpng-config: scripts/libpng-config-head.in scripts/libpng-config-body.in
@echo -e Making $(LIBNAME) libpng-config file for this libpng \
@@ -156,6 +156,20 @@ shared: all-shared
all-static: $(STATLIB) pngtest-stat$(EXE)
all-shared: $(SHAREDLIB) pngtest$(EXE)
# pnggccrd.o: pnggccrd.c png.h pngconf.h
# @echo ""
# @echo ' You can ignore the "control reaches end of non-void function"'
# @echo ' warning and "<variable> defined but not used" warnings:'
# @echo ""
# $(CC) -c $(CFLAGS) -o $@ $<
# pnggccrd.pic.o: pnggccrd.c png.h pngconf.h
# @echo ""
# @echo ' You can ignore the "control reaches end of non-void function"'
# @echo ' warning and "<variable> defined but not used" warnings:'
# @echo ""
# $(CC) -c $(CFLAGS) -DPNG_BUILD_DLL -o $@ $<
$(STATLIB): $(OBJS)
ar rc $@ $(OBJS)
$(RANLIB) $@
@@ -251,16 +265,16 @@ test-dd:
echo
echo Testing installed dynamic shared library in $(DL).
$(CC) -I$(DI) $(CFLAGS) \
`$(BINPATH)/libpng10-config --cflags` pngtest.c \
`$(BINPATH)/libpng12-config --cflags` pngtest.c \
-L$(DL) -L$(ZLIBLIB) \
-o pngtestd `$(BINPATH)/libpng10-config --ldflags`
-o pngtestd `$(BINPATH)/libpng12-config --ldflags`
./pngtestd pngtest.png
test-installed:
$(CC) $(CFLAGS) \
`$(BINPATH)/libpng10-config --cflags` pngtest.c \
`$(BINPATH)/libpng12-config --cflags` pngtest.c \
-L$(ZLIBLIB) \
-o pngtesti$(EXE) `$(BINPATH)/libpng10-config --ldflags`
-o pngtesti$(EXE) `$(BINPATH)/libpng12-config --ldflags`
./pngtesti$(EXE) pngtest.png
clean:
@@ -291,6 +305,7 @@ pngwrite.o pngwrite.pic.o: png.h pngconf.h pngwrite.c
pngwtran.o pngwtran.pic.o: png.h pngconf.h pngwtran.c
pngwutil.o pngwutil.pic.o: png.h pngconf.h pngwutil.c
pngpread.o pngpread.pic.o: png.h pngconf.h pngpread.c
# pnggccrd.o pnggccrd.pic.o: png.h pngconf.h pnggccrd.c
pngtest.o: png.h pngconf.h pngtest.c
pngtest-stat.o: png.h pngconf.h pngtest.c

View File

@@ -6,7 +6,7 @@
# Copyright (C) 1996, 1997 Andreas Dilger
# For conditions of distribution and use, see copyright notice in png.h
# where "make install" puts libpng.a, libpng10.dylib, png.h and pngconf.h
# where "make install" puts libpng.a, libpng12.dylib, png.h and pngconf.h
prefix=/usr/local
exec_prefix=$(prefix)
@@ -17,9 +17,9 @@ ZLIBLIB=../zlib
ZLIBINC=../zlib
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -27,8 +27,8 @@ LIBSO=$(LIBNAME).dylib
LIBSOMAJ=$(LIBNAME).$(PNGMAJ).dylib
LIBSOVER=$(LIBNAME).$(PNGVER).dylib
OLDSO=libpng.dylib
OLDSOMAJ=libpng.2.dylib
OLDSOVER=libpng.2.$(PNGMIN).dylib
OLDSOMAJ=libpng.3.dylib
OLDSOVER=libpng.3.$(PNGMIN).dylib
# Utilities:
CC=cc
@@ -40,7 +40,7 @@ RM_F=/bin/rm -f
# CFLAGS=-I$(ZLIBINC) -Wall -O3 -funroll-loops -DPNG_NO_MMX_CODE
CFLAGS=-I$(ZLIBINC) -Wall -O -funroll-loops
LDFLAGS=-L. -L$(ZLIBLIB) -lpng10 -lz
LDFLAGS=-L. -L$(ZLIBLIB) -lpng12 -lz
INCPATH=$(prefix)/include
LIBPATH=$(exec_prefix)/lib
@@ -80,18 +80,15 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! | \
sed -e s/-lm// > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
echo prefix=\"$(prefix)\"; \
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz\"; \
echo libs=\"-lpng12 -lz\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -5,17 +5,17 @@
# Library name:
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng10
LIBNAME = libpng12
# Shared library names:
LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
AR_RC=ar rc
@@ -68,11 +68,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -80,7 +76,7 @@ libpng-config:
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo ccopts=\"-std\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -1,4 +1,4 @@
# makefile for libpng.a and libpng10.so on Linux ELF with gcc
# makefile for libpng.a and libpng12.so on Linux ELF with gcc
# Copyright (C) 1998, 1999, 2002, 2006 Greg Roelofs and Glenn Randers-Pehrson
# Copyright (C) 1996, 1997 Andreas Dilger
# For conditions of distribution and use, see copyright notice in png.h
@@ -6,13 +6,13 @@
# Modified for Debian by Junichi Uekawa and Josselin Mouette
# Major modifications are:
# * link libpng explicitly with libz and libm
# * $(OLDSO).2 is a symlink rather than a different library
# * $(OLDSO).3 is a symlink rather than a different library
# * versioned symbols
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -20,8 +20,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
AR_RC=ar rc
@@ -31,8 +31,8 @@ LN_SF=ln -sf
RANLIB=ranlib
RM_F=/bin/rm -f
# where "make install" puts libpng10.a, libpng10.so*,
# libpng10/png.h and libpng10/pngconf.h
# where "make install" puts libpng12.a, libpng12.so*,
# libpng12/png.h and libpng12/pngconf.h
# Prefix must be a full pathname.
prefix=/usr/local
exec_prefix=$(prefix)
@@ -56,7 +56,7 @@ WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
CFLAGS=-Wall -D_REENTRANT -O2 \
$(ALIGN) # $(WARNMORE) -g -DPNG_DEBUG=5
LDFLAGS=-L. -lpng10
LDFLAGS=-L. -lpng12
LDFLAGS_A=libpng.a -lz -lm
LIBADDFLAGS=-lz -lm
@@ -99,15 +99,11 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng.syms: png.h pngconf.h
$(CC) $(CFLAGS) -E -DPNG_BUILDSYMS -DPNG_INTERNAL png.h |\
awk -F '[\t [\\]();]' -v PNGMAJ=$(PNGMAJ) 'BEGIN{printf("PNG10_%s {global:\n",PNGMAJ)}\
awk -F '[\t [\\]();]' -v PNGMAJ=$(PNGMAJ) 'BEGIN{printf("PNG12_%s {global:\n",PNGMAJ)}\
{ for (i=1;i+2<=NF;++i)\
if ($$(i)=="PNG_FUNCTION_EXPORT" && $$(i+2)=="END")\
print $$(i+1) ";";\
@@ -124,8 +120,8 @@ libpng-config:
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo L_opts=\"\"; \
echo R_opts=\"\"; \
echo libs=\"-lpng10\"; \
echo all_libs=\"-lpng10 $(LIBADDFLAGS)\"; \
echo libs=\"-lpng12\"; \
echo all_libs=\"-lpng12 $(LIBADDFLAGS)\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -1,4 +1,4 @@
# makefile for libpng.a and libpng10.so on Linux ELF with gcc using MMX
# makefile for libpng.a and libpng12.so on Linux ELF with gcc using MMX
# assembler code
# Copyright 2002, 2006 Greg Roelofs and Glenn Randers-Pehrson
# Copyright 1998-2001 Greg Roelofs
@@ -7,14 +7,16 @@
# CAUTION: Do not use this makefile with gcc versions 2.7.2.2 and earlier.
# WARNING: The assembler code in pnggccrd.c may not be thread safe.
# NOTE: When testing MMX performance on a multitasking system, make sure
# there are no floating-point programs (e.g., SETI@Home) running in
# the background! Context switches between MMX and FPU are expensive.
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -22,8 +24,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
CC = gcc
@@ -34,8 +36,8 @@ MKDIR_P = mkdir -p
RANLIB = ranlib
RM_F = /bin/rm -f
# where "make install" puts libpng10.a, libpng10.so*,
# libpng10/png.h and libpng10/pngconf.h
# where "make install" puts libpng12.a, libpng12.so*,
# libpng12/png.h and libpng12/pngconf.h
# Prefix must be a full pathname.
prefix=/usr/local
exec_prefix=$(prefix)
@@ -70,7 +72,7 @@ CFLAGS=-DPNG_THREAD_UNSAFE_OK -I$(ZLIBINC) -Wall -O \
# -m486 -malign-double -ffast-math \
# $(ALIGN) -funroll-loops -funroll-all-loops -fomit-frame-pointer
LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng10 -lz -lm
LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng12 -lz -lm
LDFLAGS_A=-L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) libpng.a -lz -lm
@@ -96,7 +98,7 @@ DM=$(DESTDIR)$(MANPATH)
OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
pngwtran.o pngmem.o pngerror.o pngpread.o
pngwtran.o pngmem.o pngerror.o pngpread.o pnggccrd.o
OBJSDLL = $(OBJS:.o=.pic.o)
@@ -112,11 +114,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -125,10 +123,16 @@ libpng-config:
echo cppflags=\"-DPNG_THREAD_UNSAFE_OK \"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo R_opts=\"-Wl,-rpath,$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config
pnggccrd.o: pnggccrd.c png.h pngconf.h
$(CC) -c $(CFLAGS) -o $@ $*.c
pnggccrd.pic.o: pnggccrd.c png.h pngconf.h
$(CC) -c $(CFLAGS) -fPIC -o $@ pnggccrd.c
$(LIBSO): $(LIBSOMAJ)
$(LN_SF) $(LIBSOMAJ) $(LIBSO)

View File

@@ -16,9 +16,9 @@ ZLIBINC=/opt/zlib/include
# SHAREDLIB=libz.sl
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -26,8 +26,8 @@ LIBSO=$(LIBNAME).sl
LIBSOMAJ=$(LIBNAME).sl.$(PNGMAJ)
LIBSOVER=$(LIBNAME).sl.$(PNGVER)
OLDSO=libpng.sl
OLDSOMAJ=libpng.sl.2
OLDSOVER=libpng.sl.2.$(PNGMIN)
OLDSOMAJ=libpng.sl.3
OLDSOVER=libpng.sl.3.$(PNGMIN)
# Utilities:
AR_RC=ar rc
@@ -45,7 +45,7 @@ CCFLAGS=-I$(ZLIBINC) -O -Ae -Wl,+vnocompatwarnings +DD64 \
LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
# where make install puts libpng.a, libpng10.sl, and png.h
# where make install puts libpng.a, libpng12.sl, and png.h
prefix=/opt/libpng
exec_prefix=$(prefix)
INCPATH=$(prefix)/include
@@ -86,11 +86,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -98,7 +94,7 @@ libpng-config:
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo ccopts=\"-Ae +DA1.1 +DS2.0\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -6,9 +6,9 @@
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -16,8 +16,8 @@ LIBSO=$(LIBNAME).sl
LIBSOMAJ=$(LIBNAME).sl.$(PNGMAJ)
LIBSOVER=$(LIBNAME).sl.$(PNGVER)
OLDSO=libpng.sl
OLDSOMAJ=libpng.sl.2
OLDSOVER=libpng.sl.2.$(PNGMIN)
OLDSOMAJ=libpng.sl.3
OLDSOVER=libpng.sl.3.$(PNGMIN)
# Utilities:
CC=gcc
@@ -55,8 +55,8 @@ WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
CFLAGS=-I$(ZLIBINC) -Wall -O3 -funroll-loops -DPNG_NO_MMX_CODE \
$(ALIGN) # $(WARNMORE) -g -DPNG_DEBUG=5
#LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng10 -lz -lm
LDFLAGS=-L. -L$(ZLIBLIB) -lpng10 -lz -lm
#LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng12 -lz -lm
LDFLAGS=-L. -L$(ZLIBLIB) -lpng12 -lz -lm
INCPATH=$(prefix)/include
LIBPATH=$(exec_prefix)/lib
@@ -96,17 +96,13 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
echo prefix=\"$(prefix)\"; \
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -16,9 +16,9 @@ ZLIBINC=/opt/zlib/include
# SHAREDLIB=libz.sl
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -26,8 +26,8 @@ LIBSO=$(LIBNAME).sl
LIBSOMAJ=$(LIBNAME).sl.$(PNGMAJ)
LIBSOVER=$(LIBNAME).sl.$(PNGVER)
OLDSO=libpng.sl
OLDSOMAJ=libpng.sl.2
OLDSOVER=libpng.sl.2.$(PNGMIN)
OLDSOMAJ=libpng.sl.3
OLDSOVER=libpng.sl.3.$(PNGMIN)
# Utilities:
AR_RC=ar rc
@@ -37,7 +37,7 @@ LN_SF=ln -sf
RANLIB=ranlib
RM_F=/bin/rm -f
# where make install puts libpng.a, libpng10.sl, and png.h
# where make install puts libpng.a, libpng12.sl, and png.h
prefix=/opt/libpng
exec_prefix=$(prefix)
INCPATH=$(prefix)/include
@@ -83,11 +83,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -95,7 +91,7 @@ libpng-config:
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo ccopts=\"-Ae +DA1.1 +DS2.0\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -36,7 +36,7 @@ O=.obj
OBJS=png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O) \
pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O) \
pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O)
pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O) pngvcrd$(O) pnggccrd$(O)
all: test
@@ -61,6 +61,12 @@ pngrtran$(O): png.h pngconf.h
pngrutil$(O): png.h pngconf.h
$(CC) $(CFLAGS) $*.c $(ERRFILE)
pnggccrd$(O): png.h pngconf.h
$(CC) $(CFLAGS) $*.c $(ERRFILE)
pngvcrd$(O): png.h pngconf.h
$(CC) $(CFLAGS) $*.c $(ERRFILE)
pngerror$(O): png.h pngconf.h
$(CC) $(CFLAGS) $*.c $(ERRFILE)

View File

@@ -1,12 +1,12 @@
# makefile for libpng.a and libpng10.so on Linux ELF with gcc
# makefile for libpng.a and libpng12.so on Linux ELF with gcc
# Copyright (C) 1998, 1999, 2002, 2006 Greg Roelofs and Glenn Randers-Pehrson
# Copyright (C) 1996, 1997 Andreas Dilger
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -14,8 +14,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
AR_RC=ar rc
@@ -25,8 +25,8 @@ LN_SF=ln -sf
RANLIB=ranlib
RM_F=/bin/rm -f
# where "make install" puts libpng10.a, libpng10.so*,
# libpng10/png.h and libpng10/pngconf.h
# where "make install" puts libpng12.a, libpng12.so*,
# libpng12/png.h and libpng12/pngconf.h
# Prefix must be a full pathname.
prefix=/usr/local
exec_prefix=$(prefix)
@@ -50,7 +50,7 @@ WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
CFLAGS=-I$(ZLIBINC) -Wall -O3 -funroll-loops -DPNG_NO_MMX_CODE \
$(ALIGN) # $(WARNMORE) -g -DPNG_DEBUG=5
LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng10 -lz -lm
LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng12 -lz -lm
LDFLAGS_A=-L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) libpng.a -lz -lm
INCPATH=$(prefix)/include
@@ -91,11 +91,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -103,7 +99,7 @@ libpng-config:
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo R_opts=\"-Wl,-rpath,$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -39,6 +39,10 @@ RANLIB=ranlib
MKDIR_P=/bin/mkdir -pv
# To disable assembler optimizations, add '-DPNG_NO_MMX_CODE' to
# $CFLAGS. To enable them, add pnggccrd.o to the dependencies.
# Where "make install" puts libpng*.a, *png*.dll, png.h, and pngconf.h
ifndef prefix
prefix=/usr
@@ -71,10 +75,10 @@ CFLAGS= $(strip $(MINGW_CCFLAGS) $(addprefix -I,$(ZLIBINC)) \
-Wall -O3 $(ALIGN) -funroll-loops -DPNG_NO_MMX_CODE \
-fomit-frame-pointer) # $(WARNMORE) -g -DPNG_DEBUG=5
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
MINGDLL = 10
PNGMIN = 1.0.34
MINGDLL = 12
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
SHAREDLIB=libpng$(MINGDLL).dll
@@ -105,7 +109,7 @@ DL =$(D)$(LIBPATH)
OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
pngwtran.o pngmem.o pngerror.o pngpread.o
pngwtran.o pngmem.o pngerror.o pngpread.o # pnggccrd.o
OBJSDLL = $(OBJS:.o=.pic.o)
@@ -130,12 +134,8 @@ buildsetup-tell:
libpng.pc: scripts/libpng.pc.in
@echo -e Making pkg-config file for this libpng installation..'\n' \
using PREFIX=\"$(prefix)\"'\n'
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat $(S)/scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! | \
sed -e s/-lm// > libpng.pc
libpng-config: scripts/libpng-config-head.in scripts/libpng-config-body.in
@echo -e Making $(LIBNAME) libpng-config file for this libpng \
@@ -242,16 +242,16 @@ test-dd:
echo
echo Testing installed dynamic shared library in $(DL).
$(CC) -I$(DI) $(CFLAGS) \
`$(BINPATH)/libpng10-config --cflags` pngtest.c \
`$(BINPATH)/libpng12-config --cflags` pngtest.c \
-L$(DL) -L$(ZLIBLIB) \
-o pngtestd `$(BINPATH)/libpng10-config --ldflags`
-o pngtestd `$(BINPATH)/libpng12-config --ldflags`
./pngtestd pngtest.png
test-installed:
$(CC) $(CFLAGS) \
`$(BINPATH)/libpng10-config --cflags` pngtest.c \
`$(BINPATH)/libpng12-config --cflags` pngtest.c \
-L$(ZLIBLIB) \
-o pngtesti$(EXE) `$(BINPATH)/libpng10-config --ldflags`
-o pngtesti$(EXE) `$(BINPATH)/libpng12-config --ldflags`
./pngtesti$(EXE) pngtest.png
clean:
@@ -282,6 +282,7 @@ pngwrite.o pngwrite.pic.o: png.h pngconf.h pngwrite.c
pngwtran.o pngwtran.pic.o: png.h pngconf.h pngwtran.c
pngwutil.o pngwutil.pic.o: png.h pngconf.h pngwutil.c
pngpread.o pngpread.pic.o: png.h pngconf.h pngpread.c
# pnggccrd.o pnggccrd.pic.o: png.h pngconf.h pnggccrd.c
pngtest.o pngtest.pic.o: png.h pngconf.h pngtest.c

View File

@@ -10,14 +10,14 @@
LOCALBASE?=/usr/local
LIBDIR= ${LOCALBASE}/lib
MANDIR= ${LOCALBASE}/man
INCSDIR=${LOCALBASE}/include/libpng10
INCSDIR=${LOCALBASE}/include/libpng12
LIB= png12
SHLIB_MAJOR= 0
SHLIB_MINOR= 1.0.34
SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
pngwtran.c pngmem.c pngerror.c pngpread.c
SHLIB_MINOR= 1.2.19beta29
SRCS= pnggccrd.c png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
pngwtran.c pngmem.c pngerror.c pngpread.c
INCS= png.h pngconf.h
MAN= libpng.3 libpngpf.3 png.5

View File

@@ -14,10 +14,10 @@ INCSDIR=${LOCALBASE}/include/libpng
LIB= png
SHLIB_MAJOR= 3
SHLIB_MINOR= 1.0.34
SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
pngwtran.c pngmem.c pngerror.c pngpread.c
SHLIB_MINOR= 1.2.19beta29
SRCS= pnggccrd.c png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
pngwtran.c pngmem.c pngerror.c pngpread.c
INCS= png.h pngconf.h
MAN= libpng.3 libpngpf.3 png.5

View File

@@ -1,13 +1,13 @@
# makefile for libpng.a and libpng10.so on Linux ELF with gcc
# makefile for libpng.a and libpng12.so on Linux ELF with gcc
# Copyright (C) 1998, 1999, 2002, 2006, 2007 Greg Roelofs and
# Glenn Randers-Pehrson
# Copyright (C) 1996, 1997 Andreas Dilger
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -15,8 +15,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
AR_RC=ar rc
@@ -26,8 +26,8 @@ LN_SF=ln -sf
RANLIB=ranlib
RM_F=/bin/rm -f
# where "make install" puts libpng10.a, libpng10.so*,
# libpng10/png.h and libpng10/pngconf.h
# where "make install" puts libpng12.a, libpng12.so*,
# libpng12/png.h and libpng12/pngconf.h
# Prefix must be a full pathname.
prefix=/usr/local
exec_prefix=$(prefix)
@@ -51,7 +51,7 @@ WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
CFLAGS=-I$(ZLIBINC) -Wall -O3 -funroll-loops -DPNG_NO_MMX_CODE \
$(ALIGN) # $(WARNMORE) -g -DPNG_DEBUG=5
LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng10 -lz -lm
LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng12 -lz -lm
LDFLAGS_A=-L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) libpng.a -lz -lm
INCPATH=$(prefix)/include
@@ -92,13 +92,8 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! \
-e s!Cflags: !Cflags:\ -DPNG_NO_MMX_CODE!> libpng.pc
cat scripts/libpng.pc.in | sed -e s!@PREFIX@!$(prefix)! \
| sed -e "s!Cflags: !Cflags: -DPNG_NO_MMX_CODE !"> libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -106,7 +101,7 @@ libpng-config:
echo I_opts=\"-I$(INCPATH)/$(LIBNAME) -DPNG_NO_MMX_CODE\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo R_opts=\"-Wl,-rpath,$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -8,10 +8,10 @@ LIBDIR= ${PREFIX}/lib
MANDIR= ${PREFIX}/man/cat
SHLIB_MAJOR= 0
SHLIB_MINOR= 1.0.34
SHLIB_MINOR= 1.2.19beta29
LIB= png
SRCS= png.c pngerror.c pngget.c pngmem.c pngpread.c \
SRCS= png.c pngerror.c pnggccrd.c pngget.c pngmem.c pngpread.c \
pngread.c pngrio.c pngrtran.c pngrutil.c pngset.c pngtrans.c \
pngwio.c pngwrite.c pngwtran.c pngwutil.c

View File

@@ -7,9 +7,9 @@
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -17,8 +17,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
CC=cc
@@ -39,7 +39,7 @@ ZLIBLIB=../zlib
ZLIBINC=../zlib
CFLAGS= -dy -belf -I$(ZLIBINC) -O3 -DPNG_NO_MMX_CODE
LDFLAGS=-L. -L$(ZLIBLIB) -lpng10 -lz -lm
LDFLAGS=-L. -L$(ZLIBLIB) -lpng12 -lz -lm
INCPATH=$(prefix)/include/libpng
LIBPATH=$(exec_prefix)/lib
@@ -79,11 +79,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -91,7 +87,7 @@ libpng-config:
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo ccopts=\"-belf\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -1,12 +1,12 @@
# makefile for libpng.a and libpng10.so, SGI IRIX with 'cc'
# makefile for libpng.a and libpng12.so, SGI IRIX with 'cc'
# Copyright (C) 2001-2002, 2006 Glenn Randers-Pehrson
# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME=libpng10
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -14,8 +14,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
AR_RC=ar rc
@@ -25,7 +25,7 @@ LN_SF=ln -sf
RANLIB=echo
RM_F=/bin/rm -f
# Where make install puts libpng.a, libpng10.so, and libpng10/png.h
# Where make install puts libpng.a, libpng12.so, and libpng12/png.h
# Prefix must be a full pathname.
prefix=/usr/local
@@ -86,11 +86,7 @@ libpng.a: $(OBJS)
shared: $(LIBSOVER)
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -101,7 +97,7 @@ libpng-config:
echo ldopts=\"$(ABI)\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo libdir=\"$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -1,12 +1,12 @@
# makefile for libpng.a and libpng10.so, SGI IRIX with 'cc'
# makefile for libpng.a and libpng12.so, SGI IRIX with 'cc'
# Copyright (C) 2001-2002, 2006, 2007 Glenn Randers-Pehrson
# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME=libpng10
LIBNAME=libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -14,8 +14,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
AR_RC=ar rc
@@ -25,7 +25,7 @@ LN_SF=ln -sf
RANLIB=echo
RM_F=/bin/rm -f
# Where make install puts libpng.a, libpng10.so, and libpng10/png.h
# Where make install puts libpng.a, libpng12.so, and libpng12/png.h
# Prefix must be a full pathname.
prefix=/usr/local
@@ -47,7 +47,7 @@ WARNMORE=-fullwarn
# Note: -KPIC is the default anyhow
#CFLAGS= $(ABI) -I$(ZLIBINC) -O $(WARNMORE) -KPIC -DPNG_NO_MMX_CODE # -g -DPNG_DEBUG=5
CFLAGS=$(ABI) -I$(ZLIBINC) -O $(WARNMORE) -DPNG_NO_MMX_CODE
LDFLAGS_A=$(ABI) -L. -L$(ZLIBLIB) -lpng10 -lz -lm
LDFLAGS_A=$(ABI) -L. -L$(ZLIBLIB) -lpng12 -lz -lm
LDFLAGS=$(ABI) -L. -L$(ZLIBLIB) -lpng -lz -lm
LDSHARED=cc $(ABI) -shared -soname $(LIBSOMAJ) \
-set_version sgi$(PNGMAJ).0
@@ -89,11 +89,7 @@ libpng.a: $(OBJS)
shared: $(LIBSOVER)
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -104,7 +100,7 @@ libpng-config:
echo ldopts=\"$(ABI)\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo libdir=\"$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -8,17 +8,17 @@
# Library name:
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
LIBNAME = libpng10
LIBNAME = libpng12
# Shared library names:
LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
# gcc 2.95 doesn't work.
@@ -49,7 +49,7 @@ ZLIBINC=/usr/include
-Wstrict-prototypes -Wmissing-prototypes #-Wconversion
#CFLAGS=-I$(ZLIBINC) -Wall -O3 $(WARNMORE) -g -DPNG_DEBUG=5 -DPNG_NO_MMX_CODE
CFLAGS=-I$(ZLIBINC) -O3 -DPNG_NO_MMX_CODE
LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng10 -lz -lm
LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng12 -lz -lm
INCPATH=$(prefix)/include
LIBPATH=$(exec_prefix)/lib
@@ -89,11 +89,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -101,7 +97,7 @@ libpng-config:
echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo R_opts=\"-R$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -6,9 +6,9 @@
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -16,8 +16,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
AR_RC=ar rc
@@ -27,7 +27,7 @@ LN_SF=ln -f -s
RANLIB=echo
RM_F=/bin/rm -f
# Where make install puts libpng.a, libpng10.so*, and png.h
# Where make install puts libpng.a, libpng12.so*, and png.h
prefix=/usr/local
exec_prefix=$(prefix)
@@ -46,7 +46,7 @@ WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
CFLAGS=-I$(ZLIBINC) -Wall -O \
-DPNG_NO_MMX_CODE; \
# $(WARNMORE) -g -DPNG_DEBUG=5
LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng10 -lz -lm
LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng12 -lz -lm
INCPATH=$(prefix)/include
LIBPATH=$(exec_prefix)/lib
@@ -86,11 +86,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -99,7 +95,7 @@ libpng-config:
echo cppflags=\"-DPNG_NO_MMX_CODE\"; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo R_opts=\"-R$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config

View File

@@ -6,9 +6,9 @@
# For conditions of distribution and use, see copyright notice in png.h
# Library name:
LIBNAME = libpng10
LIBNAME = libpng12
PNGMAJ = 0
PNGMIN = 1.0.34
PNGMIN = 1.2.19beta29
PNGVER = $(PNGMAJ).$(PNGMIN)
# Shared library names:
@@ -16,8 +16,8 @@ LIBSO=$(LIBNAME).so
LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ)
LIBSOVER=$(LIBNAME).so.$(PNGVER)
OLDSO=libpng.so
OLDSOMAJ=libpng.so.2
OLDSOVER=libpng.so.2.$(PNGMIN)
OLDSOMAJ=libpng.so.3
OLDSOVER=libpng.so.3.$(PNGMIN)
# Utilities:
AR_RC=ar rc
@@ -27,7 +27,7 @@ LN_SF=ln -f -s
RANLIB=echo
RM_F=/bin/rm -f
# Where make install puts libpng.a, libpng10.so*, and png.h
# Where make install puts libpng.a, libpng12.so*, and png.h
prefix=/usr/local
exec_prefix=$(prefix)
@@ -45,7 +45,7 @@ WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
-Wstrict-prototypes -Wmissing-prototypes #-Wconversion
CFLAGS=-I$(ZLIBINC) -Wall -O \
# $(WARNMORE) -g -DPNG_DEBUG=5
LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng10 -lz -lm
LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng12 -lz -lm
INCPATH=$(prefix)/include
LIBPATH=$(exec_prefix)/lib
@@ -69,7 +69,7 @@ DM=$(DESTDIR)$(MANPATH)
OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
pngwtran.o pngmem.o pngerror.o pngpread.o
pngwtran.o pngmem.o pngerror.o pngpread.o pnggccrd.o
OBJSDLL = $(OBJS:.o=.pic.o)
@@ -85,11 +85,7 @@ libpng.a: $(OBJS)
$(RANLIB) $@
libpng.pc:
cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \
-e s!@exec_prefix@!$(exec_prefix)! \
-e s!@libdir@!$(LIBPATH)! \
-e s!@includedir@!$(INCPATH)! \
-e s!-lpng10!-lpng10\ -lz\ -lm! > libpng.pc
cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
libpng-config:
( cat scripts/libpng-config-head.in; \
@@ -98,7 +94,7 @@ libpng-config:
echo cppflags=\""; \
echo L_opts=\"-L$(LIBPATH)\"; \
echo R_opts=\"-R$(LIBPATH)\"; \
echo libs=\"-lpng10 -lz -lm\"; \
echo libs=\"-lpng12 -lz -lm\"; \
cat scripts/libpng-config-body.in ) > libpng-config
chmod +x libpng-config
@@ -236,6 +232,7 @@ pngwio.o pngwio.pic.o: png.h pngconf.h
pngmem.o pngmem.pic.o: png.h pngconf.h
pngset.o pngset.pic.o: png.h pngconf.h
pngget.o pngget.pic.o: png.h pngconf.h
pnggccrd.o pnggccrd.pic.o: png.h pngconf.h
pngread.o pngread.pic.o: png.h pngconf.h
pngrtran.o pngrtran.pic.o: png.h pngconf.h
pngrutil.o pngrutil.pic.o: png.h pngconf.h

View File

@@ -26,7 +26,8 @@ O=.obj
OBJS1 = png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O)
OBJS2 = pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O)
OBJS3 = pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O)
OBJS = $(OBJS1) $(OBJS2) $(OBJS3)
OBJS4 = pngvcrd$(O)
OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4)
# Targets
all: libpng.lib
@@ -79,6 +80,9 @@ pngwtran$(O): png.h pngconf.h
pngwutil$(O): png.h pngconf.h
$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
pngvcrd$(O): png.h pngconf.h
$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
libpng.lib: $(OBJS)
-$(RM) $@
$(AR) $(ARFLAGS) -out:$@ $(OBJS) $(ERRFILE)

View File

@@ -2,7 +2,7 @@
; PNG.LIB module definition file for OS/2
;----------------------------------------
; Version 1.0.34
; Version 1.2.19beta29
LIBRARY PNG
DESCRIPTION "PNG image compression library for OS/2"
@@ -184,8 +184,47 @@ EXPORTS
png_convert_to_rfc1123
png_set_invalid
; Added at version 1.2.0:
png_mmx_support
png_permit_empty_plte
png_permit_mng_features
png_get_mmx_flagmask
png_get_asm_flagmask
png_get_asm_flags
png_get_mmx_bitdepth_threshold
png_get_mmx_rowbytes_threshold
png_set_asm_flags
png_init_mmx_flags
; Added at version 1.2.2:
png_handle_as_unknown
; Added at version 1.2.2 and deleted from 1.2.3:
; png_zalloc
; png_zfree
; Added at version 1.2.4
png_malloc_warn
; Added at version 1.2.6
png_set_user_limits
png_get_user_height_max
png_get_user_width_max
; Added at version 1.2.7
png_set_add_alpha
; Added at version 1.2.9
png_get_uint_32
png_save_uint_32
png_get_uint_16
png_save_uint_16
png_get_int_32
png_save_int_32
png_get_uint_31
png_set_expand_gray_1_2_4_to_8
; These are not present when libpng is compiled with PNG_NO_GLOBAL_ARRAYS
png_libpng_ver
png_pass_start
png_pass_inc
png_pass_ystart

View File

@@ -5,7 +5,7 @@
LIBRARY
EXPORTS
;Version 1.0.34
;Version 1.2.19beta29
png_build_grayscale_palette @1
png_check_sig @2
png_chunk_error @3
@@ -45,7 +45,7 @@ EXPORTS
png_get_image_width @37
png_get_interlace_type @38
png_get_io_ptr @39
; png_get_libpng_ver @40
png_get_libpng_ver @40
png_get_oFFs @41
png_get_pCAL @42
png_get_pHYs @43
@@ -180,9 +180,7 @@ EXPORTS
png_write_init_2 @167
png_access_version_number @168
; png_sig_bytes @169
; Removed from version 1.2.20
; png_libpng_ver @170
;
png_libpng_ver @170
png_init_io @171
png_convert_to_rfc1123 @172
png_set_invalid @173
@@ -193,3 +191,46 @@ EXPORTS
png_write_init_3 @176
png_info_init_3 @177
png_destroy_struct @178
; Added at version 1.2.0
; For use with PNG_USER_MEM_SUPPORTED
png_destroy_struct_2 @179
png_create_read_struct_2 @180
png_create_write_struct_2 @181
png_malloc_default @182
png_free_default @183
; MNG features
png_permit_mng_features @184
; MMX support
png_mmx_support @185
; png_get_mmx_flagmask @186
png_get_asm_flagmask @187
png_get_asm_flags @188
; png_get_mmx_bitdepth_threshold @189
; png_get_mmx_rowbytes_threshold @190
png_set_asm_flags @191
; png_init_mmx_flags @192
; Strip error numbers
png_set_strip_error_numbers @193
; Added at version 1.2.2
png_handle_as_unknown @194
; Added at version 1.2.2 and deleted from 1.2.3
; png_zalloc @195
; png_zfree @196
; Added at version 1.2.4
png_malloc_warn @195
; Added at version 1.2.6
png_malloc_warn @195
png_get_user_height_max @196
png_get_user_width_max @197
png_set_user_limits @198
; Added at version 1.2.7
png_set_add_alpha @199
; Added at version 1.2.9
png_get_uint_32 @200
png_save_uint_32 @201
png_get_uint_16 @202
png_save_uint_16 @203
png_get_int_32 @204
png_save_int_32 @205
png_get_uint_31 @206
png_set_expand_gray_1_2_4_to_8 @207