Compare commits
977 Commits
libpng-1.6
...
v1.6.18rc0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4cb6607c89 | ||
|
|
751eb368a8 | ||
|
|
f7654a0c61 | ||
|
|
d78eb10f29 | ||
|
|
d2a35c6088 | ||
|
|
b9e5e5f5a8 | ||
|
|
a390897ba4 | ||
|
|
4e5ac72254 | ||
|
|
9d4ea3014b | ||
|
|
f86720c6c0 | ||
|
|
c6f629ffdd | ||
|
|
81487c8b54 | ||
|
|
f6e7551f06 | ||
|
|
4293254bef | ||
|
|
867f2ec058 | ||
|
|
b26b51d154 | ||
|
|
f50b593ac0 | ||
|
|
7023d871e8 | ||
|
|
2dfcf65981 | ||
|
|
b780eba4e4 | ||
|
|
25bfb13770 | ||
|
|
1a6841c99c | ||
|
|
1d4f804bc1 | ||
|
|
89edbf8317 | ||
|
|
a008dd8344 | ||
|
|
20a2f9b9be | ||
|
|
1088f4925f | ||
|
|
b66de48b3b | ||
|
|
e6877671f1 | ||
|
|
9fbdce8fb5 | ||
|
|
f6b9c993e1 | ||
|
|
d46b570919 | ||
|
|
918d23f658 | ||
|
|
d2fedd629d | ||
|
|
2d069831fb | ||
|
|
8ee821e69a | ||
|
|
279dc3f0bf | ||
|
|
846357d592 | ||
|
|
d8d18fbb02 | ||
|
|
74428df2fd | ||
|
|
d6b1375bf5 | ||
|
|
0f12df19a1 | ||
|
|
cde3078963 | ||
|
|
216ab04994 | ||
|
|
e0f0d05938 | ||
|
|
23da29af91 | ||
|
|
ecc391bbcf | ||
|
|
c861dc8923 | ||
|
|
507a8cdc5e | ||
|
|
bd85b5713c | ||
|
|
a21a5b22c1 | ||
|
|
d344589703 | ||
|
|
218a6fe9e5 | ||
|
|
c98f7fb4e3 | ||
|
|
f17e6c3046 | ||
|
|
6eecfe3886 | ||
|
|
b383798ac9 | ||
|
|
ea037b01eb | ||
|
|
04445235f1 | ||
|
|
778ccbbafa | ||
|
|
c5370ede95 | ||
|
|
2b66107abb | ||
|
|
0aabfe2a4c | ||
|
|
16f9246853 | ||
|
|
c9fd075c89 | ||
|
|
47e1315459 | ||
|
|
49fa8d4cdd | ||
|
|
a60de343a9 | ||
|
|
f2c37d0abf | ||
|
|
bc27b2f432 | ||
|
|
3645008e22 | ||
|
|
06ee532286 | ||
|
|
bbe2be3f54 | ||
|
|
bb098218ca | ||
|
|
217d38cdea | ||
|
|
377fb53944 | ||
|
|
7f85da8df7 | ||
|
|
3e0bef6da4 | ||
|
|
82511341d7 | ||
|
|
4029db9aac | ||
|
|
7011a8cec3 | ||
|
|
9a3de48b48 | ||
|
|
494e75ac83 | ||
|
|
3f49c1e42a | ||
|
|
68f4ea7423 | ||
|
|
c6b29ff896 | ||
|
|
76f93293a0 | ||
|
|
d375ca5e0d | ||
|
|
60a7506744 | ||
|
|
d3ff44f0d5 | ||
|
|
43d90b1610 | ||
|
|
de23a49231 | ||
|
|
4b65a89cf4 | ||
|
|
471b38aa00 | ||
|
|
b6c9ac6304 | ||
|
|
8cd78da8b3 | ||
|
|
8f0e2729dd | ||
|
|
c73d6219f2 | ||
|
|
6ef579df50 | ||
|
|
bd76965879 | ||
|
|
7a015b92b2 | ||
|
|
2f56fe4071 | ||
|
|
9d6cab3b21 | ||
|
|
04affde6a1 | ||
|
|
018b4fccb9 | ||
|
|
bba3aa9533 | ||
|
|
b6788ccaff | ||
|
|
cde8cd6b30 | ||
|
|
19ec55f40e | ||
|
|
6a6eb354ff | ||
|
|
6b5abbe58e | ||
|
|
66c1ec5a26 | ||
|
|
ecd074945c | ||
|
|
88dd30b232 | ||
|
|
10569a452f | ||
|
|
dc294204b6 | ||
|
|
06ee38423b | ||
|
|
6d8c88177a | ||
|
|
f43b5e3709 | ||
|
|
a00ea0aeae | ||
|
|
0659cddd21 | ||
|
|
66d846b0cc | ||
|
|
d040886dc4 | ||
|
|
91f9e0370d | ||
|
|
86a7eef997 | ||
|
|
530eec311d | ||
|
|
7c5d037032 | ||
|
|
ee16fc4a6f | ||
|
|
2d24cbdd98 | ||
|
|
e8ef689cb9 | ||
|
|
aebb7585c9 | ||
|
|
5b9ac20297 | ||
|
|
9c05216461 | ||
|
|
d4965b4014 | ||
|
|
b8eb945946 | ||
|
|
6df21524cd | ||
|
|
fa49aae286 | ||
|
|
05e11008c0 | ||
|
|
40656e9855 | ||
|
|
7cee075a32 | ||
|
|
985dc00f1f | ||
|
|
cda68df8c1 | ||
|
|
70cb8f9a7e | ||
|
|
674c3e5816 | ||
|
|
61ea3eacb0 | ||
|
|
8e7c35fc81 | ||
|
|
234fe626af | ||
|
|
03df189954 | ||
|
|
6f2c50e7fc | ||
|
|
c9720568d0 | ||
|
|
5be76ae252 | ||
|
|
a2fe24d186 | ||
|
|
97dd654ba4 | ||
|
|
f1b547a509 | ||
|
|
5efb1327df | ||
|
|
b5113f4e70 | ||
|
|
445475a166 | ||
|
|
2eb712e519 | ||
|
|
736c8e8773 | ||
|
|
3278452323 | ||
|
|
bd3818eb1b | ||
|
|
b75c3cc415 | ||
|
|
b963feeec6 | ||
|
|
f2d4167fee | ||
|
|
5d713fe123 | ||
|
|
6b9a20e7f9 | ||
|
|
11d4a2a451 | ||
|
|
c6a8cb7d10 | ||
|
|
7f6826368a | ||
|
|
bf95fad5f5 | ||
|
|
ebba0746bc | ||
|
|
67152e75e6 | ||
|
|
4aa3f403f1 | ||
|
|
56e9307d8f | ||
|
|
edb772fd6d | ||
|
|
e557fd7c44 | ||
|
|
8ba743d8d2 | ||
|
|
279205664f | ||
|
|
f7a7bb0384 | ||
|
|
3922544139 | ||
|
|
bea9784db0 | ||
|
|
6cae24c265 | ||
|
|
06ec570881 | ||
|
|
25d240dc6e | ||
|
|
470d64c2dd | ||
|
|
d7eff5d864 | ||
|
|
a11cd84160 | ||
|
|
f56c00f050 | ||
|
|
f1a22bf9b3 | ||
|
|
a4fa1c57f4 | ||
|
|
27f0332cae | ||
|
|
9127138a30 | ||
|
|
ca9c3a601b | ||
|
|
91e3a7d735 | ||
|
|
cb4823d91f | ||
|
|
d752225d05 | ||
|
|
f1eacc08e6 | ||
|
|
6147fae405 | ||
|
|
c5dc456afd | ||
|
|
f633a4eb9c | ||
|
|
6c48f77bba | ||
|
|
4c0ded3c4e | ||
|
|
36b246a571 | ||
|
|
48e6fad71c | ||
|
|
1b3a9fd6bf | ||
|
|
b4ef94559d | ||
|
|
af557d98e1 | ||
|
|
551019baf6 | ||
|
|
77145bf678 | ||
|
|
91685564d1 | ||
|
|
44bda93154 | ||
|
|
baa95a2d49 | ||
|
|
996046aed5 | ||
|
|
e4489f1db2 | ||
|
|
3fe1616c45 | ||
|
|
0df3198719 | ||
|
|
3a05d2df0f | ||
|
|
de5e34f3ce | ||
|
|
0a3c788b51 | ||
|
|
664bd637b5 | ||
|
|
3669467347 | ||
|
|
bcd3209a42 | ||
|
|
17fba0f7d1 | ||
|
|
259fb7761d | ||
|
|
3ac41798c3 | ||
|
|
26a94ab06f | ||
|
|
83fb26e38d | ||
|
|
9782cced3a | ||
|
|
ff649a0710 | ||
|
|
389e5cbabf | ||
|
|
72e25f9583 | ||
|
|
a243ec06b0 | ||
|
|
37c3b082a7 | ||
|
|
5e6931e10a | ||
|
|
0ece631b37 | ||
|
|
3efbecab92 | ||
|
|
ae991771ad | ||
|
|
071a17f194 | ||
|
|
398b00734c | ||
|
|
8661906769 | ||
|
|
91319c67d5 | ||
|
|
c45f1223cb | ||
|
|
910aaadddb | ||
|
|
fc932f7b03 | ||
|
|
83ae6fc266 | ||
|
|
33ebeec0b5 | ||
|
|
225af8f363 | ||
|
|
151eb95305 | ||
|
|
f36a94207c | ||
|
|
212fd5745d | ||
|
|
e429c66cea | ||
|
|
1a4c0144da | ||
|
|
db1a0e763f | ||
|
|
41694dcaea | ||
|
|
ff3fb08157 | ||
|
|
79b7e4e621 | ||
|
|
b41a37d403 | ||
|
|
b7afba6a0b | ||
|
|
da7b692ce0 | ||
|
|
c4e0f3de64 | ||
|
|
ee6050ecb4 | ||
|
|
165f072144 | ||
|
|
7acfe50855 | ||
|
|
5808e7b8c8 | ||
|
|
f85092bc7b | ||
|
|
d1c5f48c05 | ||
|
|
e95ce2c517 | ||
|
|
0d5ac5d809 | ||
|
|
f30aa7ed92 | ||
|
|
ab9736a647 | ||
|
|
5a1d1b5369 | ||
|
|
d5201df56b | ||
|
|
be19c07dd9 | ||
|
|
0ace9f589f | ||
|
|
72855fb11e | ||
|
|
9f1aa186e6 | ||
|
|
7a0ca967b4 | ||
|
|
478062d9b5 | ||
|
|
86b8016ee9 | ||
|
|
f169806b7b | ||
|
|
c4b3718856 | ||
|
|
fa26eb1678 | ||
|
|
d17313e075 | ||
|
|
6b570f11e1 | ||
|
|
804c76b47b | ||
|
|
247d262d3a | ||
|
|
9ab7b4ca58 | ||
|
|
ae6eaa89e5 | ||
|
|
82200daec2 | ||
|
|
6572c7dab5 | ||
|
|
372cad05a9 | ||
|
|
010222c55d | ||
|
|
d74d82137b | ||
|
|
a518abd582 | ||
|
|
23646318e4 | ||
|
|
149eea29b6 | ||
|
|
2ca2a0b222 | ||
|
|
7017c4078d | ||
|
|
c2a15d01af | ||
|
|
0464b436b6 | ||
|
|
2f5fb84cc4 | ||
|
|
33e2bd910f | ||
|
|
05670156f3 | ||
|
|
b65b3412b1 | ||
|
|
71d23c4d6e | ||
|
|
4df37bfa4f | ||
|
|
c978642c48 | ||
|
|
24afd07ab9 | ||
|
|
c540d8bed7 | ||
|
|
3e5d04df37 | ||
|
|
6e8ba0fab6 | ||
|
|
b3a765066f | ||
|
|
4c7bb07857 | ||
|
|
b8f433417f | ||
|
|
53c60fa94b | ||
|
|
ab56b743c1 | ||
|
|
3455238a4e | ||
|
|
9f0ac8548b | ||
|
|
2fff8078dc | ||
|
|
da7027b6b0 | ||
|
|
9e06534572 | ||
|
|
be040c98f8 | ||
|
|
bd792c020f | ||
|
|
079a724833 | ||
|
|
1301356273 | ||
|
|
78c28fea51 | ||
|
|
45625eceb4 | ||
|
|
e3ae583514 | ||
|
|
eb657ae68f | ||
|
|
f5df058bee | ||
|
|
dd6679dce8 | ||
|
|
9c5a1baea5 | ||
|
|
37b7299b60 | ||
|
|
0b61d10ad4 | ||
|
|
dba54b8888 | ||
|
|
38ef9c9779 | ||
|
|
103b04170d | ||
|
|
e40e37018d | ||
|
|
9eec159ab0 | ||
|
|
414d7b5f7d | ||
|
|
685dff485e | ||
|
|
8a227ff25a | ||
|
|
3e753eb8b2 | ||
|
|
759c903686 | ||
|
|
8c12078e95 | ||
|
|
b91528db20 | ||
|
|
2f1dede991 | ||
|
|
5af0307f11 | ||
|
|
efaaad7447 | ||
|
|
bda94b1005 | ||
|
|
4250328102 | ||
|
|
bb6e0a2db3 | ||
|
|
41633d33c4 | ||
|
|
88cf760b07 | ||
|
|
4ea97d8bc7 | ||
|
|
bef206b0a8 | ||
|
|
b94db2eb34 | ||
|
|
3f7a169c2d | ||
|
|
bc79c250e9 | ||
|
|
3cc9e8ff96 | ||
|
|
95a197397f | ||
|
|
d0479d24a0 | ||
|
|
1fc0171278 | ||
|
|
a8472470a4 | ||
|
|
88ecac68be | ||
|
|
e51ba2eff4 | ||
|
|
a80e864faa | ||
|
|
1d3c990425 | ||
|
|
79f0ba499f | ||
|
|
74e84d0f7d | ||
|
|
4568762d28 | ||
|
|
0740c62700 | ||
|
|
38f49403bd | ||
|
|
8f1150eb75 | ||
|
|
c10930a4fc | ||
|
|
bff81bdddc | ||
|
|
be3977de2c | ||
|
|
67f101e6c9 | ||
|
|
b6f0a641cb | ||
|
|
81dfd007b2 | ||
|
|
1f23775d10 | ||
|
|
84092bbf29 | ||
|
|
1658e602c6 | ||
|
|
83b132f14d | ||
|
|
1f63da349b | ||
|
|
44db02364e | ||
|
|
3f8a2ed600 | ||
|
|
30145f29c5 | ||
|
|
d56af331e1 | ||
|
|
1c6e5f8caa | ||
|
|
27ae9362d8 | ||
|
|
88507b4ef9 | ||
|
|
0f6303301f | ||
|
|
aaf1bb1ae1 | ||
|
|
b5596712fc | ||
|
|
503a49458b | ||
|
|
c912050a7b | ||
|
|
113213416c | ||
|
|
bd757acf26 | ||
|
|
a7f0bcb3a6 | ||
|
|
7976b3c3e3 | ||
|
|
012d36f643 | ||
|
|
68dfa9e526 | ||
|
|
416bb9320f | ||
|
|
f2b8961f58 | ||
|
|
6a3805c25b | ||
|
|
cf247ebffe | ||
|
|
0ea69cdfa9 | ||
|
|
8bf54399a3 | ||
|
|
4da9d314bc | ||
|
|
08b0620202 | ||
|
|
dee5a914fc | ||
|
|
d2d09e5bf9 | ||
|
|
03eafe24ed | ||
|
|
e9a8fb8d07 | ||
|
|
fd8bba4b80 | ||
|
|
bb9adfdad9 | ||
|
|
393d3c8285 | ||
|
|
9450ffb26d | ||
|
|
ed049010b1 | ||
|
|
db9d96840d | ||
|
|
9e9977e153 | ||
|
|
681b731151 | ||
|
|
83a841ab7c | ||
|
|
85c2ec9a69 | ||
|
|
cf644fa901 | ||
|
|
17ad121e93 | ||
|
|
19e4edaf3f | ||
|
|
e1540e3b4c | ||
|
|
063eb1b497 | ||
|
|
fecdd46639 | ||
|
|
0e036921aa | ||
|
|
e827fa24a0 | ||
|
|
34ac3691cb | ||
|
|
236e105170 | ||
|
|
5b1df53a82 | ||
|
|
940b37b197 | ||
|
|
0441ff62e7 | ||
|
|
de723276e5 | ||
|
|
2464dbfe4c | ||
|
|
b3721757a0 | ||
|
|
cc93d89e43 | ||
|
|
8f381901e3 | ||
|
|
15a80443de | ||
|
|
6f8f004fe1 | ||
|
|
873f16fe2f | ||
|
|
7ae451f527 | ||
|
|
391459424e | ||
|
|
53ae7dc514 | ||
|
|
cd6a3ef31f | ||
|
|
209d3eb5c6 | ||
|
|
d42dc54df5 | ||
|
|
877afaf17e | ||
|
|
8c49ddcf56 | ||
|
|
5680f5d6f2 | ||
|
|
324402044f | ||
|
|
685d79e27a | ||
|
|
52083f9152 | ||
|
|
7191f6e9e6 | ||
|
|
4dcbf24d82 | ||
|
|
492e67163e | ||
|
|
5881b11629 | ||
|
|
847e9efb66 | ||
|
|
db56fa18c2 | ||
|
|
bc8e40d611 | ||
|
|
2b87a54d07 | ||
|
|
b23afad4a1 | ||
|
|
f5d7f438e5 | ||
|
|
b4ec1f8451 | ||
|
|
f5f1206778 | ||
|
|
497e7319f4 | ||
|
|
d5dd93f5d1 | ||
|
|
7f9a49aa65 | ||
|
|
573c9d434f | ||
|
|
56a1a66656 | ||
|
|
d992e05da8 | ||
|
|
870beb5279 | ||
|
|
b0d97356ce | ||
|
|
04d4e38ac2 | ||
|
|
67a46d17d8 | ||
|
|
bbc29a858d | ||
|
|
3948b94700 | ||
|
|
746bc7d883 | ||
|
|
f260f6d156 | ||
|
|
18dd07e3e6 | ||
|
|
0486b17fbd | ||
|
|
aa22442a9c | ||
|
|
4a43182924 | ||
|
|
810b6e51e4 | ||
|
|
88610994da | ||
|
|
1b9b970598 | ||
|
|
43f0311b57 | ||
|
|
421f95deb5 | ||
|
|
f96251291d | ||
|
|
cafa0eebb9 | ||
|
|
afd6cecb76 | ||
|
|
61dbc4c608 | ||
|
|
bea86bba24 | ||
|
|
7fc85a3f46 | ||
|
|
bb8d4f76f4 | ||
|
|
b79c98e57c | ||
|
|
4cf2465c71 | ||
|
|
4ea93e69bc | ||
|
|
ff141eb21e | ||
|
|
122bec17f2 | ||
|
|
9afb90f885 | ||
|
|
34b7d62488 | ||
|
|
3f2b5a6670 | ||
|
|
294d0b8408 | ||
|
|
62c6fbbd29 | ||
|
|
0c7ac064d3 | ||
|
|
db67cba8d4 | ||
|
|
2aa6c96e5d | ||
|
|
2fd3434fa4 | ||
|
|
2c0833e265 | ||
|
|
127b08a265 | ||
|
|
0f42908c0a | ||
|
|
f18a28cc13 | ||
|
|
56d6bc2e88 | ||
|
|
61946e0f56 | ||
|
|
49f9c24910 | ||
|
|
c62fda06a3 | ||
|
|
cd62215d61 | ||
|
|
ac09cd0fec | ||
|
|
529045cf26 | ||
|
|
7b1da52549 | ||
|
|
34d20f482f | ||
|
|
399430dac2 | ||
|
|
3f677d1c65 | ||
|
|
809355b4aa | ||
|
|
7fd71746d0 | ||
|
|
0ee3465fba | ||
|
|
a793120405 | ||
|
|
9bdba4e630 | ||
|
|
a74b70871c | ||
|
|
0d50d6562c | ||
|
|
453fbf942c | ||
|
|
6e1c74b39b | ||
|
|
fdc2d5f38f | ||
|
|
67a289ffa9 | ||
|
|
bf15ac7e86 | ||
|
|
7ef0c46488 | ||
|
|
8d9e494dfb | ||
|
|
0794df4062 | ||
|
|
7a69beda7b | ||
|
|
e4413a735b | ||
|
|
7fdb594e73 | ||
|
|
f1736a636b | ||
|
|
3b4c60f26b | ||
|
|
5c55ccdf4f | ||
|
|
5ec05b3d7c | ||
|
|
70eb0720a0 | ||
|
|
9bb775fc8c | ||
|
|
a8715cabd1 | ||
|
|
364acf40aa | ||
|
|
b44cd59ad9 | ||
|
|
e2d8e11407 | ||
|
|
43c07e1b48 | ||
|
|
2e0c5f0dff | ||
|
|
3a83aa328d | ||
|
|
5087805e7c | ||
|
|
4e6e2166a5 | ||
|
|
1affc5622b | ||
|
|
cd1cd2dafc | ||
|
|
caa3f296df | ||
|
|
2286a7cef4 | ||
|
|
3c8b422b0a | ||
|
|
0645b62528 | ||
|
|
0281dee877 | ||
|
|
e55b25a962 | ||
|
|
14638c1f20 | ||
|
|
59ae38984f | ||
|
|
1f24cb74f2 | ||
|
|
1cbfa24a93 | ||
|
|
8c87dc88d6 | ||
|
|
f3728100d9 | ||
|
|
e15b537825 | ||
|
|
e57f094fd6 | ||
|
|
4ea113b7f0 | ||
|
|
871b1d0fab | ||
|
|
f3af706c2a | ||
|
|
96cf4bde0e | ||
|
|
1118d6d985 | ||
|
|
e444514a94 | ||
|
|
efda7376c8 | ||
|
|
ccec786ca7 | ||
|
|
2621be1bdb | ||
|
|
45bb4530fd | ||
|
|
a97fc46e43 | ||
|
|
3fa1893804 | ||
|
|
f8a8ead5cb | ||
|
|
6df55cece7 | ||
|
|
09a5ca72ac | ||
|
|
0cc3e9e38c | ||
|
|
adb9613699 | ||
|
|
c0a0d4a6d2 | ||
|
|
2bad851ab3 | ||
|
|
f2350f3987 | ||
|
|
b4ef7c4af2 | ||
|
|
9e8fd50d76 | ||
|
|
ea3288f1c5 | ||
|
|
cc074dcaa6 | ||
|
|
3b8e7e869d | ||
|
|
765d145ec4 | ||
|
|
c9b11ff0d4 | ||
|
|
23a101e06d | ||
|
|
b724c812ec | ||
|
|
0695fcd834 | ||
|
|
42835d3d19 | ||
|
|
2d99978f67 | ||
|
|
9d2e875826 | ||
|
|
681de8c8dc | ||
|
|
c53778ff53 | ||
|
|
44db2cfb15 | ||
|
|
6db8e4dd11 | ||
|
|
88c5a2a068 | ||
|
|
bf9f74b657 | ||
|
|
0d270082d2 | ||
|
|
d000fb89c0 | ||
|
|
9fabbedcf3 | ||
|
|
d7dc03e371 | ||
|
|
b8d0534e9d | ||
|
|
f88ac51a2e | ||
|
|
bbac5e692f | ||
|
|
a4081f2990 | ||
|
|
1f8e81738a | ||
|
|
9002f5b1f0 | ||
|
|
f5a83fb2b3 | ||
|
|
154de9398a | ||
|
|
777044a856 | ||
|
|
fe5c8b9755 | ||
|
|
8d391c6cea | ||
|
|
32d6a74293 | ||
|
|
806477742a | ||
|
|
29890b0439 | ||
|
|
9f860f59d9 | ||
|
|
f8aa57e791 | ||
|
|
4567935fe4 | ||
|
|
2414bd99d8 | ||
|
|
1f76e62d6c | ||
|
|
e208108dfc | ||
|
|
590c8b0987 | ||
|
|
c5c8b542fb | ||
|
|
91a7ad9d2b | ||
|
|
9dd2bfafe5 | ||
|
|
ba35f1e4c1 | ||
|
|
5851280929 | ||
|
|
1c6e22a360 | ||
|
|
37109a9f5b | ||
|
|
a70216aa60 | ||
|
|
9477ecdfa6 | ||
|
|
408652acaf | ||
|
|
744f041adf | ||
|
|
86c739e8bc | ||
|
|
00634fdac8 | ||
|
|
79ee877fb4 | ||
|
|
e9d616321a | ||
|
|
24639a63ce | ||
|
|
5362c9d5e5 | ||
|
|
b6bfd40da2 | ||
|
|
a1d32d08e1 | ||
|
|
350cbf14df | ||
|
|
7bde6e23bb | ||
|
|
5d9dc4563f | ||
|
|
aa41547a4d | ||
|
|
8c3d4f387a | ||
|
|
6e265d137c | ||
|
|
7b26920d9b | ||
|
|
785a8b1505 | ||
|
|
6cf32b460f | ||
|
|
f758d6c813 | ||
|
|
5c2d76fdef | ||
|
|
e4f124e335 | ||
|
|
1f84bd7000 | ||
|
|
b76ab1260d | ||
|
|
026b295698 | ||
|
|
eb8e19baa3 | ||
|
|
661bc6f6b0 | ||
|
|
6dae6d8f3b | ||
|
|
5b9a28f2b8 | ||
|
|
5f4b95e513 | ||
|
|
70850fce0c | ||
|
|
9d1ddbb78f | ||
|
|
f2aacefb3f | ||
|
|
4314d63792 | ||
|
|
7b3eefbcfd | ||
|
|
bb39dc545c | ||
|
|
520803d57e | ||
|
|
7f912dbeb5 | ||
|
|
ab1477d662 | ||
|
|
f0fb1746b0 | ||
|
|
f8dfd123e2 | ||
|
|
e6b710cb3f | ||
|
|
be85fa6027 | ||
|
|
43648b02bc | ||
|
|
75fde9e99a | ||
|
|
9a82547afe | ||
|
|
a9f44be8c2 | ||
|
|
e15b1e8136 | ||
|
|
fa63beaa34 | ||
|
|
c39be26f5a | ||
|
|
6ae34790cc | ||
|
|
8de49d0921 | ||
|
|
48cbba8e8e | ||
|
|
b257147015 | ||
|
|
73f826cb49 | ||
|
|
933bc842ac | ||
|
|
329d033d25 | ||
|
|
9c06d78468 | ||
|
|
b98681b49a | ||
|
|
53f7051b1b | ||
|
|
d099973c4f | ||
|
|
97a77a6f7b | ||
|
|
b2aba47a6d | ||
|
|
ed3ca0e3eb | ||
|
|
fd043e5d0d | ||
|
|
cc02f89eb2 | ||
|
|
14d0ca620e | ||
|
|
8010217201 | ||
|
|
702053d110 | ||
|
|
74a9c07fdd | ||
|
|
d0eef28ee1 | ||
|
|
3c1f6983c5 | ||
|
|
4a6c6df6c7 | ||
|
|
025d415838 | ||
|
|
810c99583b | ||
|
|
e9567514dd | ||
|
|
b593b3f035 | ||
|
|
0f08665bfb | ||
|
|
3744f94fd1 | ||
|
|
aa9dea57d7 | ||
|
|
ece07cfe9c | ||
|
|
dbb7e19fda | ||
|
|
e2098ba085 | ||
|
|
26849f4693 | ||
|
|
ad5a993954 | ||
|
|
6954141484 | ||
|
|
ba2dd33d9c | ||
|
|
134c5761fa | ||
|
|
865e14fd32 | ||
|
|
5d1df4fdf4 | ||
|
|
8d3453a22d | ||
|
|
4430b91363 | ||
|
|
dff6f4c4f0 | ||
|
|
432c174b64 | ||
|
|
5f5977e708 | ||
|
|
0a9f8eb272 | ||
|
|
cad0150d12 | ||
|
|
ee427ad39a | ||
|
|
01b813000a | ||
|
|
449db5a9c1 | ||
|
|
80b67e47e8 | ||
|
|
0a9f26e219 | ||
|
|
05ed18e7d1 | ||
|
|
edb3523a9b | ||
|
|
46cb5109bd | ||
|
|
5845d3eabd | ||
|
|
4a37149f66 | ||
|
|
fc58b17772 | ||
|
|
96b917056d | ||
|
|
0546e4e579 | ||
|
|
05af5cd8fb | ||
|
|
d630301d99 | ||
|
|
2ec8409046 | ||
|
|
905cc94e3d | ||
|
|
8f424b8270 | ||
|
|
cc46157421 | ||
|
|
14ca47b453 | ||
|
|
b1e7771d5e | ||
|
|
ff7b7ba060 | ||
|
|
1935d0738f | ||
|
|
04c1c078b9 | ||
|
|
8f4d67218e | ||
|
|
15f6fd3492 | ||
|
|
b45416921b | ||
|
|
040575c80b | ||
|
|
43309056ac | ||
|
|
bc2a57f657 | ||
|
|
56f22f4320 | ||
|
|
cd39adb561 | ||
|
|
b4f5c42092 | ||
|
|
e243a1fbd8 | ||
|
|
747b554a86 | ||
|
|
f229d4df3a | ||
|
|
96027d919f | ||
|
|
58f277c18e | ||
|
|
921648a997 | ||
|
|
23a30f8583 | ||
|
|
48015617d3 | ||
|
|
13a87d9682 | ||
|
|
c1217ee280 | ||
|
|
51d1e2be1b | ||
|
|
f7677a348e | ||
|
|
8fbd60ded2 | ||
|
|
b11b31aea2 | ||
|
|
51624965e2 | ||
|
|
ce9d8a3f48 | ||
|
|
eda53e5770 | ||
|
|
2bc76ffaf1 | ||
|
|
66efa24241 | ||
|
|
0c11b5f8e7 | ||
|
|
f5dcba6b9b | ||
|
|
c26d6e9aac | ||
|
|
42ed02ed9a | ||
|
|
31d66245ea | ||
|
|
d9d7a7e8f0 | ||
|
|
d15d124d6d | ||
|
|
dd6ecbe688 | ||
|
|
aa816c4444 | ||
|
|
209b3e4b79 | ||
|
|
f2715a558a | ||
|
|
845ee6af72 | ||
|
|
9ff37ea94f | ||
|
|
35f2e1768b | ||
|
|
945cb1f9be | ||
|
|
71db131882 | ||
|
|
bf7661f01b | ||
|
|
9066919600 | ||
|
|
1ffbe8c7c1 | ||
|
|
8d0215928d | ||
|
|
b5d0051dcb | ||
|
|
6038b80277 | ||
|
|
b57c1c9e6e | ||
|
|
0c98cc7023 | ||
|
|
6225b0e61e | ||
|
|
d072048925 | ||
|
|
7d4fbb2fbb | ||
|
|
42a2b556e9 | ||
|
|
e2ae0f2f2b | ||
|
|
d6cf3a3791 | ||
|
|
e741cd592e | ||
|
|
0ae4f7b705 | ||
|
|
29a6ba01a7 | ||
|
|
434801a39c | ||
|
|
79a141876a | ||
|
|
eeb1bb678d | ||
|
|
8e92cd51c6 | ||
|
|
363387c9c0 | ||
|
|
6f237b6bf0 | ||
|
|
a0ddf0b5f2 | ||
|
|
5541ea8aaf | ||
|
|
cf49919686 | ||
|
|
363ae65e2b | ||
|
|
cb129a6234 | ||
|
|
dee7577330 | ||
|
|
1c25b9b06b | ||
|
|
0a92b23c4b | ||
|
|
5408b613f8 | ||
|
|
b7e32059d3 | ||
|
|
faf38eea03 | ||
|
|
9eb125e927 | ||
|
|
203e6dd7cf | ||
|
|
16bb03b8b4 | ||
|
|
df44c4c4d9 | ||
|
|
4690b89eaa | ||
|
|
10c0693210 | ||
|
|
17ba5de88f | ||
|
|
7d5bf79d88 | ||
|
|
a4badc4b50 | ||
|
|
b0606ea043 | ||
|
|
566fb611b6 | ||
|
|
c737b7cf70 | ||
|
|
67dba43998 | ||
|
|
bce7988230 | ||
|
|
864270e18f | ||
|
|
74df4f1956 | ||
|
|
aa725a375c | ||
|
|
5578c3719e | ||
|
|
ce3c7330ba | ||
|
|
c8348f80d5 | ||
|
|
612d52afce | ||
|
|
3449169622 | ||
|
|
ead660ae1e | ||
|
|
04afaab56a | ||
|
|
781a90b358 | ||
|
|
61d7058b5b | ||
|
|
db6850b389 | ||
|
|
eda298bc01 | ||
|
|
516c9c97a6 | ||
|
|
0d4d0b4d32 | ||
|
|
5bffd6c6d5 | ||
|
|
816ff328d2 | ||
|
|
34dca8f8e8 | ||
|
|
3167541570 | ||
|
|
6437604a5e | ||
|
|
2dd49fbeae | ||
|
|
f1c0678c16 | ||
|
|
42369ccd85 | ||
|
|
572b078d8c | ||
|
|
40ca77a721 | ||
|
|
05cbe5ae28 | ||
|
|
5cdff4144e | ||
|
|
feecc898d9 | ||
|
|
3a1d63dc69 | ||
|
|
573a51143a | ||
|
|
6690011811 | ||
|
|
dde1f98626 | ||
|
|
aaf1179ec1 | ||
|
|
e044649282 | ||
|
|
a23f3dbcb6 | ||
|
|
a12d2328b4 | ||
|
|
95a8a665e4 | ||
|
|
da2194c0d5 | ||
|
|
1eb2c48458 | ||
|
|
8fb6c6a9b3 | ||
|
|
9c7f99c9cb | ||
|
|
99c7ad2904 | ||
|
|
e7b4d26ec1 | ||
|
|
c35f888c46 | ||
|
|
5635573cfc | ||
|
|
fea2a877c8 | ||
|
|
5bc90389bf | ||
|
|
2312167d51 | ||
|
|
edbcd02133 | ||
|
|
04336ba10f | ||
|
|
da1c5ca65a | ||
|
|
00c6a9a62c | ||
|
|
665031e834 | ||
|
|
0501c1c570 | ||
|
|
1531bd61a0 | ||
|
|
d9fc0622a1 | ||
|
|
6e4184249c | ||
|
|
04ab33560f | ||
|
|
0522f269e0 | ||
|
|
fcd301daed | ||
|
|
4f67e40898 | ||
|
|
f87ef8bcb5 | ||
|
|
a5bf4e3767 | ||
|
|
5d56786eff | ||
|
|
d7c22fb7ec | ||
|
|
939310bac1 | ||
|
|
29fca0d497 | ||
|
|
df477e4652 | ||
|
|
5a956a7a58 | ||
|
|
67ee8cee39 | ||
|
|
28d9339777 | ||
|
|
bc79d70965 | ||
|
|
40b2603687 | ||
|
|
ad41b8838a | ||
|
|
1d7f56ab64 | ||
|
|
3c1c95399b | ||
|
|
d332c67da7 | ||
|
|
b74fb4e49c | ||
|
|
a6f369b150 | ||
|
|
13831bc06e | ||
|
|
adf049e435 | ||
|
|
681c1fc02a | ||
|
|
ba6fbc57ba | ||
|
|
d1dceee2f7 | ||
|
|
94531034cc | ||
|
|
751a93f3ec | ||
|
|
0b3634bcc4 | ||
|
|
efaeadaa86 | ||
|
|
c4f94cbd08 | ||
|
|
26aad85204 | ||
|
|
c4081f05c8 | ||
|
|
eb26ee6602 | ||
|
|
90a87c8853 | ||
|
|
12924f33bd | ||
|
|
ec6d6fa51b | ||
|
|
1f0eaa046c | ||
|
|
6bdefdd977 | ||
|
|
405a398b3e | ||
|
|
8888ea4479 | ||
|
|
0b26ac5dee | ||
|
|
414769b415 | ||
|
|
5e934ba900 | ||
|
|
b72bc15e22 | ||
|
|
4c7e8208b6 | ||
|
|
baeb6d1e92 | ||
|
|
2ddb252d07 | ||
|
|
7455cbf47e | ||
|
|
87fadd5eee | ||
|
|
5b79cd52f4 | ||
|
|
36082cffcd | ||
|
|
e1bb124baa | ||
|
|
15ea1fa337 |
121
ANNOUNCE
@@ -1,47 +1,110 @@
|
||||
Libpng 1.6.20 - December 3, 2015
|
||||
Libpng 1.6.18rc01 - July 9, 2015
|
||||
|
||||
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.6.20.tar.xz (LZMA-compressed, recommended)
|
||||
libpng-1.6.20.tar.gz
|
||||
1.6.18rc01.tar.xz (LZMA-compressed, recommended)
|
||||
1.6.18rc01.tar.gz
|
||||
|
||||
Source files with CRLF line endings (for Windows), without the
|
||||
"configure" script
|
||||
|
||||
/scratch/glennrp/Libpng16/lpng1620.7z (LZMA-compressed, recommended)
|
||||
/scratch/glennrp/Libpng16/lpng1620.zip
|
||||
lp1618r01.7z (LZMA-compressed, recommended)
|
||||
lp1618r01.zip
|
||||
|
||||
Other information:
|
||||
|
||||
libpng-1.6.20-README.txt
|
||||
libpng-1.6.20-LICENSE.txt
|
||||
libpng-1.6.20-*.asc (armored detached GPG signatures)
|
||||
1.6.18rc01-README.txt
|
||||
1.6.18rc01-LICENSE.txt
|
||||
libpng-1.6.18rc01-*.asc (armored detached GPG signatures)
|
||||
|
||||
Changes since the last public release (1.6.19):
|
||||
Avoid potential pointer overflow/underflow in png_handle_sPLT() and
|
||||
png_handle_pCAL() (Bug report by John Regehr).
|
||||
Fixed incorrect implementation of png_set_PLTE() that uses png_ptr
|
||||
not info_ptr, that left png_set_PLTE() open to the CVE-2015-8126
|
||||
vulnerability.
|
||||
Backported tests from libpng-1.7.0beta69.
|
||||
Fixed an error in handling of bad zlib CMINFO field in pngfix, found by
|
||||
American Fuzzy Lop, reported by Brian Carpenter. inflate() doesn't
|
||||
immediately fault a bad CMINFO field; instead a 'too far back' error
|
||||
happens later (at least some times). pngfix failed to limit CMINFO to
|
||||
the allowed values but then assumed that window_bits was in range,
|
||||
triggering an assert. The bug is mostly harmless; the PNG file cannot
|
||||
be fixed.
|
||||
In libpng 1.6 zlib initialization was changed to use the window size
|
||||
in the zlib stream, not a fixed value. This causes some invalid images,
|
||||
where CINFO is too large, to display 'correctly' if the rest of the
|
||||
data is valid. This provides a workaround for zlib versions where the
|
||||
error arises (ones that support the API change to use the window size
|
||||
in the stream).
|
||||
Changes since the last public release (1.6.17):
|
||||
|
||||
Version 1.6.18beta01 [April 1, 2015]
|
||||
Removed PNG_SET_CHUNK_[CACHE|MALLOC]_LIMIT_SUPPORTED macros. They
|
||||
have been combined with PNG_SET_USER_LIMITS_SUPPORTED (resolves
|
||||
bug report by Andrew Church).
|
||||
Fixed rgb_to_gray checks and added tRNS checks to pngvalid.c. This
|
||||
fixes some arithmetic errors that caused some tests to fail on
|
||||
some 32-bit platforms (Bug reports by Peter Breitenlohner [i686]
|
||||
and Petr Gajdos [i586]).
|
||||
|
||||
Version 1.6.18beta02 [April 26, 2015]
|
||||
Suppressed some warnings from the Borland C++ 5.5.1/5.82 compiler
|
||||
(Bug report by Viktor Szaka'ts).
|
||||
|
||||
Version 1.6.18beta03 [May 6, 2015]
|
||||
Replaced "unexpected" with an integer (0xabadca11) in pngset.c
|
||||
where a long was expected, to avoid a compiler warning when PNG_DEBUG > 1.
|
||||
Added contrib/examples/simpleover.c, to demonstrate how to handle
|
||||
alpha compositing of multiple images, using the "simplified API"
|
||||
and an example PNG generation tool, contrib/examples/genpng.c
|
||||
(John Bowler).
|
||||
|
||||
Version 1.6.18beta04 [May 20, 2015]
|
||||
PNG_RELEASE_BUILD replaces tests where the code depended on the build base
|
||||
type and can be defined on the command line, allowing testing in beta
|
||||
builds (John Bowler).
|
||||
Avoid Coverity issue 80858 (REVERSE NULL) in pngtest.c
|
||||
Avoid a harmless potential integer overflow in png_XYZ_from_xy() (Bug
|
||||
report from Christopher Ferris).
|
||||
|
||||
Version 1.6.18beta05 [May 31, 2015]
|
||||
Backport filter selection code from libpng-1.7.0beta51, to combine
|
||||
sub_row, up_row, avg_row, and paeth_row into try_row and tst_row.
|
||||
Changed png_voidcast(), etc., to voidcast(), etc., in contrib/tools/pngfix.c
|
||||
to avoid confusion with the libpng private macros.
|
||||
Fixed old cut&paste bug in the weighted filter selection code in
|
||||
pngwutil.c, introduced in libpng-0.95, March 1997.
|
||||
|
||||
Version 1.6.18beta06 [June 1, 2015]
|
||||
Removed WRITE_WEIGHTED_FILTERED code, to save a few kbytes of the
|
||||
compiled library size. It never worked properly and as far as we can
|
||||
tell, no one uses it. The png_set_filter_heuristics() and
|
||||
png_set_filter_heuristics_fixed() APIs are retained but deprecated
|
||||
and do nothing.
|
||||
|
||||
Version 1.6.18beta07 [June 6, 2015]
|
||||
Removed non-working progressive reader 'skip' function. This
|
||||
function has apparently never been used. It was implemented
|
||||
to support back-door modification of png_struct in libpng-1.4.x
|
||||
but (because it does nothing and cannot do anything) was apparently
|
||||
never tested (John Bowler).
|
||||
Fixed cexcept.h in which GCC 5 now reports that one of the auto
|
||||
variables in the Try macro needs to be volatile to prevent value
|
||||
being lost over the setjmp (John Bowler).
|
||||
Fixed NO_WRITE_FILTER and -Wconversion build breaks (John Bowler).
|
||||
Fix g++ build breaks (John Bowler).
|
||||
Quieted some Coverity issues in pngfix.c, png-fix-itxt.c, pngvalid.c,
|
||||
pngstest.c, and pngimage.c. Most seem harmless, but png-fix-itxt
|
||||
would only work with iTXt chunks with length 255 or less.
|
||||
Added #ifdef's to contrib/examples programs so people don't try
|
||||
to compile them without the minimum required support enabled
|
||||
(suggested by Flavio Medeiros).
|
||||
|
||||
Version 1.6.18beta08 [June 30, 2015]
|
||||
Eliminated the final two Coverity defects (insecure temporary file
|
||||
handling in contrib/libtests/pngstest.c; possible overflow of
|
||||
unsigned char in contrib/tools/png-fix-itxt.c). To use the "secure"
|
||||
file handling, define PNG_USE_MKSTEMP, otherwise "tmpfile()" will
|
||||
be used.
|
||||
Removed some unused WEIGHTED_FILTER macros from png.h and pngstruct.h
|
||||
|
||||
Version 1.6.18beta09 [July 5, 2015]
|
||||
Removed some useless typecasts from contrib/tools/png-fix-itxt.c
|
||||
Fixed a new signed-unsigned comparison in pngrtran.c (Max Stepin).
|
||||
Replaced arbitrary use of 'extern' with #define PNG_LINKAGE_*. To
|
||||
preserve API compatibility, the new defines all default to "extern"
|
||||
(requested by Jan Nijtmans).
|
||||
|
||||
Version 1.6.18rc01 [July 9, 2015]
|
||||
Belatedly added Mans Rullgard and James Yu to the list of Contributing
|
||||
Authors.
|
||||
|
||||
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
||||
(subscription required; visit
|
||||
|
||||
181
CHANGES
@@ -3756,9 +3756,8 @@ Version 1.5.7beta04 [November 17, 2011]
|
||||
|
||||
Version 1.5.7beta05 [November 25, 2011]
|
||||
Removed "zTXt" from warning in generic chunk decompression function.
|
||||
Validate time settings passed to png_set_tIME() and png_convert_to_rfc1123()
|
||||
(Frank Busse). Note: This prevented CVE-2015-7981 from affecting
|
||||
libpng-1.5.7 and later.
|
||||
Validate time settings passed to pngset() and png_convert_to_rfc1123()
|
||||
(Frank Busse).
|
||||
Added MINGW support to CMakeLists.txt
|
||||
Reject invalid compression flag or method when reading the iTXt chunk.
|
||||
Backed out 'simplified' API changes. The API seems too complex and there
|
||||
@@ -3804,13 +3803,12 @@ Version 1.6.0beta01 [December 15, 2011]
|
||||
(the other two required headers aren't used). Non-ANSI systems that don't
|
||||
have stddef.h or limits.h will have to provide an appropriate fake
|
||||
containing the relevant types and #defines.
|
||||
Dropped support for 16-bit platforms. The use of FAR/far has been eliminated
|
||||
and the definition of png_alloc_size_t is now controlled by a flag so
|
||||
that 'small size_t' systems can select it if necessary. Libpng 1.6 may
|
||||
not currently work on such systems -- it seems likely that it will
|
||||
ask 'malloc' for more than 65535 bytes with any image that has a
|
||||
sufficiently large row size (rather than simply failing to read such
|
||||
images).
|
||||
The use of FAR/far has been eliminated and the definition of png_alloc_size_t
|
||||
is now controlled by a flag so that 'small size_t' systems can select it
|
||||
if necessary. Libpng 1.6 may not currently work on such systems -- it
|
||||
seems likely that it will ask 'malloc' for more than 65535 bytes with any
|
||||
image that has a sufficiently large row size (rather than simply failing
|
||||
to read such images).
|
||||
New tools directory containing tools used to generate libpng code.
|
||||
Fixed race conditions in parallel make builds. With higher degrees of
|
||||
parallelism during 'make' the use of the same temporary file names such
|
||||
@@ -4422,7 +4420,7 @@ Version 1.6.1beta02 [February 19, 2013]
|
||||
|
||||
Version 1.6.1beta03 [February 22, 2013]
|
||||
Fixed ALIGNED_MEMORY support.
|
||||
Added a new configure option:
|
||||
Allow run-time ARM NEON checking to be disabled. A new configure option:
|
||||
--enable-arm-neon=always will stop the run-time checks. New checks
|
||||
within arm/arm_init.c will cause the code not to be compiled unless
|
||||
__ARM_NEON__ is set. This should make it fail safe (if someone asks
|
||||
@@ -4441,10 +4439,10 @@ Version 1.6.1beta05 [March 1, 2013]
|
||||
Version 1.6.1beta06 [March 4, 2013]
|
||||
Better documentation of unknown handling API interactions.
|
||||
Corrected Android builds and corrected libpng.vers with symbol
|
||||
prefixing. It also makes those tests compile and link on Android.
|
||||
Added an API png_set_option() to set optimization options externally,
|
||||
prefixing. This adds an API to set optimization options externally,
|
||||
providing an alternative and general solution for the non-portable
|
||||
run-time tests used by the ARM Neon code, using the PNG_ARM_NEON option.
|
||||
run-time tests used by the ARM Neon code. It also makes those tests
|
||||
compile and link on Android.
|
||||
The order of settings vs options in pnglibconf.h is reversed to allow
|
||||
settings to depend on options and options can now set (or override) the
|
||||
defaults for settings.
|
||||
@@ -4542,8 +4540,7 @@ Version 1.6.3beta05 [May 9, 2013]
|
||||
Calculate our own zlib windowBits when decoding rather than trusting the
|
||||
CMF bytes in the PNG datastream.
|
||||
Added an option to force maximum window size for inflating, which was
|
||||
the behavior of libpng15 and earlier, via a new PNG_MAXIMUM_INFLATE_WINDOW
|
||||
option for png_set_options().
|
||||
the behavior of libpng15 and earlier.
|
||||
Added png-fix-itxt and png-fix-too-far-back to the built programs and
|
||||
removed warnings from the source code and timepng that are revealed as
|
||||
a result.
|
||||
@@ -5146,9 +5143,7 @@ Version 1.6.17beta01 [January 29, 2015]
|
||||
Added testing of png_set_packing() to pngvalid.c
|
||||
Regenerated configure scripts in the *.tar distributions with libtool-2.4.4
|
||||
Implement previously untested cases of libpng transforms in pngvalid.c
|
||||
Fixed byte order in png_do_read_filler() with 16-bit input. Previously
|
||||
the high and low bytes of the filler, from png_set_filler() or from
|
||||
png_set_add_alpha(), were read in the wrong order.
|
||||
Fixed byte order in 2-byte filler, in png_do_read_filler().
|
||||
Made the check for out-of-range values in png_set_tRNS() detect
|
||||
values that are exactly 2^bit_depth, and work on 16-bit platforms.
|
||||
Merged some parts of libpng-1.6.17beta01 and libpng-1.7.0beta47.
|
||||
@@ -5230,7 +5225,7 @@ Version 1.6.18beta01 [April 1, 2015]
|
||||
|
||||
Version 1.6.18beta02 [April 26, 2015]
|
||||
Suppressed some warnings from the Borland C++ 5.5.1/5.82 compiler
|
||||
(Bug report by Viktor Szakats).
|
||||
(Bug report by Viktor Szaka'ts).
|
||||
|
||||
Version 1.6.18beta03 [May 6, 2015]
|
||||
Replaced "unexpected" with an integer (0xabadca11) in pngset.c
|
||||
@@ -5300,152 +5295,6 @@ Version 1.6.18rc01 [July 9, 2015]
|
||||
Belatedly added Mans Rullgard and James Yu to the list of Contributing
|
||||
Authors.
|
||||
|
||||
Version 1.6.18rc02 [July 12, 2015]
|
||||
Restored unused FILTER_HEURISTIC macros removed at libpng-1.6.18beta08
|
||||
to png.h to avoid compatibility warnings.
|
||||
|
||||
Version 1.6.18rc03 [July 15, 2015]
|
||||
Minor changes to the man page
|
||||
|
||||
Version 1.6.18 [July 23, 2015]
|
||||
No changes.
|
||||
|
||||
Version 1.6.19beta01 [July 30, 2015]
|
||||
Updated obsolete information about the simplified API macros in the
|
||||
manual pages (Bug report by Arc Riley).
|
||||
Avoid potentially dereferencing NULL info_ptr in png_info_init_3().
|
||||
Rearranged png.h to put the major sections in the same order as
|
||||
in libpng17.
|
||||
Eliminated unused PNG_COST_SHIFT, PNG_WEIGHT_SHIFT, PNG_COST_FACTOR, and
|
||||
PNG_WEIGHT_FACTOR macros.
|
||||
Suppressed some warnings from the Borland C++ 5.5.1/5.82 compiler
|
||||
(Bug report by Viktor Szakats). Several warnings remain and are
|
||||
unavoidable, where we test for overflow.
|
||||
Fixed potential leak of png_pixels in contrib/pngminus/pnm2png.c
|
||||
Fixed uninitialized variable in contrib/gregbook/rpng2-x.c
|
||||
|
||||
Version 1.6.19beta02 [August 19, 2015]
|
||||
Moved config.h.in~ from the "libpng_autotools_files" list to the
|
||||
"libpng_autotools_extra" list in autogen.sh because it was causing a
|
||||
false positive for missing files (bug report by Robert C. Seacord).
|
||||
Removed unreachable "break" statements in png.c, pngread.c, and pngrtran.c
|
||||
to suppress clang warnings (Bug report by Viktor Szakats).
|
||||
Fixed some bad links in the man page.
|
||||
Changed "n bit" to "n-bit" in comments.
|
||||
Added signed/unsigned 16-bit safety net. This removes the dubious
|
||||
0x8000 flag definitions on 16-bit systems. They aren't supported
|
||||
yet the defs *probably* work, however it seems much safer to do this
|
||||
and be advised if anyone, contrary to advice, is building libpng 1.6
|
||||
on a 16-bit system. It also adds back various switch default clauses
|
||||
for GCC; GCC errors out if they are not present (with an appropriately
|
||||
high level of warnings).
|
||||
Safely convert num_bytes to a png_byte in png_set_sig_bytes() (Robert
|
||||
Seacord).
|
||||
Fixed the recently reported 1's complement security issue by replacing
|
||||
the value that is illegal in the PNG spec, in both signed and unsigned
|
||||
values, with 0. Illegal unsigned values (anything greater than or equal
|
||||
to 0x80000000) can still pass through, but since these are not illegal
|
||||
in ANSI-C (unlike 0x80000000 in the signed case) the checking that
|
||||
occurs later can catch them (John Bowler).
|
||||
|
||||
Version 1.6.19beta03 [September 26, 2015]
|
||||
Fixed png_save_int_32 when int is not 2's complement (John Bowler).
|
||||
Updated libpng16 with all the recent test changes from libpng17,
|
||||
including changes to pngvalid.c to ensure that the original,
|
||||
distributed, version of contrib/visupng/cexcept.h can be used
|
||||
(John Bowler).
|
||||
pngvalid contains the correction to the use of SAVE/STORE_
|
||||
UNKNOWN_CHUNKS; a bug revealed by changes in libpng 1.7. More
|
||||
tests contain the --strict option to detect warnings and the
|
||||
pngvalid-standard test has been corrected so that it does not
|
||||
turn on progressive-read. There is a separate test which does
|
||||
that. (John Bowler)
|
||||
Also made some signed/unsigned fixes.
|
||||
Make pngstest error limits version specific. Splitting the machine
|
||||
generated error structs out to a file allows the values to be updated
|
||||
without changing pngstest.c itself. Since libpng 1.6 and 1.7 have
|
||||
slightly different error limits this simplifies maintenance. The
|
||||
makepngs.sh script has also been updated to more accurately reflect
|
||||
current problems in libpng 1.7 (John Bowler).
|
||||
Incorporated new test PNG files into make check. tests/pngstest-*
|
||||
are changed so that the new test files are divided into 8 groups by
|
||||
gamma and alpha channel. These tests have considerably better code
|
||||
and pixel-value coverage than contrib/pngsuite; however,coverage is
|
||||
still incomplete (John Bowler).
|
||||
Removed the '--strict' in 1.6 because of the double-gamma-correction
|
||||
warning, updated pngstest-errors.h for the errors detected with the
|
||||
new contrib/testspngs PNG test files (John Bowler).
|
||||
|
||||
Version 1.6.19beta04 [October 15, 2015]
|
||||
Worked around rgb-to-gray issues in libpng 1.6. The previous
|
||||
attempts to ignore the errors in the code aren't quite enough to
|
||||
deal with the 'channel selection' encoding added to libpng 1.7; abort.
|
||||
pngvalid.c is changed to drop this encoding in prior versions.
|
||||
Fixed 'pow' macros in pngvalid.c. It is legal for 'pow' to be a
|
||||
macro, therefore the argument list cannot contain preprocessing
|
||||
directives. Make sure pow is a function where this happens. This is
|
||||
a minimal safe fix, the issue only arises in non-performance-critical
|
||||
code (bug report by Curtis Leach, fix by John Bowler).
|
||||
Added sPLT support to pngtest.c
|
||||
|
||||
Version 1.6.19rc01 [October 23, 2015]
|
||||
No changes.
|
||||
|
||||
Version 1.6.19rc02 [October 31, 2015]
|
||||
Prevent setting or writing over-length PLTE chunk (Cosmin Truta).
|
||||
Silently truncate over-length PLTE chunk while reading.
|
||||
Libpng incorrectly calculated the output rowbytes when the application
|
||||
decreased either the number of channels or the bit depth (or both) in
|
||||
a user transform. This was safe; libpng overallocated buffer space
|
||||
(potentially by quite a lot; up to 4 times the amount required) but,
|
||||
from 1.5.4 on, resulted in a png_error (John Bowler).
|
||||
|
||||
Version 1.6.19rc03 [November 3, 2015]
|
||||
Fixed some inconsequential cut-and-paste typos in png_set_cHRM_XYZ_fixed().
|
||||
Clarified COPYRIGHT information to state explicitly that versions
|
||||
are derived from previous versions.
|
||||
Removed much of the long list of previous versions from png.h and
|
||||
libpng.3.
|
||||
|
||||
Version 1.6.19rc04 [November 5, 2015]
|
||||
Fixed new bug with CRC error after reading an over-length palette
|
||||
(bug report by Cosmin Truta) (CVE-2015-8126).
|
||||
|
||||
Version 1.6.19 [November 12, 2015]
|
||||
Cleaned up coding style in png_handle_PLTE().
|
||||
|
||||
Version 1.6.20beta01 [November 20, 2015]
|
||||
Avoid potential pointer overflow/underflow in png_handle_sPLT() and
|
||||
png_handle_pCAL() (Bug report by John Regehr).
|
||||
|
||||
Version 1.6.20beta02 [November 23, 2015]
|
||||
Fixed incorrect implementation of png_set_PLTE() that uses png_ptr
|
||||
not info_ptr, that left png_set_PLTE() open to the CVE-2015-8126
|
||||
vulnerability.
|
||||
|
||||
Version 1.6.20beta03 [November 24, 2015]
|
||||
Backported tests from libpng-1.7.0beta69.
|
||||
|
||||
Version 1.6.20rc01 [November 26, 2015]
|
||||
Fixed an error in handling of bad zlib CMINFO field in pngfix, found by
|
||||
American Fuzzy Lop, reported by Brian Carpenter. inflate() doesn't
|
||||
immediately fault a bad CMINFO field; instead a 'too far back' error
|
||||
happens later (at least some times). pngfix failed to limit CMINFO to
|
||||
the allowed values but then assumed that window_bits was in range,
|
||||
triggering an assert. The bug is mostly harmless; the PNG file cannot
|
||||
be fixed.
|
||||
|
||||
Version 1.6.20rc02 [November 29, 2015]
|
||||
In libpng 1.6 zlib initialization was changed to use the window size
|
||||
in the zlib stream, not a fixed value. This causes some invalid images,
|
||||
where CINFO is too large, to display 'correctly' if the rest of the
|
||||
data is valid. This provides a workaround for zlib versions where the
|
||||
error arises (ones that support the API change to use the window size
|
||||
in the stream).
|
||||
|
||||
Version 1.6.20 [December 3, 2015]
|
||||
No changes.
|
||||
|
||||
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
||||
(subscription required; visit
|
||||
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
|
||||
|
||||
@@ -16,7 +16,7 @@ enable_testing()
|
||||
|
||||
set(PNGLIB_MAJOR 1)
|
||||
set(PNGLIB_MINOR 6)
|
||||
set(PNGLIB_RELEASE 20)
|
||||
set(PNGLIB_RELEASE 18)
|
||||
set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR})
|
||||
set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE})
|
||||
|
||||
@@ -261,7 +261,7 @@ endif(NOT WIN32 OR CYGWIN OR MINGW)
|
||||
# SET UP LINKS
|
||||
if(PNG_SHARED)
|
||||
set_target_properties(${PNG_LIB_NAME} PROPERTIES
|
||||
# VERSION 16.${PNGLIB_RELEASE}.1.6.20
|
||||
# VERSION 16.${PNGLIB_RELEASE}.1.6.18rc01
|
||||
VERSION 16.${PNGLIB_RELEASE}.0
|
||||
SOVERSION 16
|
||||
CLEAN_DIRECT_OUTPUT 1)
|
||||
|
||||
39
LICENSE
@@ -10,11 +10,10 @@ this sentence.
|
||||
|
||||
This code is released under the libpng license.
|
||||
|
||||
libpng versions 1.0.7, July 1, 2000, through 1.6.20, December 3, 2015, are
|
||||
Copyright (c) 2000-2002, 2004, 2006-2015 Glenn Randers-Pehrson, are
|
||||
derived from libpng-1.0.6, and are distributed according to the same
|
||||
disclaimer and license as libpng-1.0.6 with the following individuals
|
||||
added to the list of Contributing Authors:
|
||||
libpng versions 1.0.7, July 1, 2000, through 1.6.18rc01, July 9, 2015, are
|
||||
Copyright (c) 2000-2002, 2004, 2006-2015 Glenn Randers-Pehrson, and are
|
||||
distributed according to the same disclaimer and license as libpng-1.0.6
|
||||
with the following individuals added to the list of Contributing Authors
|
||||
|
||||
Simon-Pierre Cadieux
|
||||
Eric S. Raymond
|
||||
@@ -33,20 +32,18 @@ and with the following additions to the disclaimer:
|
||||
the user.
|
||||
|
||||
libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
|
||||
Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from
|
||||
libpng-0.96, and are distributed according to the same disclaimer and
|
||||
license as libpng-0.96, with the following individuals added to the list
|
||||
of Contributing Authors:
|
||||
Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are distributed according
|
||||
to the same disclaimer and license as libpng-0.96, with the following
|
||||
individuals added to the list of Contributing Authors:
|
||||
|
||||
Tom Lane
|
||||
Glenn Randers-Pehrson
|
||||
Willem van Schaik
|
||||
|
||||
libpng versions 0.89, June 1996, through 0.96, May 1997, are
|
||||
Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88,
|
||||
and are distributed according to the same disclaimer and license as
|
||||
libpng-0.88, with the following individuals added to the list of
|
||||
Contributing Authors:
|
||||
Copyright (c) 1996-1997 Andreas Dilger, and are
|
||||
distributed according to the same disclaimer and license as libpng-0.90,
|
||||
with the following individuals added to the list of Contributing Authors:
|
||||
|
||||
John Bowler
|
||||
Kevin Bracey
|
||||
@@ -79,13 +76,13 @@ Permission is hereby granted to use, copy, modify, and distribute this
|
||||
source code, or portions hereof, for any purpose, without fee, subject
|
||||
to the following restrictions:
|
||||
|
||||
1. The origin of this source code must not be misrepresented.
|
||||
1. The origin of this source code must not be misrepresented.
|
||||
|
||||
2. Altered versions must be plainly marked as such and must not
|
||||
be misrepresented as being the original source.
|
||||
2. Altered versions must be plainly marked as such and must not
|
||||
be misrepresented as being the original source.
|
||||
|
||||
3. This Copyright notice may not be removed or altered from any
|
||||
source or altered source distribution.
|
||||
3. This Copyright notice may not be removed or altered from any
|
||||
source or altered source distribution.
|
||||
|
||||
The Contributing Authors and Group 42, Inc. specifically permit, without
|
||||
fee, and encourage the use of this source code as a component to
|
||||
@@ -93,12 +90,10 @@ supporting the PNG file format in commercial products. If you use this
|
||||
source code in a product, acknowledgment is not required but would be
|
||||
appreciated.
|
||||
|
||||
END OF COPYRIGHT NOTICE, DISCLAIMER, and LICENSE.
|
||||
|
||||
A "png_get_copyright" function is available, for convenient use in "about"
|
||||
boxes and the like:
|
||||
|
||||
printf("%s", png_get_copyright(NULL));
|
||||
printf("%s",png_get_copyright(NULL));
|
||||
|
||||
Also, the PNG logo (in PNG format, of course) is supplied in the
|
||||
files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
|
||||
@@ -109,4 +104,4 @@ the additional disclaimers inserted at version 1.0.7.
|
||||
|
||||
Glenn Randers-Pehrson
|
||||
glennrp at users.sourceforge.net
|
||||
December 3, 2015
|
||||
July 9, 2015
|
||||
|
||||
16
Makefile.am
@@ -51,17 +51,23 @@ TESTS =\
|
||||
tests/pngvalid-gamma-expand16-background\
|
||||
tests/pngvalid-gamma-expand16-transform tests/pngvalid-gamma-sbit\
|
||||
tests/pngvalid-gamma-threshold tests/pngvalid-gamma-transform\
|
||||
tests/pngvalid-progressive-size\
|
||||
tests/pngvalid-progressive-interlace-size\
|
||||
tests/pngvalid-progressive-interlace-standard\
|
||||
tests/pngvalid-transform\
|
||||
tests/pngvalid-progressive-interlace-transform\
|
||||
tests/pngvalid-progressive-standard tests/pngvalid-standard\
|
||||
tests/pngstest-1.8 tests/pngstest-1.8-alpha tests/pngstest-linear\
|
||||
tests/pngstest-linear-alpha tests/pngstest-none tests/pngstest-none-alpha\
|
||||
tests/pngstest-sRGB tests/pngstest-sRGB-alpha tests/pngunknown-IDAT\
|
||||
tests/pngstest-0g01 tests/pngstest-0g02 tests/pngstest-0g04\
|
||||
tests/pngstest-0g08 tests/pngstest-0g16 tests/pngstest-2c08\
|
||||
tests/pngstest-2c16 tests/pngstest-3p01 tests/pngstest-3p02\
|
||||
tests/pngstest-3p04 tests/pngstest-3p08 tests/pngstest-4a08\
|
||||
tests/pngstest-4a16 tests/pngstest-6a08 tests/pngstest-6a16\
|
||||
tests/pngstest-error tests/pngunknown-IDAT\
|
||||
tests/pngunknown-discard tests/pngunknown-if-safe tests/pngunknown-sAPI\
|
||||
tests/pngunknown-sTER tests/pngunknown-save tests/pngunknown-vpAg\
|
||||
tests/pngimage-quick tests/pngimage-full
|
||||
|
||||
# These tests are expected, and required, to fail:
|
||||
XFAIL_TESTS = tests/pngstest-error
|
||||
|
||||
# man pages
|
||||
dist_man_MANS= libpng.3 libpngpf.3 png.5
|
||||
|
||||
|
||||
2
README
@@ -1,4 +1,4 @@
|
||||
README for libpng version 1.6.20 - December 3, 2015 (shared library 16.0)
|
||||
README for libpng version 1.6.18rc01 - July 9, 2015 (shared library 16.0)
|
||||
See the note about version numbers near the top of png.h
|
||||
|
||||
See INSTALL for instructions on how to install libpng.
|
||||
|
||||
@@ -74,12 +74,12 @@ done
|
||||
#
|
||||
# The autotools generated files:
|
||||
libpng_autotools_files="Makefile.in aclocal.m4 config.guess config.h.in
|
||||
config.sub configure depcomp install-sh ltmain.sh missing\
|
||||
config.h.in~ config.sub configure depcomp install-sh ltmain.sh missing\
|
||||
test-driver"
|
||||
#
|
||||
# Files generated by versions of configue >2.68 or automake >1.13 (i.e. later
|
||||
# versions than those required by configure.ac):
|
||||
libpng_autotools_extra="compile config.h.in~"
|
||||
libpng_autotools_extra="compile"
|
||||
#
|
||||
# These are separate because 'maintainer-clean' does not remove them.
|
||||
libpng_libtool_files="scripts/libtool.m4 scripts/ltoptions.m4\
|
||||
|
||||
@@ -18,7 +18,7 @@ AC_PREREQ([2.68])
|
||||
|
||||
dnl Version number stuff here:
|
||||
|
||||
AC_INIT([libpng],[1.6.20],[png-mng-implement@lists.sourceforge.net])
|
||||
AC_INIT([libpng],[1.6.18rc01],[png-mng-implement@lists.sourceforge.net])
|
||||
AC_CONFIG_MACRO_DIR([scripts])
|
||||
|
||||
# libpng does not follow GNU file name conventions (hence 'foreign')
|
||||
@@ -39,10 +39,10 @@ dnl automake, so the following is not necessary (and is not defined anyway):
|
||||
dnl AM_PREREQ([1.11.2])
|
||||
dnl stop configure from automagically running automake
|
||||
|
||||
PNGLIB_VERSION=1.6.20
|
||||
PNGLIB_VERSION=1.6.18rc01
|
||||
PNGLIB_MAJOR=1
|
||||
PNGLIB_MINOR=6
|
||||
PNGLIB_RELEASE=20
|
||||
PNGLIB_RELEASE=18
|
||||
|
||||
dnl End of version number stuff
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
|
||||
This "contrib" directory contains contributions which are not necessarily under
|
||||
the libpng license, although all are open source. They are not part of
|
||||
libpng proper and are not used for building the library, although some are used
|
||||
for testing the library via "make check".
|
||||
libpng proper and are not used for building the library.
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* This code is released under the libpng license.
|
||||
* For conditions of distribution and use, see the disclaimer
|
||||
* and license in png.h
|
||||
*
|
||||
*
|
||||
* SEE contrib/arm-neon/README before reporting bugs
|
||||
*
|
||||
* STATUS: COMPILED, TESTED
|
||||
|
||||
@@ -72,7 +72,7 @@ png_have_neon(png_structp png_ptr)
|
||||
state = Colon;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* did not match 'feature' */
|
||||
state = SkipLine;
|
||||
/* FALL THROUGH */
|
||||
|
||||
@@ -87,7 +87,7 @@ print_pixel(png_structp png_ptr, png_infop info_ptr, png_const_bytep row,
|
||||
*/
|
||||
case PNG_COLOR_TYPE_PALETTE:
|
||||
{
|
||||
PNG_CONST int index = component(row, x, 0, bit_depth, 1);
|
||||
PNG_CONST unsigned int index = component(row, x, 0, bit_depth, 1);
|
||||
png_colorp palette = NULL;
|
||||
int num_palette = 0;
|
||||
|
||||
|
||||
@@ -136,7 +136,7 @@ sprite_op(const struct sprite *sprite, int x_offset, int y_offset,
|
||||
/* This is the optimized Porter-Duff 'Over' operation, when the
|
||||
* input alpha is 0 the output is not changed.
|
||||
*/
|
||||
if (in_alpha > 0)
|
||||
if (in_alpha > 0)
|
||||
{
|
||||
png_uint_16 *out_pixel = sprite->buffer +
|
||||
((y+y_offset) * sprite->width + (x+x_offset))*4;
|
||||
@@ -184,7 +184,7 @@ sprite_op(const struct sprite *sprite, int x_offset, int y_offset,
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
static int
|
||||
create_sprite(struct sprite *sprite, int *argc, const char ***argv)
|
||||
{
|
||||
/* Read the arguments and create this sprite. The sprite buffer has already
|
||||
@@ -415,7 +415,7 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc,
|
||||
n = sscanf(argv[0], "--sprite=%u,%u,%" str(sprite_name_chars) "s%c",
|
||||
&sprites[nsprites].width, &sprites[nsprites].height,
|
||||
sprites[nsprites].name, &tombstone);
|
||||
|
||||
|
||||
if ((n == 2 || n == 3) &&
|
||||
sprites[nsprites].width > 0 && sprites[nsprites].height > 0)
|
||||
{
|
||||
@@ -492,7 +492,7 @@ simpleover_process(png_imagep output, png_bytep out_buf, int argc,
|
||||
if (!add_sprite(output, out_buf, sprites+isprite, &argc, &argv))
|
||||
goto out; /* error in add_sprite */
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 1998-2015 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
|
||||
@@ -51,11 +51,6 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
Changelog:
|
||||
%RDATE% - Check return value of png_get_bKGD() (Glenn R-P)
|
||||
|
||||
---------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
@@ -266,38 +261,36 @@ static void readpng2_info_callback(png_structp png_ptr, png_infop info_ptr)
|
||||
/* since we know we've read all of the PNG file's "header" (i.e., up
|
||||
* to IDAT), we can check for a background color here */
|
||||
|
||||
if (mainprog_ptr->need_bgcolor)
|
||||
if (mainprog_ptr->need_bgcolor &&
|
||||
png_get_valid(png_ptr, info_ptr, PNG_INFO_bKGD))
|
||||
{
|
||||
png_color_16p pBackground;
|
||||
|
||||
/* it is not obvious from the libpng documentation, but this function
|
||||
* takes a pointer to a pointer, and it always returns valid red,
|
||||
* green and blue values, regardless of color_type: */
|
||||
if (png_get_bKGD(png_ptr, info_ptr, &pBackground))
|
||||
{
|
||||
png_get_bKGD(png_ptr, info_ptr, &pBackground);
|
||||
|
||||
/* however, it always returns the raw bKGD data, regardless of any
|
||||
* bit-depth transformations, so check depth and adjust if necessary
|
||||
*/
|
||||
if (bit_depth == 16) {
|
||||
mainprog_ptr->bg_red = pBackground->red >> 8;
|
||||
mainprog_ptr->bg_green = pBackground->green >> 8;
|
||||
mainprog_ptr->bg_blue = pBackground->blue >> 8;
|
||||
} else if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) {
|
||||
if (bit_depth == 1)
|
||||
mainprog_ptr->bg_red = mainprog_ptr->bg_green =
|
||||
mainprog_ptr->bg_blue = pBackground->gray? 255 : 0;
|
||||
else if (bit_depth == 2)
|
||||
mainprog_ptr->bg_red = mainprog_ptr->bg_green =
|
||||
mainprog_ptr->bg_blue = (255/3) * pBackground->gray;
|
||||
else /* bit_depth == 4 */
|
||||
mainprog_ptr->bg_red = mainprog_ptr->bg_green =
|
||||
mainprog_ptr->bg_blue = (255/15) * pBackground->gray;
|
||||
} else {
|
||||
mainprog_ptr->bg_red = (uch)pBackground->red;
|
||||
mainprog_ptr->bg_green = (uch)pBackground->green;
|
||||
mainprog_ptr->bg_blue = (uch)pBackground->blue;
|
||||
}
|
||||
/* however, it always returns the raw bKGD data, regardless of any
|
||||
* bit-depth transformations, so check depth and adjust if necessary */
|
||||
if (bit_depth == 16) {
|
||||
mainprog_ptr->bg_red = pBackground->red >> 8;
|
||||
mainprog_ptr->bg_green = pBackground->green >> 8;
|
||||
mainprog_ptr->bg_blue = pBackground->blue >> 8;
|
||||
} else if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) {
|
||||
if (bit_depth == 1)
|
||||
mainprog_ptr->bg_red = mainprog_ptr->bg_green =
|
||||
mainprog_ptr->bg_blue = pBackground->gray? 255 : 0;
|
||||
else if (bit_depth == 2)
|
||||
mainprog_ptr->bg_red = mainprog_ptr->bg_green =
|
||||
mainprog_ptr->bg_blue = (255/3) * pBackground->gray;
|
||||
else /* bit_depth == 4 */
|
||||
mainprog_ptr->bg_red = mainprog_ptr->bg_green =
|
||||
mainprog_ptr->bg_blue = (255/15) * pBackground->gray;
|
||||
} else {
|
||||
mainprog_ptr->bg_red = (uch)pBackground->red;
|
||||
mainprog_ptr->bg_green = (uch)pBackground->green;
|
||||
mainprog_ptr->bg_blue = (uch)pBackground->blue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
- 2.02: fixed improper display of usage screen on PNG error(s); fixed
|
||||
unexpected-EOF and file-read-error cases
|
||||
- 2.03: removed runtime MMX-enabling/disabling and obsolete -mmx* options
|
||||
- 2.04:
|
||||
- 2.04:
|
||||
(GR-P)
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
@@ -43,10 +43,12 @@
|
||||
- 2.03: deleted runtime MMX-enabling/disabling and obsolete -mmx* options
|
||||
- 2.04: Added "void(foo);" statements to quiet pedantic compiler warnings
|
||||
about unused variables (GR-P)
|
||||
- 2.05: Use nanosleep() instead of usleep(), which is deprecated (GR-P).
|
||||
|
||||
TO DO:
|
||||
use nanosleep() instead of usleep(), which is obsolete/deprecated.
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 1998-2010, 2014-2015 Greg Roelofs. All rights reserved.
|
||||
Copyright (c) 1998-2008 Greg Roelofs. All rights reserved.
|
||||
|
||||
This software is provided "as is," without warranty of any kind,
|
||||
express or implied. In no event shall the author or contributors
|
||||
@@ -117,7 +119,6 @@
|
||||
# undef usleep
|
||||
# define usleep(usec) { \
|
||||
struct timespec ts; \
|
||||
ts.tv_sec = 0; \
|
||||
ts.tv_nsec = (usec) * 1000; \
|
||||
nanosleep(&ts, NULL); }
|
||||
# endif
|
||||
@@ -496,12 +497,12 @@ int main(int argc, char **argv)
|
||||
"\t\t transparent images; overrides -bgcolor\n",
|
||||
num_bgpat-1);
|
||||
#ifdef FEATURE_LOOP
|
||||
fprintf(stderr,
|
||||
fprintf(stderr,
|
||||
" -loop\tloops through background images after initial display\n"
|
||||
"\t\t is complete (depends on -bgpat)\n"
|
||||
" sec \tseconds to display each background image (default = 2)\n");
|
||||
#endif
|
||||
fprintf(stderr,
|
||||
fprintf(stderr,
|
||||
" dur \tduration in microseconds to wait after displaying each\n"
|
||||
"\t\t row (for demo purposes)\n"
|
||||
" -timing\tenables delay for every block read, to simulate modem\n"
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
/* Fake a PNG - just write it out directly.
|
||||
*
|
||||
* COPYRIGHT: Written by John Cunningham Bowler, 2014.
|
||||
* To the extent possible under law, the author has waived all copyright and
|
||||
* related or neighboring rights to this work. This work is published from:
|
||||
* United States.
|
||||
*
|
||||
*/
|
||||
|
||||
/* Fake a PNG - just write it out directly. */
|
||||
#include <stdio.h>
|
||||
#include <zlib.h> /* for crc32 */
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
/* makepng.c */
|
||||
#define _ISOC99_SOURCE
|
||||
/* Copyright: */
|
||||
#define COPYRIGHT "\251 2013,2015 John Cunningham Bowler"
|
||||
/*
|
||||
* Last changed in libpng 1.7.0 [(PENDING RELEASE)]
|
||||
/* makepng.c
|
||||
*
|
||||
* Copyright (c) 2013 John Cunningham Bowler
|
||||
*
|
||||
* Last changed in libpng 1.6.1 [March 28, 2013]
|
||||
*
|
||||
* This code is released under the libpng license.
|
||||
* For conditions of distribution and use, see the disclaimer
|
||||
@@ -11,8 +10,8 @@
|
||||
*
|
||||
* Make a test PNG image. The arguments are as follows:
|
||||
*
|
||||
* makepng [--sRGB|--linear|--1.8] [--tRNS] [--nofilters] \
|
||||
* color-type bit-depth [file-name]
|
||||
* makepng [--sRGB|--linear|--1.8] [--color=<color>] color-type bit-depth \
|
||||
* [file-name]
|
||||
*
|
||||
* The color-type may be numeric (and must match the numbers used by the PNG
|
||||
* specification) or one of the format names listed below. The bit-depth is the
|
||||
@@ -40,8 +39,8 @@
|
||||
* 4 channels: linear combinations of, from the top-left corner clockwise,
|
||||
* transparent, red, green, blue.
|
||||
*
|
||||
* For color-mapped images a four channel color-map is used and if --tRNS is
|
||||
* given the PNG file has a tRNS chunk, as follows:
|
||||
* For color-mapped images a four channel color-map is used and the PNG file has
|
||||
* a tRNS chunk, as follows:
|
||||
*
|
||||
* 1-bit: entry 0 is transparent-red, entry 1 is opaque-white
|
||||
* 2-bit: entry 0: transparent-green
|
||||
@@ -54,9 +53,6 @@
|
||||
* The palette always has 2^bit-depth entries and the tRNS chunk one fewer. The
|
||||
* image is the 1-channel diamond, but using palette index, not luminosity.
|
||||
*
|
||||
* For formats other than color-mapped ones if --tRNS is specified a tRNS chunk
|
||||
* is generated with all channels equal to the low bits of 0x0101.
|
||||
*
|
||||
* Image size is determined by the final pixel depth in bits, i.e. channels x
|
||||
* bit-depth, as follows:
|
||||
*
|
||||
@@ -64,64 +60,20 @@
|
||||
* 16 bits: 256x256
|
||||
* More than 16 bits: 1024x1024
|
||||
*
|
||||
* Row filtering is the libpng default but may be turned off (the 'none' filter
|
||||
* is used on every row) with the --nofilters option.
|
||||
*
|
||||
* The images are not interlaced.
|
||||
*
|
||||
* If file-name is given then the PNG is written to that file, else it is
|
||||
* written to stdout. Notice that stdout is not supported on systems where, by
|
||||
* default, it assumes text output; this program makes no attempt to change the
|
||||
* text mode of stdout!
|
||||
*
|
||||
* makepng --color=<color> ...
|
||||
* Row filtering is turned off (the 'none' filter is used on every row) and the
|
||||
* images are not interlaced.
|
||||
*
|
||||
* If --color is given then the whole image has that color, color-mapped images
|
||||
* will have exactly one palette entry and all image files with be 16x16 in
|
||||
* size. The color value is 1 to 4 decimal numbers as appropriate for the color
|
||||
* type.
|
||||
*
|
||||
* makepng --small ...
|
||||
*
|
||||
* If --small is given the images are no larger than required to include every
|
||||
* possible pixel value for the format.
|
||||
*
|
||||
* For formats with pixels 8 bits or fewer in size the images consist of a
|
||||
* single row with 2^pixel-depth pixels, one of every possible value.
|
||||
*
|
||||
* For formats with 16-bit pixels a 256x256 image is generated containing every
|
||||
* possible pixel value.
|
||||
*
|
||||
* For larger pixel sizes a 256x256 image is generated where the first row
|
||||
* consists of each pixel that has identical byte values throughout the pixel
|
||||
* followed by rows where the byte values differ within the pixel.
|
||||
*
|
||||
* In all cases the pixel values are arranged in such a way that the SUB and UP
|
||||
* filters give byte sequences for maximal zlib compression. By default (if
|
||||
* --nofilters is not given) the SUB filter is used on the first row and the UP
|
||||
* filter on all following rows.
|
||||
*
|
||||
* The --small option is meant to provide good test-case coverage, however the
|
||||
* images are not easy to examine visually. Without the --small option the
|
||||
* images contain identical color values; the pixel values are adjusted
|
||||
* according to the gamma encoding with no gamma encoding being interpreted as
|
||||
* sRGB.
|
||||
*
|
||||
* LICENSING
|
||||
* =========
|
||||
*
|
||||
* This code is copyright of the authors, see the COPYRIGHT define above. The
|
||||
* code is licensed as above, using the libpng license. The code generates
|
||||
* images which are solely the product of the code; the options choose which of
|
||||
* the many possibilities to generate. The images that result (but not the code
|
||||
* which generates them) are licensed as defined here:
|
||||
*
|
||||
* IMPORTANT: the COPYRIGHT #define must contain ISO-Latin-1 characters, the
|
||||
* IMAGE_LICENSING #define must contain UTF-8 characters. The 'copyright'
|
||||
* symbol 0xA9U (\251) in ISO-Latin-1 encoding and 0xC20xA9 (\302\251) in UTF-8.
|
||||
* If file-name is given then the PNG is written to that file, else it is
|
||||
* written to stdout. Notice that stdout is not supported on systems where, by
|
||||
* default, it assumes text output; this program makes no attempt to change the
|
||||
* text mode of stdout!
|
||||
*/
|
||||
#define IMAGE_LICENSING "Dedicated to the public domain per Creative Commons "\
|
||||
"license \"CC0 1.0\"; https://creativecommons.org/publicdomain/zero/1.0/"
|
||||
#define _ISOC99_SOURCE /* for strtoull */
|
||||
|
||||
#include <stddef.h> /* for offsetof */
|
||||
#include <stdlib.h>
|
||||
@@ -130,8 +82,6 @@
|
||||
#include <ctype.h>
|
||||
#include <math.h>
|
||||
#include <errno.h>
|
||||
#include <assert.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H)
|
||||
# include <config.h>
|
||||
@@ -146,25 +96,6 @@
|
||||
# include "../../png.h"
|
||||
#endif
|
||||
|
||||
#include <zlib.h>
|
||||
|
||||
/* Work round for GCC complaints about casting a (double) function result to
|
||||
* an unsigned:
|
||||
*/
|
||||
static unsigned int
|
||||
flooru(double d)
|
||||
{
|
||||
d = floor(d);
|
||||
return (unsigned int)d;
|
||||
}
|
||||
|
||||
static png_byte
|
||||
floorb(double d)
|
||||
{
|
||||
d = floor(d);
|
||||
return (png_byte)d;
|
||||
}
|
||||
|
||||
/* This structure is used for inserting extra chunks (the --insert argument, not
|
||||
* documented above.)
|
||||
*/
|
||||
@@ -176,7 +107,7 @@ typedef struct chunk_insert
|
||||
png_charp parameters[1];
|
||||
} chunk_insert;
|
||||
|
||||
static unsigned int
|
||||
static int
|
||||
channels_of_type(int color_type)
|
||||
{
|
||||
if (color_type & PNG_COLOR_MASK_PALETTE)
|
||||
@@ -197,15 +128,14 @@ channels_of_type(int color_type)
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
static int
|
||||
pixel_depth_of_type(int color_type, int bit_depth)
|
||||
{
|
||||
return channels_of_type(color_type) * bit_depth;
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
image_size_of_type(int color_type, int bit_depth, unsigned int *colors,
|
||||
int small)
|
||||
image_size_of_type(int color_type, int bit_depth, unsigned int *colors)
|
||||
{
|
||||
if (*colors)
|
||||
return 16;
|
||||
@@ -214,16 +144,7 @@ image_size_of_type(int color_type, int bit_depth, unsigned int *colors,
|
||||
{
|
||||
int pixel_depth = pixel_depth_of_type(color_type, bit_depth);
|
||||
|
||||
if (small)
|
||||
{
|
||||
if (pixel_depth <= 8) /* there will be one row */
|
||||
return 1 << pixel_depth;
|
||||
|
||||
else
|
||||
return 256;
|
||||
}
|
||||
|
||||
else if (pixel_depth < 8)
|
||||
if (pixel_depth < 8)
|
||||
return 64;
|
||||
|
||||
else if (pixel_depth > 16)
|
||||
@@ -296,8 +217,7 @@ generate_palette(png_colorp palette, png_bytep trans, int bit_depth,
|
||||
else
|
||||
{
|
||||
unsigned int size = 1U << (bit_depth/2); /* 2, 4 or 16 */
|
||||
unsigned int x, y;
|
||||
volatile unsigned int ip = 0;
|
||||
unsigned int x, y, ip;
|
||||
|
||||
for (x=0; x<size; ++x) for (y=0; y<size; ++y)
|
||||
{
|
||||
@@ -361,7 +281,7 @@ set_value(png_bytep row, size_t rowbytes, png_uint_32 x, unsigned int bit_depth,
|
||||
exit(1);
|
||||
|
||||
case 16:
|
||||
value = flooru(65535*pow(value/65535.,conv)+.5);
|
||||
value = (unsigned int)floor(65535*pow(value/65535.,conv)+.5);
|
||||
*row++ = (png_byte)(value >> 8);
|
||||
*row = (png_byte)value;
|
||||
return;
|
||||
@@ -386,148 +306,15 @@ set_value(png_bytep row, size_t rowbytes, png_uint_32 x, unsigned int bit_depth,
|
||||
}
|
||||
}
|
||||
|
||||
static int /* filter mask for row */
|
||||
static void
|
||||
generate_row(png_bytep row, size_t rowbytes, unsigned int y, int color_type,
|
||||
int bit_depth, png_const_bytep gamma_table, double conv,
|
||||
unsigned int *colors, int small)
|
||||
unsigned int *colors)
|
||||
{
|
||||
int filters = 0; /* file *MASK*, 0 means the default, not NONE */
|
||||
png_uint_32 size_max =
|
||||
image_size_of_type(color_type, bit_depth, colors, small)-1;
|
||||
png_uint_32 size_max = image_size_of_type(color_type, bit_depth, colors)-1;
|
||||
png_uint_32 depth_max = (1U << bit_depth)-1; /* up to 65536 */
|
||||
|
||||
if (colors[0] == 0) if (small)
|
||||
{
|
||||
unsigned int pixel_depth = pixel_depth_of_type(color_type, bit_depth);
|
||||
|
||||
/* For pixel depths less than 16 generate a single row containing all the
|
||||
* possible pixel values. For 16 generate all 65536 byte pair
|
||||
* combinations in a 256x256 pixel array.
|
||||
*/
|
||||
switch (pixel_depth)
|
||||
{
|
||||
case 1:
|
||||
assert(y == 0 && rowbytes == 1 && size_max == 1);
|
||||
row[0] = 0x6CU; /* binary: 01101100, only top 2 bits used */
|
||||
filters = PNG_FILTER_NONE;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
assert(y == 0 && rowbytes == 1 && size_max == 3);
|
||||
row[0] = 0x1BU; /* binary 00011011, all bits used */
|
||||
filters = PNG_FILTER_NONE;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
assert(y == 0 && rowbytes == 8 && size_max == 15);
|
||||
row[0] = 0x01U;
|
||||
row[1] = 0x23U; /* SUB gives 0x22U for all following bytes */
|
||||
row[2] = 0x45U;
|
||||
row[3] = 0x67U;
|
||||
row[4] = 0x89U;
|
||||
row[5] = 0xABU;
|
||||
row[6] = 0xCDU;
|
||||
row[7] = 0xEFU;
|
||||
filters = PNG_FILTER_SUB;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
/* The row will have all the pixel values in order starting with
|
||||
* '1', the SUB filter will change every byte into '1' (including
|
||||
* the last, which generates pixel value '0'). Since the SUB filter
|
||||
* has value 1 this should result in maximum compression.
|
||||
*/
|
||||
assert(y == 0 && rowbytes == 256 && size_max == 255);
|
||||
for (;;)
|
||||
{
|
||||
row[size_max] = 0xFFU & (size_max+1);
|
||||
if (size_max == 0)
|
||||
break;
|
||||
--size_max;
|
||||
}
|
||||
filters = PNG_FILTER_SUB;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
/* Rows are generated such that each row has a constant difference
|
||||
* between the first and second byte of each pixel and so that the
|
||||
* difference increases by 1 at each row. The rows start with the
|
||||
* first byte value of 0 and the value increases to 255 across the
|
||||
* row.
|
||||
*
|
||||
* The difference starts at 1, so the first row is:
|
||||
*
|
||||
* 0 1 1 2 2 3 3 4 ... 254 255 255 0
|
||||
*
|
||||
* This means that running the SUB filter on the first row produces:
|
||||
*
|
||||
* [SUB==1] 0 1 0 1 0 1...
|
||||
*
|
||||
* Then the difference is 2 on the next row, giving:
|
||||
*
|
||||
* 0 2 1 3 2 4 3 5 ... 254 0 255 1
|
||||
*
|
||||
* When the UP filter is run on this libpng produces:
|
||||
*
|
||||
* [UP ==2] 0 1 0 1 0 1...
|
||||
*
|
||||
* And so on for all the remain rows to the final two * rows:
|
||||
*
|
||||
* row 254: 0 255 1 0 2 1 3 2 4 3 ... 254 253 255 254
|
||||
* row 255: 0 0 1 1 2 2 3 3 4 4 ... 254 254 255 255
|
||||
*/
|
||||
assert(rowbytes == 512 && size_max == 255);
|
||||
for (;;)
|
||||
{
|
||||
row[2*size_max ] = 0xFFU & size_max;
|
||||
row[2*size_max+1] = 0xFFU & (size_max+y+1);
|
||||
if (size_max == 0)
|
||||
break;
|
||||
--size_max;
|
||||
}
|
||||
/* The first row must include PNG_FILTER_UP so that libpng knows we
|
||||
* need to keep it for the following row:
|
||||
*/
|
||||
filters = (y == 0 ? PNG_FILTER_SUB+PNG_FILTER_UP : PNG_FILTER_UP);
|
||||
break;
|
||||
|
||||
case 24:
|
||||
case 32:
|
||||
case 48:
|
||||
case 64:
|
||||
/* The rows are filled by an alogorithm similar to the above, in the
|
||||
* first row pixel bytes are all equal, increasing from 0 by 1 for
|
||||
* each pixel. In the second row the bytes within a pixel are
|
||||
* incremented 1,3,5,7,... from the previous row byte. Using an odd
|
||||
* number ensures all the possible byte values are used.
|
||||
*/
|
||||
assert(size_max == 255 && rowbytes == 256*(pixel_depth>>3));
|
||||
pixel_depth >>= 3; /* now in bytes */
|
||||
while (rowbytes > 0)
|
||||
{
|
||||
const size_t pixel_index = --rowbytes/pixel_depth;
|
||||
|
||||
if (y == 0)
|
||||
row[rowbytes] = 0xFFU & pixel_index;
|
||||
|
||||
else
|
||||
{
|
||||
const size_t byte_offset =
|
||||
rowbytes - pixel_index * pixel_depth;
|
||||
|
||||
row[rowbytes] =
|
||||
0xFFU & (pixel_index + (byte_offset * 2*y) + 1);
|
||||
}
|
||||
}
|
||||
filters = (y == 0 ? PNG_FILTER_SUB+PNG_FILTER_UP : PNG_FILTER_UP);
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(0/*NOT REACHED*/);
|
||||
}
|
||||
}
|
||||
|
||||
else switch (channels_of_type(color_type))
|
||||
if (colors[0] == 0) switch (channels_of_type(color_type))
|
||||
{
|
||||
/* 1 channel: a square image with a diamond, the least luminous colors are on
|
||||
* the edge of the image, the most luminous in the center.
|
||||
@@ -739,8 +526,6 @@ generate_row(png_bytep row, size_t rowbytes, unsigned int y, int color_type,
|
||||
colors[0], channels_of_type(color_type));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return filters;
|
||||
}
|
||||
|
||||
|
||||
@@ -769,7 +554,7 @@ makepng_error(png_structp png_ptr, png_const_charp message)
|
||||
static int /* 0 on success, else an error code */
|
||||
write_png(const char **name, FILE *fp, int color_type, int bit_depth,
|
||||
volatile png_fixed_point gamma, chunk_insert * volatile insert,
|
||||
unsigned int filters, unsigned int *colors, int small, int tRNS)
|
||||
unsigned int filters, unsigned int *colors)
|
||||
{
|
||||
png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,
|
||||
name, makepng_error, makepng_warning);
|
||||
@@ -796,15 +581,6 @@ write_png(const char **name, FILE *fp, int color_type, int bit_depth,
|
||||
|
||||
/* Allow benign errors so that we can write PNGs with errors */
|
||||
png_set_benign_errors(png_ptr, 1/*allowed*/);
|
||||
|
||||
/* Max out the text compression level in an attempt to make the license
|
||||
* small. If --small then do the same for the IDAT.
|
||||
*/
|
||||
if (small)
|
||||
png_set_compression_level(png_ptr, Z_BEST_COMPRESSION);
|
||||
|
||||
png_set_text_compression_level(png_ptr, Z_BEST_COMPRESSION);
|
||||
|
||||
png_init_io(png_ptr, fp);
|
||||
|
||||
info_ptr = png_create_info_struct(png_ptr);
|
||||
@@ -812,37 +588,11 @@ write_png(const char **name, FILE *fp, int color_type, int bit_depth,
|
||||
png_error(png_ptr, "OOM allocating info structure");
|
||||
|
||||
{
|
||||
const unsigned int size =
|
||||
image_size_of_type(color_type, bit_depth, colors, small);
|
||||
unsigned int ysize;
|
||||
unsigned int size = image_size_of_type(color_type, bit_depth, colors);
|
||||
png_fixed_point real_gamma = 45455; /* For sRGB */
|
||||
png_byte gamma_table[256];
|
||||
double conv;
|
||||
|
||||
/* Normally images are square, but with 'small' we want to simply generate
|
||||
* all the pixel values, or all that we reasonably can:
|
||||
*/
|
||||
if (small)
|
||||
{
|
||||
const unsigned int pixel_depth =
|
||||
pixel_depth_of_type(color_type, bit_depth);
|
||||
|
||||
if (pixel_depth <= 8U)
|
||||
{
|
||||
assert(size == (1U<<pixel_depth));
|
||||
ysize = 1U;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
assert(size == 256U);
|
||||
ysize = 256U;
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
ysize = size;
|
||||
|
||||
/* This function uses the libpng values used on read to carry extra
|
||||
* information about the gamma:
|
||||
*/
|
||||
@@ -875,13 +625,13 @@ write_png(const char **name, FILE *fp, int color_type, int bit_depth,
|
||||
gamma_table[0] = 0;
|
||||
|
||||
for (i=1; i<255; ++i)
|
||||
gamma_table[i] = floorb(pow(i/255.,conv) * 255 + .5);
|
||||
gamma_table[i] = (png_byte)floor(pow(i/255.,conv) * 255 + .5);
|
||||
|
||||
gamma_table[255] = 255;
|
||||
}
|
||||
}
|
||||
|
||||
png_set_IHDR(png_ptr, info_ptr, size, ysize, bit_depth, color_type,
|
||||
png_set_IHDR(png_ptr, info_ptr, size, size, bit_depth, color_type,
|
||||
PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
|
||||
|
||||
if (color_type & PNG_COLOR_MASK_PALETTE)
|
||||
@@ -893,26 +643,14 @@ write_png(const char **name, FILE *fp, int color_type, int bit_depth,
|
||||
npalette = generate_palette(palette, trans, bit_depth, gamma_table,
|
||||
colors);
|
||||
png_set_PLTE(png_ptr, info_ptr, palette, npalette);
|
||||
|
||||
if (tRNS)
|
||||
png_set_tRNS(png_ptr, info_ptr, trans, npalette-1,
|
||||
NULL/*transparent color*/);
|
||||
png_set_tRNS(png_ptr, info_ptr, trans, npalette-1,
|
||||
NULL/*transparent color*/);
|
||||
|
||||
/* Reset gamma_table to prevent the image rows being changed */
|
||||
for (npalette=0; npalette<256; ++npalette)
|
||||
gamma_table[npalette] = (png_byte)npalette;
|
||||
}
|
||||
|
||||
else if (tRNS)
|
||||
{
|
||||
png_color_16 col;
|
||||
|
||||
col.red = col.green = col.blue = col.gray =
|
||||
0x0101U & ((1U<<bit_depth)-1U);
|
||||
col.index = 0U;
|
||||
png_set_tRNS(png_ptr, info_ptr, NULL/*trans*/, 1U, &col);
|
||||
}
|
||||
|
||||
if (gamma == PNG_DEFAULT_sRGB)
|
||||
png_set_sRGB(png_ptr, info_ptr, PNG_sRGB_INTENT_ABSOLUTE);
|
||||
|
||||
@@ -944,11 +682,7 @@ write_png(const char **name, FILE *fp, int color_type, int bit_depth,
|
||||
png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE, filters);
|
||||
|
||||
{
|
||||
# ifdef PNG_WRITE_INTERLACING_SUPPORTED
|
||||
int passes = png_set_interlace_handling(png_ptr);
|
||||
# else /* !WRITE_INTERLACING */
|
||||
int passes = 1;
|
||||
# endif /* !WRITE_INTERLACING */
|
||||
int passes = png_set_interlace_handling(png_ptr);
|
||||
int pass;
|
||||
png_size_t rowbytes = png_get_rowbytes(png_ptr, info_ptr);
|
||||
|
||||
@@ -961,15 +695,10 @@ write_png(const char **name, FILE *fp, int color_type, int bit_depth,
|
||||
{
|
||||
unsigned int y;
|
||||
|
||||
for (y=0; y<ysize; ++y)
|
||||
for (y=0; y<size; ++y)
|
||||
{
|
||||
unsigned int row_filters =
|
||||
generate_row(row, rowbytes, y, color_type, bit_depth,
|
||||
gamma_table, conv, colors, small);
|
||||
|
||||
if (row_filters != 0 && filters == PNG_ALL_FILTERS)
|
||||
png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE, row_filters);
|
||||
|
||||
generate_row(row, rowbytes, y, color_type, bit_depth,
|
||||
gamma_table, conv, colors);
|
||||
png_write_row(png_ptr, row);
|
||||
}
|
||||
}
|
||||
@@ -1098,7 +827,7 @@ static png_size_t
|
||||
load_fake(png_charp param, png_bytepp profile)
|
||||
{
|
||||
char *endptr = NULL;
|
||||
uint64_t size = strtoull(param, &endptr, 0/*base*/);
|
||||
unsigned long long int size = strtoull(param, &endptr, 0/*base*/);
|
||||
|
||||
/* The 'fake' format is <number>*[string] */
|
||||
if (endptr != NULL && *endptr == '*')
|
||||
@@ -1333,8 +1062,7 @@ insert_iTXt(png_structp png_ptr, png_infop info_ptr, int nparams,
|
||||
}
|
||||
|
||||
static void
|
||||
insert_hIST(png_structp png_ptr, png_infop info_ptr, int nparams,
|
||||
png_charpp params)
|
||||
insert_hIST(png_structp png_ptr, png_infop info_ptr, int nparams, png_charpp params)
|
||||
{
|
||||
int i;
|
||||
png_uint_16 freq[256];
|
||||
@@ -1361,56 +1089,6 @@ insert_hIST(png_structp png_ptr, png_infop info_ptr, int nparams,
|
||||
png_set_hIST(png_ptr, info_ptr, freq);
|
||||
}
|
||||
|
||||
static png_byte
|
||||
bval(png_const_structrp png_ptr, png_charp param, unsigned int maxval)
|
||||
{
|
||||
char *endptr = NULL;
|
||||
unsigned long int l = strtoul(param, &endptr, 0/*base*/);
|
||||
|
||||
if (param[0] && *endptr == 0 && l <= maxval)
|
||||
return (png_byte)l;
|
||||
|
||||
else
|
||||
png_error(png_ptr, "sBIT: invalid sBIT value");
|
||||
}
|
||||
|
||||
static void
|
||||
insert_sBIT(png_structp png_ptr, png_infop info_ptr, int nparams,
|
||||
png_charpp params)
|
||||
{
|
||||
const int ct = png_get_color_type(png_ptr, info_ptr);
|
||||
const int c = (ct & PNG_COLOR_MASK_COLOR ? 3 : 1) +
|
||||
(ct & PNG_COLOR_MASK_ALPHA ? 1 : 0);
|
||||
const unsigned int maxval =
|
||||
ct & PNG_COLOR_MASK_PALETTE ? 8U : png_get_bit_depth(png_ptr, info_ptr);
|
||||
png_color_8 sBIT;
|
||||
|
||||
if (nparams != c)
|
||||
png_error(png_ptr, "sBIT: incorrect parameter count");
|
||||
|
||||
if (ct & PNG_COLOR_MASK_COLOR)
|
||||
{
|
||||
sBIT.red = bval(png_ptr, params[0], maxval);
|
||||
sBIT.green = bval(png_ptr, params[1], maxval);
|
||||
sBIT.blue = bval(png_ptr, params[2], maxval);
|
||||
sBIT.gray = 42;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
sBIT.red = sBIT.green = sBIT.blue = 42;
|
||||
sBIT.gray = bval(png_ptr, params[0], maxval);
|
||||
}
|
||||
|
||||
if (ct & PNG_COLOR_MASK_ALPHA)
|
||||
sBIT.alpha = bval(png_ptr, params[nparams-1], maxval);
|
||||
|
||||
else
|
||||
sBIT.alpha = 42;
|
||||
|
||||
png_set_sBIT(png_ptr, info_ptr, &sBIT);
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void
|
||||
insert_sPLT(png_structp png_ptr, png_infop info_ptr, int nparams, png_charpp params)
|
||||
@@ -1538,11 +1216,6 @@ find_insert(png_const_charp what, png_charp param)
|
||||
return make_insert(what, insert_hIST, nparams, parameter_list);
|
||||
break;
|
||||
|
||||
case CHUNK(115,66,73,84): /* sBIT */
|
||||
if (nparams <= 4)
|
||||
return make_insert(what, insert_sBIT, nparams, parameter_list);
|
||||
break;
|
||||
|
||||
#if 0
|
||||
case CHUNK(115,80,76,84): /* sPLT */
|
||||
return make_insert(what, insert_sPLT, nparams, parameter_list);
|
||||
@@ -1558,80 +1231,6 @@ find_insert(png_const_charp what, png_charp param)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* This is necessary because libpng expects writeable strings for things like
|
||||
* text chunks (maybe this should be fixed...)
|
||||
*/
|
||||
static png_charp
|
||||
strstash(png_const_charp foo)
|
||||
{
|
||||
/* The program indicates a memory allocation error by crashing, this is by
|
||||
* design.
|
||||
*/
|
||||
if (foo != NULL)
|
||||
{
|
||||
png_charp bar = malloc(strlen(foo)+1);
|
||||
return strcpy(bar, foo);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static png_charp
|
||||
strstash_list(const png_const_charp *text)
|
||||
{
|
||||
size_t foo = 0;
|
||||
png_charp result, bar;
|
||||
const png_const_charp *line = text;
|
||||
|
||||
while (*line != NULL)
|
||||
foo += strlen(*line++);
|
||||
|
||||
result = bar = malloc(foo+1);
|
||||
|
||||
line = text;
|
||||
while (*line != NULL)
|
||||
{
|
||||
foo = strlen(*line);
|
||||
memcpy(bar, *line++, foo);
|
||||
bar += foo;
|
||||
}
|
||||
|
||||
*bar = 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
/* These are used to insert Copyright and Licence fields, they allow the text to
|
||||
* have \n unlike the --insert option.
|
||||
*/
|
||||
static chunk_insert *
|
||||
add_tEXt(const char *key, const png_const_charp *text)
|
||||
{
|
||||
static char what[5] = { 116, 69, 88, 116, 0 };
|
||||
png_charp parameter_list[3];
|
||||
|
||||
parameter_list[0] = strstash(key);
|
||||
parameter_list[1] = strstash_list(text);
|
||||
parameter_list[2] = NULL;
|
||||
|
||||
return make_insert(what, insert_tEXt, 2, parameter_list);
|
||||
}
|
||||
|
||||
static chunk_insert *
|
||||
add_iTXt(const char *key, const char *language, const char *language_key,
|
||||
const png_const_charp *text)
|
||||
{
|
||||
static char what[5] = { 105, 84, 88, 116, 0 };
|
||||
png_charp parameter_list[5];
|
||||
|
||||
parameter_list[0] = strstash(key);
|
||||
parameter_list[1] = strstash(language);
|
||||
parameter_list[2] = strstash(language_key);
|
||||
parameter_list[3] = strstash_list(text);
|
||||
parameter_list[4] = NULL;
|
||||
|
||||
return make_insert(what, insert_iTXt, 4, parameter_list);
|
||||
}
|
||||
|
||||
/* This is a not-very-good parser for a sequence of numbers (including 0). It
|
||||
* doesn't accept some apparently valid things, but it accepts all the sensible
|
||||
* combinations.
|
||||
@@ -1681,8 +1280,6 @@ main(int argc, char **argv)
|
||||
const char *file_name = NULL;
|
||||
int color_type = 8; /* invalid */
|
||||
int bit_depth = 32; /* invalid */
|
||||
int small = 0; /* make full size images */
|
||||
int tRNS = 0; /* don't output a tRNS chunk */
|
||||
unsigned int colors[5];
|
||||
unsigned int filters = PNG_ALL_FILTERS;
|
||||
png_fixed_point gamma = 0; /* not set */
|
||||
@@ -1695,18 +1292,6 @@ main(int argc, char **argv)
|
||||
{
|
||||
char *arg = *++argv;
|
||||
|
||||
if (strcmp(arg, "--small") == 0)
|
||||
{
|
||||
small = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strcmp(arg, "--tRNS") == 0)
|
||||
{
|
||||
tRNS = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strcmp(arg, "--sRGB") == 0)
|
||||
{
|
||||
gamma = PNG_DEFAULT_sRGB;
|
||||
@@ -1847,10 +1432,9 @@ main(int argc, char **argv)
|
||||
|
||||
if (color_type == 8 || bit_depth == 32)
|
||||
{
|
||||
fprintf(stderr, "usage: makepng [--small] [--sRGB|--linear|--1.8] "
|
||||
fprintf(stderr, "usage: makepng [--sRGB|--linear|--1.8] "
|
||||
"[--color=...] color-type bit-depth [file-name]\n"
|
||||
" Make a test PNG file, by default writes to stdout.\n"
|
||||
" Other options are available, UTSL.\n");
|
||||
" Make a test PNG file, by default writes to stdout.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -1869,19 +1453,10 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
/* small and colors are incomparible (will probably crash if both are used at
|
||||
* the same time!)
|
||||
*/
|
||||
if (small && colors[0] != 0)
|
||||
{
|
||||
fprintf(stderr, "makepng: --color --small: only one at a time!\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Restrict the filters for more speed to those we know are used for the
|
||||
* generated images.
|
||||
*/
|
||||
if (filters == PNG_ALL_FILTERS && !small/*small provides defaults*/)
|
||||
if (filters == PNG_ALL_FILTERS)
|
||||
{
|
||||
if ((color_type & PNG_COLOR_MASK_PALETTE) != 0 || bit_depth < 8)
|
||||
filters = PNG_FILTER_NONE;
|
||||
@@ -1899,39 +1474,9 @@ main(int argc, char **argv)
|
||||
filters &= ~PNG_FILTER_NONE;
|
||||
}
|
||||
|
||||
/* Insert standard copyright and licence text. */
|
||||
{
|
||||
static png_const_charp copyright[] =
|
||||
{
|
||||
COPYRIGHT, /* ISO-Latin-1 */
|
||||
NULL
|
||||
};
|
||||
static png_const_charp licensing[] =
|
||||
{
|
||||
IMAGE_LICENSING, /* UTF-8 */
|
||||
NULL
|
||||
};
|
||||
|
||||
chunk_insert *new_insert;
|
||||
|
||||
new_insert = add_tEXt("Copyright", copyright);
|
||||
if (new_insert != NULL)
|
||||
{
|
||||
*insert_ptr = new_insert;
|
||||
insert_ptr = &new_insert->next;
|
||||
}
|
||||
|
||||
new_insert = add_iTXt("Licensing", "en", NULL, licensing);
|
||||
if (new_insert != NULL)
|
||||
{
|
||||
*insert_ptr = new_insert;
|
||||
insert_ptr = &new_insert->next;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
int ret = write_png(&file_name, fp, color_type, bit_depth, gamma,
|
||||
head_insert, filters, colors, small, tRNS);
|
||||
head_insert, filters, colors);
|
||||
|
||||
if (ret != 0 && file_name != NULL)
|
||||
remove(file_name);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
*
|
||||
* Copyright (c) 2015 John Cunningham Bowler
|
||||
*
|
||||
* Last changed in libpng 1.6.20 [December 3, 2015]
|
||||
* Last changed in libpng 1.6.18 [(PENDING RELEASE)]
|
||||
*
|
||||
* This code is released under the libpng license.
|
||||
* For conditions of distribution and use, see the disclaimer
|
||||
@@ -36,8 +36,7 @@
|
||||
# include <setjmp.h> /* because png.h did *not* include this */
|
||||
#endif
|
||||
|
||||
#if defined(PNG_INFO_IMAGE_SUPPORTED) && defined(PNG_SEQUENTIAL_READ_SUPPORTED)\
|
||||
&& (defined(PNG_READ_PNG_SUPPORTED) || PNG_LIBPNG_VER < 10700)
|
||||
#if defined(PNG_INFO_IMAGE_SUPPORTED) && defined(PNG_SEQUENTIAL_READ_SUPPORTED)
|
||||
/* If a transform is valid on both read and write this implies that if the
|
||||
* transform is applied to read it must also be applied on write to produce
|
||||
* meaningful data. This is because these transforms when performed on read
|
||||
@@ -237,12 +236,10 @@ static struct transform_info
|
||||
*/
|
||||
#endif
|
||||
#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED
|
||||
T(SCALE_16, NONE, X, X, 16, R),
|
||||
T(SCALE_16, NONE, X, X, 16, R)
|
||||
/* scales 16-bit components to 8-bits. */
|
||||
#endif
|
||||
|
||||
{ NULL /*name*/, 0, 0, 0, 0, 0, 0, 0/*!tested*/ }
|
||||
|
||||
#undef T
|
||||
};
|
||||
|
||||
@@ -297,7 +294,7 @@ transform_name(int t)
|
||||
|
||||
t &= -t; /* first set bit */
|
||||
|
||||
for (i=0; i<TTABLE_SIZE; ++i) if (transform_info[i].name != NULL)
|
||||
for (i=0; i<TTABLE_SIZE; ++i)
|
||||
{
|
||||
if ((transform_info[i].transform & t) != 0)
|
||||
return transform_info[i].name;
|
||||
@@ -318,7 +315,7 @@ validate_T(void)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i=0; i<TTABLE_SIZE; ++i) if (transform_info[i].name != NULL)
|
||||
for (i=0; i<TTABLE_SIZE; ++i)
|
||||
{
|
||||
if (transform_info[i].when & TRANSFORM_R)
|
||||
read_transforms |= transform_info[i].transform;
|
||||
@@ -508,7 +505,6 @@ typedef enum
|
||||
#define SKIP_BUGS 0x100 /* Skip over known bugs */
|
||||
#define LOG_SKIPPED 0x200 /* Log skipped bugs */
|
||||
#define FIND_BAD_COMBOS 0x400 /* Attempt to deduce bad combos */
|
||||
#define LIST_COMBOS 0x800 /* List combos by name */
|
||||
|
||||
/* Result masks apply to the result bits in the 'results' field below; these
|
||||
* bits are simple 1U<<error_level. A pass requires either nothing worse than
|
||||
@@ -694,35 +690,7 @@ display_log(struct display *dp, error_level level, const char *fmt, ...)
|
||||
int tr = dp->transforms;
|
||||
|
||||
if (is_combo(tr))
|
||||
{
|
||||
if (dp->options & LIST_COMBOS)
|
||||
{
|
||||
int trx = tr;
|
||||
|
||||
fprintf(stderr, "(");
|
||||
if (trx)
|
||||
{
|
||||
int start = 0;
|
||||
|
||||
while (trx)
|
||||
{
|
||||
int trz = trx & -trx;
|
||||
|
||||
if (start) fprintf(stderr, "+");
|
||||
fprintf(stderr, "%s", transform_name(trz));
|
||||
start = 1;
|
||||
trx &= ~trz;
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
fprintf(stderr, "-");
|
||||
fprintf(stderr, ")");
|
||||
}
|
||||
|
||||
else
|
||||
fprintf(stderr, "(0x%x)", tr);
|
||||
}
|
||||
fprintf(stderr, "(0x%x)", tr);
|
||||
|
||||
else
|
||||
fprintf(stderr, "(%s)", transform_name(tr));
|
||||
@@ -942,13 +910,13 @@ update_display(struct display *dp)
|
||||
int bd = dp->bit_depth;
|
||||
unsigned int i;
|
||||
|
||||
for (i=0; i<TTABLE_SIZE; ++i) if (transform_info[i].name != NULL)
|
||||
for (i=0; i<TTABLE_SIZE; ++i)
|
||||
{
|
||||
int transform = transform_info[i].transform;
|
||||
|
||||
if ((transform_info[i].valid_chunks == 0 ||
|
||||
(transform_info[i].valid_chunks & chunks) != 0) &&
|
||||
(transform_info[i].color_mask_required & ct) ==
|
||||
(transform_info[i].color_mask_required & ct) ==
|
||||
transform_info[i].color_mask_required &&
|
||||
(transform_info[i].color_mask_absent & ct) == 0 &&
|
||||
(transform_info[i].bit_depths & bd) != 0 &&
|
||||
@@ -967,6 +935,9 @@ update_display(struct display *dp)
|
||||
|
||||
dp->active_transforms = active;
|
||||
dp->ignored_transforms = inactive; /* excluding write-only transforms */
|
||||
|
||||
if (active == 0)
|
||||
display_log(dp, INTERNAL_ERROR, "bad transform table");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1006,7 +977,7 @@ compare_read(struct display *dp, int applied_transforms)
|
||||
{
|
||||
unsigned long chunks =
|
||||
png_get_valid(dp->read_pp, dp->read_ip, 0xffffffff);
|
||||
|
||||
|
||||
if (chunks != dp->chunks)
|
||||
display_log(dp, APP_FAIL, "PNG chunks changed from 0x%lx to 0x%lx",
|
||||
(unsigned long)dp->chunks, chunks);
|
||||
@@ -1617,12 +1588,6 @@ main(const int argc, const char * const * const argv)
|
||||
else if (strcmp(name, "--nofind-bad-combos") == 0)
|
||||
d.options &= ~FIND_BAD_COMBOS;
|
||||
|
||||
else if (strcmp(name, "--list-combos") == 0)
|
||||
d.options |= LIST_COMBOS;
|
||||
|
||||
else if (strcmp(name, "--nolist-combos") == 0)
|
||||
d.options &= ~LIST_COMBOS;
|
||||
|
||||
else if (name[0] == '-' && name[1] == '-')
|
||||
{
|
||||
fprintf(stderr, "pngimage: %s: unknown option\n", name);
|
||||
@@ -1677,7 +1642,7 @@ main(const int argc, const char * const * const argv)
|
||||
return errors != 0;
|
||||
}
|
||||
}
|
||||
#else /* !INFO_IMAGE || !SEQUENTIAL_READ || !READ_PNG*/
|
||||
#else /* !PNG_INFO_IMAGE_SUPPORTED || !PNG_READ_SUPPORTED */
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
|
||||
@@ -1,165 +0,0 @@
|
||||
/* contrib/libtests/pngstest-errors.h
|
||||
*
|
||||
* BUILT USING: libpng version 1.6.19beta03 - September 25, 2015
|
||||
*
|
||||
* This code is released under the libpng license.
|
||||
* For conditions of distribution and use, see the disclaimer
|
||||
* and license in png.h
|
||||
*
|
||||
* THIS IS A MACHINE GENERATED FILE: do not edit it directly!
|
||||
* Instead run:
|
||||
*
|
||||
* pngstest --accumulate
|
||||
*
|
||||
* on as many PNG files as possible; at least PNGSuite and
|
||||
* contrib/libtests/testpngs.
|
||||
*/
|
||||
static png_uint_16 gpc_error[16/*in*/][16/*out*/][4/*a*/] =
|
||||
{
|
||||
{ /* input: sRGB-gray */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 372, 0 }, { 0, 0, 372, 0 }, { 0, 0, 372, 0 }, { 0, 0, 372, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: sRGB-gray+alpha */
|
||||
{ 0, 19, 0, 0 }, { 0, 0, 0, 0 }, { 0, 20, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 897, 788, 0 }, { 0, 897, 788, 0 }, { 0, 897, 788, 0 }, { 0, 897, 788, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: sRGB-rgb */
|
||||
{ 0, 0, 19, 0 }, { 0, 0, 19, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 893, 0 }, { 0, 0, 893, 0 }, { 0, 0, 811, 0 }, { 0, 0, 811, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: sRGB-rgb+alpha */
|
||||
{ 0, 16, 17, 0 }, { 0, 17, 17, 0 }, { 0, 19, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 850, 875, 0 }, { 0, 850, 875, 0 }, { 0, 897, 788, 0 }, { 0, 897, 788, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: linear-gray */
|
||||
{ 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: linear-gray+alpha */
|
||||
{ 0, 74, 9, 0 }, { 0, 20, 9, 0 }, { 0, 74, 9, 0 }, { 0, 20, 9, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 0, 0 }, { 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: linear-rgb */
|
||||
{ 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 },
|
||||
{ 0, 0, 4, 0 }, { 0, 0, 4, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: linear-rgb+alpha */
|
||||
{ 0, 126, 143, 0 }, { 0, 11, 7, 0 }, { 0, 74, 9, 0 }, { 0, 17, 9, 0 },
|
||||
{ 0, 4, 4, 0 }, { 0, 5, 4, 0 }, { 0, 0, 0, 0 }, { 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-sRGB-gray */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-sRGB-gray+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-sRGB-rgb */
|
||||
{ 0, 0, 13, 0 }, { 0, 0, 13, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 },
|
||||
{ 0, 0, 673, 0 }, { 0, 0, 673, 0 }, { 0, 0, 674, 0 }, { 0, 0, 674, 0 },
|
||||
{ 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 460, 0 }, { 0, 0, 460, 0 }, { 0, 0, 263, 0 }, { 0, 0, 263, 0 }
|
||||
}, { /* input: color-mapped-sRGB-rgb+alpha */
|
||||
{ 0, 6, 8, 0 }, { 0, 7, 8, 0 }, { 0, 75, 9, 0 }, { 0, 9, 9, 0 },
|
||||
{ 0, 585, 427, 0 }, { 0, 585, 427, 0 }, { 0, 717, 514, 0 }, { 0, 717, 514, 0 },
|
||||
{ 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 13323, 460, 0 }, { 0, 427, 460, 0 }, { 0, 16480, 263, 0 }, { 0, 243, 263, 0 }
|
||||
}, { /* input: color-mapped-linear-gray */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 282, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-gray+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 253, 282, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-rgb */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 265, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-rgb+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 243, 265, 0 }
|
||||
}
|
||||
};
|
||||
static png_uint_16 gpc_error_via_linear[16][4/*out*/][4] =
|
||||
{
|
||||
{ /* input: sRGB-gray */
|
||||
{ 0, 0, 7, 0 }, { 0, 0, 7, 0 }, { 0, 0, 7, 0 }, { 0, 0, 7, 0 }
|
||||
}, { /* input: sRGB-gray+alpha */
|
||||
{ 0, 15, 15, 0 }, { 0, 186, 15, 0 }, { 0, 15, 15, 0 }, { 0, 186, 15, 0 }
|
||||
}, { /* input: sRGB-rgb */
|
||||
{ 0, 0, 20, 0 }, { 0, 0, 20, 0 }, { 0, 0, 15, 0 }, { 0, 0, 15, 0 }
|
||||
}, { /* input: sRGB-rgb+alpha */
|
||||
{ 0, 16, 17, 0 }, { 0, 187, 17, 0 }, { 0, 15, 15, 0 }, { 0, 186, 15, 0 }
|
||||
}, { /* input: linear-gray */
|
||||
{ 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 }
|
||||
}, { /* input: linear-gray+alpha */
|
||||
{ 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 }
|
||||
}, { /* input: linear-rgb */
|
||||
{ 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 }
|
||||
}, { /* input: linear-rgb+alpha */
|
||||
{ 0, 1, 1, 0 }, { 0, 9, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 }
|
||||
}, { /* input: color-mapped-sRGB-gray */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-sRGB-gray+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-sRGB-rgb */
|
||||
{ 0, 0, 13, 0 }, { 0, 0, 13, 0 }, { 0, 0, 14, 0 }, { 0, 0, 14, 0 }
|
||||
}, { /* input: color-mapped-sRGB-rgb+alpha */
|
||||
{ 0, 4, 8, 0 }, { 0, 9, 8, 0 }, { 0, 9, 5, 0 }, { 0, 32, 5, 0 }
|
||||
}, { /* input: color-mapped-linear-gray */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-gray+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-rgb */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-rgb+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}
|
||||
};
|
||||
static png_uint_16 gpc_error_to_colormap[8/*i*/][8/*o*/][4] =
|
||||
{
|
||||
{ /* input: sRGB-gray */
|
||||
{ 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 },
|
||||
{ 0, 0, 560, 0 }, { 0, 0, 560, 0 }, { 0, 0, 560, 0 }, { 0, 0, 560, 0 }
|
||||
}, { /* input: sRGB-gray+alpha */
|
||||
{ 0, 19, 9, 0 }, { 0, 255, 9, 25 }, { 0, 88, 9, 0 }, { 0, 255, 9, 25 },
|
||||
{ 0, 1012, 928, 0 }, { 0, 16026, 928, 6425 }, { 0, 1012, 928, 0 }, { 0, 16026, 928, 6425 }
|
||||
}, { /* input: sRGB-rgb */
|
||||
{ 0, 0, 19, 0 }, { 0, 0, 19, 0 }, { 0, 0, 25, 0 }, { 0, 0, 25, 0 },
|
||||
{ 0, 0, 962, 0 }, { 0, 0, 962, 0 }, { 0, 0, 13677, 0 }, { 0, 0, 13677, 0 }
|
||||
}, { /* input: sRGB-rgb+alpha */
|
||||
{ 0, 63, 77, 0 }, { 0, 255, 19, 25 }, { 0, 225, 25, 0 }, { 0, 255, 25, 67 },
|
||||
{ 0, 17534, 18491, 0 }, { 0, 15736, 2824, 6425 }, { 0, 14019, 13677, 0 }, { 0, 50115, 13677, 17219 }
|
||||
}, { /* input: linear-gray */
|
||||
{ 0, 0, 73, 0 }, { 0, 0, 73, 0 }, { 0, 0, 73, 0 }, { 0, 0, 73, 0 },
|
||||
{ 0, 0, 18817, 0 }, { 0, 0, 18817, 0 }, { 0, 0, 18817, 0 }, { 0, 0, 18817, 0 }
|
||||
}, { /* input: linear-gray+alpha */
|
||||
{ 0, 74, 74, 0 }, { 0, 255, 74, 25 }, { 0, 99, 74, 0 }, { 0, 255, 74, 25 },
|
||||
{ 0, 18919, 18907, 0 }, { 0, 24549, 18907, 6553 }, { 0, 18919, 18907, 0 }, { 0, 24549, 18907, 6553 }
|
||||
}, { /* input: linear-rgb */
|
||||
{ 0, 0, 73, 0 }, { 0, 0, 73, 0 }, { 0, 0, 98, 0 }, { 0, 0, 98, 0 },
|
||||
{ 0, 0, 18664, 0 }, { 0, 0, 18664, 0 }, { 0, 0, 24998, 0 }, { 0, 0, 24998, 0 }
|
||||
}, { /* input: linear-rgb+alpha */
|
||||
{ 0, 181, 196, 0 }, { 0, 255, 61, 25 }, { 206, 187, 98, 0 }, { 0, 255, 98, 67 },
|
||||
{ 0, 18141, 18137, 0 }, { 0, 17494, 17504, 6553 }, { 0, 24979, 24992, 0 }, { 0, 49172, 24992, 17347 }
|
||||
}
|
||||
};
|
||||
/* END MACHINE GENERATED */
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2013-2015 John Cunningham Bowler
|
||||
*
|
||||
* Last changed in libpng 1.6.19 [(PENDING RELEASE)]
|
||||
* Last changed in libpng 1.6.18 [(PENDING RELEASE)]
|
||||
*
|
||||
* This code is released under the libpng license.
|
||||
* For conditions of distribution and use, see the disclaimer
|
||||
@@ -1984,7 +1984,156 @@ static void (* const gpc_fn_colormapped[8/*in*/][8/*out*/])
|
||||
* gpc_error_to_colormap.
|
||||
*/
|
||||
#if PNG_FORMAT_FLAG_COLORMAP == 8 /* extra check also required */
|
||||
# include "pngstest-errors.h" /* machine generated */
|
||||
/* START MACHINE GENERATED */
|
||||
static png_uint_16 gpc_error[16/*in*/][16/*out*/][4/*a*/] =
|
||||
{
|
||||
{ /* input: sRGB-gray */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 372, 0 }, { 0, 0, 372, 0 }, { 0, 0, 372, 0 }, { 0, 0, 372, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: sRGB-gray+alpha */
|
||||
{ 0, 18, 0, 0 }, { 0, 0, 0, 0 }, { 0, 20, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 897, 788, 0 }, { 0, 897, 788, 0 }, { 0, 897, 788, 0 }, { 0, 897, 788, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: sRGB-rgb */
|
||||
{ 0, 0, 19, 0 }, { 0, 0, 19, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 893, 0 }, { 0, 0, 893, 0 }, { 0, 0, 811, 0 }, { 0, 0, 811, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: sRGB-rgb+alpha */
|
||||
{ 0, 4, 13, 0 }, { 0, 14, 13, 0 }, { 0, 19, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 832, 764, 0 }, { 0, 832, 764, 0 }, { 0, 897, 788, 0 }, { 0, 897, 788, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: linear-gray */
|
||||
{ 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: linear-gray+alpha */
|
||||
{ 0, 74, 9, 0 }, { 0, 20, 9, 0 }, { 0, 74, 9, 0 }, { 0, 20, 9, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 0, 0 }, { 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: linear-rgb */
|
||||
{ 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 },
|
||||
{ 0, 0, 4, 0 }, { 0, 0, 4, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: linear-rgb+alpha */
|
||||
{ 0, 126, 143, 0 }, { 0, 9, 7, 0 }, { 0, 74, 9, 0 }, { 0, 16, 9, 0 },
|
||||
{ 0, 4, 4, 0 }, { 0, 5, 4, 0 }, { 0, 0, 0, 0 }, { 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-sRGB-gray */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-sRGB-gray+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-sRGB-rgb */
|
||||
{ 0, 0, 13, 0 }, { 0, 0, 13, 0 }, { 0, 0, 8, 0 }, { 0, 0, 8, 0 },
|
||||
{ 0, 0, 673, 0 }, { 0, 0, 673, 0 }, { 0, 0, 674, 0 }, { 0, 0, 674, 0 },
|
||||
{ 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 460, 0 }, { 0, 0, 460, 0 }, { 0, 0, 263, 0 }, { 0, 0, 263, 0 }
|
||||
}, { /* input: color-mapped-sRGB-rgb+alpha */
|
||||
{ 0, 6, 8, 0 }, { 0, 7, 8, 0 }, { 0, 75, 8, 0 }, { 0, 9, 8, 0 },
|
||||
{ 0, 585, 427, 0 }, { 0, 585, 427, 0 }, { 0, 717, 409, 0 }, { 0, 717, 409, 0 },
|
||||
{ 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 13323, 460, 0 }, { 0, 334, 460, 0 }, { 0, 16480, 263, 0 }, { 0, 243, 263, 0 }
|
||||
}, { /* input: color-mapped-linear-gray */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 282, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-gray+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 253, 282, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-rgb */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 265, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-rgb+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 243, 265, 0 }
|
||||
}
|
||||
};
|
||||
static png_uint_16 gpc_error_via_linear[16][4/*out*/][4] =
|
||||
{
|
||||
{ /* input: sRGB-gray */
|
||||
{ 0, 0, 7, 0 }, { 0, 0, 7, 0 }, { 0, 0, 7, 0 }, { 0, 0, 7, 0 }
|
||||
}, { /* input: sRGB-gray+alpha */
|
||||
{ 0, 15, 15, 0 }, { 0, 186, 15, 0 }, { 0, 15, 15, 0 }, { 0, 186, 15, 0 }
|
||||
}, { /* input: sRGB-rgb */
|
||||
{ 0, 0, 19, 0 }, { 0, 0, 19, 0 }, { 0, 0, 15, 0 }, { 0, 0, 15, 0 }
|
||||
}, { /* input: sRGB-rgb+alpha */
|
||||
{ 0, 12, 14, 0 }, { 0, 180, 14, 0 }, { 0, 14, 15, 0 }, { 0, 186, 15, 0 }
|
||||
}, { /* input: linear-gray */
|
||||
{ 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 }
|
||||
}, { /* input: linear-gray+alpha */
|
||||
{ 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 }
|
||||
}, { /* input: linear-rgb */
|
||||
{ 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 }
|
||||
}, { /* input: linear-rgb+alpha */
|
||||
{ 0, 1, 1, 0 }, { 0, 8, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 }
|
||||
}, { /* input: color-mapped-sRGB-gray */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-sRGB-gray+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-sRGB-rgb */
|
||||
{ 0, 0, 13, 0 }, { 0, 0, 13, 0 }, { 0, 0, 14, 0 }, { 0, 0, 14, 0 }
|
||||
}, { /* input: color-mapped-sRGB-rgb+alpha */
|
||||
{ 0, 4, 8, 0 }, { 0, 9, 8, 0 }, { 0, 8, 3, 0 }, { 0, 32, 3, 0 }
|
||||
}, { /* input: color-mapped-linear-gray */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-gray+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-rgb */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}, { /* input: color-mapped-linear-rgb+alpha */
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
|
||||
}
|
||||
};
|
||||
static png_uint_16 gpc_error_to_colormap[8/*i*/][8/*o*/][4] =
|
||||
{
|
||||
{ /* input: sRGB-gray */
|
||||
{ 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 },
|
||||
{ 0, 0, 560, 0 }, { 0, 0, 560, 0 }, { 0, 0, 560, 0 }, { 0, 0, 560, 0 }
|
||||
}, { /* input: sRGB-gray+alpha */
|
||||
{ 0, 19, 2, 0 }, { 0, 255, 2, 25 }, { 0, 88, 2, 0 }, { 0, 255, 2, 25 },
|
||||
{ 0, 1012, 745, 0 }, { 0, 16026, 745, 6425 }, { 0, 1012, 745, 0 }, { 0, 16026, 745, 6425 }
|
||||
}, { /* input: sRGB-rgb */
|
||||
{ 0, 0, 19, 0 }, { 0, 0, 19, 0 }, { 0, 0, 25, 0 }, { 0, 0, 25, 0 },
|
||||
{ 0, 0, 937, 0 }, { 0, 0, 937, 0 }, { 0, 0, 13677, 0 }, { 0, 0, 13677, 0 }
|
||||
}, { /* input: sRGB-rgb+alpha */
|
||||
{ 0, 63, 77, 0 }, { 0, 255, 19, 25 }, { 0, 220, 25, 0 }, { 0, 255, 25, 67 },
|
||||
{ 0, 17534, 18491, 0 }, { 0, 15614, 2824, 6425 }, { 0, 14019, 13677, 0 }, { 0, 48573, 13677, 17219 }
|
||||
}, { /* input: linear-gray */
|
||||
{ 0, 0, 73, 0 }, { 0, 0, 73, 0 }, { 0, 0, 73, 0 }, { 0, 0, 73, 0 },
|
||||
{ 0, 0, 18817, 0 }, { 0, 0, 18817, 0 }, { 0, 0, 18817, 0 }, { 0, 0, 18817, 0 }
|
||||
}, { /* input: linear-gray+alpha */
|
||||
{ 0, 74, 74, 0 }, { 0, 255, 74, 25 }, { 0, 97, 74, 0 }, { 0, 255, 74, 25 },
|
||||
{ 0, 18919, 18907, 0 }, { 0, 24549, 18907, 6552 }, { 0, 18919, 18907, 0 }, { 0, 24549, 18907, 6552 }
|
||||
}, { /* input: linear-rgb */
|
||||
{ 0, 0, 73, 0 }, { 0, 0, 73, 0 }, { 0, 0, 98, 0 }, { 0, 0, 98, 0 },
|
||||
{ 0, 0, 18664, 0 }, { 0, 0, 18664, 0 }, { 0, 0, 24998, 0 }, { 0, 0, 24998, 0 }
|
||||
}, { /* input: linear-rgb+alpha */
|
||||
{ 0, 181, 196, 0 }, { 0, 255, 61, 25 }, { 206, 187, 98, 0 }, { 0, 255, 98, 67 },
|
||||
{ 0, 18141, 18137, 0 }, { 0, 17494, 17504, 6553 }, { 0, 24979, 24992, 0 }, { 0, 46509, 24992, 17347 }
|
||||
}
|
||||
};
|
||||
/* END MACHINE GENERATED */
|
||||
#endif /* COLORMAP flag check */
|
||||
#endif /* flag checks */
|
||||
|
||||
@@ -2005,7 +2154,7 @@ typedef struct
|
||||
int in_opaque; /* Value of input alpha that is opaque */
|
||||
int is_palette; /* Sample values come from the palette */
|
||||
int accumulate; /* Accumlate component errors (don't log) */
|
||||
int output_8bit; /* Output is 8-bit (else 16-bit) */
|
||||
int output_8bit; /* Output is 8 bit (else 16 bit) */
|
||||
|
||||
void (*in_gp)(Pixel*, png_const_voidp);
|
||||
void (*out_gp)(Pixel*, png_const_voidp);
|
||||
@@ -3130,7 +3279,7 @@ write_one_file(Image *output, Image *image, int convert_to_8bit)
|
||||
(void) unlink(tmpfile);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if (f != NULL)
|
||||
{
|
||||
if (png_image_write_to_stdio(&image->image, f, convert_to_8bit,
|
||||
@@ -3573,23 +3722,6 @@ main(int argc, char **argv)
|
||||
{
|
||||
unsigned int in;
|
||||
|
||||
printf("/* contrib/libtests/pngstest-errors.h\n");
|
||||
printf(" *\n");
|
||||
printf(" * BUILT USING:" PNG_HEADER_VERSION_STRING);
|
||||
printf(" *\n");
|
||||
printf(" * This code is released under the libpng license.\n");
|
||||
printf(" * For conditions of distribution and use, see the disclaimer\n");
|
||||
printf(" * and license in png.h\n");
|
||||
printf(" *\n");
|
||||
printf(" * THIS IS A MACHINE GENERATED FILE: do not edit it directly!\n");
|
||||
printf(" * Instead run:\n");
|
||||
printf(" *\n");
|
||||
printf(" * pngstest --accumulate\n");
|
||||
printf(" *\n");
|
||||
printf(" * on as many PNG files as possible; at least PNGSuite and\n");
|
||||
printf(" * contrib/libtests/testpngs.\n");
|
||||
printf(" */\n");
|
||||
|
||||
printf("static png_uint_16 gpc_error[16/*in*/][16/*out*/][4/*a*/] =\n");
|
||||
printf("{\n");
|
||||
for (in=0; in<16; ++in)
|
||||
@@ -3679,7 +3811,6 @@ main(int argc, char **argv)
|
||||
putchar('\n');
|
||||
}
|
||||
printf("};\n");
|
||||
printf("/* END MACHINE GENERATED */\n");
|
||||
}
|
||||
|
||||
if (retval == 0 && touch != NULL)
|
||||
|
||||
@@ -363,7 +363,7 @@ ancillary(const char *name)
|
||||
return PNG_CHUNK_ANCILLARY(PNG_U32(name[0], name[1], name[2], name[3]));
|
||||
}
|
||||
|
||||
#ifdef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED
|
||||
#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
|
||||
static int
|
||||
ancillaryb(const png_byte *name)
|
||||
{
|
||||
@@ -554,7 +554,7 @@ read_callback(png_structp pp, png_unknown_chunkp pc)
|
||||
/* However if there is no support to store unknown chunks don't ask libpng to
|
||||
* do it; there will be an png_error.
|
||||
*/
|
||||
# ifdef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED
|
||||
# ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
|
||||
return discard;
|
||||
# else
|
||||
return 1; /*handled; discard*/
|
||||
@@ -562,7 +562,7 @@ read_callback(png_structp pp, png_unknown_chunkp pc)
|
||||
}
|
||||
#endif /* READ_USER_CHUNKS_SUPPORTED */
|
||||
|
||||
#ifdef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED
|
||||
#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
|
||||
static png_uint_32
|
||||
get_unknown(display *d, png_infop info_ptr, int after_IDAT)
|
||||
{
|
||||
@@ -722,17 +722,11 @@ check(FILE *fp, int argc, const char **argv, png_uint_32p flags/*out*/,
|
||||
* in this case, so we just check the arguments! This could
|
||||
* be improved in the future by using the read callback.
|
||||
*/
|
||||
# if PNG_LIBPNG_VER >= 10700 &&\
|
||||
!defined(PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED)
|
||||
if (option < PNG_HANDLE_CHUNK_IF_SAFE)
|
||||
# endif /* 1.7+ SAVE_UNKNOWN_CHUNKS */
|
||||
{
|
||||
png_byte name[5];
|
||||
png_byte name[5];
|
||||
|
||||
memcpy(name, chunk_info[chunk].name, 5);
|
||||
png_set_keep_unknown_chunks(d->png_ptr, option, name, 1);
|
||||
chunk_info[chunk].keep = option;
|
||||
}
|
||||
memcpy(name, chunk_info[chunk].name, 5);
|
||||
png_set_keep_unknown_chunks(d->png_ptr, option, name, 1);
|
||||
chunk_info[chunk].keep = option;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -741,12 +735,7 @@ check(FILE *fp, int argc, const char **argv, png_uint_32p flags/*out*/,
|
||||
case 7: /* default */
|
||||
if (memcmp(argv[i], "default", 7) == 0)
|
||||
{
|
||||
# if PNG_LIBPNG_VER >= 10700 &&\
|
||||
!defined(PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED)
|
||||
if (option < PNG_HANDLE_CHUNK_IF_SAFE)
|
||||
# endif /* 1.7+ SAVE_UNKNOWN_CHUNKS */
|
||||
png_set_keep_unknown_chunks(d->png_ptr, option, NULL, 0);
|
||||
|
||||
png_set_keep_unknown_chunks(d->png_ptr, option, NULL, 0);
|
||||
d->keep = option;
|
||||
continue;
|
||||
}
|
||||
@@ -756,12 +745,7 @@ check(FILE *fp, int argc, const char **argv, png_uint_32p flags/*out*/,
|
||||
case 3: /* all */
|
||||
if (memcmp(argv[i], "all", 3) == 0)
|
||||
{
|
||||
# if PNG_LIBPNG_VER >= 10700 &&\
|
||||
!defined(PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED)
|
||||
if (option < PNG_HANDLE_CHUNK_IF_SAFE)
|
||||
# endif /* 1.7+ SAVE_UNKNOWN_CHUNKS */
|
||||
png_set_keep_unknown_chunks(d->png_ptr, option, NULL, -1);
|
||||
|
||||
png_set_keep_unknown_chunks(d->png_ptr, option, NULL, -1);
|
||||
d->keep = option;
|
||||
|
||||
for (chunk = 0; chunk < NINFO; ++chunk)
|
||||
@@ -1258,4 +1242,4 @@ main(void)
|
||||
/* So the test is skipped: */
|
||||
return 77;
|
||||
}
|
||||
#endif /* SET_UNKNOWN_CHUNKS && READ*/
|
||||
#endif /* SET_UNKNOWN_CHUNKS && READ */
|
||||
|
||||
@@ -62,7 +62,6 @@ read_png(FILE *fp)
|
||||
{
|
||||
png_size_t rowbytes = png_get_rowbytes(png_ptr, info_ptr);
|
||||
|
||||
/* Failure to initialize these is harmless */
|
||||
row = malloc(rowbytes);
|
||||
display = malloc(rowbytes);
|
||||
|
||||
@@ -71,12 +70,7 @@ read_png(FILE *fp)
|
||||
|
||||
{
|
||||
png_uint_32 height = png_get_image_height(png_ptr, info_ptr);
|
||||
# ifdef PNG_READ_INTERLACING_SUPPORTED
|
||||
int passes = png_set_interlace_handling(png_ptr);
|
||||
# else /* !READ_INTERLACING */
|
||||
int passes = png_get_interlace_type(png_ptr, info_ptr) ==
|
||||
PNG_INTERLACE_ADAM7 ? PNG_INTERLACE_ADAM7_PASSES : 1;
|
||||
# endif /* !READ_INTERLACING */
|
||||
int passes = png_set_interlace_handling(png_ptr);
|
||||
int pass;
|
||||
|
||||
png_start_read_image(png_ptr);
|
||||
@@ -85,11 +79,6 @@ read_png(FILE *fp)
|
||||
{
|
||||
png_uint_32 y = height;
|
||||
|
||||
# ifndef PNG_READ_INTERLACING_SUPPORTED
|
||||
if (passes == PNG_INTERLACE_ADAM7_PASSES)
|
||||
y = PNG_PASS_ROWS(y, pass);
|
||||
# endif /* READ_INTERLACING */
|
||||
|
||||
/* NOTE: this trashes the row each time; interlace handling won't
|
||||
* work, but this avoids memory thrashing for speed testing.
|
||||
*/
|
||||
|
||||
@@ -634,7 +634,7 @@ int validation_muldiv(int count, int argc, char **argv)
|
||||
{
|
||||
png_fixed_point result;
|
||||
/* NOTE: your mileage may vary, a type is required below that can
|
||||
* hold 64 bits or more, if floating point is used a 64-bit or
|
||||
* hold 64 bits or more, if floating point is used a 64 bit or
|
||||
* better mantissa is required.
|
||||
*/
|
||||
long long int fp, fpround;
|
||||
@@ -721,7 +721,7 @@ int validation_muldiv(int count, int argc, char **argv)
|
||||
}
|
||||
while (--count > 0);
|
||||
|
||||
printf("%d tests including %d overflows, %d passed, %d failed (%d 64-bit "
|
||||
printf("%d tests including %d overflows, %d passed, %d failed (%d 64 bit "
|
||||
"errors)\n", tested, overflow, passed, error, error64);
|
||||
return 0;
|
||||
}
|
||||
@@ -799,13 +799,13 @@ int validation_gamma(int argc, char **argv)
|
||||
if (i == 0 && png_log8bit(i) != 0xffffffff ||
|
||||
i != 0 && png_log8bit(i) != floor(correct+.5))
|
||||
{
|
||||
fprintf(stderr, "8-bit log error: %d: got %u, expected %f\n",
|
||||
fprintf(stderr, "8 bit log error: %d: got %u, expected %f\n",
|
||||
i, png_log8bit(i), correct);
|
||||
}
|
||||
}
|
||||
|
||||
if (!silent)
|
||||
printf("maximum 8-bit log error = %f\n", maxerr);
|
||||
printf("maximum 8 bit log error = %f\n", maxerr);
|
||||
|
||||
maxerr = 0;
|
||||
for (i=0; i<65536; ++i)
|
||||
@@ -821,14 +821,14 @@ int validation_gamma(int argc, char **argv)
|
||||
{
|
||||
if (error > .68) /* By experiment error is less than .68 */
|
||||
{
|
||||
fprintf(stderr, "16-bit log error: %d: got %u, expected %f"
|
||||
fprintf(stderr, "16 bit log error: %d: got %u, expected %f"
|
||||
" error: %f\n", i, png_log16bit(i), correct, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!silent)
|
||||
printf("maximum 16-bit log error = %f\n", maxerr);
|
||||
printf("maximum 16 bit log error = %f\n", maxerr);
|
||||
|
||||
/* Now exponentiations. */
|
||||
maxerr = 0;
|
||||
@@ -841,13 +841,13 @@ int validation_gamma(int argc, char **argv)
|
||||
maxerr = fabs(error);
|
||||
if (fabs(error) > 1883) /* By experiment. */
|
||||
{
|
||||
fprintf(stderr, "32-bit exp error: %d: got %u, expected %f"
|
||||
fprintf(stderr, "32 bit exp error: %d: got %u, expected %f"
|
||||
" error: %f\n", i, png_exp(i), correct, error);
|
||||
}
|
||||
}
|
||||
|
||||
if (!silent)
|
||||
printf("maximum 32-bit exp error = %f\n", maxerr);
|
||||
printf("maximum 32 bit exp error = %f\n", maxerr);
|
||||
|
||||
maxerr = 0;
|
||||
for (i=0; i<=0xfffff; ++i)
|
||||
@@ -859,13 +859,13 @@ int validation_gamma(int argc, char **argv)
|
||||
maxerr = fabs(error);
|
||||
if (fabs(error) > .50002) /* By experiment */
|
||||
{
|
||||
fprintf(stderr, "8-bit exp error: %d: got %u, expected %f"
|
||||
fprintf(stderr, "8 bit exp error: %d: got %u, expected %f"
|
||||
" error: %f\n", i, png_exp8bit(i), correct, error);
|
||||
}
|
||||
}
|
||||
|
||||
if (!silent)
|
||||
printf("maximum 8-bit exp error = %f\n", maxerr);
|
||||
printf("maximum 8 bit exp error = %f\n", maxerr);
|
||||
|
||||
maxerr = 0;
|
||||
for (i=0; i<=0xfffff; ++i)
|
||||
@@ -877,13 +877,13 @@ int validation_gamma(int argc, char **argv)
|
||||
maxerr = fabs(error);
|
||||
if (fabs(error) > .524) /* By experiment */
|
||||
{
|
||||
fprintf(stderr, "16-bit exp error: %d: got %u, expected %f"
|
||||
fprintf(stderr, "16 bit exp error: %d: got %u, expected %f"
|
||||
" error: %f\n", i, png_exp16bit(i), correct, error);
|
||||
}
|
||||
}
|
||||
|
||||
if (!silent)
|
||||
printf("maximum 16-bit exp error = %f\n", maxerr);
|
||||
printf("maximum 16 bit exp error = %f\n", maxerr);
|
||||
} /* !onlygamma */
|
||||
|
||||
/* Test the overall gamma correction. */
|
||||
@@ -913,7 +913,7 @@ int validation_gamma(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (!silent)
|
||||
printf("gamma %f: maximum 8-bit error %f\n", g, maxerr);
|
||||
printf("gamma %f: maximum 8 bit error %f\n", g, maxerr);
|
||||
|
||||
maxerr = 0;
|
||||
for (j=0; j<65536; ++j)
|
||||
@@ -932,7 +932,7 @@ int validation_gamma(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (!silent)
|
||||
printf("gamma %f: maximum 16-bit error %f\n", g, maxerr);
|
||||
printf("gamma %f: maximum 16 bit error %f\n", g, maxerr);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -266,7 +266,7 @@ BOOL png2pnm (FILE *png_file, FILE *pnm_file, FILE *alpha_file,
|
||||
png_set_expand (png_ptr);
|
||||
|
||||
#ifdef NJET
|
||||
/* downgrade 16-bit images to 8-bit */
|
||||
/* downgrade 16-bit images to 8 bit */
|
||||
if (bit_depth == 16)
|
||||
png_set_strip_16 (png_ptr);
|
||||
/* transform grayscale images into full-color */
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* copyright (C) 1999 by Willem van Schaik <willem@schaik.com>
|
||||
*
|
||||
* version 1.0 - 1999.10.15 - First version.
|
||||
* version 1.1 - 2015.07.29 - Fixed leaks (Glenn Randers-Pehrson)
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and
|
||||
* its documentation for any purpose and without fee is hereby granted,
|
||||
@@ -201,17 +200,17 @@ BOOL pnm2png (FILE *pnm_file, FILE *png_file, FILE *alpha_file, BOOL interlace,
|
||||
char width_token[16];
|
||||
char height_token[16];
|
||||
char maxval_token[16];
|
||||
volatile int color_type=1;
|
||||
volatile int color_type;
|
||||
unsigned long ul_width=0, ul_alpha_width=0;
|
||||
unsigned long ul_height=0, ul_alpha_height=0;
|
||||
unsigned long ul_maxval=0;
|
||||
volatile png_uint_32 width=0, height=0;
|
||||
volatile png_uint_32 alpha_width=0, alpha_height=0;
|
||||
volatile png_uint_32 width, height;
|
||||
volatile png_uint_32 alpha_width, alpha_height;
|
||||
png_uint_32 maxval;
|
||||
volatile int bit_depth = 0;
|
||||
int channels=0;
|
||||
int channels;
|
||||
int alpha_depth = 0;
|
||||
int alpha_present=0;
|
||||
int alpha_present;
|
||||
int row, col;
|
||||
BOOL raw, alpha_raw = FALSE;
|
||||
#if defined(PNG_WRITE_INVERT_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
|
||||
@@ -357,10 +356,8 @@ BOOL pnm2png (FILE *pnm_file, FILE *png_file, FILE *alpha_file, BOOL interlace,
|
||||
channels = 3;
|
||||
else if (color_type == PNG_COLOR_TYPE_RGB_ALPHA)
|
||||
channels = 4;
|
||||
#if 0
|
||||
else
|
||||
channels = 0; /* cannot happen */
|
||||
#endif
|
||||
channels = 0; /* should not happen */
|
||||
|
||||
alpha_present = (channels - 1) % 2;
|
||||
|
||||
@@ -432,16 +429,12 @@ BOOL pnm2png (FILE *pnm_file, FILE *png_file, FILE *alpha_file, BOOL interlace,
|
||||
NULL);
|
||||
if (!png_ptr)
|
||||
{
|
||||
free (png_pixels);
|
||||
png_pixels = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
info_ptr = png_create_info_struct (png_ptr);
|
||||
if (!info_ptr)
|
||||
{
|
||||
png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
|
||||
free (png_pixels);
|
||||
png_pixels = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -456,9 +449,7 @@ BOOL pnm2png (FILE *pnm_file, FILE *png_file, FILE *alpha_file, BOOL interlace,
|
||||
/* setjmp() must be called in every function that calls a PNG-reading libpng function */
|
||||
if (setjmp (png_jmpbuf(png_ptr)))
|
||||
{
|
||||
png_destroy_write_struct (&png_ptr, &info_ptr);
|
||||
free (png_pixels);
|
||||
png_pixels = NULL;
|
||||
png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -479,9 +470,7 @@ BOOL pnm2png (FILE *pnm_file, FILE *png_file, FILE *alpha_file, BOOL interlace,
|
||||
if ((row_pointers = (png_byte **)
|
||||
malloc (height * sizeof (png_bytep))) == NULL)
|
||||
{
|
||||
png_destroy_write_struct (&png_ptr, &info_ptr);
|
||||
free (png_pixels);
|
||||
png_pixels = NULL;
|
||||
png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
@@ -497,7 +486,7 @@ BOOL pnm2png (FILE *pnm_file, FILE *png_file, FILE *alpha_file, BOOL interlace,
|
||||
png_write_end (png_ptr, info_ptr);
|
||||
|
||||
/* clean up after the write, and free any memory allocated */
|
||||
png_destroy_write_struct (&png_ptr, &info_ptr);
|
||||
png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
|
||||
|
||||
if (row_pointers != (unsigned char**) NULL)
|
||||
free (row_pointers);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
|
||||
pngsuite
|
||||
--------
|
||||
Copyright (c) Willem van Schaik, 1999, 2011, 2012
|
||||
Two images (ftbbn0g01.png and ftbbn0g02.png) are by Glenn Randers-Pehrson, 2012
|
||||
(c) Willem van Schaik, 1999, 2011, 2012
|
||||
Two images are by Glenn Randers-Pehrson, 2012
|
||||
|
||||
Permission to use, copy, modify, and distribute these images for any
|
||||
purpose and without fee is hereby granted.
|
||||
|
||||
|
Before Width: | Height: | Size: 325 B |
|
Before Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 325 B |
|
Before Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 278 B |
|
Before Width: | Height: | Size: 264 B |
|
Before Width: | Height: | Size: 265 B |
|
Before Width: | Height: | Size: 251 B |
|
Before Width: | Height: | Size: 744 B |
|
Before Width: | Height: | Size: 744 B |
|
Before Width: | Height: | Size: 744 B |
|
Before Width: | Height: | Size: 744 B |
|
Before Width: | Height: | Size: 697 B |
|
Before Width: | Height: | Size: 697 B |
|
Before Width: | Height: | Size: 684 B |
|
Before Width: | Height: | Size: 684 B |
|
Before Width: | Height: | Size: 325 B |
|
Before Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 325 B |
|
Before Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 278 B |
|
Before Width: | Height: | Size: 264 B |
|
Before Width: | Height: | Size: 265 B |
|
Before Width: | Height: | Size: 251 B |
|
Before Width: | Height: | Size: 327 B |
|
Before Width: | Height: | Size: 313 B |
|
Before Width: | Height: | Size: 327 B |
|
Before Width: | Height: | Size: 313 B |
|
Before Width: | Height: | Size: 280 B |
|
Before Width: | Height: | Size: 266 B |
|
Before Width: | Height: | Size: 267 B |
|
Before Width: | Height: | Size: 253 B |
|
Before Width: | Height: | Size: 327 B |
|
Before Width: | Height: | Size: 313 B |
|
Before Width: | Height: | Size: 327 B |
|
Before Width: | Height: | Size: 313 B |
|
Before Width: | Height: | Size: 280 B |
|
Before Width: | Height: | Size: 266 B |
|
Before Width: | Height: | Size: 267 B |
|
Before Width: | Height: | Size: 253 B |
|
Before Width: | Height: | Size: 919 B |
|
Before Width: | Height: | Size: 919 B |
|
Before Width: | Height: | Size: 872 B |
|
Before Width: | Height: | Size: 859 B |
|
Before Width: | Height: | Size: 744 B |
|
Before Width: | Height: | Size: 744 B |
|
Before Width: | Height: | Size: 697 B |
|
Before Width: | Height: | Size: 684 B |
@@ -1,94 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Make a set of test PNG files, MAKEPNG is the name of the makepng executable
|
||||
# built from contrib/libtests/makepng.c
|
||||
|
||||
# Copyright (c) 2015 John Cunningham Bowler
|
||||
|
||||
# Last changed in libpng 1.7.0 [(PENDING RELEASE)]
|
||||
|
||||
# This code is released under the libpng license.
|
||||
# For conditions of distribution and use, see the disclaimer
|
||||
# and license in png.h
|
||||
|
||||
# The arguments say whether to build all the files or whether just to build the
|
||||
# ones that extend the code-coverage of libpng from the existing test files in
|
||||
# contrib/pngsuite.
|
||||
test -n "$MAKEPNG" || MAKEPNG=./makepng
|
||||
opts=
|
||||
|
||||
mp(){
|
||||
${MAKEPNG} $opts $1 "$3" "$4" "$3-$4$2.png"
|
||||
}
|
||||
|
||||
mpg(){
|
||||
if test "$1" = "none"
|
||||
then
|
||||
mp "" "" "$2" "$3"
|
||||
else
|
||||
mp "--$1" "-$1" "$2" "$3"
|
||||
fi
|
||||
}
|
||||
|
||||
mptrans(){
|
||||
if test "$1" = "none"
|
||||
then
|
||||
mp "--tRNS" "-tRNS" "$2" "$3"
|
||||
else
|
||||
mp "--tRNS --$1" "-$1-tRNS" "$2" "$3"
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
--small)
|
||||
opts="--small";;&
|
||||
|
||||
--all|--small)
|
||||
for g in none sRGB linear 1.8
|
||||
do
|
||||
for c in gray palette
|
||||
do
|
||||
for b in 1 2 4
|
||||
do
|
||||
mpg "$g" "$c" "$b"
|
||||
mptrans "$g" "$c" "$b"
|
||||
done
|
||||
done
|
||||
|
||||
mpg "$g" palette 8
|
||||
mptrans "$g" palette 8
|
||||
|
||||
for b in 8 16
|
||||
do
|
||||
for c in gray gray-alpha rgb rgb-alpha
|
||||
do
|
||||
mpg "$g" "$c" "$b"
|
||||
done
|
||||
for c in gray rgb
|
||||
do
|
||||
mptrans "$g" "$c" "$b"
|
||||
done
|
||||
done
|
||||
done;;
|
||||
|
||||
--coverage)
|
||||
# Comments below indicate cases known to be required and not duplicated
|
||||
# in other (required) cases; the aim is to get a minimal set that gives
|
||||
# the maxium code coverage.
|
||||
mpg none gray-alpha 8 # required: code coverage, sRGB opaque component
|
||||
mpg none palette 8 # required: basic palette read
|
||||
mpg 1.8 gray 2 # required: tests gamma threshold code
|
||||
mpg 1.8 palette 2 # required: code coverage
|
||||
mpg 1.8 palette 4 # required: code coverage
|
||||
mpg 1.8 palette 8 # error limits only
|
||||
mpg linear palette 8 # error limits only
|
||||
mpg linear rgb-alpha 16 # error limits only
|
||||
mpg sRGB palette 1 # required: code coverage
|
||||
mpg sRGB rgb-alpha 16 # required: code coverage: pngread.c:2422 untested
|
||||
:;;
|
||||
|
||||
*)
|
||||
echo "$0 $1: unknown argument, usage:" >&2
|
||||
echo " $0 [--all|--coverage|--small]" >&2
|
||||
exit 1
|
||||
esac
|
||||
|
Before Width: | Height: | Size: 342 B |
|
Before Width: | Height: | Size: 329 B |
|
Before Width: | Height: | Size: 342 B |
|
Before Width: | Height: | Size: 329 B |
|
Before Width: | Height: | Size: 295 B |
|
Before Width: | Height: | Size: 282 B |
|
Before Width: | Height: | Size: 282 B |
|
Before Width: | Height: | Size: 269 B |
|
Before Width: | Height: | Size: 350 B |
|
Before Width: | Height: | Size: 335 B |
|
Before Width: | Height: | Size: 350 B |
|
Before Width: | Height: | Size: 335 B |
|
Before Width: | Height: | Size: 303 B |
|
Before Width: | Height: | Size: 288 B |
|
Before Width: | Height: | Size: 290 B |
|
Before Width: | Height: | Size: 275 B |
|
Before Width: | Height: | Size: 400 B |
|
Before Width: | Height: | Size: 373 B |
|
Before Width: | Height: | Size: 400 B |
|
Before Width: | Height: | Size: 373 B |
|
Before Width: | Height: | Size: 353 B |
|
Before Width: | Height: | Size: 326 B |
|
Before Width: | Height: | Size: 340 B |