From owner-png-implement@ccrc.wustl.edu Mon Mar 1 07:18:56 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id HAA27114; Mon, 1 Mar 1999 07:18:55 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id HAA20745 for png-implement-out-rQGdGR2w; Mon, 1 Mar 1999 07:12:30 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from ns.euro.ge.com (ns.euro.ge.com [204.90.182.10]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with ESMTP id HAA20741 for ; Mon, 1 Mar 1999 07:12:13 -0600 (CST) Received: from smtp.euro.ge.com (smtp.euro.ge.com [205.173.90.6]) by ns.euro.ge.com (8.9.2/8.9.2) with ESMTP id NAA09225 for ; Mon, 1 Mar 1999 13:12:27 GMT Received: from zzimail1.innomed ([3.224.29.231]) by smtp.euro.ge.com (8.9.2/8.9.2) with ESMTP id NAA05738 for ; Mon, 1 Mar 1999 13:11:42 GMT Received: by ZZIMAIL1 with Internet Mail Service (5.5.2232.9) id ; Mon, 1 Mar 1999 14:05:55 +0100 Message-ID: From: "Kuhn, Harald (Innomed)" To: "'png-implement@dworkin.wustl.edu'" Subject: Problem with png_set_packing() Date: Mon, 1 Mar 1999 14:05:54 +0100 X-MS-TNEF-Correlator: MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2232.9) Content-Type: multipart/mixed; boundary="----_=_NextPart_000_01BE63E4.3D1BC138" Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_000_01BE63E4.3D1BC138 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello all, it's the first time I attempt to write a *.png file from within my application. My attempt is to write a 1-bit B&W Windows Device independent Bitmap, which I get from a scanner to a=20 PNG-file. As long as I don't use png_set_packing() erverything seems OK and I can view the Image with PSP 4. But the size of the file is = about=20 90 KB. If I use PSP to scan the same document the size is about 16KB. As I understood png_set_packing(), this function is to put more than 1 = pixel into one byte. So this seemed to be the right function to reduce the = size. But if I use png_set_packing(), the size is indeed about 16KB, but the imagedata is scrambled (see attachment). One help would be appreciate. Greetings Harald =20 Harald Kuhn Innomed=20 EDV-Systeme f=FCr die Medizin GmbH & Co. KG Lerchenbergstr. 15 89160 Dornstadt Tel: 07348/9861-68 Fax: 07348/9861-55 mailto:kh@innomed.de =20 ------_=_NextPart_000_01BE63E4.3D1BC138 Content-Type: application/ms-tnef Content-Transfer-Encoding: base64 eJ8+IjgNAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEIgAcAGAAAAElQTS5NaWNy b3NvZnQgTWFpbC5Ob3RlADEIAQWAAwAOAAAAzwcDAAEADgAFADYAAQAkAQEggAMADgAAAM8HAwAB AA4ABQA2AAEAJAEBCYABACEAAABDNUE0OTVFRENCQ0NEMjExQUJCMDAwQTBDOUE3NjQ0NgBVBwEE gAEAHwAAAFByb2JsZW0gd2l0aCBwbmdfc2V0X3BhY2tpbmcoKQBKCwENgAQAAgAAAAIAAgABA5AG ACwJAAAzAAAAAgFxAAEAAAAWAAAAAb5j5RxunnTYxs+lEdKUHQAgr0VzjQAAAwDeP69vAAADAAWA CCAGAAAAAADAAAAAAAAARgAAAABShQAA8BMAAB4AJYAIIAYAAAAAAMAAAAAAAABGAAAAAFSFAAAB AAAABAAAADguNQALAB6BCCAGAAAAAADAAAAAAAAARgAAAAAGhQAAAAAAAAMAJoAIIAYAAAAAAMAA AAAAAABGAAAAAAGFAAAAAAAACwAAgAggBgAAAAAAwAAAAAAAAEYAAAAAA4UAAAAAAAALAC+ACCAG AAAAAADAAAAAAAAARgAAAAAOhQAAAAAAAAMAAoAIIAYAAAAAAMAAAAAAAABGAAAAABCFAAAAAAAA AwAwgAggBgAAAAAAwAAAAAAAAEYAAAAAEYUAAAAAAAALAAOACCAGAAAAAADAAAAAAAAARgAAAAAU hQAAAAAAAAMAMoAIIAYAAAAAAMAAAAAAAABGAAAAABiFAAAAAAAAHgBBgAggBgAAAAAAwAAAAAAA AEYAAAAANoUAAAEAAAABAAAAAAAAAB4AQoAIIAYAAAAAAMAAAAAAAABGAAAAADeFAAABAAAAAQAA AAAAAAAeAEOACCAGAAAAAADAAAAAAAAARgAAAAA4hQAAAQAAAAEAAAAAAAAACwDGgAsgBgAAAAAA wAAAAAAAAEYAAAAAAIgAAAAAAAALAMiACyAGAAAAAADAAAAAAAAARgAAAAAFiAAAAAAAAAIBCRAB AAAAbwMAAGsDAAD8BAAATFpGdaEeg9kDAAoAcmNwZzEyNRYyAPgLYG4OEDAzMZ0B9yACpAPjAgBj aArAYHNldDAgBxMCgH2zCoAIyCA7CW8OMDUCgBkKgXVjAFALA3VsboUCIGULpiBIZWwJAHIgB0Bs LAqiCoQKgGkEdCcEIHRoZSBmlmkRIAVAdAdxIEkWQKkCQGVtBTF0FjB3BRDDGNAWQCAqLnAPIBfR 3mwXwQNhGVAXUGgLgRajdG15FkBwC1AN4BiwaX0CIC4F0BuxGMUEABkqMQQtYhdQIEImVyBiVwuA ZG93EMAWo0ScZXYN4BfAHuFlcAnwnwEAAjAegBdQAMBwLBlQ9xsQEPAYgWcRQBqEGcAE8D8AcBVA BcAZMRnAFpRQTuxHLRpCHIBBBCAJABoRTmEEIBiQHwBuJwVAdVURMCAaAV8RMV8KsGNCawuAZygp IASQdn0EkHkbAhogETAY4B81T95LFkAe8BiBIpEgH8AH0R0XokkAwCHQGtMgUFPIUCA0HIBCdRgh F7HlAJB6F8BvZheVGmEdUS8BoAhgBUEWozkRYEtC/RyASSuwGJAlgipiGTEigs0rBGEYYR8AY3UH gCCh8ysXLGcxNi2BFpokUS3x2yAhGAFvBHAlvykhMBsBtQQgZjKwYxxCHUVwKuEvBGAJcBeRA5Ex M1BpeJ8WABb1AjAWMBUxIGInMH0kIVMWMDSTJ6IJgBkiYuc2QhfABRBnaCHxNPYZMf8JcRRwOaQr UjGVKtIGkC3lfzNvNHIwWCASOTEw+CEwYtcq5QdwKdFkGLBhFvU40e8FAC9gAmA5MSgnoRiiANBq aC/iKTGbTzfhF7Bs9nAZUAhgbCigOZEb0Qlw7mMHMDgxFppHCdEYQA8g/R81IBXgCsAHQAsxFrgW lQhvYmoYsXBoXCefFcFIjiigSCQtcHVoGzUeSSKwA3A5MRaURURW/i0GsBgQOREX0EowEOAFwD5k CJAF0AmAK2ALgCBHYQbQSCAmIAhQHIBLekcWlEwEkBDwCfA5kHJJR4B0chyAMTUWlDh2OTFQEWBE BbAAgAGQZCp0FppUFgA6DIIgMAA3MzQ4Lzk4NokeMDY4FpRGYXhUH3sUAEiLYwBBFQA2AAtwbGEZ MDpraEALgEzTLv8BAFfBAUAVBUqeSasWlBHxAgBcsAAeAHAAAQAAAB8AAABQcm9ibGVtIHdpdGgg cG5nX3NldF9wYWNraW5nKCkAAAMAJgAAAAAAAwA2AAAAAAALAAIAAQAAAAMA/T/kBAAAQAA5APBu AT3kY74BAwDxPwcEAAAeADFAAQAAAAgAAABIQVJBTERLAAMAGkAAAAAAHgAwQAEAAAAIAAAASEFS QUxESwADABlAAAAAAAMAgBD/////CwDyEAEAAAACAUcAAQAAADEAAABjPURFO2E9IDtwPUlubm9t ZWQ7bD1aWklNQUlMMS05OTAzMDExMzA1NTRaLTUyMjMAAAAAAgH5PwEAAABMAAAAAAAAANynQMjA QhAatLkIACsv4YIBAAAAAAAAAC9PPUlOTk9NRUQvT1U9WkVOVFJBTEUvQ049UkVDSVBJRU5UUy9D Tj1IQVJBTERLAB4A+D8BAAAAFwAAAEt1aG4sIEhhcmFsZCAoSW5ub21lZCkAAB4AOEABAAAACAAA AEhBUkFMREsAAgH7PwEAAABMAAAAAAAAANynQMjAQhAatLkIACsv4YIBAAAAAAAAAC9PPUlOTk9N RUQvT1U9WkVOVFJBTEUvQ049UkVDSVBJRU5UUy9DTj1IQVJBTERLAB4A+j8BAAAAFwAAAEt1aG4s IEhhcmFsZCAoSW5ub21lZCkAAB4AOUABAAAACAAAAEhBUkFMREsAQAAHMExg+jzkY74BQAAIMDjB Gz3kY74BHgA9AAEAAAABAAAAAAAAAB4AHQ4BAAAAHwAAAFByb2JsZW0gd2l0aCBwbmdfc2V0X3Bh Y2tpbmcoKQAAHgA1EAEAAAAyAAAAPEZCRTBDNUM0MTlENUQxMTFBQkE0MDBBMEM5QTc2NDQ2MjA3 MjM5QFpaSU1BSUwxPgAAAAsAKQAAAAAACwAjAAAAAAADAAYQ4WtagQMABxC6AgAAAwAQEAAAAAAD ABEQAAAAAB4ACBABAAAAZQAAAEhFTExPQUxMLElUU1RIRUZJUlNUVElNRUlBVFRFTVBUVE9XUklU RUEqUE5HRklMRUZST01XSVRISU5NWUFQUExJQ0FUSU9OTVlBVFRFTVBUSVNUT1dSSVRFQTEtQklU QiZXV0kAAAAAAgF/AAEAAAAyAAAAPEZCRTBDNUM0MTlENUQxMTFBQkE0MDBBMEM5QTc2NDQ2MjA3 MjM5QFpaSU1BSUwxPgAAAOf9AgKQBgAOAAAAAQDrAgAAIAAgAAAAAAAuAQISgAMADgAAAM8HAgAa ABAACQALAAUAGwECE4ADAA4AAADPBwMAAQAOAAsAEgABAAYBAhGABgC4DQAAAQAJAAAD3AYAAAAA IQYAAAAABQAAAAkCAAAAAAUAAAABAv///wClAAAAQQvGAIgAIAAgAAAAAAAgACAAAAAAACgAAAAg AAAAQAAAAAEAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AAAAPwAAAD8AAAB/AAAA/wA AAf8AAAP/AAAH/wAAD8hBgAAQQtGAGYAIAAgAAAAAAAgACAAAAAAACgAAAAgAAAAIAAAAAEAGAAA AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQA AIQAAISEhISEhISEhACEhACEhACEhACEhACEhACEhACEhACEhACEhAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISEhACEhACE hACEhACEhACEhACEhACEhACEhACEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8A AP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISEhACEhACEhACEhACEhACEhACEhACEhACE hACEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQA AIQAAIQAAISEhISEhISEhACEhACEhACEhACEhACEhACEhACEhACEhACEhAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISEhACE hACEhACEhACEhACEhACEhACEhACEhACEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8A AP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISEhACEhACEhACEhACEhACEhACEhACE hACEhACEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8A AIQAAIQAAIQAAISEhISEhISEhACEhACEhACEhACEhACEhACEhACEhACEhACEhAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISE hACEhACEhACEhACEhACEhACEhACEhACEhACEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8A AP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISEhACEhACEhACEhACEhACEhACE hACEhACEhACEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8A AP8AAIQAAIQAAIQAAISEhISEhISEhACEhACEhACEhACEhACEhACEhACEhACEhACEhAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISE hISEhACEhACEhACEhACEhACEhACEhACEhACEhACEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISEhACEhACEhACEhACEhACE hACEhACEhACEhACEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8A AP8AAP8AAIQAAIQAAIQAAISEhISEhISEhACEhACEhACEhACEhACEhACEhACEhACEhACEhAAAAACE AACEAACEAACEAACEAACEAACEAACEAACEAACEAACEAACEAACEAACEAACEAACEAACEAACEAACEAACE AACEAACEAACEAACEAACEAACEAACEhACEhACEhACEhACEhAAAAAAA//8A//8A//8A//8A//8A//8A //8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//+E AACEhACEhACEhACEhACEhAAAAAAA//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A //8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//+EAACEhACEhACEhACEhACEhAAA AAAA//8A//8A//8A//8A//8AAAAA//8A//8A//8A//8AAAAA//8A//8AAAAA//8A//8AAAAAAAAA //8A//8A//8A//8A//8A//8A//+EAACEhACEhACEhACEhACEhAAAAAAA//8A//8A//8A//8A//8A AAAA//8A//8A//8A//8AAAAA//8A//8AAAAA//8AAAAA//8A//8AAAAA//8A//8A//8A//8A//8A //+EAACEhACEhACEhACEhACEhAAAAAAA//8A//8A//8A//8A//8AAAAAAAAAAAAA//8A//8AAAAA //8AAAAAAAAA//8AAAAA//8AAAAAAAAA//8A//8A//8A//8A//8A//+EAACEhACEhACEhACEhACE hAAAAAAA//8A//8A//8A//8A//8AAAAA//8A//8AAAAA//8AAAAAAAAA//8AAAAA//8AAAAA//8A //8A//8A//8A//8A//8A//8A//8A//+EAACEhACEhACEhACEhACEhAAAAAAA//8A//8A//8A//8A //8AAAAAAAAAAAAA//8A//8AAAAA//8A//8AAAAA//8A//8AAAAAAAAAAAAA//8A//8A//8A//8A //8A//+EAACEhACEhACEhACEhACEhAAAAAAA//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A //8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//+EAACEhACEhACEhACE hACEhAAAAAAA//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A//8A //8A//8A//8A//8A//8A//8A//8A//8A//+EAACEhACEhACEhACEhACEhAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISEhACE hACEhACEhIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8A AP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISEhACEhACEhAAAAACEhISEhISEhISE hISEhISEhIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8A AIQAAIQAAIQAAISEhISEhISEhACEhACEhAAAAACEhISEhISEhISEhISEhIQAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISE hACEhACEhAAAAACEhISEhISEhISEhIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8A AP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISEhISEhACEhACEhAAAAACEhISEhISE hIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8A AP8AAIQAAIQAAIQAAISEhISEhISEhACEhACEhAAAAACEhISEhIQAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAIQAAIQAAIQAAISEhISE hISEhACEhACEhAAAAACEhIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAADAAAAAAAdqwIQgAEACQAAAFRlc3QucG5nABMDAg+ABgAvQQAAiVBO Rw0KGgoAAAANSUhEUgAACa8AAA2zAQAAAADNZy59AAAgAElEQVR42u3dv48kSXbYcf4LMg8yZciQ I2qhG2MBlifrRJkyBOgMQTvGkjMGoSmAd+yUTYeWcCAai/IkCAJxEBrHAVXYS5POzrUhgIfmXG0K ErgN6mY6qWtu59VlZYaysqq760f+qqiMzIh43yI4NzuTE5X16Yh470VlZP7Wf/wtXhqvQO2+sr+r PmqC7v5LHb3+aRUbum1sSv1dS59Et5KteP2vgw+Kbusn3b7yNjbJuvVsxevXNZ8AXdXyWrWxydQN VPurw1HSdLuwKfVTdHXYcnQNssnRHYPNA12L2WzWdZ9tFF0xbAPrCmPrdFgOG2ywwQYbh8EGG2yw wQYbbLDBBhtssMEGG2ywwQYbbLDBBhtssMEGG2ywwYYHbLDBBhtseMAGG2ywcRhssMEGG2wcBhts sMEGG2ywwQYbbLDBBhtssMEGG2ywwQYbbLDBBhtssMEGGx6wwQYbbLDhARtssMHGYbDBBhtssHEY bLDBBhtssFWyKTzM9TaFrk5vU+hqsaFrkk2Ibs9zmxTdzmzomgwJQnT7HqRCdHuuEqTojlNcOa9r dU1qr64PpfwIuoJWQCwOCVJ0YTNaJcAGG2ywwQYbbLDBBhtssMEGG2ywwQYbbLDBBhtssOEBG2yw wQYbHrDBBhtsHAYbbLDBBhuHwdYDW1b8JsXjRLZfr9nm7Y2hq8OGrkk2EbolmxqBzW3dU9jQNckm QfeEvA1dk+muCN3RqgS3dUu26DaxNYWyVHfD9jfJpMMHRfeQ7f4TpX7eyobuAdsffKKWf9nOhu4O Wxb9zb/rxobuPtv/+UT9us0D3QM2dduRDd09tiSddPBA94Bt/frNbSsbugdscVuFm6NbxZZ1YkN3 vya9LdjCDmzo7rP9v07xBd09tjjpyIauBhu6JtkE6G7ntnQENpd1T2JD94CtY4GL7g7br9+Vvw3b G0N3l+2rlz/owIbuIdu/+Ef//DutEyW6x2y//Z0/jlvZ0D1g+8e//Q/++LoDG7o6bOgesH3SJ5v/ upu87S65+k4nD3T30t0k/c7/jVp/BuhWVAntbOjqFVfoarOhq8bfBeOoriObh2zT3WG7tpjNNt3T 2dA1yea37thsjuqelu6iq82Grkk2v3WNFFf+645ZXDms60BxZaNu16fh5ujq9DaFrk5vU+hqsaFr kk2Ibt9P+hai25kNXZMhQYhu34NUiG7PVYIU3XGKK+d1rf7myl5dH+4WOIKuoJssWhwSpOjCZrRK gA022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthgwwM22GCDDTY8YIMNNtg4DDbYYIMNNg6DDTbY YIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMND9hggw022PCADTbYYOMw2GCDDTbYOAw2 2GCDDTbYYIMNNthggw022GCDDTbYOrApPMz1NoWuTm9T6GqxoWuSTYhu30/6FqLbmQ1dkyFBiG7f g1SIbs9VghTdcYor53Wtrknt1fWhlB9BV9AKiMUhQYoubEarBNhggw022GCDDTYDbCs8DLKhu8+W l7/+vCe2lRS2zeuv2hpD94yQIF3XbCT1Vrdky8LWY3N0j3tbcjG9U1FbY+geDtL84pV6n4YtjaFb Nbe9D3/QcmroVoaE9LbDe6KrGUnRNZmAeKz7zJaNNRBc1D2ZDd0dtknnT4DuLluyUtGy9dTQPRyk JdukpTF0KyJpOxu6lQlI2KXroquZt6FrMt31WNeCL/xc1HXne1KrdEu21AU2q3Q3bGHY5dTQPext yWf/uj2+oHs0twV/ld3cfD9p8UD3MCTk2TL9/ou3UXNj6FZE0u8n4dctjaFbmYB83aExdHXzNum6 ZtNdb3WtqBLc03XpIlSLdD28dncIXbmXPJ+ly5XiWrqwDZm3wYYHbLDBBhuHwQYbbLDBxmGwwQYb bELYEjz02OIujaGryYbu/tyW9Mrmu+6pIQFdk5HUd91xExBndZ3I2+zTLdm+9CNlGFB309vW13NF UdjSGLoVg/Tr97O2xtCtmttmXd4T3Ue27LTG0D2JDV2TbCJ0T8jb0D1gm/XZw0XoPrElceupoVux cHT9J13Y0D2Y29rZ0NUv5dE1uQLiue7IC0eu6rrxPal1ul59vTycrsRv5XvQLdkuQ1FsPeiWbO8n D8H2NrNNjaG7w7auwAq2D403/ikbQ/dwbsuDD4ubqOVYdPd7W/nKmtnQrWbr+EJXiw3dU/I2ha4W G7pagxRdk4NUiG7PNakU3XFKeed1rV4BsVfXh4WjEXQFrbf1qcvmIbGDlK1qsMEGG2ywwQYbbLDB BhtssAljy8rtbBkeJ/e22zVb1NwYukdsHXeQo6s1t6FrMiT4rztmJHVY14EExEZdf/K2QXW9e2Lk MLqP9wF5uI6itsbQPR6k/6qdDd0DtrBzY+ieHhLQNRlJBejuskXD/kRd1tXobeg+st0b6OFe6z6y 5V3eE93j3hbPOrChezi3Xc86eaB7EBJmnRpD9zCSpp0aQ1eLDV2TbH7raqS76Jpc3fVat2QLTbB5 rVtezHCZ/iro8EHRPWT7328+tN4wCd2jue1XFx+iKGplQ/cwJKw6rAugqxtJ0TWZgPiuO+638s7q OnExg326Pl27O6CuwEue+9DlSnEtXdgcjKSwwQYbbLDBBhtseMAGG2ywwYYHbLDBBhuHwQYbbLDB xmGwwQYbbLDBBhtssMEGG2ywwQYbbLDBBpsJNoWHud6m0NXpbQpdLTZ0TbIJ0e37Sd9CdDuzoWsy JAjR7XuQCtHtuUqQojtOceW8rtU1qb26PpTyI+gKWgGxOCRI0YXNaJUAG2ywwQYbbLDBBhtssMEG G2ywwQYbbLDBBpt1bGmIx+lsWUc2dHUGKbom5zYRuqOFBLd1bY+klup6koAMrSsrb+tNl3RXSxe2 cwZpgocO20PSqTF0Dwdp0qUxdDXnNnRNhgTfdbdsk3FOzVnd09jQ1Rqk6JrM2/zXPY0NXZNs/uue Nrehe8SW9fcJ/Nc9mQ1dk2ye655cXKFrsCb1XXfk1V1XdddsSzsXZ2zWLdnW3zgErZ8A3aPeljzE 7WzoHs1tedzFA129kICuyUjqve6oCYi7ui58K2+hrkcXMwypK+8akF50uXRGS/eJLYfNYEhA1+Qg zWEzeGo5bKJ0fYqkOWyW65K3aenCRm+DDTbYOAw22GCDDTbYYIMNNthggw022GCDDTbYYIMNNtjk sSk8zPU2ha5Ob1PoarGha5JNiG7fT/oWotuZDV2TIUGIbt+DVIhuz1WCFN1xiivnda2uSe3V9aGU H0FX0AqIxSFBii5sRqsE2GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw02PGCDDTbYYMMDNthg g43DYIMNNthg4zDYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTZuIDt+b1Po6vQ2biCrx4au STYhutxA1iwbuiZDghBdbiCrdW7cQNZob+MGsu7UpPbqcgNZG+Y2biArs0YXNEhZpoQNNthggw02 2GCDDTbYYIMNNthggw022GCDDTbYYIMNNjxggw022GDDAzbYYIONw2CDDTbYYOMw2GCDDTbYYIMN Nthggw022GCDDTbYYIMNNthggw0P2GCDDTbY8IANNthg4zDYYIMNNtg4DDbYYIMNNthggw022GCD DTbYYIMNNthggw02t9kUHuZ6m0JXp7cpdLXY0DXJJkS37yd9C9HtzIauyZAgRLfvQSpEt+cqQYru OMWV87pW16T26vpQyo+gK2gFxOKQIEUXNqNVAmywwQYbbLDBBhtssMEGG2ywwQYbbLDBBhtsNrLl KsJDgy2/7tIYus9smVJvArVhS1vY0N3tbW/WvyYF4Fzlr2saQ7c6JCSbP3ld3xi6T2xHfxS3NIbu Ode3idY1foG9n7q2XGDvmG7JlqqhX67rlnNbRzZ0Tw8J6JoMCUJ0n2vSQU/Ndd0TF47Q1WJD94gt nXSbKNGtZGvxQPdgkJ7GJlr3dDZ0VdV6W09sfutqsKF7wJb3yea17l7eVq4xBa0e6OqwoVtVJfTF 5rWudnElW9f0NSCe6pbfys/bM+Mc3aPeNlffvWj/oOgeDdI3F3VpzE5j6FbObbHK1GXjqaFbExIu 23NndI/Z5t1KDum6mgmIdF2zeZu3ulZc8uyebteLGXJ0ddnQNckmQfeUuQ1dkyFBgu54kdRpXev3 XNmp68tWtYF1he3wg21UXdhEz22wwQYbh8EGG2yusYV46LDNVBJ0aAzdA7awExu6e2zrCqwTG7oa IQFdk5FUhO5oCYjburbnbZbqepLuDq0rq0roTZfiSkv3iS1rXkCnuKplCzs0hu4eW/HrP+zIhu4e W5fG0NUKCeiajKTe646agLir60LeZqGuR+nukLq7d52RkZD1orthuz+BDd19tvbG0NVnQ/fUkICu yUgqQHfEBMRlXfu3qlmp681WtWF1y/uApGmfbBJ0Nw81We/WjdoaQ/cwJBQfIZv9oI0N3YpIGgWt jaGrnYCgazJv81x35PU2V3XdWKa0TterixmG05V4DUgPulw6o6ULm2sLR7DBBhtssMEGG2x4wAYb bLDBhgdsg7EpPMz1NoWuTm9T6GqxoWuSTYhuz3ObFN3ObOiaDAlCdPsepEJ0e64SpOiOU1w5r2t1 TWqvrg+l/Ai6glZALA4JUnRhM1olwAYbbLDBBhtssMEGG2ywwQYbbLDBBhtssMEGG2yw4QEbbLDB BhsesMEGG2wcBhtssMEGG4fBBhtssMEGG2ywwQabFLYcj7PYyqcEhHWNoVszSDuyoVsxt4WtjaGr HxJk61azZUcfJEe3nW3VrTG5umflbXJ1S7YsTPLYXA/3UHfb25K7D9EsvW8+NXSPB+mqZLure7pT ju4R2+MzxAq2OEobG0O3JiSkb4MKlRzdZrbiiFfFx33R0phs3coEJFPLqI1Ntu45eZtg3QGWKX3U fWRrY8nRrWR7fb1/etWNoXvY26JNxHhqJqhkQ7dqbluzTSYNbOhWs6mC7bbWA93aSLplU41swnX1 ExDRusbzNj91bflW3jFdxy5msEW3ZJtfFb+LXWCzRXezTHk1vYs/tp4augeD9H6a3/0iSu+TxvdE 93huK9le3qmby/rG0K0MCQVLwRZOk/rG0K2OpNksfPnxj6J5WN8YupUJSJIVbJ82NyZctyZvi+aT 1sYk656X7orVHaRK8E/XpuLKId1dttSNFMoGXQ02dKvY0p7YvNatuHSmm4dsXe2QIFvXdCT1VNeS BMQ13a5Pw83R1eltCl2d3qbQ1WJD1ySbEN2+n/QtRLczG7omQ4IQ3b4HqRDdJ7agl4lBiu4BW9zG hm7FIM07sonXPVimjDt9UHT1VnfF6xpd3fVXV4MNXZOL4l7rrtnSgZcPPNBds/0mU/W3vvjLp8bQ PextaZqrLKrsmM9s6B7PbQXbQs2nzR7oVoaE+4ItUmFS/UHRbYikhUqidrZP/uVxY+hWJiDTPF7M H//jtrox4bo1eVs2b29Msu5517eJ1S3ZZk9sFQdH5V/n6B6zPd3vIj9WeWZDt4ptvYu+mQ3dPbbH Zia3HdjQ3WfL1Kflv5zsHqTiw0+AbnUCUrA9nuxmCWD/1NCtZYu/mO2wVTcmWrc63e3IJle3dXU3 bui6cnX7unZXmO7Alzz7oluyvX+fqJY7Qufo7upubmjxPsk/ZK1hGd0n3cebY+erbJleffdl3vAJ 0H067HluKzzCh5fZnzWdGrpHbOvXw0v1YzX/Zd7wnujWpLvhL9X1zX96qlyvr48aQ7fuzgzfPrP9 SVTZmGjd1rytlk207nlsYnUHYfNPt0NxFQ3F5pBufzWpKN3Bdy/7oWvrLT0t161ky8dns1z3HDbB uucMUsG6A8xtPuraExKc0nXuSd926Pr6gHTDusKfK6+rK5xNwUZIgA02DoMNNthggw022GCDDTbY YIMNNthggw022GCDDTbYYIMNNthggw0P2GCDDTbY8IANNthg4zDYYIMNNtg4DDbYxmJTeJjrbQpd nd6m0NViQ9ckmxDdvp/0LUS3Mxu6JkOCEN2+B6kQ3Z6rBCm64xRXzutaXZPaq+tDKT+CrqAVEItD ghRd2IxWCbDBBhtssMEGG2ywwQYbbLDBBhtssMEGG2ywwQYbbHjABhtssMGGB2ywwQYbh8EGG2yw wcZhsMEGG2ywwQYbbLDBBhtssMEGG2ywwQYbbLDBBhtssMEGG2yw4QEbbPayZXic0dtClTQ2hq4W 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 dD3L24bSlbm6e7Yui+JauptrQJIkhu30uS2Zvv6weN/SGLpHgzSJPyzaC1x0q+a29nUBdPVDArom I6nXuqMnIG7qupK3WabrWbo7lK7MKuFsXYorLV3YWDiCDTbYOAw22GCDDTbYYIMNNthggw022GCD DTbYYIMNNthggw022GCDDTY8YIMNNthgwwM22GCDjcNg02dTeJjrbQpdnd6m0NViQ9ckmxDdnuc2 Kbqd2dA1GRKE6PY9SIXo9lwlSNEdp7hyXtfqmtReXR9K+RF0Ba2AWBwSpOjCZrRKgA022GCDDTbY YIMNNthggw022GCDDTbYYIMNNthgwwM22GCDDTY8YIMNNtg4DDbYYIMNNg6DDTbYYIMNNthggw02 2GCDDTbYYIMNNthggw022GCDDTbYYIMND9hggw022PCADTbYYOMw2GCDDTbYOAw22GCDDTbYYIMN Nthggw022GCDDTbYOrApPMz1NoWuTm9T6GqxoWuSTYhu30/6FqLbmQ1dkyFBiG7fg1SIbs9VghTd cYor53Wtrknt1fWhlB9BV9AKiMUhQYoubEarBNhggw022GCDDTbYYIMNNthggw022GCDDTbYYIMN Njxggw022GDDAzbYYIONw2CDDTbYYOMw2GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCD DTbY8IANNthggw0P2GCDDTYOgw022GCDjcNggw022GCDDTbYYIMNNthggw022GCDrQObwsNcb1Po 6vQ2ha4WG7om2YTo9v2kbyG6ndnQNRkShOj2PUiF6PZcJUjRHae4cl7X6prUXl0fSvkRdAWtgFgc EqTowma0SoANNthggw022GCDDTbYYIMNNthggw022GCDDTbYYMMDNthggw02PGCDDTbYOAw22GCD DTYO22FTeJjrbQpdnd7Gpm89NnRNsgnRZdO3WTZ0TYYEIbps+tY6NzZ9G+1tbPp2pya1V5dN3zbM bWz6llmjCxqkLFPCBhtssMEGri73IwAAAN5JREFUG2ywwQYbbLDBBhtssMEGG2ywwQYbbLDBBhse sMEGG2yw4QEbbLDBxmGwwQYbbLBxGGywwQYbbLDBBhtssMEGG2ywwQYbbLDBBhtssMGGB2ywwQYb bHjABhtssHEYbLDBBhtsHAYbbLDBBhtssMEGG2ywwQYbbLDBBhtssMEGm9tsCg9zvU2hq9PbFLpa bOiaZBOi2/eTvoXodmZD12RIEKLb9yAVottzlSBFd5ziynldq2tSe3V9KOVH0BW0AmJxSJCiC5vR KgE22GCDzS02hYe53qbQ3Tvo/wMSawvmnasu0wAAAABJRU5ErkJggtKWAgWQBgDgAAAAEQAAAAMA IQ4BAAAAAwALN+sCAAADACAOQE8AAAMA9w8AAAAAQAAHMABb+faZYb4BQAAIMLB7Mv7kY74BAwAF NwEAAABAAPt/AEDdo1dFswwCAQI3AQAAAAAAAABAAPx/AEDdo1dFswwDAP1/AAAAAB4AATABAAAA CQAAAFRlc3QucG5nAAAAAAMA+n8AAAAACwD+fwAAAAAeAAc3AQAAAAkAAABUZXN0LnBuZwAAAAAe AAM3AQAAAAUAAAAucG5nAAAAAAIB+Q8BAAAAEAAAABelle3LzNIRq7AAoMmnZEbcLQICkAYADgAA AAEAnAMAACAAIAAAAAAA4AACEoADAA4AAADOBwoABwAMAAkACQADAAcBAhOAAwAOAAAAzwcDAAEA DgAFADUAAQAjAQIRgAYAuA0AAAEACQAAA9wGAAAAACEGAAAAAAUAAAAJAgAAAAAFAAAAAQL///8A pQAAAEELxgCIACAAIAAAAAAAIAAgAAAAAAAoAAAAIAAAAEAAAAABAAEAAAAAAAABAAAAAAAAAAAA AAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////IQYAAEELRgBmACAA IAAAAAAAIAAgAAAAAAAoAAAAIAAAACAAAAABABgAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISE hISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEAAAAhISExsbGxsbGxsbGxsbG xsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG//////////////////////////////////////////// ////////////////////////hISEAAAAhISExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG xsbGxsbG//////////////////////////////////////////////////////////////////// hISEAAAAhISExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG//////////////// ////////////////////////////////////////////////////hISEAAAAhISExsbGxsbGxsbG xsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG////hISEhISEhISEhISEhISEhISEhISEhISEhISE hISEhISEhISEhISEhISEhISE////hISEAAAAhISExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG xsbGxsbGxsbG//////////////////////////////////////////////////////////////// ////hISEAAAAhISExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG////hISEhISE hISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISE////hISEAAAAhISExsbGxsbG xsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG//////////////////////////////////// ////////////////////////////////hISEAAAAhISExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG xsbGxsbGxsbGxsbG////hISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISE hISE////hISEAAAAhISExsbGhISEhISEhISEhISEhISEhISEhISEhISEhISExsbGxsbG//////// ////////////////////////////////////////////////////////////hISEAAAAhISExsbG hISEAAAAhIQAhIQAAAAAAAAAhIQAAAAAhISExsbGxsbG//////////////////////////////// ////////////////////////////////////hISEAAAAhISExsbGhISEhISEAAAAAAAA//////// AAAAhISEhISExsbGxsbG//////////////////////////////////////////////////////// ////////////hISEAAAAhISExsbGhISEhISEAAAA////////AAAAAAAAhISEhISExsbGxsbG//// hAAAhAAAhAAAhAAAhAAAhAAAhAAAhAAAhAAAhAAAhAAAhAAAhAAAhAAAhAAA////hISEAAAAhISE xsbGhISEAAAAAAAAAAAA////////////AAAAhISExsbGxsbG////hAAAhAAAhAAAhAAAhAAAhAAA hAAAhAAAhAAAhAAAhAAAhAAAhAAAhAAAhAAA////hISEAAAAhISExsbGAAAAxsbGxsbG//////// ////////AAAAhISExsbGxsbG//////////////////////////////////////////////////// ////////////////hISEAAAAhISExsbGAAAAxsbGxsbGAAAA////////////////AAAAxsbGxsbG ////////////////////////////////////////////////////////////////////hISEAAAA hISExsbGAAAAxsbGxsbGAAAA////////AAAAAAAAhISExsbGxsbG//////////////////////// ////////////////////////////////////////////hISEAAAAhISExsbGAAAAxsbGxsbGxsbG AAAA////////AAAAhISExsbGxsbG//////////////////////////////////////////////// ////////////////////hISEAAAAhISExsbGhISEAAAAxsbGxsbGxsbGxsbGxsbGAAAAhISExsbG xsbG////////////////////////////////////////////////////////////////////hISE AAAAhISExsbGhISEhISEAAAAAAAAAAAAAAAAAAAAhISEhISExsbGxsbG//////////////////// ////////////////////////////////////////////////hISEAAAAhISExsbGxsbGxsbGxsbG xsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG//////////////////////////////////////////// ////////////////////////hISEAAAAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISE hISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISE hISEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAKw0C EIABAA0AAABLVUhOX0h+MS5WQ0YAmQMCD4AGAPcAAABCRUdJTjpWQ0FSRA0KVkVSU0lPTjoyLjEN Ck46S3VobjtIYXJhbGQNCkZOOkt1aG4sIEhhcmFsZCAoSW5ub21lZCkNCk9SRzpJbm5vbWVkIEdt Ykg7RW50d2lja2x1bmcNClRJVExFOkhlcnINClRFTDtXT1JLO1ZPSUNFOjY4DQpBRFI7V09SSzo7 RW53aWNrbHVuZw0KTEFCRUw7V09SSzpFbndpY2tsdW5nDQpFTUFJTDtQUkVGO0lOVEVSTkVUOkhh cmFsZEtAaW5ub21lZC5kZQ0KUkVWOjE5OTgxMDA3VDExMDkwOVoNCkVORDpWQ0FSRA0KzEcCBZAG AAABAAARAAAAAwAhDgAAAAADAAs3nAMAAAMAIA4IDwAAAwD3DwAAAABAAAcwIAD+5+LxvQFAAAgw AEP6PORjvgEDAAU3AQAAAEAA+38AQN2jV0WzDAIBAjcBAAAAAAAAAEAA/H8AQN2jV0WzDAMA/X8A AAAAHgABMAEAAAAbAAAAS3VobiwgSGFyYWxkIChJbm5vbWVkKS52Y2YAAAMA+n8AAAAACwD+fwAA AAAeAAc3AQAAABsAAABLdWhuLCBIYXJhbGQgKElubm9tZWQpLnZjZgAAHgADNwEAAAAFAAAALnZj ZgAAAAACAfkPAQAAABAAAADypJXty8zSEauwAKDJp2RGRDk= ------_=_NextPart_000_01BE63E4.3D1BC138-- -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Mon Mar 1 08:31:19 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id IAA27814; Mon, 1 Mar 1999 08:31:18 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id IAA24604 for png-implement-out-rQGdGR2w; Mon, 1 Mar 1999 08:31:01 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from pantransit.reptiles.org ([209.157.136.18]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with SMTP id IAA24600 for ; Mon, 1 Mar 1999 08:31:00 -0600 (CST) From: smarry@vex.net Received: (qmail 23211 invoked by uid 204); 1 Mar 1999 14:29:31 -0000 Date: 1 Mar 1999 14:29:31 -0000 Message-ID: <19990301142931.23210.qmail@pantransit.reptiles.org> To: png-implement@ccrc.wustl.edu Subject: Re: Problem with png_set_packing() Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List >it's the first time I attempt to write a *.png file from within >my application. My attempt is to write a 1-bit B&W Windows >Device independent Bitmap, which I get from a scanner to a >PNG-file. As long as I don't use png_set_packing() erverything seems >OK and I can view the Image with PSP 4. But the size of the file is about >90 KB. If I use PSP to scan the same document the size is about 16KB. > >As I understood png_set_packing(), this function is to put more than 1 pixel >into one byte. So this seemed to be the right function to reduce the size. >But if I use png_set_packing(), the size is indeed about 16KB, but the >imagedata >is scrambled (see attachment). Unfortunately the attachment doesn't seem to be a PNG image. Here are my best guesses at the problem. png_set_packing() makes libpng put each pixel in its own byte on decoding. On encoding, it causes libpng to take each byte as one pixel value. You may be saving an 8 bit deep grayscale file instead of a 1 bit deep file. Is the source data a bitmap, with 8 pixels per byte? If so, you shouldn't use png_set_packing, as the pixels are already packed. I suppose it's possible that the data isn't being compressed. Are you calling png_set_compression_level() anywhere? Normally you shouldn't need to call this, as the default is reasonable. What does PSP (or another image viewing program) report for the bit depth and dimensions of the images created with the different methods? What version of libpng are you using? This will give us a better idea of what the problem is likely to be. -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Mon Mar 1 09:19:47 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id JAA28466; Mon, 1 Mar 1999 09:19:46 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id JAA26951 for png-implement-out-rQGdGR2w; Mon, 1 Mar 1999 09:19:41 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from ns.euro.ge.com (ns.euro.ge.com [204.90.182.10]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with ESMTP id JAA26947 for ; Mon, 1 Mar 1999 09:19:33 -0600 (CST) Received: from smtp.euro.ge.com (smtp.euro.ge.com [205.173.90.6]) by ns.euro.ge.com (8.9.2/8.9.2) with ESMTP id PAA08719 for ; Mon, 1 Mar 1999 15:19:48 GMT Received: from zzimail1.innomed ([3.224.29.231]) by smtp.euro.ge.com (8.9.2/8.9.2) with ESMTP id PAA17891 for ; Mon, 1 Mar 1999 15:18:53 GMT Received: by ZZIMAIL1 with Internet Mail Service (5.5.2232.9) id ; Mon, 1 Mar 1999 16:13:02 +0100 Message-ID: From: "Kuhn, Harald (Innomed)" To: "'PNG Implementation List'" Subject: AW: Problem with png_set_packing() Date: Mon, 1 Mar 1999 16:13:01 +0100 X-MS-TNEF-Correlator: MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2232.9) Content-Type: multipart/mixed; boundary="----_=_NextPart_000_01BE63F5.FF59AA1A" Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_000_01BE63F5.FF59AA1A Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable -----Urspr=FCngliche Nachricht----- Von: smarry@vex.net [mailto:smarry@vex.net] Gesendet am: 01 March 1999 15:30 An: png-implement@ccrc.wustl.edu Betreff: Re: Problem with png_set_packing() >it's the first time I attempt to write a *.png file from within >my application. My attempt is to write a 1-bit B&W Windows >Device independent Bitmap, which I get from a scanner to a=20 >PNG-file. As long as I don't use png_set_packing() erverything seems >OK and I can view the Image with PSP 4. But the size of the file is = about=20 >90 KB. If I use PSP to scan the same document the size is about 16KB. > >As I understood png_set_packing(), this function is to put more than 1 pixel >into one byte. So this seemed to be the right function to reduce the = size. >But if I use png_set_packing(), the size is indeed about 16KB, but the >imagedata >is scrambled (see attachment). Unfortunately the attachment doesn't seem to be a PNG image. Here are my best guesses at the problem. -- OK, I will attach it one's more png_set_packing() makes libpng put each pixel in its own byte on = decoding. On encoding, it causes libpng to take each byte as one pixel value. = You may be saving an 8 bit deep grayscale file instead of a 1 bit deep = file. Is the source data a bitmap, with 8 pixels per byte? If so, you = shouldn't use png_set_packing, as the pixels are already packed. -- Its definitly a 1-bit B&W Image from the scanner -- Also PSP Image Info is reporting this -- Bits per Pixel =3D 1 -- Max# Colors =3D 2 -- Width =3D 2479 -- Height =3D 3507 I suppose it's possible that the data isn't being compressed. Are you calling png_set_compression_level() anywhere? Normally you shouldn't need to call this, as the default is reasonable. -- No I don't What does PSP (or another image viewing program) report for the bit depth and dimensions of the images created with the different methods? What version of libpng are you using? This will give us a better idea of what the problem is likely to be. -- PSP see above -- libpng 1.0.3 -- if I scan with 8 Bits/Pixel Grayscale, it works fine, whether I use png_set_packing() -- or not, there isn't anything to pack indeed, but with 8 Bits/pixel = the size of the file -- increases also -- Send the message body "help" to png-implement-request@ccrc.wustl.edu ------_=_NextPart_000_01BE63F5.FF59AA1A Content-Type: application/ms-tnef Content-Transfer-Encoding: base64 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 QAEAAAAIAAAASEFSQUxESwADABlAAAAAAAMAgBD/////AgFHAAEAAAAxAAAAYz1ERTthPSA7cD1J bm5vbWVkO2w9WlpJTUFJTDEtOTkwMzAxMTUxMzAxWi01MzU0AAAAAAIB+T8BAAAATAAAAAAAAADc p0DIwEIQGrS5CAArL+GCAQAAAAAAAAAvTz1JTk5PTUVEL09VPVpFTlRSQUxFL0NOPVJFQ0lQSUVO VFMvQ049SEFSQUxESwAeAPg/AQAAABcAAABLdWhuLCBIYXJhbGQgKElubm9tZWQpAAAeADhAAQAA AAgAAABIQVJBTERLAAIB+z8BAAAATAAAAAAAAADcp0DIwEIQGrS5CAArL+GCAQAAAAAAAAAvTz1J Tk5PTUVEL09VPVpFTlRSQUxFL0NOPVJFQ0lQSUVOVFMvQ049SEFSQUxESwAeAPo/AQAAABcAAABL dWhuLCBIYXJhbGQgKElubm9tZWQpAAAeADlAAQAAAAgAAABIQVJBTERLAEAABzA8cD//9WO+AUAA CDAaqln/9WO+AR4APQABAAAABQAAAEFXOiAAAAAAHgAdDgEAAAAfAAAAUHJvYmxlbSB3aXRoIHBu Z19zZXRfcGFja2luZygpAAAeADUQAQAAADIAAAA8RkJFMEM1QzQxOUQ1RDExMUFCQTQwMEEwQzlB NzY0NDYyMDcyM0JAWlpJTUFJTDE+AAAACwApAAAAAAALACMAAAAAAAMABhDYDNarAwAHEAYHAAAD ABAQAAAAAAMAERAAAAAAHgAIEAEAAABlAAAALS0tLS1VUlNQUvxOR0xJQ0hFTkFDSFJJQ0hULS0t LS1WT046U01BUlJZQFZFWE5FVE1BSUxUTzpTTUFSUllAVkVYTkVUR0VTRU5ERVRBTTowMU1BUkNI MTk5OTE1OjMwQU46UAAAAAACAX8AAQAAADIAAAA8RkJFMEM1QzQxOUQ1RDExMUFCQTQwMEEwQzlB NzY0NDYyMDcyM0JAWlpJTUFJTDE+AAAAR3MCApAGAA4AAAABAP////8gACAAAAAAAD0EAhKAAwAO AAAAzwcCABoAEAAJAAsABQAbAQITgAMADgAAAM8HAwABAA8AIQAEAAEADwECEYAGALgNAAABAAkA AAPcBgAAAAAhBgAAAAAFAAAACQIAAAAABQAAAAEC////AKUAAABBC8YAiAAgACAAAAAAACAAIAAA AAAAKAAAACAAAABAAAAAAQABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8 AAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAA/AAAAPwA AAH8AAAD/AAAB/wAAA/8AAAf/AAAPyEGAABBC0YAZgAgACAAAAAAACAAIAAAAAAAKAAAACAAAAAg AAAAAQAYAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA /wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAISEAISEAISEAISEAISEAISEAISEAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAAhISEhISE hISEAISEAISEAISEAISEAISEAISEAISEAISEAISEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAISEAISEAISE AISEAISEAISEAISEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA /wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAISEAISEAISEAISEAISEAISEAISEAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAAhISE hISEhISEAISEAISEAISEAISEAISEAISEAISEAISEAISEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAISEAISE AISEAISEAISEAISEAISEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA /wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAISEAISEAISEAISEAISEAISEAISEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAA hISEhISEhISEAISEAISEAISEAISEAISEAISEAISEAISEAISEAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAISE AISEAISEAISEAISEAISEAISEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA /wAA/wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAISEAISEAISEAISEAISEAISEAISE AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAA hAAAhISEhISEhISEAISEAISEAISEAISEAISEAISEAISEAISEAISEAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISE AISEAISEAISEAISEAISEAISEAISEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA /wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAISEAISEAISEAISEAISEAISE AISEAAAAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQA AIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAIQAAISEAISEAISEAISEAISEAAAAAAD//wD//wD//wD/ /wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/ /wD//wD//4QAAISEAISEAISEAISEAISEAAAAAAD//wD//wD//wD//wD//wD//wD//wD//wD//wD/ /wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//4QAAISEAISEAISE AISEAISEAAAAAAD//wD//wD//wD//wD//wAAAAD//wD//wD//wD//wAAAAD//wD//wAAAAD//wD/ /wAAAAAAAAD//wD//wD//wD//wD//wD//wD//4QAAISEAISEAISEAISEAISEAAAAAAD//wD//wD/ /wD//wD//wAAAAD//wD//wD//wD//wAAAAD//wD//wAAAAD//wAAAAD//wD//wAAAAD//wD//wD/ /wD//wD//wD//4QAAISEAISEAISEAISEAISEAAAAAAD//wD//wD//wD//wD//wAAAAAAAAAAAAD/ /wD//wAAAAD//wAAAAAAAAD//wAAAAD//wAAAAAAAAD//wD//wD//wD//wD//wD//4QAAISEAISE AISEAISEAISEAAAAAAD//wD//wD//wD//wD//wAAAAD//wD//wAAAAD//wAAAAAAAAD//wAAAAD/ /wAAAAD//wD//wD//wD//wD//wD//wD//wD//wD//4QAAISEAISEAISEAISEAISEAAAAAAD//wD/ /wD//wD//wD//wAAAAAAAAAAAAD//wD//wAAAAD//wD//wAAAAD//wD//wAAAAAAAAAAAAD//wD/ /wD//wD//wD//wD//4QAAISEAISEAISEAISEAISEAAAAAAD//wD//wD//wD//wD//wD//wD//wD/ /wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//4QAAISE AISEAISEAISEAISEAAAAAAD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/ /wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//4QAAISEAISEAISEAISEAISEAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAAhISE hISEhISEAISEAISEAISEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAAAAAISE hISEhISEhISEhISEhISEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA /wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAAAAAISEhISEhISEhISEhISEhAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAA hISEhISEhISEAISEAISEAAAAAISEhISEhISEhISEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAAAA AISEhISEhISEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA /wAA/wAA/wAA/wAAhAAAhAAAhAAAhISEhISEhISEAISEAISEAAAAAISEhISEhAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAAhAAAhAAA hAAAhISEhISEhISEAISEAISEAAAAAISEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAB2rAhCAAQAJAAAAVGVzdC5wbmcAEwMCD4AG AOlEAACJUE5HDQoaCgAAAA1JSERSAAAJrwAADbMBAAAAAM1nLn0AACAASURBVHja7d1Pj+TImdjh /RoLH33w1d4xVIAH2PwCi/XNPhiGbt2HsbsPC3cCHqnosy97EoRFoVFHwzAEwS5IfUhM0jcBxvTk TUK5lUNjDU/ZVnelV7VT3BKLDDOZmVX5h0EymQwyIt5fYren1c0Okk9FxPtGJBnxR//uj/i0+ARq 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 YeluV7pMirfSXbGNYGuT7n42blJ10d1nC9KgQdVFt9UoAV2TowQBugOOElzWtX+UYKWuN6OEfnWl jRI60mWU0Ep3wxbAZrBvQ9dkIw1gM3hpAWyydD2KpAFstuuSt7XSha1lbVN4mGukCt02tU2h24oN XZNsQnQ77tuk6DZmQ9dkSBCi23UjFaLb8ShBiu4wgyvnda0ek9qr68NQfgDdpmxTdA3WNim6wzRS 53Wt7tumsPmlK2hSfArb0LqwUdtggw02DoMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMN Nthggw0P2GCDDTbY8IANNthg4zDYYIMNNtg4DDbYYHOP7VFFeLRha1QYui3Z0G3Rt6FrMiT4rjts JHVW14kExD7dgu1KvQlsZrNPd8P2Okhrfwbo7jfSLAh+FlWtwZWhq+/bgprC0N1jy44pDN0jIym6 e2xpl+f0XvdYNnRNsvmuu2YbLdQQbM7qrtnObpZ70NeeE91WbOgeJiDdsfmve/wMCLomJ4781h16 vs1RXUe+J7VN16+vl3vTFfmtfEdsl8LYTtct2C7U+MXjV7UDXHQP2M4fv3qb1IzU0D3o27LH8LIB G7qtQgK6JiOp97qDJiDu6rqQt1mo61G626euvFFCJ7o88txK95ktUfVfTKD7xKaOY0P3sJE2+Bfo 7ta2mg+6rdjQNckmRLfrnb6F6DZmQ7dNIw3RNdhIpeh2PLiSojvMmNR5XauH8vbq+jADMoCuoImj LnWZbxPbSFnQAjbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbY8IANNthggw0P2GCDDTYO gw022GCDjcNggw022GCDDbbu2BQe5mqbQrdNbVPotmJD1ySbEF13FuuxSte7xXr60e06JAjR7bqR CtEdZrEe53WtXqzHXl0fFusZQLcp2xRdg7VNiu4wjdR53dW+8sGNlXdgr27BdvcXK7asujB0yxtp FlYWhq6GTd8nZujWhYSwjg3dEyKpZF3zCYiXutYMrtzS3bDdq7RYDdqq3tle3Se24FPOFmdplFTd AbqHjXTJ9vjhQyUbuuV9W1J7TnTbhwThugVbYuycvuoew4auSTYJuqu+7cvtP4r7YXNad8X2uVKP y+3Ab3LiinOiu8s22rBlaZrosxl0DxOQtGBTVWzotp5vQ9fkfJvnugPPt7mq68Z8m3W6rr2XYImu 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 ------_=_NextPart_000_01BE63F5.FF59AA1A-- -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Sun Mar 7 11:40:03 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id LAA19920; Sun, 7 Mar 1999 11:40:03 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id LAA25898 for png-implement-out-rQGdGR2w; Sun, 7 Mar 1999 11:38:24 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from mail02.rapidsite.net (mail02.rapidsite.net [207.158.192.68]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with SMTP id LAA25892 for ; Sun, 7 Mar 1999 11:38:22 -0600 (CST) Received: from www.winimage.com (207.201.138.123) by mail02.rapidsite.net (RS ver 1.0.2) with SMTP id 6897 for ; Sun, 7 Mar 1999 12:38:12 -0500 (EST) From: "Gilles Vollant" To: "'PNG Implementation List'" Subject: MMX support in LibPng : just a bug to fix Date: Sun, 7 Mar 1999 18:38:06 +0100 Message-ID: <003401be68c1$45251eb0$060137c0@210mo> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0 X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 Importance: Normal X-Loop-Detect: 1 Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List Content-Transfer-Encoding: 7bit I'm trying make an easy package for using optimized Pentiul II/MMX code for reading PNG with Visual C++ 6.0 under Windows 9x/NT. Code is based on: http://www.intel.com/drg/pentiumII/appnotes/916/916.htm and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm And I'm using LibPng 1.03 I've also integrated a bugfixes for 923.htm from Polybytes , , email on list png-implement@dworkin.wustl.edu the 11 Jul. 1998. To use it: - define ASMCODE in your project - use the new pngrutil.c (only added #ifdef ASMCODE in pngrutil from LibPng 1.03) - add pngmmx.c in your project All the image from Pngsuite are OK with one of my apps that convert PNG to BMP, except S0?I3P02.PNG. For testing, get http://www.winimage.com/pngmmx/pngmmx01.zip, which contain : (or get from http://www.winimage.com/pngmmx/pngmmx.htm ) diff.txt : the diff on pngrutil.c pngmmx.c : the C source code with MMX optimized code. Detect at run time MMX CPU pngrutil.c : the modified pngrutil.c pngmmx.txt : this file and the image that gave me problem : S05I3P02.PNG S06I3P02.PNG S07I3P02.PNG S08I3P02.PNG S09I3P02.PNG I'm not myself MMX and LibPNG expert, so it's difficult fix it. Gilles Vollant info@winimage.com -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Thu Mar 11 15:22:11 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id PAA24821; Thu, 11 Mar 1999 15:22:11 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id PAA25039 for png-implement-out-rQGdGR2w; Thu, 11 Mar 1999 15:20:56 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from marine.sonic.net (marine.sonic.net [208.201.224.37]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with SMTP id PAA25035 for ; Thu, 11 Mar 1999 15:20:55 -0600 (CST) Received: (qmail 2108 invoked from network); 11 Mar 1999 21:20:54 -0000 Received: from unknown (HELO sub.sonic.net) (208.201.224.8) by marine.sonic.net with SMTP; 11 Mar 1999 21:20:54 -0000 Received: from bolt.sonic.net (roelofs@bolt.sonic.net [208.201.224.36]) by sub.sonic.net (8.8.8/8.8.5) with ESMTP id NAA23891 for ; Thu, 11 Mar 1999 13:20:54 -0800 X-envelope-info: Received: (from roelofs@localhost) by bolt.sonic.net (8.8.8/8.7.3) id NAA10011 for png-implement@ccrc.wustl.edu; Thu, 11 Mar 1999 13:20:54 -0800 Received: from mail02.rapidsite.net (mail02.rapidsite.net [207.158.192.68]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with SMTP id KAA23130 for ; Thu, 11 Mar 1999 10:16:01 -0600 (CST) Received: from www.winimage.com (207.201.138.123) by mail02.rapidsite.net (RS ver 1.0.2) with SMTP id 5537; Thu, 11 Mar 1999 11:15:45 -0500 (EST) From: "Gilles Vollant" To: "'PNG Implementation List'" Cc: Subject: RE: MMX support in LibPng : just a bug to fix Date: Thu, 11 Mar 1999 17:15:42 +0100 Message-ID: <017301be6bda$69f48e30$060137c0@210mo> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0 Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 In-Reply-To: <003401be68c1$45251eb0$060137c0@210mo> X-Loop-Detect: 1 Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List Content-Transfer-Encoding: 8bit Larry helped a lot to fix problem I have with Intel MMX optimized code. Get now http://www.winimage.com/pngmmx/pngmmx02.zip (or get from http://www.winimage.com/pngmmx/pngmmx.htm ) -----Message d'origine----- De: owner-png-implement@ccrc.wustl.edu [mailto:owner-png-implement@ccrc.wustl.edu]De la part de Gilles Vollant Date: dimanche 7 mars 1999 18:38 À: 'PNG Implementation List' Objet: MMX support in LibPng : just a bug to fix I'm trying make an easy package for using optimized Pentiul II/MMX code for reading PNG with Visual C++ 6.0 under Windows 9x/NT. Code is based on: http://www.intel.com/drg/pentiumII/appnotes/916/916.htm and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm And I'm using LibPng 1.03 I've also integrated a bugfixes for 923.htm from Polybytes , , email on list png-implement@dworkin.wustl.edu the 11 Jul. 1998. To use it: - define ASMCODE in your project - use the new pngrutil.c (only added #ifdef ASMCODE in pngrutil from LibPng 1.03) - add pngmmx.c in your project All the image from Pngsuite are OK with one of my apps that convert PNG to BMP, except S0?I3P02.PNG. For testing, get http://www.winimage.com/pngmmx/pngmmx01.zip, which contain : (or get from http://www.winimage.com/pngmmx/pngmmx.htm ) diff.txt : the diff on pngrutil.c pngmmx.c : the C source code with MMX optimized code. Detect at run time MMX CPU pngrutil.c : the modified pngrutil.c pngmmx.txt : this file and the image that gave me problem : S05I3P02.PNG S06I3P02.PNG S07I3P02.PNG S08I3P02.PNG S09I3P02.PNG I'm not myself MMX and LibPNG expert, so it's difficult fix it. Gilles Vollant info@winimage.com -- Send the message body "help" to png-implement-request@ccrc.wustl.edu -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Wed Mar 17 09:00:57 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id JAA11872; Wed, 17 Mar 1999 09:00:57 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id IAA06848 for png-implement-out-rQGdGR2w; Wed, 17 Mar 1999 08:59:11 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from marine.sonic.net (marine.sonic.net [208.201.224.37]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with SMTP id IAA06844 for ; Wed, 17 Mar 1999 08:59:04 -0600 (CST) Received: (qmail 12781 invoked from network); 17 Mar 1999 14:58:54 -0000 Received: from unknown (HELO sub.sonic.net) (208.201.224.8) by marine.sonic.net with SMTP; 17 Mar 1999 14:58:54 -0000 Received: from bolt.sonic.net (roelofs@bolt.sonic.net [208.201.224.36]) by sub.sonic.net (8.8.8/8.8.5) with ESMTP id GAA11748; Wed, 17 Mar 1999 06:58:53 -0800 X-envelope-info: Received: (from roelofs@localhost) by bolt.sonic.net (8.8.8/8.7.3) id GAA00034; Wed, 17 Mar 1999 06:58:53 -0800 Date: Wed, 17 Mar 1999 06:58:53 -0800 Message-Id: <199903171458.GAA00034@bolt.sonic.net> From: Greg Roelofs To: CMD@ornl.gov Subject: Re: PNGCHECK code Cc: png-implement@dworkin.wustl.edu Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List Clyde, > I am working with large PNG files (~38 Mb with native PNG compression, 117 > Mb > uncompressed). They have some error in the way that they are constructed. > If I display > one with the Silicon Graphics ImageView viewer, it gives a "missing data" > error and > displays what it was able to read, which is all but about the last 1/2 inch > if a 14" X 17" > image. The IDL image analysis package from Research Systems gives a similar > error. Interesting... > I tried running pngcheck version 1.98-grr8 to analyze the faulty files, and > it found no error. > Is there some way that I can have it check to see that the right amount of > image data > is there? Indirectly, yes. If you compiled it with zlib support (USE_ZLIB), you can do "pngcheck -vv foo.png" to print out the row filters for each line. That should tell you if the final rows are actually in there or not, and I believe it will give you a zlib error if it doesn't find the final Adler-32 check value in the stream. Make sure the version you have has the following comment near the top, though: * 98.07.02 GRR: fixed line-filters bug reported by Theodore Goodman (97.10.19) If not, you can grab 1.99-grr0 from http://www.cdrom.com/pub/png/pngcode.html . (I can't remember which "grr" number went with which date...) Also, Ulead PhotoImpact is reported to be able to display a 10000x10000 image in a reasonable amount of time with no apparent errors (aside from scaling the image to fit on the screen); you might try that, if you have access to a Win32 system with a copy on it. Alternatively, I think the demo version of JIMI (Java toolkit) includes a viewer; the 10000x10000 image in question comes from their web site: http://www.activated.com/jimi.html I'm pretty sure the SGI ImageView is based on their ImageVision Library, which still uses version 0.88 of libpng. That's pretty old, so it's possible the problem is in it. I'll cc this to png-implement, since the current libpng maintainer is also an SGI user. -- Greg Roelofs newt@pobox.com http://pobox.com/~newt/ Newtware, PNG Group, Info-ZIP, Philips Research, ... -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Thu Mar 18 08:40:16 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id IAA25938; Thu, 18 Mar 1999 08:40:16 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id IAA05584 for png-implement-out-rQGdGR2w; Thu, 18 Mar 1999 08:39:55 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from marine.sonic.net (marine.sonic.net [208.201.224.37]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with SMTP id IAA05575 for ; Thu, 18 Mar 1999 08:39:51 -0600 (CST) Received: (qmail 4277 invoked from network); 18 Mar 1999 14:39:49 -0000 Received: from unknown (HELO sub.sonic.net) (208.201.224.8) by marine.sonic.net with SMTP; 18 Mar 1999 14:39:49 -0000 Received: from bolt.sonic.net (roelofs@bolt.sonic.net [208.201.224.36]) by sub.sonic.net (8.8.8/8.8.5) with ESMTP id GAA21281; Thu, 18 Mar 1999 06:39:49 -0800 X-envelope-info: Received: (from roelofs@localhost) by bolt.sonic.net (8.8.8/8.7.3) id GAA27195; Thu, 18 Mar 1999 06:39:48 -0800 Date: Thu, 18 Mar 1999 06:39:48 -0800 Message-Id: <199903181439.GAA27195@bolt.sonic.net> From: Greg Roelofs To: png-announce@dworkin.wustl.edu, png-implement@dworkin.wustl.edu Subject: pnmtopng 2.37.2 Cc: jgoerzen@complete.org, Neal.Becker@comsat.com, support@redhat.com Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List Once upon a time over on png-implement, we discussed some gcc warnings that cropped up in pnmtopng--something about variables getting clobbered by longjmp or vfork. I didn't go back and dig out that discussion, but my recollection is that the warnings were only relevant if one of those function calls actually occurred. Imagine my surprise to find that on Solaris (with gcc 2.8.1, I think), such warnings translate into stack corruption even in the absence of other error conditions--that is, the mere presence of variables for which gcc emits the clobber error actually *causes* a libpng error that results in a longjmp. That doesn't really make sense to me, and maybe it's a matter of tickling a gcc bug, but the point is that both the warnings and the errors go away if you declare the variables in question as "static," so I did. Along the way I also installed custom error-handlers in both pnmtopng and pngtopnm; this is now the preferred approach, since both the setjmp and longjmp call occur within the same module and therefore have the same concept of how big a jmp_buf is. (For those who were unaware of the problems, defining certain macros can affect the size of the thing; I believe _BSD_SOURCE used to be one of these, and on my current Linux system, __SVR4_I386_ABI_L1__ would also cause problems. The default error-handling approach in libpng requires that both libpng and the application be compiled in exactly the same way, or else the copy of jmp_buf in the main PNG struct may overwrite other elements of the struct.) Anyway, a new source archive, pnmtopng-2.37.2.tar.gz, is now available at ftp://swrinde.nde.swri.edu/pub/png/applications/. The pngcode.html web page will be updated tonight sometime (mirror). Have fun... And for those who don't know about pnmtopng and the NetPBM suite: it's a set of command-line utilities, originally Unix-based but now ported to Win32, OS/2 and maybe some other platforms, that allows you to do all sorts of conversions and manipulations on images. For example, this would convert a 24-bit TIFF to an 8-bit palette PNG with Floyd-Steinberg dithering: tifftopnm foo.tiff | ppmquant -fs 256 | pnmtopng > foo-8bit.png I don't believe there is any other application with more complete PNG support than pnmtopng has; almost every aspect of a PNG image can be tweaked and/or optimized with it. The main exception right now has to do with sRGB and iCCP, which aren't yet implemented. This is posted to both png-announce and png-implement, but please direct follow-ups to the latter list. Greg P.S. I didn't fix the -time option (i.e., make it automatic), but I was strongly tempted... Maybe Willem has some thoughts on that. For backward compatibility, a new -modtime option might be preferable. -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Thu Mar 18 11:29:10 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id LAA28830; Thu, 18 Mar 1999 11:29:09 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id LAA08936 for png-implement-out-rQGdGR2w; Thu, 18 Mar 1999 11:27:48 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from boutell.com (boutell.com [206.125.69.81]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with ESMTP id LAA08932 for ; Thu, 18 Mar 1999 11:27:46 -0600 (CST) Received: from vader.boutell.com by boutell.com (8.9.3/8.7.3) with ESMTP id KAA00558 for ; Thu, 18 Mar 1999 10:01:35 -0800 Received: from localhost (boutell@localhost) by vader.boutell.com (8.8.5/8.7.3) with SMTP id JAA28856 for ; Thu, 18 Mar 1999 09:30:29 -0800 Date: Thu, 18 Mar 1999 09:30:29 -0800 (PST) From: Thomas Boutell To: png-implement@dworkin.wustl.edu Subject: Re: pnmtopng 2.37.2 In-Reply-To: <199903181439.GAA27195@bolt.sonic.net> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List On Thu, 18 Mar 1999, Greg Roelofs wrote: > That doesn't really make sense to me, and maybe it's a matter of tickling > a gcc bug, but the point is that both the warnings and the errors go away > if you declare the variables in question as "static," so I did. Along the > way I also installed custom error-handlers in both pnmtopng and pngtopnm; > this is now the preferred approach, since both the setjmp and longjmp call > occur within the same module and therefore have the same concept of how big > a jmp_buf is. (For those who were unaware of the problems, defining certain > macros can affect the size of the thing; I believe _BSD_SOURCE used to be > one of these, and on my current Linux system, __SVR4_I386_ABI_L1__ would > also cause problems. The default error-handling approach in libpng requires > that both libpng and the application be compiled in exactly the same way, or > else the copy of jmp_buf in the main PNG struct may overwrite other elements > of the struct.) Isn't that heinously non-reentrant? Well, this is pnmtopng, a standalone application, rather than the library, so I guess it's no big deal. Thanks for patching around the trouble. -T -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Thu Mar 18 11:50:02 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id LAA29346; Thu, 18 Mar 1999 11:50:02 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id LAA09558 for png-implement-out-rQGdGR2w; Thu, 18 Mar 1999 11:49:59 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from marine.sonic.net (marine.sonic.net [208.201.224.37]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with SMTP id LAA09553 for ; Thu, 18 Mar 1999 11:49:46 -0600 (CST) Received: (qmail 14265 invoked from network); 18 Mar 1999 17:49:40 -0000 Received: from unknown (HELO sub.sonic.net) (208.201.224.8) by marine.sonic.net with SMTP; 18 Mar 1999 17:49:40 -0000 Received: from bolt.sonic.net (roelofs@bolt.sonic.net [208.201.224.36]) by sub.sonic.net (8.8.8/8.8.5) with ESMTP id JAA21195 for ; Thu, 18 Mar 1999 09:49:33 -0800 X-envelope-info: Received: (from roelofs@localhost) by bolt.sonic.net (8.8.8/8.7.3) id JAA01267 for png-implement@ccrc.wustl.edu; Thu, 18 Mar 1999 09:49:33 -0800 Date: Thu, 18 Mar 1999 09:49:33 -0800 Message-Id: <199903181749.JAA01267@bolt.sonic.net> From: Greg Roelofs To: png-implement@ccrc.wustl.edu Subject: Re: pnmtopng 2.37.2 Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List >> That doesn't really make sense to me, and maybe it's a matter of tickling >> a gcc bug, but the point is that both the warnings and the errors go away >> if you declare the variables in question as "static," so I did. Tom B wrote: > Isn't that heinously non-reentrant? Well, this is > pnmtopng, a standalone application, rather than the > library, so I guess it's no big deal. Thanks for > patching around the trouble. Yes, static local variables (or any static/global variables) are heinous. But as you say, this is a stand-alone application, and I didn't go back to reread the discussion on the clobber warning yet. (As I recall, the explanation made sense, but it wasn't immediately obvious how to work around it the "right" way. Or maybe I just got busy and ran out of time. In any case, I've forgotten everything, and I felt that a fatal error needed an immediate fix. As far as I'm concerned, Willem is still the official maintainer, and he's more than welcome to get rid of all of the static and global vari- ables!) Greg -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Tue Mar 23 21:58:27 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id VAA08340; Tue, 23 Mar 1999 21:58:27 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id VAA06441 for png-implement-out-rQGdGR2w; Tue, 23 Mar 1999 21:57:26 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from dfw-ix14.ix.netcom.com (dfw-ix14.ix.netcom.com [206.214.98.14]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with ESMTP id VAA06437 for ; Tue, 23 Mar 1999 21:57:25 -0600 (CST) Received: (from smap@localhost) by dfw-ix14.ix.netcom.com (8.8.4/8.8.4) id VAA12552 for ; Tue, 23 Mar 1999 21:57:14 -0600 (CST) Received: from sji-ca5-100.ix.netcom.com(209.109.234.100) by dfw-ix14.ix.netcom.com via smap (V1.3) id rma012406; Tue Mar 23 21:56:06 1999 Message-Id: <3.0.5.32.19990323195239.0092a1a0@popd.ix.netcom.com> X-Sender: jcbowler@popd.ix.netcom.com X-Mailer: QUALCOMM Windows Eudora Light Version 3.0.5 (32) Date: Tue, 23 Mar 1999 19:52:39 -0800 To: PNG Implementation List From: John Bowler Subject: Re: pnmtopng 2.37.2 In-Reply-To: <199903181749.JAA01267@bolt.sonic.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List At 09:49 18/03/99 -0800, Greg Roelofs wrote: >>> That doesn't really make sense to me, and maybe it's a matter of tickling >>> a gcc bug, but the point is that both the warnings and the errors go away >>> if you declare the variables in question as "static," so I did. > >Tom B wrote: > >> Isn't that heinously non-reentrant? Well, this is >> pnmtopng, a standalone application, rather than the >> library, so I guess it's no big deal. Thanks for >> patching around the trouble. "volatile" in place of "static" should achieve the same result without moving the variable off the stack. Both of them tell the compiler that the variable in question may be modified in called functions (in effect.) This is what prevents the compiler storing the value of the variable in some place (or places :-) unknown outside the function. It sounds like GCC now knows that any non-volatile variable in a function which calls setjmp need not be persisted across function calls. That would be an optimisation of dubious value (so few functions call setjmp), but it may well be a side effect of other optimisations. John Bowler -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Wed Mar 24 08:40:31 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id IAA20003; Wed, 24 Mar 1999 08:40:31 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id IAA18185 for png-implement-out-rQGdGR2w; Wed, 24 Mar 1999 08:40:04 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from sss.sss.pgh.pa.us (sss.pgh.pa.us [206.210.65.6]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with ESMTP id IAA18181 for ; Wed, 24 Mar 1999 08:40:02 -0600 (CST) Received: from sss.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.sss.pgh.pa.us (8.9.1/8.9.1) with ESMTP id JAA26170 for ; Wed, 24 Mar 1999 09:39:50 -0500 (EST) To: PNG Implementation List Subject: setjmp etc (was Re: pnmtopng 2.37.2) In-reply-to: Your message of Tue, 23 Mar 1999 19:52:39 -0800 <3.0.5.32.19990323195239.0092a1a0@popd.ix.netcom.com> Date: Wed, 24 Mar 1999 09:39:50 -0500 Message-ID: <26168.922286390@sss.pgh.pa.us> From: Tom Lane Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List This is getting a tad off-topic for png-implement, but --- John Bowler writes: > It sounds like GCC now knows that any non-volatile variable in a function > which calls setjmp need not be persisted across function calls. That strikes me as a most peculiar reading of the spec. I don't believe that the compiler is allowed to stop producing working code just because there is a setjmp call in the function. The behavior *when a longjmp occurs* is partially unspecified. (In practice, you don't know whether a non-volatile local var will still have its most recent value, or be set back to its value at the time of the setjmp call; there aren't any other possibilities in real-world implementations.) But in the absence of a longjmp a compiler is not entitled to discard the values of local variables, which is what you seem to be claiming above. The behavior Greg reported sounded to me like a garden-variety compiler bug. I've heard before that gcc 2.8.x is not yet as stable as gcc 2.7.x; maybe this is more evidence of it. Another possibility is that Solaris suffers from the same kind of confusion about the size of jmp_buf that we already know about on Linux... regards, tom lane -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Wed Mar 24 09:17:56 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id JAA20809; Wed, 24 Mar 1999 09:17:55 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id JAA19025 for png-implement-out-rQGdGR2w; Wed, 24 Mar 1999 09:17:38 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from marine.sonic.net (marine.sonic.net [208.201.224.37]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with SMTP id JAA19021 for ; Wed, 24 Mar 1999 09:17:37 -0600 (CST) Received: (qmail 9035 invoked from network); 24 Mar 1999 15:17:36 -0000 Received: from unknown (HELO sub.sonic.net) (208.201.224.8) by marine.sonic.net with SMTP; 24 Mar 1999 15:17:36 -0000 Received: from bolt.sonic.net (roelofs@bolt.sonic.net [208.201.224.36]) by sub.sonic.net (8.8.8/8.8.5) with ESMTP id HAA28355 for ; Wed, 24 Mar 1999 07:17:36 -0800 X-envelope-info: Received: (from roelofs@localhost) by bolt.sonic.net (8.8.8/8.7.3) id HAA11682 for png-implement@ccrc.wustl.edu; Wed, 24 Mar 1999 07:17:36 -0800 Date: Wed, 24 Mar 1999 07:17:36 -0800 Message-Id: <199903241517.HAA11682@bolt.sonic.net> From: Greg Roelofs To: png-implement@ccrc.wustl.edu Subject: Re: setjmp etc (was Re: pnmtopng 2.37.2) Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List Tom wrote: > The behavior Greg reported sounded to me like a garden-variety compiler > bug. I've heard before that gcc 2.8.x is not yet as stable as gcc > 2.7.x; maybe this is more evidence of it. Another possibility is that > Solaris suffers from the same kind of confusion about the size of > jmp_buf that we already know about on Linux... No, that's precisely why I installed a custom error-handler in it. Both the setjmp and longjmp calls exist in the same file now (along with the jmp_buf declaration itself), so there's no way that's a problem. Greg -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Wed Mar 24 13:10:23 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id NAA25670; Wed, 24 Mar 1999 13:10:22 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id NAA24060 for png-implement-out-rQGdGR2w; Wed, 24 Mar 1999 13:10:03 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from mail3.microsoft.com (mail3.microsoft.com [131.107.3.123]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with ESMTP id NAA24056 for ; Wed, 24 Mar 1999 13:10:02 -0600 (CST) Received: by mail3.microsoft.com with Internet Mail Service (5.5.2524.0) id ; Wed, 24 Mar 1999 11:10:02 -0800 Message-ID: <71F299426E8CCF11B05600805F6809DF032DE429@CUP-01-MSG> From: John Bowler To: PNG Implementation List Subject: RE: setjmp etc (was Re: pnmtopng 2.37.2) Date: Wed, 24 Mar 1999 11:09:58 -0800 X-Mailer: Internet Mail Service (5.5.2524.0) Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List } From: Tom Lane [mailto:tgl@sss.pgh.pa.us] } } This is getting a tad off-topic for png-implement, but --- } } John Bowler writes: } > It sounds like GCC now knows that any non-volatile variable in a function } > which calls setjmp need not be persisted across function calls. } } That strikes me as a most peculiar reading of the spec. Actually it's incorrect - I didn't have the spec to hand when I wrote it. The constraint is imposed in the documentation of what happens when longjmp is called, so if longjmp is not called everything must work as normal (well, there are several constraints on how setjmp may be invoked, but I doubt they are relevant.) } The behavior Greg reported sounded to me like a garden-variety compiler } bug. Yes, I agree. John Bowler -- Send the message body "help" to png-implement-request@ccrc.wustl.edu From owner-png-implement@ccrc.wustl.edu Wed Mar 31 12:10:14 1999 Received: from ccrc.wustl.edu (cashew.ccrc.wustl.edu [128.252.169.100]) by swrinde.nde.swri.edu (8.9.1a/8.9.1) with ESMTP id MAA21960; Wed, 31 Mar 1999 12:10:14 -0600 (CST) Received: (from majordom@localhost) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) id MAA02282 for png-implement-out-rQGdGR2w; Wed, 31 Mar 1999 12:08:47 -0600 (CST) X-Authentication-Warning: cashew.wustl.edu: majordom set sender to owner-png-implement@ccrc.wustl.edu using -f Received: from customer.DenverOnline.com (customer.DenverOnline.com [206.168.141.2]) by ccrc.wustl.edu (8.8.8+Sun/8.8.8) with ESMTP id MAA02278 for ; Wed, 31 Mar 1999 12:08:46 -0600 (CST) Received: from JAMMConsulting.com (ip170.dallas2.tx.pub-ip.psi.net [38.11.199.170]) by customer.DenverOnline.com (Nieusma) with ESMTP id LAA03349 for ; Wed, 31 Mar 1999 11:08:45 -0700 (MST) Message-ID: <37026320.F484B70A@JAMMConsulting.com> Date: Wed, 31 Mar 1999 12:02:08 -0600 From: Neil Aggarwal Organization: JAMM Consulting, Inc. X-Mailer: Mozilla 4.5 [en] (Win98; U) X-Accept-Language: en MIME-Version: 1.0 To: png-implement@dworkin.wustl.edu Subject: looking for PNG & JPEG programmer on Windows Content-Type: multipart/mixed; boundary="------------95983FC3E4DCD7864C0EFB1B" Sender: owner-png-implement@ccrc.wustl.edu Precedence: bulk Reply-To: PNG Implementation List This is a multi-part message in MIME format. --------------95983FC3E4DCD7864C0EFB1B Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello: I need to find a programmer to help me with a project for one of my clients. The project involves writing a custom viewer for a collection of PNG and JPEG images. This viewer should be written in C++ for the Win32 API (It should run on WIndows 95/98 and NT). We need the resulting executable to be extremely small and therefore need someone with extensive experience in graphics development on Windows. You can work from where you are, but you must be able to dedicate at least 20 hrs/wk from now until the end of the project (which I beleive will be at least a couple of months). If you or anyone you know is interested, please send me a resume, availability and rate (in US$/hr) info. Thanks, Neil. **We pay a 5% finders fee for job referrals that lead to a contract* -------------------------------------------------------------------- |Neil Aggarwal |JAMM Consulting, Inc. |Custom Programming | |President & CEO |www.JAMMConsulting.com|Java, C, C++, perl,| |neil@JAMMConsulting.com|(972) 612-6056 |HTML, CGI | -------------------------------------------------------------------- --------------95983FC3E4DCD7864C0EFB1B Content-Type: text/x-vcard; charset=us-ascii; name="neil.vcf" Content-Description: Card for Neil Aggarwal Content-Disposition: attachment; filename="neil.vcf" Content-Transfer-Encoding: 7bit begin:vcard n:Aggarwal;Neil tel;work:(972) 612-6056 x-mozilla-html:TRUE url:http://www.JAMMConsulting.com org:JAMM Consulting, Inc. version:2.1 email;internet:neil@JAMMConsulting.com title:President & CEO adr;quoted-printable:;;7575 Frankford Rd #724=0D=0A;Dallas;Texas;75252;USA note;quoted-printable:JAMM Consulting, Inc. is a full-service consulting and programming =0D=0Acompany dedicated to your projects in Java, C, C++, perl and HTML. =0D=0APlease contact us for more information. fn:Neil Aggarwal end:vcard --------------95983FC3E4DCD7864C0EFB1B-- -- Send the message body "help" to png-implement-request@ccrc.wustl.edu