png++-0.2.5/0000755000175000017500000000000011461476005011152 5ustar useruserpng++-0.2.5/gray_pixel.hpp0000644000175000017500000000656011461476005014035 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_GRAY_PIXEL_HPP_INCLUDED #define PNGPP_GRAY_PIXEL_HPP_INCLUDED #include "types.hpp" #include "packed_pixel.hpp" #include "pixel_traits.hpp" namespace png { /** * \brief The 8-bit Grayscale pixel type. */ typedef byte gray_pixel; /** * \brief The 16-bit Grayscale pixel type. */ typedef uint_16 gray_pixel_16; /** * \brief The packed gray pixel class template. The available * specializations are for 1-, 2- and 4-bit pixels. */ template< size_t bits > class packed_gray_pixel : public packed_pixel< bits > { public: packed_gray_pixel(byte value = 0) : packed_pixel< bits >(value) { } }; /** * \brief The 1-bit Grayscale pixel type. */ typedef packed_gray_pixel< 1 > gray_pixel_1; /** * \brief The 2-bit Grayscale pixel type. */ typedef packed_gray_pixel< 2 > gray_pixel_2; /** * \brief The 4-bit Grayscale pixel type. */ typedef packed_gray_pixel< 4 > gray_pixel_4; /** * \brief Pixel traits specialization for gray_pixel. */ template<> struct pixel_traits< gray_pixel > : basic_pixel_traits< gray_pixel, byte, color_type_gray > { }; /** * \brief Pixel traits specialization for gray_pixel_16. */ template<> struct pixel_traits< gray_pixel_16 > : basic_pixel_traits< gray_pixel_16, uint_16, color_type_gray > { }; /** * \brief Pixel traits specialization for packed_gray_pixel. */ template< size_t bits > struct pixel_traits< packed_gray_pixel< bits > > : basic_pixel_traits< packed_gray_pixel< bits >, byte, color_type_gray, /* channels = */ 1, bits > { }; } // namespace png #endif // PNGPP_GRAY_PIXEL_HPP_INCLUDED png++-0.2.5/test/0000755000175000017500000000000011461476005012131 5ustar useruserpng++-0.2.5/test/test.sh0000755000175000017500000000222711461476005013452 0ustar useruser#!/bin/sh tests=0 fails=0 echo -n >test.log run() { tests=$(( $tests + 1 )) if sh -c "( $* ) >>test.log 2>&1"; then echo -n '.' else fails=$(( $fails + 1 )) echo -n 'F' fi } for i in pngsuite/*.png; do for j in RGB RGBA GRAY GA; do for k in 8 16; do out=$i.$j.$k.out run "./convert_color_space $j $k $i $out && cmp $out cmp/$out" done; done; done for i in 1 2 4; do in=pngsuite/basn0g0$i.png out=$in.out run "./read_write_gray_packed $i $in $out && cmp $out cmp/$out" done run ./generate_gray_packed for i in 1 2 4; do out=gray_packed_$i.png.out run "cmp $out cmp/$out" done run ./generate_palette for i in 1 2 4 8; do out=palette$i.png.out run "cmp $out cmp/$out" done run "cmp palette8_tRNS.png.out cmp/palette8_tRNS.png.out" run "./write_gray_16 && cmp gray_16.out cmp/gray_16.out" echo "\n==================" if [ $fails -eq 0 ]; then echo "PNG++ passes tests (all $tests passed)" test -s test.log && echo "warning: test.log is not empty\n" exit 0 else echo "PNG++ FAILS TESTS ($fails OF $tests FAILED)" echo "review test.log for clues\n" exit 1 fi png++-0.2.5/test/README0000644000175000017500000000534011461476005013013 0ustar useruser pngsuite -------- (c) Willem van Schaik, 1999 Permission to use, copy, and distribute these images for any purpose and without fee is hereby granted. These 15 images are part of the much larger PngSuite test-set of images, available for developers of PNG supporting software. The complete set, available at http:/www.schaik.com/pngsuite/, contains a variety of images to test interlacing, gamma settings, ancillary chunks, etc. The images in this directory represent the basic PNG color-types: grayscale (1-16 bit deep), full color (8 or 16 bit), paletted (1-8 bit) and grayscale or color images with alpha channel. You can use them to test the proper functioning of PNG software. filename depth type ------------ ------ -------------- basn0g01.png 1-bit grayscale basn0g02.png 2-bit grayscale basn0g04.png 4-bit grayscale basn0g08.png 8-bit grayscale basn0g16.png 16-bit grayscale basn2c08.png 8-bit truecolor basn2c16.png 16-bit truecolor basn3p01.png 1-bit paletted basn3p02.png 2-bit paletted basn3p04.png 4-bit paletted basn3p08.png 8-bit paletted basn4a08.png 8-bit gray with alpha basn4a16.png 16-bit gray with alpha basn6a08.png 8-bit RGBA basn6a16.png 16-bit RGBA Here is the correct result of typing "pngtest -m *.png" in this directory: Testing basn0g01.png: PASS (524 zero samples) Filter 0 was used 32 times Testing basn0g02.png: PASS (448 zero samples) Filter 0 was used 32 times Testing basn0g04.png: PASS (520 zero samples) Filter 0 was used 32 times Testing basn0g08.png: PASS (3 zero samples) Filter 1 was used 9 times Filter 4 was used 23 times Testing basn0g16.png: PASS (1 zero samples) Filter 1 was used 1 times Filter 2 was used 31 times Testing basn2c08.png: PASS (6 zero samples) Filter 1 was used 5 times Filter 4 was used 27 times Testing basn2c16.png: PASS (592 zero samples) Filter 1 was used 1 times Filter 4 was used 31 times Testing basn3p01.png: PASS (512 zero samples) Filter 0 was used 32 times Testing basn3p02.png: PASS (448 zero samples) Filter 0 was used 32 times Testing basn3p04.png: PASS (544 zero samples) Filter 0 was used 32 times Testing basn3p08.png: PASS (4 zero samples) Filter 0 was used 32 times Testing basn4a08.png: PASS (32 zero samples) Filter 1 was used 1 times Filter 4 was used 31 times Testing basn4a16.png: PASS (64 zero samples) Filter 0 was used 1 times Filter 1 was used 2 times Filter 2 was used 1 times Filter 4 was used 28 times Testing basn6a08.png: PASS (160 zero samples) Filter 1 was used 1 times Filter 4 was used 31 times Testing basn6a16.png: PASS (1072 zero samples) Filter 1 was used 4 times Filter 4 was used 28 times libpng passes test Willem van Schaik October 1999 png++-0.2.5/test/read_write_param.cpp0000644000175000017500000000115311461476005016142 0ustar useruser#include #include #include int main() { std::cerr << "read_write_param: do not run this test--it's compile-only" << std::endl; exit(1); typedef png::image< png::rgb_pixel > image; image image1; // default contructor image image2("test2.png"); // char const* char test3[] = "test3.png"; // char* image image3(test3); image image4(std::string("test4.png")); image1.write("test4.png"); // char const* char test5[] = "test5.png"; image1.write(test5); // char* image1.write(std::string("test6.png")); } png++-0.2.5/test/read_write_gray_packed.cpp0000644000175000017500000000521711461476005017320 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include void print_usage() { std::cerr << "usage: read_write_gray_packed 1|2|4 INFILE OUTFILE" << std::endl; } template< class pixel > void test_image(char const* infile, char const* outfile) { png::image< pixel > image(infile, png::require_color_space< pixel >()); image.write(outfile); } int main(int argc, char* argv[]) try { if (argc != 4) { print_usage(); return EXIT_FAILURE; } char const* bits = argv[1]; char const* infile = argv[2]; char const* outfile = argv[3]; if (strcmp(bits, "1") == 0) { test_image< png::gray_pixel_1 >(infile, outfile); } else if (strcmp(bits, "2") == 0) { test_image< png::gray_pixel_2 >(infile, outfile); } else if (strcmp(bits, "4") == 0) { test_image< png::gray_pixel_4 >(infile, outfile); } else { print_usage(); return EXIT_FAILURE; } } catch (std::exception const& error) { std::cerr << "read_write_gray_packed: " << error.what() << std::endl; return EXIT_FAILURE; } png++-0.2.5/test/write_gray_16.cpp0000644000175000017500000000404611461476005015323 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include int main() try { png::image< png::gray_pixel_16 > image(256, 256); for (size_t y = 0; y < image.get_height(); ++y) { for (size_t x = 0; x < image.get_width(); ++x) { png::gray_pixel_16 pix = x*y; image[y][x] = pix; } } image.write("gray_16.out"); } catch (std::exception const& error) { std::cerr << "write_gray_16: " << error.what() << std::endl; return EXIT_FAILURE; } png++-0.2.5/test/cmp/0000755000175000017500000000000011461476005012710 5ustar useruserpng++-0.2.5/test/cmp/palette1.png.out0000644000175000017500000000012511461476005015741 0ustar useruserPNG  IHDR%VPLTEA IDATc`qdIENDB`png++-0.2.5/test/cmp/gray_packed_4.png.out0000644000175000017500000000022411461476005016716 0ustar useruserPNG  IHDR )[IDAT(1 @*P T@*PA#89xn=B*9ksoD@E@!p"Lri%|IENDB`png++-0.2.5/test/cmp/gray_packed_1.png.out0000644000175000017500000000011311461476005016710 0ustar useruserPNG  IHDR [GYIDATcU@0(Y?FVIENDB`png++-0.2.5/test/cmp/gray_16.out0000644000175000017500000010635011461476005014716 0ustar useruserPNG  IHDR)+ IDATxu\$xqf]mggfggqww/{ $@ptΞ]H.p/?y̙Muש3Ͽ ?߶ /llKg4s]}3;MK?iF>o+>4/5sun7_{t7oiی;}okґr`_Fmq~Wnw}?OM;~~/5hMrߟǿ׷ ~5ߺJ>7~9w?{`֛"?wS@֚Z;}7F?б-|cS˦Vtk[^ײiĿ' Bgl}1d{v`GvbgvaWvcw`Oڰ{ӖvjO~t ]ԅt7u ZѥtQVt.Ԋ.B7Q w{ ϴ{f|QNuaOtQ+;gS-?T-? ~=$Ou]M]Bӕ-4-4])os2*BBӕ#ZhNl-42[[hr_ ͘tUW9_X]SLF]S-l@-yݒ'-}[hndДtBl»ql i-4[hqy -4wnߞ{pfLϥRxC=C=lϘIea3zH^v'v}hoz=:ѓ@=IoznmIO{R)<RxONGS)'RM)ޓR)f kyO=g&>dz&=gS|z&[P6o6<@Oz57b@ sRxIEM H ?~| ?=Nb4_oM&^<ŸJ/R/cuggKlR/۳z%oz%oz%_HoPzӋ[z+6|xMv /NbU)$֛p O$CRzIb9%.L2ߘzsg?wL 6Udo[mg-_I{_BOR&oڋ =FOzћ4ҔF?Ҷ6ư$[*Rz]I,hHNH=#Nbi\Ҹ6ߒ{O{($|KuҔ*Ǒ44MllUJKJf>QP7G@oԇԇ!II,?u$1$>Kb&>Ib&"I_I&؋[ VXG},?>c3\n,Z}FrDhg> }'oR!V}28'$VRļI,l}iLb'؉I$6:$vM9ݕHbcl/$髾`%XX3A}mڜ<%~K׶pרmnT_n稯=T?ԅ~Azӏ>~ ڂ iIbI*m!%; tqI$v $vE>f7=lc']KYr^YS?OYgKjkϖo Y=Cֳ?ifWKS3Ʋb?I*ӆI=OS;ƎN9)iãz.\n;zKbpuS[g[n{&r fo+l7{5'~8V@@iÒX ˒zjm؛ $v s c.OnIۆ𠍍IyVX<4rS4gkj¶df17>j@[%p`JLc @j C j ɰ<.IUm lxa6vLR6| Nu _eцoܛ4a~‹Xs @_ao,5@OeZZZZ6{@k~ GԃA['2 ` 4! 4tD z*mؙtE#6mxG 6| cÃ.km+mQ~Ab_ 5 BAfN`Y{YYZAVjٿև7N`ymm:`[8~[&1xk`Fp `*la>p܆mX>نϴ`.l͆mx 5,dO3XYrV"5؄~3Xo[y$ < Yb,[A[l>6JcȖ 3! FlA lBC(pȆc6p m'6|.i/kl&Æe!05ܬf?&{nVnBw&Oppk~HknMfj%pUaKG,`0#0k#Hg#d[B#(pMPXB#8‡[[I>ݦ=BشYj F fm0B#|eFFs_FIF'iq5²\0Zv kc bȟ M8F2d`#4$B*H,촐Pɩ>Bm[ K{f a{fsyB12#5Ҭ4$~2R#H4߻iBi 3O#}k <::iwȭUEF nҭ40ҷ pI:J't,Tl 㰐B!?jd-tIJ k Km# Bwtf2HW:QYtVgHW:Xϋ+ݬוnVJ7{J7?Su+XgҍuV*XgLm~) l0(F0t"QbFk" [Bn ,4-t:BZ, (.B7Yvfp49Fi Yģ(RNYq(cw4gFL(cYeE ,JVYUZkWwLHndXB2͠ a2:@fXY@ƖGҔA ̠BrYo,Б:B'[ kdXR ]e-t$Cb6"Cg 1d()2:<`#x eOxS& MT ),0Ks2\ 4W),zD[ucI[ B240J3, sK d2 2I6d*L *!ӠJ 9,PȺ2j:B'i:۠֨,thT&3d*~2"d9+x\f?L2_TY)Od*d*I4vLc94vYLce4vYL3e)m j>b~fPU GeeYVE:P&Yd,,Tl BAQq j,t'[3,tY\`K-tAYRӘd)^L1eU)E,!rV0le3PIQI&(Sml2S&msM+d$6o)z[)8'9TOr40Ec9dlr4PhdeUY}NgPD-0@Ks6xKs9iй.F_i]GrM(vrrrXB'G9,eVǕ:49a#xA9$*7cL2N9&c{*Xdr̒o,X9"+%dn [#^$W|g\+ƒ\{+$~49[I+,%ʥY\ *LACy-6z+31@䐫<#OygP5m<,MAYÍ<Ҝ`)L#52 \iе))L&Ln#Oyew+,>2XjƐ<ֳF6z|Yy|<V?#*Xc؉k噲Rcʣ+Xu-&@#a#u g[ 0KH&Yd\'_Yj#q32dD j4yigIt#6rs+\O nQ>+CYRP>+X#+q>x|)xC xOlcgdM@,ƥ7X<@`hO ~X`Ʌ d&,V䑯 )@PfPkPz'nFssysgy\`%F^A $@LF T,n@c>wE,_RBJ,Tidn# 6 kAFfQ8kFnFF\de \E TW!3N Y,~UV%c)E&,21@b(HETYcH!#h#FkFjFkdt E*=HELTtnHEf,N%KX5cT&>IOxV%|^U od4Μ`L113L7 L"8&࿱سr# )J)U)F2gdȈq#7`#7h#7d#O7l#GSRBJU{\JJ̕\KJ͍JJY̝KJYxBe|§<2K^P-7TxKeW+UT7m2a_檌NBѕn,U=%JR6r&prS ,7_ MXnr RN9*H#F)W9ČLPr0y=<3)U_*oyI v;`v=U{2YM[}WH'橂.te*AOy0?<*M!e T,9P&4A`J*T%5FT%T%A76QJ4CH#R`zO13T%c9JU2JURJ&s)d:WYZU2T%JU;TJVq*Y}TyHlCS%'TUbS*qUT\GXMb KMUNTUb#S*>fxRU|W<*U?ؑT.xU{2QUM[M=0CUtsTEjbUћ4J-*il=VcAխTݜh8&nG)Q)ՔSJZ8V5nTjV5T ;ȣV5v IDAT78jU6PjFSj&r!ժf*RjZUnP5jU۩V5[լ_TxP|GT/xJ|7c3+T۲&vƑt$̑b#H#H:`0YQa@yab*ab5Łxpȁ߰:r!8ɰpC!/s98trp9x`㐃i\,3 *9X8` 7rn!Cq79C!|ο+)9gG~E9؎W`Gv 9ؕ`d9h>LLtatgч,嬰J#i;a?.3@3P8@gs%PE8)Q)N8V N8čSN|8I㔓Nr)' ;SN^$rr*N9y3])'qT.)'9\!',z9YM8dZ)'sl~9<,'|8[xNN@$';.)'󶜴a/K[1QN҉!']9'$ErJ9 ARpykGj@WRˡ`e@*EJpEqQCN\‹K.qE\h%㒋̈pő%%'79E.t\rq.yr1q .\K.%V.r.X-rb=[.6/pŧ<"_0F.yF.~y؎yY.v5ؕ4=ؓwboՖIrёrљ.I73G.z[ C_+jZ{1V~%̝;wIYJǝt"M p'n*UjKn<Əᖛni0&rs nqs(n9[n^xrsn9܌Lrsn[nsr3+f!W-7+InVsܬr͇'7s|w<%7?܈fvمfwMbܴ=ٗL'cteқ4M?RYuws!*7CRJVRaI =d+OfP2R5>jKn|xG|ᓏ>h' |@|q>8|O>^8ˉ|q:>1c㓏|.E\)KF>Vp=>XG>6 <$_||˿ ;|k'm4i;GG&Ggh*?,ْZu_s! =@f?l~[?QT~r?<@S*Ԩ?N?~ ᗟz/?g,㗟ϑs<~y]N/?g◟sh3 gB./?Wᗟkjnu"?sl.s/~KoxL~qg;9ىgW^=x]~bƱ/xO~cte`&MsK?g Y$?KX*?Y!s@ɛA~>f`X{:i?t D 0XC0L 0RRE*&@PJT9 #/ $a %q D@$/p(8M@#'PS(DP)9Ofq>\J@p,X `*F s|} *<1F~ O+ /)mxC8H'M3]4ntgbag,dі,`KJ`@Rh Ճ ԛ>Ld+ y'HRR U&H-pC *HAT T * qɱ r2A9IPA! *\.T\ \AqZY f rAUϹ_A!G l3 ;ve7^V=yMAMi ҁ +=5ޤi}駹 `4O) V*j(Z NV"&D &P #$(e"KلU! THb94i`܄G)D=!RFB ?!8BJH! GR9^!sBLT 1b&)'RK )jB q!XM *ćܡ[!>_ %(7<B O)Ď<Bz6iK;eĻ х ѝ) ы чY џ 1 5 '8XrTuԨ:rQG^+@!NuDSqTGu@T!ԩéSGQ:Nu@8:quLT9ԩԩ\:qXcW\:qxU&nSs{Tܧ:A:cV;؍UǞ:uў5J7M=5ޤi} `1ZȢi6ڞ0;j'] LEjG}/a:a: a;azaԇ0ԟ050C4050ELe&GWaTLRBV ar-a|&a !0 &AXa 0V+̑ s^[RxTa =O*N<0K *L;P}yKa:1Natgbag b,`,f,c¬d¬a¬g|Ff3(g|0_|÷ =?(zeROr'OS")Q)zTM=rPKnG=NaW=1UO#gUAԫCUzh3T{z&qggٜzFSz.^\L까zs%UԫW=RzP=qox@|ê'S=ّT.LSTAQyW,R%,U/LFx$(e%KDUQ THtk T ␓(nyⓟ(AV=Q@TQ?QE9JTQ (GU*ʉDE2e.*hrQE\FTQTu\(sl&E[SP/[Q%(+<(lϿe'T]yFQyEً^etdtEƻғEtEY f2,QVZQֲN>蠎~! _1H1TÈ K|H(U1*TIb&W>b$FĈ(Jb4*F18bBL1'GScc"'(NVS)lbqb,|XEKc5W(UZbqb|͊ )ܩ_qb|}bÊ)Ǝ<bγц^=*FPxK12N1zb$WS`c(sc> ck` A16Im4Ԗ_z7 ?452E"(Q) TMÖ:\4 @Hu4P @\ $hPРA F8R 1j84ShP9sM5p1 j25+Q^ HE |jKRpj@<v`ؙ'n<95^/}yM tM5Ѕ@w'44&~LUh6sJ VJ)7 6oHXD!J<%))S9q*UE Aq|'qª'NT1H\q'8WCP+αs49M\qS%8˹HqVq\N\qRVq>͊s+qŹCqn)Ώ<8)<8;oٕ'gQ4N##N=TF{ JV 87H@ASF"ҨiT#M4iT#hT#GҨFQFq9F5r:j,5sh4.S#R\MN|̍jSnQ#_pS|=jS#yXcjdW#igٛH{^R#xU7X5ҝwH/U#}4~2M a9M[4:~$Z HISH$!$i2Hl^@"Te$&A$pMB^ AHu$Wb$ %8P#H(J0Jp2 %8M qMB Se+H .!+\V '7)ܪ_qܥsJ)#J3c`7P=yZ Uvtkt %[JГqJD%% ef19J0J VJBPJn4 kj"R lbFd~)4&rK4QR(WM[J \4m & DX4)J DBMO8HMB8&5q8&5{F} NNݽBBvwu:uwFj{Gs%3sgϳod4x3l>C-Mg37'?l䳣;.䳛ϞE~O>zB>y8QD ͧ|9|X9|9|T9|9|^\9|g>o>or\n>q|ȵs|M%wϏTO@Hb f>s6y21YnY^|`,De9e7|UXGYZ>:<,?:Ȏ~0 \,,Hܒ!p; )HpO ܏@ 8^0 8#) X@PjeXqXp2ppMG\h.nn)J  X4[@A]0=k`N hsCZ>S),̲0+ ,L0d )3 ,ePQj-\"6w nKPNR{Q>tSāDPaNGzESDE[D)Eq EqEHEbQdgZKcQdZĿ(-].+(-S,+n[-{-'*-"",b,bvZ,"!leAb%跈e+x+rEƒ&u|'x"R.(fAEI`4h m`APq\@qV\Rh1[nC1۹=ũ(xh!=)fo(P#^ JRk%c^)I $%)(awĝ)aWw=+a%K{%x(%x%[@EPb G[1X'Y)Xp&%p%G%\h .O/nn);,-f-aj n a!:-aQ,N%,I% Xri -a%U}yQ?O$OY2l`I*(IA%鳀?<v%JSJS.4 4)(MRvwJ݋Rq_JݟR J=RpJ=ŖBJ)RK)R(-yN3,ζs- .q-J-rKRKRRnRnJKKY XJEY-%b),AReRV>VKYӇYG-e=q4JS.4A#I ?32hB0h$  FGp0,nbR 3 'my0pqGpP`YLMpq<'x"'y2pqgp&gy6x.q. IDATp9K˹+kɛ[-;jkz hm6BQ;en{Lk8.'zx/y?<>>>>˾«N &o~G~'~g|~W~7~w~O/!e)Xre(,e),KAenC۹=eH; eF{'eMe@q'x(eνQOQf emXqYƉq2eqeAemRfX8xqe|qe|5qe|ˍqemQnRiՖ1uFeislc-22,cIz,2c2&XJNdս5y2ߖXR.,ʆlH0D#0Sw`Gl pevMTv7ɥ=(24 <# @I8 &3L)9pIz -& @Yoi -fvv1M*}&;=}$I*T&WM'o>)0LC8#60Nٸaa&; @XFxੜٞù\_^x//2. *%d v-hZ {D>!-lϼLo:8]@&2h-HaHB$[pө\cpI4֤Ll %>.$(ZtA̍ǡ$0 Me1@ tǡc-$LY$m`n0M2m`6Sj&[@ d 0 g| $dW9@t8Q`LIb 0h9@&z)Vd(י 2Z@2j$!08s߭9dFsaP Ȅ@7Z bL8h)A; `F lReb hrAP;Ege 2{-<䲁SnsL T,ȴ!032L8HS! @2 Q i]kfA`l8V HL2QX Chd)\607 A)} h dT `Ǹ h L NAhH_J @ p RA6p(8FAH䲁S 46\'brA`nC9@6W2mSk6p42!p ]dA L`m0 `8GcFA{@k`G(Q""d&-drC`(xj 0: 2d!ғ 3 6銂C pIcp ! iӓ@V G(x 0gAcC40W ImhH2!0䶁L1 2S 9vT+dl82  p h w 9`V G3Y s< ?k89 0daPz sLHNA6ptaP Hd98= tZvpr- ; 6KN@ 80bFϚ3 SbIZ@&f~dƂ[@v8ecை@scJ)3@$0W rN d4:  ;c) fikcc?BrSQ𴴀ic-w˜9_\Ss8m  m-`,8u?Xӣc1Lk ~3031Cf7jr,d8 60dC`Z[b/R/rJ2 @SQp6nӮ߿3f$p-`j8:d)?w*G'c1@]@IOi8֙DfSkL@ h eғ\"ʁr b(7{Vߑ)+ 3L\g2~&?LEf2Сȿ˩رNME+Xt^P S9@ ٔ'ݜr܆rّWݙr&݃rfou_ݟr> =r>p=r1r )r~h=rfx=rf=rL=rϵr/qSxʽrrʽrr,ܛ)V) ˭rj,Ml `9Mr,D,]"nyS9@y ˹Si>@JXyj-|GL[ @ HT\ ccpS*x-x֭%uwݨ-½}3/9= ,*2*< f*< fT*< ,*< |* "* / «kz+&* *$VPmYA6 nV +~`D+NJTTJ+RQpE]@Ej)"."}'0h o1# ?GhTeT 2<&tݏj>@Cè;tO}s?èG_̧B<:<:<:<: <:<:guK˭Ϋz&::꼃:ZDum3LuF]MuqpӺ OX7aPeY \qSO=ϲSϫlLb[&=NSE=/_?|ASE=X@E33Pq3'R|BQžI=yG=Ky!,E{{{{{{lbVZO5Գ4Xo#MzڬFZOzt[o^A&X]L>\>P.HCJXCNؐXui697ݔ^a ^s+xmi-wwٙݕ>r}i+o=<~5fi`V9<y=T<<4x 48O+z) ^n ^Ekz- ^o d J@w@4Xk f6j!m {Hؐ ]6x7ؐ |GlHA`O Y.!Y@iXBHFL8'Qp k!$.G k%,A OϺ^pcfx;;Cw#'I $BG@ 0E,!`.# x24,<#2^H彈 eX+ x^g7`Co!mXaU1@z DZ FȀa: ]ǀHE'r>i`G}d97edYI``x8R|m` `*?Әs8ak3G#ϳ!/nI#݆Ff{uG]hcw؋/܇Fv΃hGi-Y,Rchd=FOFO=F\=Fg#F/FFFoFoFmJFl19 l$hh;a1h^g}$4z?8&!'x R`^qx #jL ` 4$M9m`M46,ϱ>/!M&4lśŶ4;GJM|4L?{MA3G3[HYBGD|@ z2M,i4yM4y6M,y4?&/&/&&&o&o&o-&lZh&l&[h6A&;ٔ6GM2&bM)hAGxԦ,lYxѦt ғ ~ScAr.O"qyi%7WٔיLv+ymi=wݙf>a7>sҽi=f~iH|"Rch8iDYShf1O%ó} /LYI``4w@V’.E ˸,-cyyui%7Wݘ&-閴lχ|N|.WE ߺ/-F 3z$-B0%0e0BH z -iL[h[h|[hq-8VRZX+ha]kmlśml [hZhZCb[$fqm1A-+a <`->ʿm1%= Z|wlIOș+*J+<ڴ+lk&d6-f+=݉V>sWZ=hݏV~@ZChe=VfVlRZcheAEmu zm &mVI[}gl9yV_U[}IC%^f}^uCژ&;nE-m|;F_'m|>/Dz(m1y11%ymymymymymymymym96Okz)mWF^Gz#ml-vAUfm`m6F-fm3B6ctf7=Km0hwrm=yӆ| /e^1kn7lȷxې!?CC~' %_5`ȟПk/.07ؘ7yxwْmhc܉vtW=h{܏v~@ڙChgf8iw{{{{{{{{[m;Nivmvۍi]moL}d)ZhғY@JЩXrE¬*Y k%n@nL݌0%a>#>e> v+v7|瞄}F"LJY=0sG-$|fAfqO4LS tÄ=0a5L f /"^B0za6Zlѻ IDAT ʛ 6Ä0L*Ä5LÄm2LÄ &lQ2l7=X .&5<`؇xذo>} y^0Kl\.IK ,td) Kڼk$pC:xM]7܊>v[:Kwo܋~v_:`FY<fH:|:":XR;;x;`IOe<L:Xs`ϧg/oV:r:J;:àtfɷvpA;n!;|Gy6$ް7yˎ?\8)W%‹AW\&&6)[#&§nG/ܑ_ sw"OM_ݏ3x f"Dӣ0Db#DX2",qDXa9O'?=5B a-/"º^B {"^k7!Fx"V!nV!b"[ÐHr)4b^#3` iĉm{ψw /F|'497#X8QpAc +eEW"Tx5y\(o>Qr#Dْm+w"ʷJ܃(?E'LDY=(sxQ6(Q e!KO<(QO5J3ee!jO5gRD(Q6lFzQjFZi({Zk Fd-F2JïQ7 `Q«FsAiI`Oe37t:Xɼ;nL'|t)-_;7L'߻t+/t2F'sy$|ɂ"M'{,, vɲB'+x:YtII'x%tIWII'x#l-vvvitvitNӰtҙ|i7=vK0hg:{~Ӈx )gy6ɼig(OXMl$0cc%W&Kk$p]bx؄͉[s%W|͎|wBݝ1d#H<sz81(cXBb,l 113Fe<{*1V c<1|b8co#Ʀ^I-17F̛c'o#ƮV#f1b#F̀1b6#f1b#fĘ1bƌmFq1c2. ˼b,G5 4(ҕL\W+N]LMmqCxM#>f >3/ݎ.qGܕ.~vbFfrՃb=.|X"XRb =.d4bϢ=..XϋbC/M..b;o.o.o....2d]ve]e v9yCvڕ]>óv封]9\( cq!$a*yXIy. |6;G~r7ę}33xqf`aę<8 Z@E,6NXF<8zqSgg56N<8:8q'ƉW'5Ɖ{qƉ{qV'Njĭ3N܀q 'nq↓u't ; 4qI. Kl<s$AWº3~;;*kddק݈n>c7ܒn+ug~qwѽf&YfNyS6sp+zm;wGz]Wpzѽa zCa>HzX|zX"{a =zXaEOV zXó졇g=62z+k졇zz;졇kz{{z %EzCO>@ ؓd{2A=ؓz|ɰ=APO,`: YIdl%2$2D40TxH05I6. w|nBܜ_[[#N$]I 3' fv@<z ,Q$X$%$X2$XIOO2AU<{ $X L`#/"^b 6^mי d A $J~3A@S L0l ;M0~qp‰m" !ILHB`gyD HdDF%2`l૮L/xy\^=>tCzOٔ-kqz'~vgzeFfr/z}e@zCe~zY<{eqeIKe=^V{eeO<^zY˳e]ϳ^6t:^z+^z^z{J{^{^zmJ~j^ۓkWP MF Лf@`o MLƑ$0s.`: X ˹k*dWyy]>>c7ܔ>+om݁>~Wwܝ>ffݏ>bn<>X#cQ>>fcy>V$XS5=>c/>6"K죏>>ϛ죏>o>+쳏>GO-g(o"g,>RB =k_2a/ }Qp_ K /# C ` ?+zIB?ok6|O?)9_|7nE?߻-H?LA?2Ϝo? z8,Q?,,~gEOU<~Y߳짟=~qxg+/~*k~o~oI~*OYe?&?f߶ogn~?='?c؟ П~#(HpNrrH`2o1)1|Wn[3n;1 n 0{2Cd=X#/39ztr0 8y 1^l00'50`}ۦ䷭0`{hϸ H~^ p"w;d$d@@2\@J% np^s&`03̛ k2|Ⱥ|'n 0| =? 3 21ȼA y,20,c ,o ; y2Z z 9 :A le2^ ^렃 z 2?+dЪ%mtAoC?#ɿrA{; `$ &!p0c`0/rd0{a`L{$p%&oxYu|LKrS&-߹%ؖ_ .L`fu&0swaRY݆]]î%Ey1b5g]sx1êk35t3='G` }q}?}U=Oԩz!:\!Bӑc ў:;dU+D:} 1@*D!T!BЕ bG]!j"!znV!nn>"L}S 3VٗU S1zb dA`ȂP Q@Ȇ!F.IK-<@<,f3eӟ|A/40 YQoaLf= j_l:0%_BMt„N)LWtN%LwzL9 .P0u„&h]0av(LX0avӍ &[i^*LX(0a=ai}K ;mf?RXa" -[ 0o(–["(oV;Xa-MD4_a1_k4cv&qDX݈k/"?j?"Mt6:R "tN B'4EKg)B~:O" ҅a.Ut"DI*B]5u"Dff6ٿ+BD*`v̾e=<"D,X  0bA`FFBdw _ Q)4j6L`AQDl \Qs,dFՎDY2%rV迈"(Q6ފec(Q6e (Q֑U(;DEU(J:CQ9e.P(CuD%](Qv(JTDu[i^}f1ٗ;jMlXF(2{bHvXv [K'y̡cӗO|W e|w,a ؅@{RHR&l)ERlmNGS@GЙ.:CQ@o, G )`8#t)fG]I;3VR8KU@-f0{>b O}Kf_1w̾o6d6XX`A`6 (Q@  lX`yKX*& l=@- /} RPWb0W=1K\ 5_Fc K5?\EcC1~،u1#l hOCѕn:Y1bVtb#(]1vUcW]bĈiٛf.}cf=k;f-lD1#1 c,( fbj#'0{`Dv`lX|@'n8Y׋|§sK ""kq;"2NYJJ6ܝ8d#MMTEgKٖt^*N.:QqN%NL `U8C7ʼn3R(N1Bqk'N&fn0{;c'G>;l-^5w~`6Aq -7&ox(nyZڂM%shQ7||"|~$X`5h8 TI˵3 @ 6ڃ'C\` %HP訣IЉ:讓 Ao ,%H0!: L UJ 04Mfo3{Ws-6ٿ[}ѵ|V͆0SB JX  ,z%lQ@"Y L\@b;6#K’J\ѝ,&|$Y" &7|wAe|IK$#iOl¦7s]$IbkFh vc$IW$IzK/t$s$0]$IF1Z(Iu$IꚌ%`w(i^}4S']g;`5;Zm?~j LɮJZ tA`҂nVI1E,Vr-< <\Sh_L5Bc Krv&w\BڱmVSH:HRHg8 NUGB0PgQ<RH]B NLR^BCd6Ws3v5O}js5/7]{|h6BC "O R A:ڋ6(c泀|g|> Y@PX2`vX_RdgNf ZPv*褣)+t(u2ENWE **u("]A)M-*2t{2r50EbfQ̆7;0ȂQ40LwmLtpՒ;0yB|,KE,@R{~(RIjRؘ?iRlG)RcKHmV*El L)zS'*E:E)R dTtRh])R4cI*SS$79vw;8 3NyNyݔ)! *eA`ʂ-[RJ{:PRJ':kXJMRJ@RJ0RJEW)ꢌT;tC *5tCw);CdWɮuޱ]CqRfK]XRn248/TRqh#X;PfοeޔY7252K@;26bcSelڃ2{a_?2{pBW2I/2G22H2(L ]2CW:tC\qt1sAzUerO;8enP憁e.PjXظUڐ{1$݋!i Lӑ,P'Y"i 0ҖMO?4ibk4iA+MNtJ;=tҤC_4i2H(Ma יJ&MZ9tC;tC3H7(mVr~qIuE^qMs# 2HI *Wi7 HQ@ .v J%aiwdLyq|E6_Ao8vܺ.[7ۍrf{Sn?rtrEorU3:MSNv.qJSykC7;tC:C;C;4Yzǡ8pءܱq忪3ԁ s0߃ s}8~`*l7 Kܕ K7N%QTtSQT؎ǫ 1X' *Ѕ] YD&:tCw;C:CPE,B9CﻖaJ‚ 7 p X@ҽRi`3iP*Ҝ?*3ΟB FRiq8UR`URIWURI/zhURiJ*JNU%TR:_J]u~C7{-t}=`=ETE^qo:2ԘCEePn=WT>:6wv0<5u9Y^TOUReQTogdxߋ*K4*lP*K?*LTEUTt"tS/sjU9<ѡnq=?*pݬ:TTQ@r«\|5ڄ6rϿP]8s80-M~cUM 2w{jڞjۀ(1s IDATUSxUcEdtg!t/U9L&z57yGԐezyx`5Р<apתj S 4G-`60$,AN5=ߪ 94:?L4o n\1N4j^6_4'S#VtOPcQxBV÷z\+=^ͳ~ïew=QF1j 71Ea<>V7:6)d~hr%tuY49?#e'5Vɭ0[M4ٌ߁j>4DPVtLӤ3Ԕe:/i%^U^MCMÏj1W2 PS\Y&T0P3&/Ԥ6&jI-S~KՕ)>Lq0ŭ.oÙLqvWMd~) 94c[ӵ=|kC'9 6䘒Y)LQY]W$?0Emd)iZ- {wdjϏXO}m97ToMernMernMŊTLՉv.lb&M؝@ 6L^ͻvKXi*5j4N\MUAG+]R[=9gM,sCiiƩf^jff\9c챓 . k՜>n {{cz%`fiV,2<6M4˟ h9X5_m??߱D;0-gz0Hua4hӼf3khM`xMq`EgL9 |{"afe ,`~[lh:gjcAr*ulA;oܳe'ӽ4^Byӽwto7Mg:t3]i:;Jv_^Vs\m}_ھ}=2+kk[mt/0=>t׸8}oˌܳԙg?3AH`|` |5#NΫ=;P{fy|bݜW{P9T=WNX"1`:6Y`&p>UVh#fo3s~V 3\bodk&3њLoqL2^<~ufyy<~u}9~{??s=e'>W,4*y|J{yTt6="OJPWf^,ˬlPf.ì5 h<~h?:Yy<>Q|E{#y *z)YQTǫxStkJZ-K՞ٹ1;yal̦)]k gNkqnD}Edܐy,wy` 9nJQPCa8 dl-^Y ԝ9,baN`19 *:Ps AE'hNrFU+Z)npO7V-k19˝vPG9nJ2(ݪE}^$h~d6p;6ZhC?#-y&HK`jŜ -hWhV![)'׼|Vemk/ժ Fo{>Qmk+o.SYuWE |6ˏTͺ">׏5Yا/嗮OR} J] oʺߖ_jo$`VZnUvZsyo]~\ZͲX2W~__s\XT}7y`JY[guh LkW;Tʺ:"u?>\ X+ǖQzk=LIENDB`png++-0.2.5/test/cmp/palette8_tRNS.png.out0000644000175000017500000000316411461476005016664 0ustar useruserPNG  IHDRPLTE  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  stRNS  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~X#IDATxm۶m۶mj۶m۶m۞>c@A "da† !bQF#fqƋ aI&K"eiҦK!cYf˞#gy_`E+^deʖ+_bUV^fu֫ߠaM6kޢemڶkߡc]vޣg}` 0?C##(4?C#$2?OC#3,6?C# "1_/C#+*5_C#&3ߊoC#;.7ߋC#!0?C#')4?C#%2_C#7-6C##1?C#/+5C#'3C#?/7zIENDB`png++-0.2.5/test/cmp/palette4.png.out0000644000175000017500000000023611461476005015747 0ustar useruserPNG  IHDR6!0PLTE//??OO__ooo_O?/6I)IDATc`TvMg2 `2:Y @j cqȸ 4IENDB`png++-0.2.5/test/cmp/palette2.png.out0000644000175000017500000000013511461476005015743 0ustar useruserPNG  IHDR PLTE???\ IDATc`HqhIENDB`png++-0.2.5/test/cmp/gray_packed_2.png.out0000644000175000017500000000012311461476005016712 0ustar useruserPNG  IHDR =IDATc(` Ǡa.kpoIENDB`png++-0.2.5/test/cmp/pngsuite/0000755000175000017500000000000011461476005014546 5ustar useruserpng++-0.2.5/test/cmp/pngsuite/s38n3p04.png.RGB.16.out0000644000175000017500000000051511461476005020123 0ustar useruserPNG  IHDR&&wϢIDAThQ D9ĘVyM  <mYH\3;hhtz! H'36׵^xjCqWɴ=Lrr3ϐ_d=B+AXRQsS]ex = ϨW??u#w$^t3ٻՃ@$Y?sJ]k$53'YhH%1%KkS耬8I6ve<!IߌQ!\C!zH^u}&IENDB`png++-0.2.5/test/cmp/pngsuite/s05n3p02.png.GA.8.out0000644000175000017500000000014211461476005017705 0ustar useruserPNG  IHDR'fn)IDAT5ʱ ѱ:56ec),8 vMj+ڬIENDB`png++-0.2.5/test/cmp/pngsuite/s33n3p04.png.RGB.16.out0000644000175000017500000000054711461476005020123 0ustar useruserPNG  IHDR!!{.IDATX՘Q Cm;wWGW5}vDJ &fy$RXrM0`%u'\NZς~(i$uk%˨ VA. /'T-yUXqf(q?#Hu|5{dgmI-ͺ3By| IENDB`png++-0.2.5/test/cmp/pngsuite/bgbn4a08.png.GA.8.out0000644000175000017500000000015611461476005020025 0ustar useruserPNG  IHDR s5IDATHch41",(,?a0T1`4GÀ*hP* }qXIENDB`png++-0.2.5/test/cmp/pngsuite/s32i3p04.png.RGBA.16.out0000644000175000017500000000110411461476005020204 0ustar useruserPNG  IHDR T! IDAThX[ =ݳw YH hN őPtO_j 5eRea5L06aW{~FoCі]:;eԠrK-|f_p dr=rt8嬅dU;%5/LL($=݋K\XFL{Ҟ]eЋt(^ Cyܿ1DKe /+pHdG] 'dMOIηzzzzzzQvIENDB`png++-0.2.5/test/cmp/pngsuite/basn6a16.png.GA.16.out0000644000175000017500000000420011461476005020112 0ustar useruserPNG  IHDR n<GIDATXk]u9И:IxS]5mlaJ*xx[4LjB%b"` IEו&))'NaPb;q`㙹瞽a kkkIVaK{~vt ޱ)\Lp exW쉗hޖ&~cCAhxgQlVo!BGC8HAq]Ļx ꃌm64ħ7⯘t~/ak0^%ۚVn|!>찕{(^l&>L^//;o&LV'7K֋G*ݗ}įv^O F5@SݴwR/ |8#U甇f&N'>O>8q.å8LX|pa.4厴7{kR; vPN~>O|%<^c3QJ!ȊfcMگR~q_\F<%݀'{_&& sfPctKCsw#W)/\Lt#~p=&n|p$ÓnZz'Ѫ jSA?F{FJ1Yw 3.U$;̠tԊnƖsyh?CX^d||gAh/kڟ,ߪi">+fpbJ1huSO{pCq'AZ'GhHqb%IfѬ-".\Dq5Ek1^Z笠rc6:Jb'|xۉ+х[RŎ 9qz?wYpicLH)d+ǘ_q4e 0pń)\I/Z^[z1 sqfnd.&LK.dw#'CփDx8-1a,a>u'9q)oeFx^͗yFfv0:&R_H;=KlaWvTL>FVrj]pQ'&Q{.?^&jG7?[y8jmvS'9 5S=Ĝ>ZNxg^&?]=@~yOjz wusS\E(cozd{Pۛ'VPv^OQO_A9@y RtZclq%CoK*YJlI%Gv;%X©^ewb {?n<ߩ(+1bi6Lj]-o-$B-oY'KY~cRŃu2DFP#'~p3?q٧ɎgW$wQ"K%ޠLJvRC`d5f#, \$F,qA/ /`d' @Su;$,je.2E&ٖUQ|lY! q;_hWhݐ Ov8?ַhH 5HC_z|ïUcgHGv }0և{[eCxج몏lX&:Rf\>%:Uj&1x,TZ5qEUh%qwI6l6^<^CfbӞjNp 2ֶ40@7Vs{ BbA<wSܾNczO`1Yw-Ӿ}I`q -)ijg祵n"#v' l3ɞ/SV _EIIENDB`png++-0.2.5/test/cmp/pngsuite/tbgn3p08.png.RGBA.16.out0000644000175000017500000000305311461476005020367 0ustar useruserPNG  IHDR #ꦷIDATh_hTϴ*рF0#$P *U!>Ȳ`\h|Z}Z*hi󐇀)dA0B@D)F`d07L3™3w~{?w3gu֏lM6Ce?5UQN .ڊ6 w@2n_YC ᪫zUdOv fe Y&ermq|'w@&Mx≬N:1mk-ZsuOV Uw@2|뮻{e.χN1c`ƌ馛Uߪ9W^:Sq5KYێ֫GaoB$fW v@*O|AW\u9L4iAV9N+|=_Ĕ39?%rXT\ZkN:l\6.[; W>}(䌾堃Vj4n?|5 +]w|spahR a]^xs;lYwq5ay2nFʝ+8ۜ#wޅ᭚Q:91g~|a#1hy;. VG/)S:Z>B: -tbĊ\hԨqR7sʪ8U6zꩌ8PShРaCז9 5M6&j2` `L2H;?^< Fh:`M 送a400!mNDcIENDB`png++-0.2.5/test/cmp/pngsuite/f03n2c08.png.GRAY.8.out0000644000175000017500000000115511461476005020136 0ustar useruserPNG  IHDR V%(4IDAT8eS=d5 =v>7Ƕ !Q DBH+T![nOM@44TTHTzwf3O '(sbs.T{;RNIU]DsTiwTdWKfffB |ء.uUEe9,w*6 `zX&2MޓBRL,Zg5A$h[\.$H.?H5ޠct>{}?fu߇{xxÇ>)"ls}Zk/|_DD1Ƙ\9>I'G9RK]e](_?>@!I_3I9q g 0-^Ed>Czo]ܶm)")YιZO;ބP#_̊ ^6[ @ǘq:חmNTQ5d9K,uYTU:6Kr.R$bԒYN)KvTTMfl%I`*IS`)pVT/ċXIENDB`png++-0.2.5/test/cmp/pngsuite/s40n3p04.png.GA.8.out0000644000175000017500000000047311461476005017715 0ustar useruserPNG  IHDR((&pIDATH!R@G'Avj*zL8@')8 J"!$bWWƋ;V޼_:L28pB@xA. ,QRc #GmdWXY.#X0b,r$كFvl!?e~?7ݔm,C>"p .,L|C>rIA`rƾgV8}v;5LjIENDB`png++-0.2.5/test/cmp/pngsuite/s35n3p04.png.RGB.16.out0000644000175000017500000000055711461476005020126 0ustar useruserPNG  IHDR##+M6IDATXݘA0 w~WpclaphW!-÷ƧkR gMxbz N/7e֍(NI\}r\*HJ) "a(Hp8@q @LjT AX@Q @3<A\zngrX'FQfmnl6v8`\c>;~`t:u/n^.ύcw]fNvDZ (YRJ^0UARR ~ZvG!>ilބtGFZl "n7.zo .'*Zj޶$IRdL&Z@o(SWmru߾D!('xzE~ϼ阉zI$I8[<߉R^; >cx{K1IENDB`png++-0.2.5/test/cmp/pngsuite/basn6a08.png.GA.16.out0000644000175000017500000000023011461476005020112 0ustar useruserPNG  IHDR n<_IDATXҡ 0 Dkk,nI6HQyHH| ,<}4IҽtE[`4`<4\4OzzxЀxpIENDB`png++-0.2.5/test/cmp/pngsuite/tbwn3p08.png.GA.16.out0000644000175000017500000000173511461476005020170 0ustar useruserPNG  IHDR n<IDATXAU˩FHsJtԚFjh& iQ6EEp $hPERAa*(hDñFmjP8܇}}{?绷^د2. `]7v].bXQZ 6|p7>>s%sDYlE<؁q,W]2dLJx7{0Oܷ)d`7֦uwM/D46k,o" u\َiN—؏G` I˕Ҭ'UpK+ЍGx q{1|0科O~iy O`1xUV9xX]%eӆg)0Fi*IFd`%&&R܎ Zq/ǟ" uP`2=%/Έr4JXߙ}":2@.1_Pa\iyN,"7⊨0Y$+@ߟOϊTq7fp% B?_+7GZ@pnѨ bhYpP3"%^%SG"x .֜d ߈XJ>= z҆y9y*z;~$o95WU*2#th-Tܔ;DDj !ᄒ' &eYvdHRAYk8efnA / qKoA!1% ƏcR Wd}]@£b`N^tXhLMvXTI.n$=,*bKʬggr[wVҬ'):EI鄅d& eA@lƒ9KSWQ-|I^q,NwNѨ^V0O+?gsxIENDB`png++-0.2.5/test/cmp/pngsuite/f02n0g08.png.RGB.16.out0000644000175000017500000000074411461476005020071 0ustar useruserPNG  IHDR 1IDATX՘-0?مpn@#3(<@ @2}"Ph6"oJ/}3Auԝ~] 32</ }gϞhܹc9V>k*"2`k$& I aN8}z,(gKcl٪]Q-}K٢EKMÜ9s:ň#'2g*ަM;?FKC2eJѴ\bh> ؄>QOA`A>IBu .Q_d<~/eR% 0aĉƎ%K/~;d06yl\ʨ/ hҤEҷF@Ƨ0=F. ii<R0򑮆 TSIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g02.png.RGBA.8.out0000644000175000017500000000022711461476005020257 0ustar useruserPNG  IHDR szz^IDATXK 0DgJbm6!XRvW}?՚'@sFk85g87҉$IENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a08.png.RGB.8.out0000644000175000017500000000031311461476005020135 0ustar useruserPNG  IHDR 5IDATH1 =HaiWOQ_V l@ePC?1ds& u߸ޫ9{?cXLXI)8m)%,s^ ?JC) ;tG0`50V[ H)50\;Mz|WIENDB`png++-0.2.5/test/cmp/pngsuite/basn3p02.png.GA.8.out0000644000175000017500000000023211461476005020043 0ustar useruserPNG  IHDR saIDATHcASP:<` ` B~%?^< @ÀxGx/Pf0 5 hy0Z0 +(~IENDB`png++-0.2.5/test/cmp/pngsuite/s01i3p01.png.RGBA.8.out0000644000175000017500000000010611461476005020117 0ustar useruserPNG  IHDRh IDATc`` :IENDB`png++-0.2.5/test/cmp/pngsuite/f03n2c08.png.RGB.16.out0000644000175000017500000000237511461476005020072 0ustar useruserPNG  IHDR 1IDATX;,fz^;34@"q` K !"#"p!btCD-8q`  @$ ܻ޻EP=ӳ+uc_1 Zࢧٯ_Z+4r;q~CP$vg P|rQp){pd-vȌ J3g5Ӈ02B-bL7 PShwXX8hR.q;, ܵKV.U[-Yek+֢ґJs#_8oXQΑ#Qt9EA۵(cg tgmhВ :D#nsD!_8:@D59$*o0ħtL_/Q}S|D@qG\dE]Sc[&z왕~/V׉h *LB4yY(Ug[#qoqرЄ-I3EȢh4S*1O_Ս=ro!Yd"Ӽ:궗DVt1ʼnSݷ?cWvTޞuֿ&xϳ'5r^FEj ׮z 𩯜 JVcuI/q{{ L4)"F٘?fUJ#+̱ÚFGMQlUcbA7OgcuSeiҦղ oc8;`ObǍ[i~y5Qpۘ$% x>+DN]"#wi\Ӣ?xSp~/=eus #cjY<7sS,Z<0cRPZct.z1z/F?Pok+e?u)^X)n0uZNP5KE/bi)XZbew*dn;*-[[_dIxa KSuġsHY](8w*t?*QO2y#T"51s25(22M:Ӱ躯HgXY* y57dFR癜WN}g2QĊk0 iCǦ2V`fHIENDB`png++-0.2.5/test/cmp/pngsuite/s38n3p04.png.GA.8.out0000644000175000017500000000046011461476005017720 0ustar useruserPNG  IHDR&&4!%IDATH!NAdA6'lV!<@q'U"kP{YIp vS}+6O{罙of|:ܻ7nzsԽ.~+e{+7lj]]gAn66¶^PY`9a4,Fk V!XjN"b_#߀TJdB:Q,b{WD*I)[J,G5it _w7 0IENDB`png++-0.2.5/test/cmp/pngsuite/s04i3p01.png.RGB.16.out0000644000175000017500000000014611461476005020104 0ustar useruserPNG  IHDR-IDATU˱  KgMoY)(h!)ʞ?#$srIENDB`png++-0.2.5/test/cmp/pngsuite/f02n2c08.png.GA.8.out0000644000175000017500000000126411461476005017663 0ustar useruserPNG  IHDR s{IDATH}An0?ۓy;q Hwܠ =X!vl^_,1"r,o81Șf +>gG p,]#8`q1&*VuCxz sVn&׋ 2a^zI%iزe˳b342z9qK6v&2R.7#OK hK@933 ћZ;^`kmvN4ٟţ6g%W")rűݖE44 ep;`M-bpZFA8TIENDB`png++-0.2.5/test/cmp/pngsuite/s07i3p02.png.RGBA.16.out0000644000175000017500000000021711461476005020210 0ustar useruserPNG  IHDRŻVIDAT]0?GSׇcb(LE%’ ,;| i/WA(r|JMM#U _M)OIENDB`png++-0.2.5/test/cmp/pngsuite/s01n3p01.png.GRAY.8.out0000644000175000017500000000010311461476005020150 0ustar useruserPNG  IHDR:~U IDATcû IENDB`png++-0.2.5/test/cmp/pngsuite/tbgn2c16.png.GRAY.16.out0000644000175000017500000000213511461476005020377 0ustar useruserPNG  IHDR k$IDATHUoLSw=kP!@諱h6l2Q6/KD'00ͤ[tK3FY&Ê8KU,lB'ePhkw޹{r}˨&B&fbt~?WhBdWkk3 ǎҰВdoƝ"&Wd^(ZY䯁)nSnwe~<% {oW̳/|ҧ$ d`㙾 < /k7VZLZ /lZ]R-_GOP*u`4zs>p-sË }ނ3Uu*jA/ۓNx1$BË,oҪ &ST'l7 ƴ)r~:8p'N^ZZ=,;y #%N8qi]d:i Lf XX`vg\Q\-{Ǔt'msNtQ|eVaûrg XE`Is&&:;#khf{ 4iKC6b@vF!iQsS;GV6Қar8Hy'uonҹf*㟞OdQHﷵRgxHmyKWfttMJ6^@0 4R1\n ~? g~q|UG,՗&e.G-33P*\\!u!|C\o*LbQh<1d9o̔J9DXjϛe4R,<ZW(-ewc%rrÙ5c=! (IITZ^NkKL}nHj"5I$H64H2C$L E7*^TK1fF[GC%I& +s#AN̙yμysv,R*R,K K-YU5,̦,ƛloT({ٗ(P~74IzfZlAZ! ~AN 4N& bc.&ĐNKikYi4uk<;̞rHC TS.E3G {5ʽVfNFLO}I<(;|cƾ.(al& `9,@S5bcы䨜!w&+L. 7RS)* 4@!?-8Qچ<(f2ck%ᮉ5CKOmcwk~%}uW:U|jtA֤SRKh)c-c'5QG1Sj5+cuH Jf kÚC[uos ock;ԋ!։. V8jf9mKƽ^=rN[rLY8&ٔLi[MAz^X<3HI3(ôS}ʡb<='`1>D?fGM6~ḥU+#uɊQ@/3Y5hoo3xBwn8%& Ǡ !@k=l8$Pɚ,UѾI u)Jcj[A -l+m2bA^y򑓲O>L70>)8$\(@O P 01pA@ǎA0R _x ݕቇIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g02.png.GRAY.16.out0000644000175000017500000000027711461476005020365 0ustar useruserPNG  IHDR qIDATHY 0 D_+撹d*ґ hd,_#0EX(b?$=R#Uvh@sOSW=Dd vecovc>}tIENDB`png++-0.2.5/test/cmp/pngsuite/f00n2c08.png.RGBA.8.out0000644000175000017500000000214611461476005020105 0ustar useruserPNG  IHDR szz-IDATX=oE7v{c(A@H>2- 4Q( RDAA!!@D$'gr㗻bfvfɂg^yެB(r(8_) BANZꠁ++гk}/蠨Cd$gW2G&}d\-2@D^ Д&o!AN{ %G@"%R`lMeM/y~ J`bMmb9}PVy`"?Bb= B,(CCdǝzrG@0AY[(jicZ/i;~&~< TkB1UucxK~WI(Z`[gU?sȑNb+\F/SFTykyw=0r$B> R}=Iz{_^ BNS!m zB(~O=wM(DC?M]O{65^.ۧeù!kNtpP{QNCpqOĺF[5lG`Bܻ@w eu#(P[WBCh"-7ŃfK\dL,]jZ-:d}WֵxBl.:@*r*$T6\?=8hX$ʹKj8^P=x, e;ℇ MǛT<A044N xTIENDB`png++-0.2.5/test/cmp/pngsuite/basn3p08.png.RGB.16.out0000644000175000017500000000045311461476005020260 0ustar useruserPNG  IHDR 1IDATX혱0 D/(H,UPݳFuD:AFΊ)ǫoXs}x .w>w/⵷{-_;SLj"w)~'3|^{G*I]4Ý=sRnS+?+ѥeʡ\&/^ov?0r@ՉG:BMNFcyF4Fx jIENDB`png++-0.2.5/test/cmp/pngsuite/tp0n3p08.png.GRAY.8.out0000644000175000017500000000123011461476005020261 0ustar useruserPNG  IHDR V%(_IDAT8}OHq?A+y16W3FnBB#)%$y([]x"(!az+[Ԗ^mԭXݻM{~x~<_=aÝN{u?3ӯ9rwK=[osw_}ej\Xn>P:g.hPB'{ز^qktñArLZ!ʦ:<ͤaRBKD_]UtH ͸"*RxA4'ṊA|Ut(㆙ WDf ȿ<4#J.aҰt :)`[SQ_'^m>B>jr`9) lx*T -XP/8S\@DVU5J:_yJWzٰ̲4]ZYt ZbR@{(cX+ b=_5=>s :EmLmʥ:z2k73 !8&d&c;Ncyk-5B@4a=Aj# Ȋu jxQ(N_Gu:+IENDB`png++-0.2.5/test/cmp/pngsuite/tp0n1g08.png.GRAY.8.out0000644000175000017500000000124111461476005020250 0ustar useruserPNG  IHDR V%(hIDAT8}]HqM2?rY65K]hddaQQ؅ldHPAt}t+BRUaH E-6kL9[_du{\{9Gr-_[qŃ=CX=. .Zmm9sn'%.o=?Ud^g#!{}]DЯvu1ޤGb];;0~Y4$pϐKd[/{j:Ru>Gcèۚp!]v4[>ˎξu#~ENŒ].?+FSD^RSe:^z52E$8 &*az$"a lUEy9Z*XWr=+pȶSM l;h ϫt;\rlnn 0(RVۂP%>rB-)ԙnQIHL0˧2ky݄:Ubrd,)gk;(~V٬uGU@Y޾ vK$j 8P=MIƻ9WR'uf5]K.ݣ6< ,=ۂ?)cuIENDB`png++-0.2.5/test/cmp/pngsuite/tbgn2c16.png.GA.16.out0000644000175000017500000000246311461476005020130 0ustar useruserPNG  IHDR n<IDATXLUe?{{7``'L{L('94?\8eSem~"6MXRcK(R6Ą Wm vs/g;;<>|y*1eb p钢]c**p!̜BA]|omGp8rh]&D xs;|JSgBtty3<] %oX!}%N)D!غNN0~:,lX 7ߡ\]]<!rsRP/ P UH6Q39 AlBqEEg#a%T}SP*Y;(FS3̂ӅC; XL$?WGAm[ ;{"Ahj||߂;Qs|Q+aW!@i,hHO"ab=04G < I/,h| 7pB^Pì|h_Wem̀ ./q7Խ _%R3ؙiX# oMpsi$8 佭 _A|\].u0Y5`_dtBc# :p׃`4ZH:UF^Wak x^p=\0 bkcA@{;XԢOςp#c:baa94st0;| C-ũSVߗ VJA t/jmw`S~`9i0}p> ƫ0mkh&{z0m= aQ=\!I`'0-M۬(;ԂZA \s9ޅgxr2L,dQlIxHllp:K}s aaZ7n(ډN'=YW7NB(x,]W /YwAUe7TKJcWl-Z@Z}ODG h/dr$%##X~bQߞ^0A ʱ+Xq֯FY!׋@ EEpvy¶<*JQTUFG˽HVɑ1!eҞpF%$@AE iRK|诮 >>T€! $[%)'"";/fVuQ_Xjܿs@x<Z,P=MM ƱOoIENDB`png++-0.2.5/test/cmp/pngsuite/s36i3p04.png.GA.16.out0000644000175000017500000000107111461476005017767 0ustar useruserPNG  IHDR$$lIDATX͗n0E`VR'(* `hOЧ OQ4 FMcuRN*r@IFIJIBI -Z--lQe }ghd^\`sNJӘ.W]Ĩ ˨ÆsySN:qN$\ϵc(1@,^sʇdѡD#PT9i@J7m.TV1[x>= XoIχ"FF~y ud q$ m69LU;xɨO5!=Y;mh34oGnq~[; c.+x}3T?_s샊f}6;'bL Rnm:C"̐T "t. 2dx"NQrJuB ڭuQmj(x[I)_FGk}>:Vr,Ȭl_$ \)kM2sV&4>[@OIENDB`png++-0.2.5/test/cmp/pngsuite/tp1n3p08.png.GA.16.out0000644000175000017500000000173511461476005020100 0ustar useruserPNG  IHDR n<IDATXAU˩FHsJtԚFjh& iQ6EEp $hPERAa*(hDñFmjP8܇}}{?绷^د2. `]7v].bXQZ 6|p7>>s%sDYlE<؁q,W]2dLJx7{0Oܷ)d`7֦uwM/D46k,o" u\َiN—؏G` I˕Ҭ'UpK+ЍGx q{1|0科O~iy O`1xUV9xX]%eӆg)0Fi*IFd`%&&R܎ Zq/ǟ" uP`2=%/Έr4JXߙ}":2@.1_Pa\iyN,"7⊨0Y$+@ߟOϊTq7fp% B?_+7GZ@pnѨ bhYpP3"%^%SG"x .֜d ߈XJ>= z҆y9y*z;~$o95WU*2#th-Tܔ;DDj !ᄒ' &eYvdHRAYk8efnA / qKoA!1% ƏcR Wd}]@£b`N^tXhLMvXTI.n$=,*bKʬggr[wVҬ'):EI鄅d& eA@lƒ9KSWQ-|I^q,NwNѨ^V0O+?gsxIENDB`png++-0.2.5/test/cmp/pngsuite/s01i3p01.png.GA.16.out0000644000175000017500000000010611461476005017752 0ustar useruserPNG  IHDR IDATcbK_0IENDB`png++-0.2.5/test/cmp/pngsuite/basn6a16.png.GRAY.8.out0000644000175000017500000000113311461476005020310 0ustar useruserPNG  IHDR V%("IDAT8}A%E DNj  q9# tׯ*; VXs:}&9fff $AH*#Y# ;K!I3R#`@D䞳"%*eo-k(W\{U#Ig͞I vۖ5gwD˚9g7#}9g7EDvuIvf#AzYNNFYreu7EEط-d^ݤDDG,޷_$% [5 !ոn@EhjQ5f/iSIENDB`png++-0.2.5/test/cmp/pngsuite/bgbn4a08.png.RGBA.16.out0000644000175000017500000000025011461476005020323 0ustar useruserPNG  IHDR #ꦷoIDATh1 D Xv*uBy su:'9?흙QT++/F<@ot78@p @8#Hot7`li&^}!:IENDB`png++-0.2.5/test/cmp/pngsuite/bgyn6a16.png.GA.8.out0000644000175000017500000000134411461476005020055 0ustar useruserPNG  IHDR sIDATHn0؞ЪرXz[Jݡ"(ɴ$9mf`Ep応sx?O#\ӡgGG('.@O#AGapy ):hHB! +A pU䄆<cKCocEH>3 ˊx{֋_kI58.\/ES? S8<= {P0!H{h^y'}ǚAPh +kx\pXxA(4bq;xV:ԏ M%°03#|;eqxaFJ9Rd I,fddaqf9Vdݣ_#_ #倁%kmhc^=fB5eB&+#xn#\CSuO0q;KQ\{n! ea_&QtNxVY8oЉH3'qC ̖Hf&^q}Z^؎3# |af9at͌ᖅPJSlҟC_LMf F۸%tԠ+6C~ 5K UxK$:݃%}gAvIzJHFAK}!I%dp?,UWIENDB`png++-0.2.5/test/cmp/pngsuite/tbbn1g04.png.GA.8.out0000644000175000017500000000112211461476005020033 0ustar useruserPNG  IHDR sIDATH[0 W BH!t d t L!46L A׹vt|kyG!#͟wտ_ Ā̳ow ̳_?sfA>p`^QcDc@wV0Bx83=4z$2s&Б 2*/X}YR iB!cIt/(B"WF;BA+qPE0 䚅;P0RECɌX\>e( EZ Rs.RRHl֚l3FDQeS0] uZJcHVy:]kJH>Bux4V _|\Ysg\*`ڻc+aэ"YXm҆C&ay<0guM<%m&Av}79SV6 ^*@Z0:t^v3z=%i{`5e4IFO4yS:.o0{rz#z4IENDB`png++-0.2.5/test/cmp/pngsuite/s40i3p04.png.GRAY.16.out0000644000175000017500000000076711461476005020250 0ustar useruserPNG  IHDR(( dIDATH!rP/A5 D4A(')|Nc)ЈhTȪ]Y#@Z~ovē~ze*D`]R=NGfv0 %VG(C_DݚSrYӌri X:͌ #54ȭ^#FVu,3՟VʞXNoW7!ЅrSeXkE }B2,tbv+.lc5tp[#;ll&{qFa8 S^mpy.} F7W= >XX#A4Ppl~0Ȑ{@9 ˳)\PwLG ]u0Y$̞/cdF8 kd^jQ5,[uK{{)Z:eor zY.IENDB`png++-0.2.5/test/cmp/pngsuite/f00n2c08.png.GA.8.out0000644000175000017500000000127711461476005017665 0ustar useruserPNG  IHDR sIDATH}0?ۓٽ *Z* $Ax:ށ QST!~tZMb'$|'c zjjj<\PQSkZpX,H$2cX:\_/d 1O@ӳ()Ȗ@C`C5=n x4:^o@<@`ˆ& !pb7qXuXMsp\.SZMOOωGՊ[eOU2Y] HN \-Jɀ rTL_C jdAXA`}V/1, 0#,i5ay٩JR-C t< 2#2 ;z~tK)v@ՌxE*8LXvD"ɦ8婼սK'X?^f\;ݑNerkZgWZ0<:zs>Tq"z 8d?쳷"Y jluod+0 hiQЖMΝS0SP;cJt5@Д76󩎌8'Jo*OEkz !)fKIjHb[itWUjcL=UQ'|442! _''BT'IENDB`png++-0.2.5/test/cmp/pngsuite/s01n3p01.png.GA.8.out0000644000175000017500000000010411461476005017676 0ustar useruserPNG  IHDR  IDATc&:IENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a16.png.GA.8.out0000644000175000017500000000134411461476005020025 0ustar useruserPNG  IHDR sIDATHn0؞ЪرXz[Jݡ"(ɴ$9mf`Ep応sx?O#\ӡgGG('.@O#AGapy ):hHB! +A pU䄆<cKCocEH>3 ˊx{֋_kI58.\/ES? S8<= {P0!H{h^y'}ǚAPh +kx\pXxA(4bq;xV:ԏ M%°03#|;eqxaFJ9Rd I,fddaqf9Vdݣ_#_ #倁%kmhc^=fB5eB&+#xn#\CSuO0q;KQ\{n! ea_&QtNxVY8oЉH3'qC ̖Hf&^q}Z^؎3# |af9at͌ᖅPJSlҟC_LMf F۸%tԠ+6C~ 5K UxK$:݃%}gAvIzJHFAK}!I%dp?,UWIENDB`png++-0.2.5/test/cmp/pngsuite/s05i3p02.png.RGB.8.out0000644000175000017500000000014711461476005020030 0ustar useruserPNG  IHDRu $.IDATU 9\Ò PZҢwjs uu*wIENDB`png++-0.2.5/test/cmp/pngsuite/f00n0g08.png.GRAY.8.out0000644000175000017500000000050711461476005020135 0ustar useruserPNG  IHDR V%(IDAT81JD1$dBv`!l#XVbe'l#Xx  bmi/L r= B;:ZkAtX@Q L ~%R2a/ CJ3%iAqLp1SjQ5\@#!qK qq|RY [ϰ[ЕyR$Ȯ5jS^׭Epd./['fB3mP&2!LW p7HIENDB`png++-0.2.5/test/cmp/pngsuite/s37i3p04.png.RGBA.16.out0000644000175000017500000000100711461476005020213 0ustar useruserPNG  IHDR%% IDAThQr a; 9}0VcDHd1ݭ"3b1);BܐغWMc`֭p˹D׬QnE[lPbbP숝ZNqG:ʬCO</_+' WF@l%I8l^W³+4Ɏr.mNJ{UT&GYt|UiWetrQQTUg}K[49fZsl(cIncUX^3- l,Ýi*X0áEg Kn|;UߣD̪$*QϠ\|[p"|ݻ.zr5WXDz7mBOIENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a08.png.GRAY.16.out0000644000175000017500000000025011461476005020344 0ustar useruserPNG  IHDR qoIDATHc,01j1XC #BJM` =>0xOHQ3a8pzF@!@Ѝ 䇑aQPF -0oIENDB`png++-0.2.5/test/cmp/pngsuite/tbgn3p08.png.GA.8.out0000644000175000017500000000145411461476005020067 0ustar useruserPNG  IHDR sIDATH_HuS)45mnGKA FD^An(]nn$ERAVl43vlg..tx4tr뢳wyn}.^VaD~faE_?X~(IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g08.png.RGBA.8.out0000644000175000017500000000056711461476005020267 0ustar useruserPNG  IHDR }Jb>IDATXVA0 \R*=Ї9GJQ{[6!61@n RUt("q 9猢(a挺#"Tȯ "nIt%=`4i%y\.iK\4%sཏ9X !HUAD@UWOS\{XU4zu̼ھSmWޛhmmQif<l6wA5kc>(j7nرcmqRLk\-.KfJIb ,-A__|6ۭ={Lx"pJx GX˥(ۭmmmi?^5,Z nEzb[~Kmrr||?2l}KɓpBK>O{v=-*7j׿ >,.׮x|hȑ#Z$!~.A FavVq&_$P@2$ }*>_A2GWf0X:P߀?p>kAq|FGAR\*Jxb jdnf$`zFFΞjFnn~gYGe2SUUަH op V0euȘiv5u׼(GYD? -&l-tPP@,@L1E20 N4, ȲR Jl&t=L>Mlr [В|>OKb MuȑLyW!B(6l:EQX]]ݟb_ըD&22IL1ՠO$ 6 hB(  x50 `X~j8`;{n#98GeDQ4$+ b`9醋:utf|> xm iyggIEcz[>,2>>$I)ϟohL\.(h7oޘک044$ImM3>(2==ͭ[4Nmh2h4$IJ%eq>vVizxqLd&|k$7 e^\7)Vగd72T "~w&:x32lM>^;Az{LK ;3m3o)<&AIENDB`png++-0.2.5/test/cmp/pngsuite/f01n2c08.png.RGBA.16.out0000644000175000017500000000232711461476005020166 0ustar useruserPNG  IHDR #ꦷIDAThՙKn#7PdY:o[d 7f1G "\!7M2 <8أY.X6Z*b<0!0ai>Np 4qrRA'Hx[kWf|޾N8{ uh#A%$s+>1"쌔~}E0B܊wi,8c!bJ<}ThxlUKA}RT^3"B>N8>̅}Cun^3ì\?}!\X ڵW 9<K ] 5k HWT|۱ya.Vv3 z1 Kjʼ?GQAl.9}vwΥ vgҮvKs!®ϨxI^~F'@X|65mxJ)ey )-oa&mT-`cg,<j#H.MkPc"R?"Ll;xFOt׺/bW8t{-9TtTlGo Lue{'-v:2>(mAvMޕ<եn)pDnO$hs@._ es'?5Ț=d[2;F苔ˊ<-WevA7[ׅKo+]LNQ[q.wT q|9,#x Bۈ+(nk7asdF67g.ПGkq4\l 8}dw 7%" mb ׈n#Bzn؍FVL xqQ(c/6-nVx?0.;Xx0p0 SW+c Y}+EI$ ottЅ Awj88:A?/ĠnqsT`z.ܙfl)I,&xPr[Wf7I><8so1 2"T,==]ey>Ykxd`^Zh|dZqe+4.@G u:{@9sO(&=5 sC'mz~3IENDB`png++-0.2.5/test/cmp/pngsuite/s08n3p02.png.RGB.16.out0000644000175000017500000000020011461476005020105 0ustar useruserPNG  IHDRGIDATI z*(m *( h*i#agA[\13~-%NLB|) -/IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g01.png.RGB.8.out0000644000175000017500000000053011461476005020145 0ustar useruserPNG  IHDR 5IDATHVK0q F 1̗c|ڍ3X8Z0fV13e;.ef`Xed8$V:}IA{Kн/n 磐 hxԕNҊeʴV'L4ĀE$7'N"…xEE .-nHaΜ9*Dl\" " kFXdY8(cXbPDsuY~񿚀eFرcPȀ 6n/&ƍ[7y*6]6$un>E h}#5%%%-BZđ#7۳gPOHH:\ͽl;B{4x| $${4Z]cWwo"p ._EL|IENDB`png++-0.2.5/test/cmp/pngsuite/f04n0g08.png.RGBA.16.out0000644000175000017500000000073611461476005020175 0ustar useruserPNG  IHDR #ꦷIDAThM0 F_P܆3 ΀Ub p$nĩL6 !NEY}⊐-YdC->} Gޓ(RɻtVb=*ȑ##>xII ș3g,*9qdUc"*DrT B.\&9`„I%߳g8 Vrp3f hb;`˖-(9`EC=[VX7n.fͺU((( ;v uλ3bÆM\?)SV;w [͈lȐ!eIܫ+7^8pxcxUB9B7,MigvN_B9Ⱥ\OQMI0Oz996KJ͟tA1ԞO?bWt#lS}|c3-اGt5!l`גKEE E3b CUvIENDB`png++-0.2.5/test/cmp/pngsuite/basi6a16.png.RGB.16.out0000644000175000017500000000662111461476005020241 0ustar useruserPNG  IHDR ۏv XIDATXyՕϯJQGȠ9A &4b48nQY$8'q8'#DBg!6֬/UMu?Ԙ1=|޻KWQ!P5Q/!@ssYi+g/ !:͔Mۉ:Cxc>jgjesvksv̻mQ(`z!SW|֭-i!umvF=f9#oͻXS8> PX '/#Wy`WG~+MT og9g Wqqgs o)⌎-yO`*Ψif0V>1͐+5HL7jص5sϊ*\R_K!ZN? ;M0W227ΰ Bhj~UlZ=;jj¬OBo3KUT14_L|MEĞ*硱6eVMzn>ݗvsEu(n}[=jÇ߿a['qYm)=]e}qRt<&U,F!4̈́4V}LfnvtAm/UTfʖQi%@<@.mٙ<~O%o,K㽕lXn ap[]OCs}!୅ Vͯ3MǮcKB{b3 1@z*oOi 9մS2T%&SowWl+ꩂYpdd~ 5lذ]Qmm3nC0`= $5kwr#?3lt\-/%4LnZ^E~՜vI/ꂭ^vڷ.b- kw4>FɡHLyo fѾcMojΘP_OvOsQ.^K݅cײiv[6]8v[ '߃C !s&9R 9_4*ZҳRQWx!Ր}:VCb5D5л>L /X7ݘ줥2 m( *m^Y}* r}i&rM2o,^:z ,dIsTVFG4nث:hy%[i^ WṰIص m9pp5]WW=CZ9z%4Vu<|N¢=lT-B8ۦ/l_8xـi^̆9O'brR.|2o@zhé"eWx o_>ǡ87ϤmX:P4LmzL¬>!A%CǓEӮ^ ݼIR?<={{.谙6nBzе#a<#n7>Ōhʿ LJo7G~&r[,ڷ/غOpG0`gn1KFΈyCՊ foɐ(s,2$߀ߵÏydFl!>Dk7u>+unj%m)9'RCD_ILB:;~Oy'mˏ wW4//Q*JɞGs#HRD]zRSKrc4[8cGКfW9zkXr&ejG7Hk {f?|ױJ+-xһh]X~!k j3sA!V?udWLB7R#`4gӹ:n}L^ |^fEvshvFD!BMCjcY6dF} [,a Z׼)^I=As{s{"M&Yi\ԗhi-tp o=4酪}huKb {飣;(QGQQ}Lrǎ@S8s-Y~uϱB2s:ץg5lz-PDS13M+ (+w>;IOlFCTf;?1/tT|O&h.[F5SiztzVh-y>GPv5atQF gL-1yk"UoN䄞z؛nj0!VCx=-I^!1!F5 ޘJiJrj82!+Ɏ)x([U~r#mIENDB`png++-0.2.5/test/cmp/pngsuite/s38i3p04.png.GRAY.8.out0000644000175000017500000000065711461476005020176 0ustar useruserPNG  IHDR&&QvIDAT8n0ՠR'( +Ra`(OЧ OӨ5TPX!AE#VjGIH@@^+9G!H%*s8qoNuIOeYz=YY/+/1"vFds1>"\%[Nx5r+ur&u;>GQkVWم%"ݲ^!8o`͊)˰7kiW\kRGx=M\nn!$ ĘQ i[Q-c x-7X&[n;W_-fai9S=<==rYBRMlaZR^qXuIENDB`png++-0.2.5/test/cmp/pngsuite/s02i3p01.png.RGB.16.out0000644000175000017500000000012011461476005020072 0ustar useruserPNG  IHDRCvIDATc``B1y _j5IENDB`png++-0.2.5/test/cmp/pngsuite/basn6a08.png.GRAY.16.out0000644000175000017500000000017011461476005020370 0ustar useruserPNG  IHDR k?IDATHc4c Qjo[J]s_7y]0P/܀WozRR"QIENDB`png++-0.2.5/test/cmp/pngsuite/f00n2c08.png.GA.16.out0000644000175000017500000000143311461476005017736 0ustar useruserPNG  IHDR n<IDATX=Aw]3DHȸ)! s "D?Z&p\=6lIz󺺺z8mLmc täR[>3M+`%df@_GiB00N)1vc@IC3<22q 1`h,eNcuHǦCc]W8/:iUB_}Hչ6Ȩ cpc:U&nz~C` s"+ƾ޶15- d品ҽ ܱ9/F ʀ22 {2>crㄓV}v%ȁKc@ctmxH[fH4h f}t4c{9xO\XoT "@?Ӌ4.ϥ\@WL pi ς}@6hK.`aK1oDhxŒG8TqN>;Xn++JN]1uBb,~“YҶ$OKs搞ιSk1|cjddyzsL HUU+<,W}Cӷ#)G4S@'f;K"b6 h&`aDs̆ݔߵU6iP4o>D:}6AYWɌt|b'דJT_@b)q䀪\/P +i,1IENDB`png++-0.2.5/test/cmp/pngsuite/s01n3p01.png.GA.16.out0000644000175000017500000000010611461476005017757 0ustar useruserPNG  IHDRA IDATcbK_0IENDB`png++-0.2.5/test/cmp/pngsuite/tbwn1g16.png.RGBA.8.out0000644000175000017500000000310111461476005020306 0ustar useruserPNG  IHDR szzIDATX]Hmg4N ,E$ ;p $ : h/qR"$IyEARI5fmGSty"i=3z}}?u׭~:[%$)x}J.rM ΎEQioo۷x<߿|X_F(_|ڵktwwyyq@nn288444p10?~FQRȣG$ VKss3HfczzH$ӧO_*/^ $I}q ݻGWWN/_) $IҢ455!2zl6Ϟ=vSUUEgg' p%[s#իW|?r^~͕+Wl6޽{ o޼jJ)++cΝh4PEgdd۷ojٽ{7?Foߎ$Iq?q1PZZ477^OVV:P(>|t:%//ߏfd2 x< PextDQ`0D^^NIrr2%%%TUUg}Q?~bxxEL&S}kkk̎P';;a, }AAkkkͱ$twwod)#ns~~~ BSXX蠴4(..VZZZ<EEE8pLzΒA0TEMM ^5 !G٩pbbBlqqW^Inn..\ %%%:eee%gnnnk/a>Y. 2Peõ=%9ӿUax}-Hx6k@w?'!5 pIENDB`png++-0.2.5/test/cmp/pngsuite/s04n3p01.png.RGBA.8.out0000644000175000017500000000013111461476005020125 0ustar useruserPNG  IHDR~ IDATc?`b`````,``DG[f9IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g01.png.RGB.16.out0000644000175000017500000000043511461476005020235 0ustar useruserPNG  IHDR 1IDATXݘ0Daj3<0ݴtH:N1pNL ȟY:I;'6r %ה,yz'֖OfэsG'g. ls9Ѹe7<8DhD׷\ת@f9 إ*=G}8|[c:(ȿĸ́j]$#=dT:4E:@/}N|3L IENDB`png++-0.2.5/test/cmp/pngsuite/f00n0g08.png.GRAY.16.out0000644000175000017500000000057411461476005020220 0ustar useruserPNG  IHDR kCIDATH=N0pn%n H H H] R.QH+05qm5q<؎߳gQ1p8JmBIPhX,FP#Or# !WŁXӭI;^$kEP$㱐!Ip5ւ pNUuթSCQJcD !8ĔR!DV4^cF0MlfYVEYx<"Bp8eYEeY{)nvB!3j80ƺ+BHEQtREQy^E}}vs91TӴZ$ Q%,KQ%PiZE$Iycq뚦ilT M<ϡK@'Il6cu]q0c180 4 !mi ]REQiBzG)ujaXu]uiQia@,+ʲ:(}wǶm˲0# C((P a뺀N1azj(R<ρ s)nK$0 /_6T7ML)mV8 V+] !N)i$IE///ժA ,!ei꺾\. p]H)˲DI)$rzn[gR2i3 cXBEQ a>==-K=tՆ>B9c*MSPEv0eY^KL)=;gt:l~zxxfx8Aym۪-?q1z3ƎT5Rʋ^7N}Nd4O)h5倫}Dm#N4MjC}ua`u~! ρ"!DE!twwa?=2lSl2}d2N}d!_ti>h.Bh4l91WMi$(b}8rrۢ !B[q\.onnAR]$A0 "2KzWaZ/// 1ByvͲl\(K)zz=(߶m45MCi۶yK)XVp)ל]U~~8FF8yoooie^CAB 9QAC;,-%,qƘjjna05m6Vq E,Pnit^ׁH8q+W%Cs$h4`q`38L5e)kFi9hH!̙Nʟ)$ 2S^:dj!ArEL&t:a84P`áctB'3IENDB`png++-0.2.5/test/cmp/pngsuite/tp0n1g08.png.RGB.8.out0000644000175000017500000000267311461476005020132 0ustar useruserPNG  IHDR IDATHV_HSo~$lyN4utδM g(a62A$Ћ kY7݊E JQĆ ExmZۙ:MŁt{u{|gϞ$IXXXȞ ðZ]VV?`f2fggnyfii)KPZ.촷544|=:u*_9V(׮]Fׯ_r:r buuݻw$IDD"A`zDbxx~+W$ɏ?>}_sVJ$ɝ^e^/8addj޺uk||AN0L\fZz8q;0._<==Fa`s,W0 'P(TZZKHt涶\$ݻx)CQAKKKQ|gmm… ߾}knnd`0(_nCAAAٳglHP&I$xð*Th4JQTR@^^^aaa`eRbI]reD"Ǐm0Nͦ[ ES#n8Z,0fڍ72hOua&j{{{pmɓ'1 9s}35Mkk+Au`<Af\.7Fqss3Kw V%nc0 {ɫW?[GAT F |>(ZTT4ղFR!p8bqKK۷D"1L8=A޴͛X@.BIENDB`png++-0.2.5/test/cmp/pngsuite/s37i3p04.png.RGBA.8.out0000644000175000017500000000070111461476005020134 0ustar useruserPNG  IHDR%%IDATXV[ %zHK M q#A 03:x^MDmNZz]ŨuV T=ۣmdaJ˔p.#o[5"ryRܦ}*83b) Ff Na6-PڇiӪWݥh^|5n~M[+be݌ݙ˯HF%:7\ .j!9IENDB`png++-0.2.5/test/cmp/pngsuite/s36n3p04.png.RGB.8.out0000644000175000017500000000043211461476005020040 0ustar useruserPNG  IHDR$$nbIDATHݖA Qj@8Q6U !pJܤ`aMnԢ`h˂IēL;RH^ad?\65 PgYka2q6rKg6r7;FZQC`?Z, 6-QAaospMi3H ^F/)jtN6y(̫K5{׵8ȴ0 xs[+IENDB`png++-0.2.5/test/cmp/pngsuite/basi2c16.png.GA.16.out0000644000175000017500000000200711461476005020106 0ustar useruserPNG  IHDR ^IDATXOhU?s ł"B*dƃxڀ'Oޕv<{{*B ^m)aYdV~ Md 2(MAuI]ۣr,Br ;dՅqu6=%tB:ڱ =@Zpp{Z-V~CPWL^z-YEZ"})%O"?Ȳ`\h|Z}Z*hi󐇀)dA0B@D)F`d07L3™3w~{?w3gu֏lM6Ce?5UQN .ڊ6 w@2n_YC ᪫zUdOv fe Y&ermq|'w@&Mx≬N:1mk-ZsuOV Uw@2|뮻{e.χN1c`ƌ馛Uߪ9W^:Sq5KYێ֫GaoB$fW v@*O|AW\u9L4iAV9N+|=_Ĕ39?%rXT\ZkN:l\6.[; W>}(䌾堃Vj4n?|5 +]w|spahR a]^xs;lYwq5ay2nFʝ+8ۜ#wޅ᭚Q:91g~|a#1hy;. VG/)S:Z>B: -tbĊ\hԨqR7sʪ8U6zꩌ8PShРaCז9 5M6&j24Jg!ӆhhnf0&N@kNj>Ιm?sFԜldGA9-AiSʪV HL[PB L{,u`1RXd F?cSVXpaB|9L'-mxQ0{5C+D$e@q$Ȍ9(5An2w !;nfi3S17Ʀƴ4__Y "  q= 𒎯 NqȈIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g16.png.RGB.8.out0000644000175000017500000000051311461476005020154 0ustar useruserPNG  IHDR 5IDATHՓA 0EMt+^0Sd B%]mlbۅ' IAo'TҶmu}/ zpy4!Ưe/p9礮k7cGRb AJ@,è1NAPJ$hq.P 80B !'i`;}CTD` 4+@"&6J%9{}]ӧm1TpQq(H$H(rmK\.ٿ)&( ,.B__ŶlͳgϸppJx GXunM~xykX,0; 015˗LNNOP`pPáC} 8qVV8/|{{4tE6f'&`ud|>XX^տ'ݭʚ#GFK%G(}T *HRBO| c{|~&(֡u4XG-K06 WxPz/^h `!:XM$H9 &rfBO9*yTgyXCe%@4 Z.8T8c.3Lam &'!:DcU[59Qw\˵` Ͳt´@Q UH6SL&(xC"r{R Jl&t=J>,M$lp [RcKr MG:Q%F ]_P`eeebVQ׉-jM22)RL1O& PAQ(/ &`usX,~?~jt6vC`}e~؍9r,N~dYFEcɓ';吺%HS ]P@W#=d2;fpB!j r h{}$IB,Jen7JeϟsiCEUUq:za|ΌʏiȲ  6}+6 C6/JECZEe]=fh9@.#Bnx ²j( [[[M@$@oo/`<}"r dVv7f3|p^4a8o߾mYNDQl^/HIMR};wl2Zu\b1bo޼i+C`xxIv;;LNEu;;; M&X I(J'HÇpy^<fUUaN:68tD^BP۹߁|>V+kkk ƁybIENDB`png++-0.2.5/test/cmp/pngsuite/s06i3p02.png.GRAY.8.out0000644000175000017500000000015111461476005020154 0ustar useruserPNG  IHDR0IDATA v dHeɻ* fo*NceIENDB`png++-0.2.5/test/cmp/pngsuite/tbbn3p08.png.GA.8.out0000644000175000017500000000145411461476005020062 0ustar useruserPNG  IHDR sIDATH_HuS)45mnGKA FD^An(]nn$ERAVl43vlg..tx4tr뢳wyn}.^VaD~faE_?X~(IENDB`png++-0.2.5/test/cmp/pngsuite/s40n3p04.png.RGB.16.out0000644000175000017500000000053711461476005020120 0ustar useruserPNG  IHDR((S y&IDAThA E?w "e (`-:0ߘ"26Gld珌bFa\ZX> *ڶ‰mb+8}:Ѱpk[aڻ#9>x-pVB >YxKkjo~̗xIENDB`png++-0.2.5/test/cmp/pngsuite/tp0n1g08.png.GRAY.16.out0000644000175000017500000000145511461476005020336 0ustar useruserPNG  IHDR kIDATH_he;t7-742Z !.][hA]0!gnso8klkmst]yyysJޱIlQOl%4:B//mY\1pw=nuOS>sԠԺϥ9lQJQ\_^sH=;p!YHWz<똘!GގG]A;5 R~nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gzs0hgIENDB`png++-0.2.5/test/cmp/pngsuite/s32n3p04.png.GRAY.16.out0000644000175000017500000000047311461476005020250 0ustar useruserPNG  IHDR kIDATH!N@ I 0UPS Vq| ԬL$HĴ6iHT{f{Čn}qOg={qj&:F5F x n7`Ne,8B|ZGxϫ )xZ^A904z#%{a3IDT@;8^&* ؁A qTW#-sSg/ 8,@jgLF( h (2Ү[Qn~TF2wIENDB`png++-0.2.5/test/cmp/pngsuite/s35n3p04.png.RGBA.16.out0000644000175000017500000000062711461476005020225 0ustar useruserPNG  IHDR##NIo^IDATh Eo_*]+bYdh6Zv@D/t-S%/ H|޺Є#?Y) B0rALT $Exo"!ي_IENDB`png++-0.2.5/test/cmp/pngsuite/tbwn1g16.png.GA.16.out0000644000175000017500000000232711461476005020152 0ustar useruserPNG  IHDR n<IDATX[HT_ǔ4 -n:t( "DE>tyG( * )oiY)لc%^=| xft]p8:{[N1cbYΉ)N1g@^dd>p:g%ccc!_ge< AU,YwľcƔ-0: v֭p*@W(czz9t_aRz_[b[7&߾s0ܻ6'O`B8}.^an(, =}zxۘ*c** \.^}Z[av#G4^[75Y,HM5qho541;{wal >Gĵs'j01}}'sp\,k=o,XD+N6SY t`b~>+WYNW/y Pm@~U5{R{WciitJIIrܬ'9֮޾7@u5\~23a`V>}ԤLMշʊVe† kvvBc#̚eg~## Ac#q{nܐvahHaadӌ -vA Z}^ir|ZZDd[2~ 5//N" @A1UU|>χe`"hk> =]d PTo'&&3S64 @N<))0< WXAQP46BAbM>55SWgvKdA++˂ٳ!+Kܬ(s>jj#bR@PϞU;!A`p8bmDmYEE;;CPu ~.`gňb{ރtJmms:EAZR$'GDnY%%^.x[qTƍǢ\.r8}}ьJ+mǫBFP+, ~BX>e9ƄқXOen7*#L{&

8܇ -x@IENDB`png++-0.2.5/test/cmp/pngsuite/f03n0g08.png.GA.16.out0000644000175000017500000000062211461476005017742 0ustar useruserPNG  IHDR n<YIDATXŗN0nx  3SJ++#wP;CrNO:Er_>7dz @OO!'>R'Dya% TD Q B{E0*pqܳ?X/j̣3HMm{\(]Yper}M @)*ȨƬs= ʺ/ЕW^AOMA R%m,=i B4u-⋋=wTK\*< e7 M@x޶"&nܛ9f5|>IEtSqEUvvhƫ ^R\TjVz=XtodɎap~~ p}c ׍{3lvB}ކ|9:^TyJz5%WkFƫ%X go|h7#aL$7u)7ݬP?*>WU4^Y+/WZO?{1+^ |{ w u'0oh5HM@3~ݸ7sf7k.7e-/NK?RxZ s'@/eAY@ [?p| HQtu yfKϼQ-ѪHM@3~ݸ7sf7k.ԇ _|IV?4ħځN,'[3kXf|>o$_NY%an }MEFj0&fqo攛n\~|[~|!~ݻj%VyN&#āHFq@ ҊU;2t`@2zKoT۵3=-nj7#aL$7Vlvkeݻμ K@pR (#8grRKX4L;V݌14׍{3\67aZi.3o~`i޻ {pi 3 =)opQqdv%)3{>5XaXiH4ь̤+[h7#aL$׀fiZV!_ Cɽ?x~;w1[o zDE3ؓI~]Rl~%yZ+1S5ISZj݈VF˜H.~xVv: N]mx⁍/43}Ȉ c'ݛ l/Ib*aS1Q&1%?3j݈VD\9߭;wR'3j=K3Y ҕx{vi 1\[SΦx>lOcJF ޒ4ŨuWGjO9hn$83*}}§Rw~;@4k7syv|aE%aL>  j0&3gƫˁȽ_BAqޓ=vA&folnon4|6jd.dndoGq?e `^IENDB`png++-0.2.5/test/cmp/pngsuite/tp0n3p08.png.RGBA.16.out0000644000175000017500000000302011461476005020310 0ustar useruserPNG  IHDR #ꦷIDATh_hOH#1F0`"((4 ABad +>(TC&B@D#FH>̹KLfL~̝ͽ|ϟ߽5gqG?4lͶ=p v (4jԈ;ڊ 6ذW@Zu]G~3 W\c=* l C cƜ%[`&gТE z)N:$:ua$n;hՊB;`ԨX-T]i/p5װSXf2UN8FiӦp 78ߪ)^SNLd]o=2t $fꕋWa+ >.,K7nAg]' u<|윘rY97]VjFnʏ4.Y  9)ERT>d1/~9蠃.bCgK|'^:UFMC|2~'o| q>Ƶ!mK/@%]`vncz-w C=asqBsXx|ep-^ȃpZO+ tƸG^o|#/{nG59Wq׸GOOCn$\uUDŽ x3  MZ0 w"CA'㋐C!? )aÆe(%0f,ldZje .4/x6Ƿ+􄴆| yb 3 !i[!-8>^3qꆄ!Cb$J^z˘EI5:SQM6nBƥh5AH_Hrbɂx1Uɷ!Eߵ؊NhۢM i <eBBE"m׮}FOGI[oQ'7MhgWŐ\!MZ5a-Ȃ`z.RTw/xWE%D(]'MjN̙vcC0``Ƹ]vUƼK©ѣG0a„|E #ÞhSNX>?%5k񼔆' El$׫/S%]g34iճ#-4Єv}e L.|i_bo -7E/fQ?7k\ONA+-8cHJj([;u,c| 묳h@6mSNMR])x?`6|RaBhbVkp'u2ƥ9Urne1kFŨ\җH.sܽ{wccCup] hh&@EGQQ NnllLMMad2!Dep( Iӟ~i\ Nnݺ.~NC_ ۷o,kk6FhvvL&S.OOOT(Z^^TeuuO> ä/l6/`0ӧRI4I N"}GA<~Xr?LOO_~駟޼y533÷~ի4M#'OXu:_|qڵモ$y {7o =zahRlzP( űG0at^ollmD|>󇇇{{{Ϟ=,kbbbhhKӒ$ P7|#I` _߿oC83M( \>[[[ښD"^ Áal6, p||̲ ITj``t:Z/_?xaa!L>xsssccc`q|VT>N$~\.)(qggg üD" $eYv$IxC~?OEO9>>v:n;(n{iPygggzREalxfy\u˲:dP(1 % B.z,[eF٬jl6Jb1x~t:~iIFTr|>ϳ,;77 녡c @B)kfT*ONN:bZfL&399@4tMNpvan WSt]37)ݻwOQe[[[+++7nܸs4r`\((iwX)u]????::Z\\,pl@&b?\HCzfWVV˩TikrwwF4 N[ B&q  =/Ţa}ᄡ+J>\ZZL&L& BH8ry8NX,5jDQyheeYeYPź.Aphkk ^P(K@V,aH$2333tHIminw0Vϟ?i 0 8jJT*\.abX4i:7>v#bFӱ,oVN $eY.4MCUULJa|>H.I}CEQp8p'BUji(8à.]NQ0#Ht:Pӽ^a6iZ^x6"۴8IENDB`png++-0.2.5/test/cmp/pngsuite/tbgn2c16.png.RGB.8.out0000644000175000017500000000241711461476005020173 0ustar useruserPNG  IHDR IDATH_hSw?@#^i/4@of4Z`UVf )X1`}Hp` CO v,fP; -Hcb$=ddf]w=99k}6G^|:x(޽{&E1& @Q'O_>nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gzs0hgIENDB`png++-0.2.5/test/cmp/pngsuite/tbyn3p08.png.GRAY.16.out0000644000175000017500000000143611461476005020443 0ustar useruserPNG  IHDR kIDATH_HuϛJxYs{}ui45% FwyQ]4`wuSDnхl." b03?tm9-y&ҹy{~ssbۊ4JIK|+ $ÀJ̹րq┴K޹/AGtXvN [%w;mN)+NkFsvW~tPvmNdM̢]~r ~.z5D#y`],;=T jT!f w%̻sT9-oZrkJEߗH4oƴ=!!ioJ?aδ=jq;uH0AIFMF*฻yHX!a<.[tz)oXZ[%Si" }V[x7tKY@êJ:ޓQFܘ^%#RΒP"!O{?fg3:IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g04.png.GRAY.8.out0000644000175000017500000000022211461476005020276 0ustar useruserPNG  IHDR !YIDAT8Q 0C^!?~AV>Xb I8?06UR]pjxG #0f ~8AEۆV[ !IfQIENDB`png++-0.2.5/test/cmp/pngsuite/s40n3p04.png.GA.16.out0000644000175000017500000000060711461476005017773 0ustar useruserPNG  IHDR((vgNIDATX!nA@d$5NZAUT==  *j  |a'%?gwt ȩ)96zÕw1N f)W{GM ~hXt޴- ,e"1nL+i!`~\Zfs ěs3O̵0_,i")nV ^]R f\Y{cK  9R؋G7 nc)޽X]04'x|3%3#A ,rꂕ?Eꂎĸ Sbb -g sњ'&gM'.xcF#a}07̂zx;'0=/|_>G(k|-(wjQ\}[͔-CP|\G7 UnJn.-%/4QE^jQU4TVIENDB`png++-0.2.5/test/cmp/pngsuite/s03i3p01.png.GA.16.out0000644000175000017500000000013411461476005017755 0ustar useruserPNG  IHDR۶#IDAT%1  zcg"Jԉba? wK{IENDB`png++-0.2.5/test/cmp/pngsuite/s04n3p01.png.GRAY.16.out0000644000175000017500000000012311461476005020234 0ustar useruserPNG  IHDR IDATc|o00aR]1QPIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g04.png.GRAY.8.out0000644000175000017500000000013611461476005020307 0ustar useruserPNG  IHDR V%(%IDAT8cd```ă0ⳟNn`uèF݀dzEIENDB`png++-0.2.5/test/cmp/pngsuite/basn4a08.png.RGBA.16.out0000644000175000017500000000025011461476005020336 0ustar useruserPNG  IHDR #ꦷoIDATh1 D Xv*uBy su:'9?흙QT++/F<@ot78@p @8#Hot7`li&^}!:IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p08.png.RGB.16.out0000644000175000017500000000136311461476005020254 0ustar useruserPNG  IHDR ۏvIDATX嘱nAN Jhl?yp'^Gwa?BE"Dh(A(Bֻw3g(»wfw'plF6E+yǚ =#rj\(Qq8J28gy$| |{?[z%7 K!RP'0٧Cɒ%0)pup6_jFup E3+!WRq&UtsRќ<0\M:VȀaX 81$YY- T6 Vc1+7ܕ Ug$q#[lD$h(8F-BE ^T'v%p%7B'b4 nǭ~TYO$55?KwL]R0S! ;MޅT'бm+-XE]"l`ޏ* 2o }ꦯd$TSnJ`{%|v85kx8XggFf^h{:{G6YWfl}VӞofmܻLWz}C~oDmGKϤG辍]InzY]K 8zcS@^O+J֍L*+U4 &nk\IENDB`png++-0.2.5/test/cmp/pngsuite/tbgn3p08.png.RGBA.8.out0000644000175000017500000000261311461476005020311 0ustar useruserPNG  IHDR szzRIDATX_hSw?@#^i/4@oFL ,„B V,X|(aB !'i`;}CTM p#)&&6{;|߿sLׯ_iO>5kc>(j7nرcmqRLk\-.KfJIb ,-A__|6ۭ={Lx"pJx GX˥(ۭmmmi?^5,Z nEzb[~Kmrr||?2l}KɓpBK>O{v=-*7j׿ >,.׮x|hȑ#Z$!~.A FavVq&_$P@2$ }*>_A2GWf0X:P߀?p>kAq|FGAR\*Jxb jdnf$`zFFΞjFnn~gYGe2SUUަH op V0euȘiv5u׼(GYD? -&l-tPP@,@L1E20 N4, ȲR Jl&t=L>Mlr [В|>OKb MuȑLyW!B(6l:EQX]]ݟb_ըD&22IL1ՠO$ 6 hB(  x50 `X~j8`;{n#98GeDQ4$+ b`9醋:utf|> xm iyggIEcz[>,2>>$I)ϟohL\.(h7oޘک044$ImM3>(2==ͭ[4Nmh2h4$IJ%eq>vVizx#oGdk8Y9Ӡt/ )7Vv 2뭟k[1_6`_Ut tt|b۞!`/@eMe<123UM==e( =wt9ع:qK}D3VFgClՙG$4< kò,M'I\tϰP-}VW<̴檆Ь{_,+.O5 `3~ad4G(SB IENDB`png++-0.2.5/test/cmp/pngsuite/tbbn3p08.png.RGBA.8.out0000644000175000017500000000261311461476005020304 0ustar useruserPNG  IHDR szzRIDATX_hSw?@#^i/4@oFL ,„B V,X|(aB !'i`;}CTM p#)&&6{;|߿sLׯ_iO>5kc>(j7nرcmqRLk\-.KfJIb ,-A__|6ۭ={Lx"pJx GX˥(ۭmmmi?^5,Z nEzb[~Kmrr||?2l}KɓpBK>O{v=-*7j׿ >,.׮x|hȑ#Z$!~.A FavVq&_$P@2$ }*>_A2GWf0X:P߀?p>kAq|FGAR\*Jxb jdnf$`zFFΞjFnn~gYGe2SUUަH op V0euȘiv5u׼(GYD? -&l-tPP@,@L1E20 N4, ȲR Jl&t=L>Mlr [В|>OKb MuȑLyW!B(6l:EQX]]ݟb_ըD&22IL1ՠO$ 6 hB(  x50 `X~j8`;{n#98GeDQ4$+ b`9醋:utf|> xm iyggIEcz[>,2>>$I)ϟohL\.(h7oޘک044$ImM3>(2==ͭ[4Nmh2h4$IJ%eq>vVizx 2i\IENDB`png++-0.2.5/test/cmp/pngsuite/f01n0g08.png.RGB.8.out0000644000175000017500000000054211461476005020005 0ustar useruserPNG  IHDR )IDATHֽ01* G"A"#rN@ TBHK | - A&`aJ))^Vs!"VW`0 .A3cLk49070|0j$I:Af eYiUUٷ7 MӔe0QJϥ^ȲLJi4Cz}78Ρ5ض ي}fEFm۶f(Lv.89)"$x?uPk@53~d x5\?.ی /IENDB`png++-0.2.5/test/cmp/pngsuite/basn2c16.png.GRAY.8.out0000644000175000017500000000032311461476005020306 0ustar useruserPNG  IHDR V%(IDAT8K0DUߴLv Y؋<8/@ :^H ~"AKB# $8oG`QT⩨o]Q x7Y /$;H:N&[H|#*|7&b41yB; IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g16.png.GRAY.16.out0000644000175000017500000000022711461476005020372 0ustar useruserPNG  IHDR k^IDATH1 0 CQ9[ܠ({2*ُ?8Wc:`݂@B&@=2 -hL`?oO8K_^IENDB`png++-0.2.5/test/cmp/pngsuite/tp0n2c08.png.GA.16.out0000644000175000017500000000170411461476005020055 0ustar useruserPNG  IHDR n<IDATXMh]e'&j V-V4 Fh,T0BwQDƍ( .Ă. B(`DmKn5MzIr^|r~μ3ΜUC^ȹ#Qv}s~\ Up9T1uâ"Nb/!:`W$*`!N;܋ `2EVJ# "=i[Db0ob#06;!9W`=.NG׎p#~i6xQy#0h.?&ٜoa/'S$ZB *y]HvDh/;-HgI"~#0SRxvחlO"ZńhL?(Ʋ?%ܤT}d5k ebL_h4Z/!@h_DE7,JUm^zD e:(NM烆"@>FDyiۯizEI\%IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p08.png.GRAY.16.out0000644000175000017500000000053211461476005020406 0ustar useruserPNG  IHDR k!IDATHIB!D՞ {߁MPYYIm+hL[$Lw&xT]p ~r0j6LP@z*% iM)%pݒHF7P^W_Tw&@R`Q>x2@@#AeQDp%FZWع6 H_tA@K$[)Z?J'+ * m%tt W+`ne" G'^le0Pk4%5>[?uz#sIENDB`png++-0.2.5/test/cmp/pngsuite/basi4a16.png.GA.8.out0000644000175000017500000000253611461476005020036 0ustar useruserPNG  IHDR t%IDATHm_hWo$M6%YfVPp"2"/e/.['ؼtABR\uR]jleiڦɟEnyy6xϚ3^:SsI-U\ƛnVʛg߼ኖsS}|de7Ygnr#YWv wLf/ZUUUiӦ#P7#'Kt_=t'ӎJ>JGmy҇o:]W᥋6C»מ<;?z3n>aڼkZI:>j!aZK61f̐nAM]@K${zܩGlņ][ZT1_GnAkvlZQYAሂh&.lǺ̼.;Ɣ"<pĖ7]# c3P)' ( G:|Mǿ05ϧ/VTlp Sѥ*: BŎ۶u":O!hժEj]=\Oӳ^U5GaΒ̼/tIGOYQsM;U0qor̈}"<Ƞ䰇0x:nXY~#2\jY3g"M+hաdA+œ!}zujt+ۧaN%GX=55LD]E5۶U.ݶ`˺UKkѝ-cYIH,(dͦ]m:mm ܴ`@>EJzĪK,Yu ,wp~<(U-$5ZQY4lGnڌ+J6iú5 j|ݶ]wOeC*Jztԡ]Hl۶| kV-7Ŕ_̆Ui~ǎ;lZsϵDĹtV֥)V-AțA{ulڰfUnegӎֵW6md!eذY1dO B̢h>`Ѐztjgݰ+(Uqebe%!TϷTui׊v]ʶgVУYHHEyGbIw{֡h6ZԭGY&_3 .þ-KfIENDB`png++-0.2.5/test/cmp/pngsuite/basn3p04.png.RGB.8.out0000644000175000017500000000030011461476005020164 0ustar useruserPNG  IHDR IDATHՖQ 0 D;i$fe| \nuM^nmS- =&$/!;H^;UܙH߃˨;w{R#ATqH߃y?E=H^+I.CIENDB`png++-0.2.5/test/cmp/pngsuite/tbrn2c08.png.RGB.16.out0000644000175000017500000000266611461476005020274 0ustar useruserPNG  IHDR 1}IDATX]Hi*dt"dC B Ss!C8BLPslW @. )X 5Bxѣ6s?38.wM]Q\ .`vb-k:WW }5פAaÆWy>fm It6h7ve܌V@*Uy䑓N:Y գF :uۘ0_QA1c|3֭[3ᢋ1s ǬY3o3<ӦMo qA9W0gnP>ЫWJE\+([ouWtiʔ)i-J矃︃~?_=;eFmԡC2kT&pysᛍ^>b#@7jԘs*^ I(T #f)ΜhՊ}-4W&}EObH*4i2>gdd*TmWrEiAԸRHŨO"ㇼ<zVZ)/qZ"p!ȇ1lZЁgqV Jޛ7n\^+W`„Ff̘1k֬ӊ\΅?KG>E-DJJ*&W>p!B~(SmqaBL  9_K $)R.:f<x饗JSۀgȪ  >T#Zġ!鳈s!"a6D s]eDcV5jΏ<4d8{rJ%G6mZBB" 1/탘;7JƷRʸ7Ll)~F O%B=aι9IRRr~eAҀ:}$ Emt%J~*F`\Iφ@A9-,e\o֬9mY}BZj+VsWhLҼ_[m55Bh4Q¸D ą1Vc FֹjkSW^k*l)rz!ih֪UkK+Z7q_d@Nwg~/bt+V 8:X+.v]rɥ~W  ʄdJ[@@ 6ذ&AsaW! fHt<2Uz `됐jC[]J̭a87xH))IENDB`png++-0.2.5/test/cmp/pngsuite/s34n3p04.png.RGBA.16.out0000644000175000017500000000053111461476005020216 0ustar useruserPNG  IHDR""jׁ IDATh[ E =w ?P 'Q@9-:DDDhTpC|ois^ϖCksFbPZDDDDT!*AdQE=5LZS8>|ͭZK.%&`.@xX֥YZ!!oFҚe I ,5K H^^t%9uH0AIFMF*฻yHX!a<.[tz)oXZ[%Si" }V[x7tKY@êJ:ޓQFܘ^%#RΒP"!O{?fg3:IENDB`png++-0.2.5/test/cmp/pngsuite/basi2c16.png.GRAY.8.out0000644000175000017500000000053311461476005020304 0ustar useruserPNG  IHDR !"IDAT8}PAn ͡MTPym{l6UDgƓw#-?n7|T,-杖ፙA 3CfVQUDEV4L"YDEicQZETD%Nm0I5`bn T[zΑf(0%ij<pd=z᲎qZPR@i*aLg(qwJ׼;)û;(]ER32/ah>!; ?NҼҼ0{8 6kd ypM(;IENDB`png++-0.2.5/test/cmp/pngsuite/basi4a16.png.RGB.8.out0000644000175000017500000000451211461476005020155 0ustar useruserPNG  IHDR 5 IDATH}UOv:v;O' &@P2U[TUX'MH=#I{i&.2"QC,mAڰ%o( I'`g8;|Gwz=˗y>ܽ{wccCup] hh&@EGQQ NnllLMMad2!Dep( Iӟ~i\ Nnݺ.~NC_ ۷o,kk6FhvvL&S.OOOT(Z^^TeuuO> ä/l6/`0ӧRI4I N"}GA<~Xr?LOO_~駟޼y533÷~ի4M#'OXu:_|qڵモ$y {7o =zahRlzP( űG0at^ollmD|>󇇇{{{Ϟ=,kbbbhhKӒ$ P7|#I` _߿oC83M( \>[[[ښD"^ Áal6, p||̲ ITj``t:Z/_?xaa!L>xsssccc`q|VT>N$~\.)(qggg üD" $eYv$IxC~?OEO9>>v:n;(n{iPygggzREalxfy\u˲:dP(1 % B.z,[eF٬jl6Jb1x~t:~iIFTr|>ϳ,;77 녡c @B)kfT*ONN:bZfL&399@4tMNpvan WSt]37)ݻwOQe[[[+++7nܸs4r`\((iwX)u]????::Z\\,pl@&b?\HCzfWVV˩TikrwwF4 N[ B&q  =/Ţa}ᄡ+J>\ZZL&L& BH8ry8NX,5jDQyheeYeYPź.Aphkk ^P(K@V,aH$2333tHIminw0Vϟ?i 0 8jJT*\.abX4i:7>v#bFӱ,oVN $eY.4MCUULJa|>H.I}CEQp8p'BUji(8à.]NQ0#Ht:Pӽ^a6iZ^x6"۴8IENDB`png++-0.2.5/test/cmp/pngsuite/s03n3p01.png.GA.16.out0000644000175000017500000000012211461476005017757 0ustar useruserPNG  IHDRwIDATc"sRM=x IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g04.png.GA.16.out0000644000175000017500000000025711461476005020112 0ustar useruserPNG  IHDR ^vIDATX[ 'i"eAblѠz8.,Mcn$ OA=9h4Ns R t)x;vo" " " "IENDB`png++-0.2.5/test/cmp/pngsuite/bggn4a16.png.RGBA.16.out0000644000175000017500000000757411461476005020347 0ustar useruserPNG  IHDR #ꦷCIDAThYQUv2If&$ݮԤ]A-bn"jjR-Ƀ}pW"VI,Xh-U."+E*kQۺMt]I:N29_/!;3sw]9$Y%z!iHs|q`]p@nG?:pT~gϟyy鳟>3ۛoo.-]Zd<=^}A}ҾD)^R-ݖnKL0myͰ68۱۱\{{{@RRg ` X[[Oן? UW͍CP=d}F1[ W0444 nrrrXEPJ^JX +a*J).Ka:RNfe(b+TSU*u ZZj_qG#;u_ BAioڛ.ƥ"C2 @< ŷoߖ䒯+$YyWyWyWkkk%*)IV7 eH$M&IQ$7kΡΡΡR|1@*Hn-eг2P H1o+VN+|@RsW+~ůkZX[^[^[aƬ8+Ίg3Ob^"]H1[{P1rMJV;r#8b#f:y9e% 68Π3A!(O)( A}Pz4@Y= hY-eJd;;;-fY`!]d|.VRwCs@ Ϭg3 Ү+   [07 r7p#fSۿi ól.,˲, pqvn7 I$IZVz^@NQEQBP(y y. @1~rrtD;Q@Ky)x^ypE\W2BF?ƏY08c|7qgYvM7$پ;;  }RXmH҆/@9_(O'B*\r. 䒹d. ܼ|={JqrG x#ވ78 b+7 >8eV"Up|PM Y!k:y 9Kz5:Ƹ1n@pa]]]fv[z/E-*^ūbTQr.@ 1!p!.ągڙvKsjZƪj,C###fSaIrBN\GX__k5y+L|_{`*0 cccx-[]'N>bY,eqG?:t82#elF@z=7ْ,)&QSd`2^o/ hZkŹs_e666m|hCiF|_DQEp).ť|mG:؟?3=k%/_\|0Fc$&TǫTߩc:8:y 0}a´${d#vډk' _SO>[s9?۾۾ۀApw;+WNNN=f {mi[]]]D5)u.11F(ЛrBlLϜ>sR|ׯOl? pssq}`l̇̇̇0 (EۢmQhkkھj+-Ӗi88 0?,/H%\3>RY)nqJDP ڵk+ HG,)pݴh"&$YYYK 8g[߀`H 66)+`483Bu7q ud8 @À/Kygʙr, `lll۠m6h+>j)ԝٗKv W'dnD`S9#T'RӠy2|j@1P g qq$w;UGQ=l[ EIO5x& #GM qu܈PrFNFB=we2XX  9B`wۻ-ܮVVZBKh ShY%dDY:NP8:y _a@5ZVzKz1%>>> W+ 9Cΐ S7XzPjBM ===f[J5)ՉBI`ĨѠyqżgw-RYyWy$* Sz"fa¾}f?Nm)ugԤBZD` Tue ZJx x{P8@-@1oZ6"}D"$B@!GM"aIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g01.png.RGBA.8.out0000644000175000017500000000060611461476005020252 0ustar useruserPNG  IHDR }JbMIDATXVˮ  Z6w6M#tA`@Dc3ϋ-^ DDAxDጲN>$gܵ;8,f|EЌԣ:xx<KX/M mdPq|8ZkAp Qf^Jf5쫖p*:H#aۋ`^j|*SV8Kt2Lcpm\^O SFш:ð݄Q4..U:Z^$JܙװTm_#Mcm j>PE"=ҫhW+q+UVp9o.lIENDB`png++-0.2.5/test/cmp/pngsuite/s04i3p01.png.GRAY.8.out0000644000175000017500000000013111461476005020147 0ustar useruserPNG  IHDR4 IDATcx 7 voߜ?w 7@ĔfIENDB`png++-0.2.5/test/cmp/pngsuite/tbbn3p08.png.GRAY.16.out0000644000175000017500000000143611461476005020414 0ustar useruserPNG  IHDR kIDATH_HuϛJxYs{}ui45% FwyQ]4`wuSDnхl." b03?tm9-y&ҹy{~ssbۊ4JIK|+ $ÀJ̹րq┴K޹/AGtXvN [%w;mN)+NkFsvW~tPvmNdM̢]~r ~.z5D#y`],;=T jT!f w%̻sT9-oZrkJEߗH4oƴ=!!ioJ?aδ=jq;uH0AIFMF*฻yHX!a<.[tz)oXZ[%Si" }V[x7tKY@êJ:ޓQFܘ^%#RΒP"!O{?fg3:IENDB`png++-0.2.5/test/cmp/pngsuite/s39n3p04.png.RGB.16.out0000644000175000017500000000061011461476005020120 0ustar useruserPNG  IHDR''SQ!OIDAThݙ]0 mwfWC [N =B#57nKLgO'ͅ/)0;jCx≺\^$ +TfIjk$K UYSHʪjvz%Ѡ~SL+ kT%}z=<:ZLwۗSboe{;|7PSw@ez`eXօ+0ʿXјZXG΁줳,\G˦ l5>^{ڻoQY{q0F*==>>{]bxc<%z ^)nIENDB`png++-0.2.5/test/cmp/pngsuite/s01n3p01.png.GRAY.16.out0000644000175000017500000000010411461476005020230 0ustar useruserPNG  IHDRjG IDATcb'WIENDB`png++-0.2.5/test/cmp/pngsuite/tp0n3p08.png.GA.8.out0000644000175000017500000000142511461476005020014 0ustar useruserPNG  IHDR sIDATHAh\uߚnDbMM4nb)`xj`(E\zEЂ=ԃ*n&56&!дM0 ݄Źy37hM֎#jq FI #7˚tNK-Z{Cep7niV-osv}-Zmu9{ǾCzV :o4ߏzME]x{EuJ;/~Ö]зIg`V+b -gvwě^&WV`/4jWg9me+ɸd+Bt-֡F5YtÜ9ԨǓn-89! y,U,yݔlO?UԋP`*(d¬gpUw3`}cp!O528:uK䲼&6nS"i\*tx쎯hG񼌥 r׈652>D'gC𾈘?\t)1ZioΠOVAA=CA.vqˡsBZ ESt>!΋r q)2 ab![Έ9vd$4xFE#+E(#t½ϦK' vdA]E2H@&,9Re0۔sM9%35Ig9w7T&Mf"[ic]D |k2| RpbW-RI}gT@| Zu'A+Ip_@Vz'Hco>Ii뽷Zk]ogʟz+ϙ$JezZoI ح/[Z+ϱŶ{|Y~_#$S E cg^S"IR7 ""b =&pnW@w;AJ""oc<(GIw%6~!INDַǃNr˲hU>I>%Bz4IENDB`png++-0.2.5/test/cmp/pngsuite/f03n2c08.png.RGBA.16.out0000644000175000017500000000251011461476005020162 0ustar useruserPNG  IHDR #ꦷIDAThՙ$E?[ӽcx('_ fb$FDž" &%j (zޟePzTus`^zzc $Z?>9P1А}F iqg OU{{C+DlǏ&$`ۡhB!Tݐ.FBX3҇z~.BbwyRƂ4 %uCytI]|N/R{,R͖^1"BǫB=Gݟ{LŰ+BDqvrh)0i;>ǷD}*D̄ho dSpKp*ft&DTI pՉ~;1cO{74x؃>f1J8/:9/N<5AA ؖ ?%-bsȟJe/.ƺ9|̈́xqbgR7b ^({)w1M8~ǫ=H[<\ac D>",7ľc!S ?pGyqh{/9p x 5Z.su[ ez,fg*LkmeXq xOE!5!b,DQW*_$,MBA*_-'l#p\ehcG:Z8I:1#1;IV.cUU0X8iLGmG> ޠUp,5DoWaיE@*C?-({|'];></q} <Ƴ 4O;HжBp,8pSp"]竄CC;_0HŔaˌiJf̽{h׫Y$d!IENDB`png++-0.2.5/test/cmp/pngsuite/tbwn3p08.png.RGBA.8.out0000644000175000017500000000261311461476005020331 0ustar useruserPNG  IHDR szzRIDATX_hSw?@#^i/4@oFL ,„B V,X|(aB !'i`;}CTM p#)&&6{;|߿sLׯ_iO>5kc>(j7nرcmqRLk\-.KfJIb ,-A__|6ۭ={Lx"pJx GX˥(ۭmmmi?^5,Z nEzb[~Kmrr||?2l}KɓpBK>O{v=-*7j׿ >,.׮x|hȑ#Z$!~.A FavVq&_$P@2$ }*>_A2GWf0X:P߀?p>kAq|FGAR\*Jxb jdnf$`zFFΞjFnn~gYGe2SUUަH op V0euȘiv5u׼(GYD? -&l-tPP@,@L1E20 N4, ȲR Jl&t=L>Mlr [В|>OKb MuȑLyW!B(6l:EQX]]ݟb_ըD&22IL1ՠO$ 6 hB(  x50 `X~j8`;{n#98GeDQ4$+ b`9醋:utf|> xm iyggIEcz[>,2>>$I)ϟohL\.(h7oޘک044$ImM3>(2==ͭ[4Nmh2h4$IJ%eq>vVizxȋ#%F13Ǹ}\+3>$'5+dS ٘M.ӚgC 4֩?wP5֩?w;x 4lw+JIENDB`png++-0.2.5/test/cmp/pngsuite/basi3p02.png.GA.16.out0000644000175000017500000000037711461476005020127 0ustar useruserPNG  IHDR ^IDATXT }s2DgqiIy "#!@;ȧ`!#!ָ(xS5w=DOC c]|-XZxHBK5 F3h:{1;==em*>7jh~I)0{ƭ R[+w߁o&_4l(IENDB`png++-0.2.5/test/cmp/pngsuite/s09n3p02.png.GRAY.8.out0000644000175000017500000000016411461476005020170 0ustar useruserPNG  IHDR Y;IDAT51 | .lȨtȔ%)S#=X0 i)K#Y9IENDB`png++-0.2.5/test/cmp/pngsuite/s33n3p04.png.GRAY.8.out0000644000175000017500000000045011461476005020165 0ustar useruserPNG  IHDR!!rIDAT8!n@Fo% 1 B,g r :q2ݧHO)M&/D~3ٟCbAGO:!ND3[3[-:E@ ^}|["xYcKG?㦋N<7#E:&60߼󄴉ld (}j%Rv'{'B/?'{f:r+X:K@IENDB`png++-0.2.5/test/cmp/pngsuite/s04n3p01.png.GRAY.8.out0000644000175000017500000000012411461476005020156 0ustar useruserPNG  IHDRIDAT l8"`2<21~IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p02.png.RGBA.16.out0000644000175000017500000000045111461476005020344 0ustar useruserPNG  IHDR T!IDAThV \}wHdaG-M3B((0..3P^=2C?f$2F_20P#":蹢fIAe"^UZDgSE0=f g k /Kxg z>>u+4W ZVU\9`|V=<{_ xk=r=ڿ\>M=LIENDB`png++-0.2.5/test/cmp/pngsuite/f01n2c08.png.RGB.16.out0000644000175000017500000000220211461476005020055 0ustar useruserPNG  IHDR 1IIDATX͘[Dr*ݹ eF]hUIOg\NRvɩsr g Ao,}'8 [` iOjFdtp`'^W^qxà郎J2\ y 0L^NaN3CdwqT 6mt8a?+2PBEF߰ (pUf~gap}nX`G?P0  % X0T'6~<+\ X0JN1t#Ҭ9jX*+ 62OP|?,{ P/ P"y}Ng(^˯ЙPd?@'Rl4\D]ĜS kPbB9iЉPzpqQF\LYeGabzK wRWL"]$yXE Iߗ)nIH9y^L{ إ΢.G>L/-g3JLz#Hdp:LhUF/k,Cb1<FYbF{S`, y %:]a1ᰝ&u _c \ޟ 3!W ͝C^\Q}sjgJDԂH0P1CdZf"j!? U/XHVZ[ V F@ ^C؟\YIENDB`png++-0.2.5/test/cmp/pngsuite/s06i3p02.png.GA.16.out0000644000175000017500000000017611461476005017767 0ustar useruserPNG  IHDRmREIDATm̱ 0 DG:h؇ILA )IBRNվh{ C7W`1_qLz^, IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p02.png.RGB.8.out0000644000175000017500000000022511461476005020170 0ustar useruserPNG  IHDR \IDATHUA 0e`-  n 0HFz[=E2SB-zA^`_4/JIIENDB`png++-0.2.5/test/cmp/pngsuite/tp1n3p08.png.GA.8.out0000644000175000017500000000145411461476005020017 0ustar useruserPNG  IHDR sIDATH_HuS)45mnGKA FD^An(]nn$ERAVl43vlg..tx4tr뢳wyn}.^VaD~faE_?X~(IENDB`png++-0.2.5/test/cmp/pngsuite/basi6a08.png.RGBA.8.out0000644000175000017500000000053111461476005020256 0ustar useruserPNG  IHDR }Jb IDATXŕAN0EAfAME*q *e@ՔAHɊ|?'dG` 9c:1Ⓣ{=k ֵS˰gc. 3{_m /N @-~'.lM1! jѠ D h=F`u@]`^-^%x zRhb!9:XF/h.䋱 lY PtP΀W(3mYm πu(ש P:JS.$IENDB`png++-0.2.5/test/cmp/pngsuite/bgyn6a16.png.RGB.8.out0000644000175000017500000000212611461476005020177 0ustar useruserPNG  IHDR IDATHKn6@$ʒyNdw;IAw4&H-R.Pq;q!xν\:&46 ML0 C ."ǿ97;-0 ϙ `!-t'`b*HW1 ,9&S40qvpre|4pN>&S`F'./7sǗ 9/} a( K #. ¦o2LF:&V@? MRE㪕p\]YP #ơg]M#5#t.Mp(TOzKRhH@E;A 1V@ BC8 > 4T垏oԅvaѽbHcE^@JPC o zG]Y"~w'?OLDd\OMb4o Jxκ$3d &0{B/g\_߰`?9&mPAfw~ZX^S>n}cUl ig xt~=pUS4,5EL>,i j:|z_ۮXzG: aHѲQ#pe+2O j}B ]("8rVlGʌk}- Itr(E,h3L:\5dwzݰtt"$ 2_8/CL?D+~:/INvA#hOM #Gb)@VB"7f)+?aDt=*Äh#CLΧHOO%|Y/IENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a08.png.RGBA.8.out0000644000175000017500000000035411461476005020243 0ustar useruserPNG  IHDR }JbIDATXA 0E_ أԃ($N7m)*Mq&q"`!D?1#@rc'"N1nqR^y+bR\A`Z'" |9gY'`Fp@eYUY5zmw0;PV`@m'IBm!IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p08.png.RGBA.8.out0000644000175000017500000000126111461476005020273 0ustar useruserPNG  IHDR }JbxIDATXՕn@9Y ʹhb?-^GH/EJP$**@];{9%$b>P@Y#5"J3YCj?Df(4 K8cccUUQXX5jPJ j8 (xu K`ᆯ@ @tQgp \s _ К* CB '[v 3!-D L3QUNꋐQnig`VK3 Rv ľ~xx/p!_ '>mzEw)*xj+<%s11a&:ØpJ@? jSp?z3ڭcH>"Bdm@pӝ8$-4 |Y`3sl $E,bE n!p+J$&PllvzoU35M';߃y{c6bз0}ur14`?a$46ppOm is%8F8\3k)}ha{ҡ70Nw:!50e^7P[?mXM,Jft# .IENDB`png++-0.2.5/test/cmp/pngsuite/s37n3p04.png.RGB.8.out0000644000175000017500000000050411461476005020041 0ustar useruserPNG  IHDR%%JT IDATX ۄwO͹GѬJ]B|Nb.WxGg?^%x>45(0fϭ)7A:.= 7h!`Hd0Xlt@UYkUNs4& \lX5R 2'+d~G @4 @4߁@\\y9۩ܵEkQט-} Q FAQ wbk@|DV2IENDB`png++-0.2.5/test/cmp/pngsuite/f03n0g08.png.GA.8.out0000644000175000017500000000054311461476005017665 0ustar useruserPNG  IHDR s*IDATH?N0'pn1X:TbcaԱ7``a(j֥KC!LbRg*zF|OW]?25 3nD6!-q|J4= 0c!tɫIENDB`png++-0.2.5/test/cmp/pngsuite/tbbn1g04.png.RGB.16.out0000644000175000017500000000147411461476005020247 0ustar useruserPNG  IHDR 1IDATX"1]"H,HW###ŁEbX$]V*LNL*dN諯~uֹn?*GW]uJ+u{]Hf^{~4EdZ't ##bu]m~_/ꪉ&hok~va~;4Cc6;581iqLqZja>`&#\ ޭ'q<C8 %q))@WH_]])1y!#SS$wע[K)`;tӵFtI!>.Xjԍ̏] c1x`}Ë,/G"PV$%uQEW&h㚎 ݣך(1~(5KHTsq/%RPyXtPtx$I>a1/7@IH!cԸσ&Qq)1ǿ}lPN(a%>b2⮜N}miϔ4OZ@_uⷆw(kF/_$IENDB`png++-0.2.5/test/cmp/pngsuite/bgwn6a08.png.GA.16.out0000644000175000017500000000023011461476005020124 0ustar useruserPNG  IHDR n<_IDATXҡ 0 Dkk,nI6HQyHH| ,<}4IҽtE[`4`<4\4OzzxЀxpIENDB`png++-0.2.5/test/cmp/pngsuite/tp0n2c08.png.GA.8.out0000644000175000017500000000142511461476005017776 0ustar useruserPNG  IHDR sIDATHAh\uߚnDbMM4nb)`xj`(E\zEЂ=ԃ*n&56&!дM0 ݄Źy37hM֎#jq FI #7˚tNK-Z{Cep7niV-osv}-Zmu9{ǾCzV :o4ߏzME]x{EuJ;/~Ö]зIg`V+b -gvwě^&WV`/4jWg9me+ɸd+Bt-֡F5YtÜ9ԨǓn-89! y,U,yݔlO?UԋP`*(d¬gpUw3`}cp!O528:uK䲼&6nS"i\*tx쎯hG񼌥 r׈652>D'gC𾈘?\t)1ZioΠOVAA=CA.vqˡsBZ ESt>!΋r q)2 ab![Έ9vd$4xFE#+E(#t½ϦK&S`F'./7sǗ 9/} a( K #. ¦o2LF:&V@? MRE㪕p\]YP #ơg]M#5#t.Mp(TOzKRhH@E;A 1V@ BC8 > 4T垏oԅvaѽbHcE^@JPC o zG]Y"~w'?OLDd\OMb4o Jxκ$3d &0{B/g\_߰`?9&mPAfw~ZX^S>n}cUl ig xt~=pUS4,5EL>,i j:|z_ۮXzG: aHѲQ#pe+2O j}B ]("8rVlGʌk}- Itr(E,h3L:\5dwzݰtt"$ 2_8/CL?D+~:/INvA#hOM #Gb)@VB"7f)+?aDt=*Äh#CLΧHOO%|Y/IENDB`png++-0.2.5/test/cmp/pngsuite/s09n3p02.png.GRAY.16.out0000644000175000017500000000017711461476005020253 0ustar useruserPNG  IHDR jFIDATcƀXh30000 8CT100030000ݻyz$I>ER$IT!UU۷c[[[ ax<%#<<<4?R)dEQcccus4x(?c?KAAQiYZZBP>,d0>>.'`00ɲ}lll`xxXl2rX,=x (Jlff&ZA@<7 2(ɓ'B0DRAXD&"ׯiѣGqI\.?W~: ,-- ǭ[~GK\t]Ǐ`PNXEQ :fggq_[dY fYߖo޼)z^Çɓ'D4Ѽȣb,M&X.d2"DQ"|ͿFC8annLF{.n4 @ɲj UUQ* IH$011!ALOOp  4MjJ$ [[[x%Z[[7ncccW_}A$˗zalXYYagvgghtp8,2 #j5n~_r8<<$BPD---r(0BB~?v;(0BVff駟0 AGB ?jiiaX e( *t]7tttt|>mAD* ass`v;XE[[TUE^GV3Rg! 0hF&aRvֆRzM 2vwwd2h4*~PPnNkkk˗/Y:E4={!1z,VVVe6ZB$aaabOOqn2:::ى7x?f{MR)`||\r务躎jJ> baaY]]eo߾)pjL ǡ^^#  bpp#X .ddBKK uhJc#Lbrrϟ?_##88Nl6X,^jaEQdEoaܹC}bXȣGԕZEQHT"EQyhhȖL&þx}!;66FyFiDUUjJTU%s(mnn^b>}ʎ[on*)Dunoozj5RV fJ/F" f3hC ,X]]E2D\FTff+ `䙦iL&X,nG24|G@40͍>w(Q`V* %I2 q5255Eb`jj 4٫f/drs~='3_Zwt(p3p]`_yt?t(C\l52L̩g I@g.`(`g Dg&((`60Y`zl(P49܀:{z*zȟmt3ΞAO3B^N IENDB`png++-0.2.5/test/cmp/pngsuite/s06n3p02.png.GA.8.out0000644000175000017500000000014611461476005017712 0ustar useruserPNG  IHDRJ'-IDATc, PC&IF!\IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g01.png.GA.16.out0000644000175000017500000000041211461476005020105 0ustar useruserPNG  IHDR n<IDATXŗ0Cʹ25%|JTϸ$Me`K G7 1&EGঁ]3}SbJ|@E+ƷXMM{;#@_Lc,қkXY**d7]%XB D\O R U1A$+W 08U>b e`dIENDB`png++-0.2.5/test/cmp/pngsuite/basi6a08.png.RGB.16.out0000644000175000017500000000052711461476005020241 0ustar useruserPNG  IHDR ۏvIDATXՖˑ1 D' 2"c6w|hw)mV|q_Q>CaWFb2uB|8 (Nc Fyptħpf9CQ /4Z-[up)q.-0u6}R`B\lSY4CSp.@v=YCIlOsi} ً خ"+`4n&giJ\o8M܎>MП#jݻx&>ϥ q}.ۺhzMZ vB _PV;fIENDB`png++-0.2.5/test/cmp/pngsuite/tbbn3p08.png.GRAY.8.out0000644000175000017500000000123011461476005020325 0ustar useruserPNG  IHDR V%(_IDAT8}OHq?A+y16W3FnBB#)%$y([]x"(!az+[Ԗ^mԭXݻM{~x~<_=aÝN{u?3ӯ9rwK=[osw_}ej\Xn>P:g.hPB'{ز^qktñArLZ!ʦ:<ͤaRBKD_]UtH ͸"*RxA4'ṊA|Ut(㆙ WDf ȿ<4#J.aҰt :)`[SQ_'^m>B>jr`9) lx*T -XP/8S\@DVU5J:_yJWzٰ̲4]ZYt ZbR@{(cX+ b=_5=>s :EmLmʥ:z2k73 !8&d&c;Ncyk-5B@4a=Aj# Ȋu jxQ(N_Gu:+IENDB`png++-0.2.5/test/cmp/pngsuite/s32n3p04.png.RGB.8.out0000644000175000017500000000043111461476005020033 0ustar useruserPNG  IHDR IDATHՖY ! D+M3ԙ;- V~\'chn4<4{"≺O(xȃ ߩBEfhoߩ\D 8`'"xwu%KC$+ uɺO"5iF鲥Z*r.[aVp)A}Ug+i~IENDB`png++-0.2.5/test/cmp/pngsuite/bgwn6a08.png.GRAY.8.out0000644000175000017500000000015311461476005020324 0ustar useruserPNG  IHDR V%(2IDAT8c4cX) 2 PkXD{C /)VVP-za/IENDB`png++-0.2.5/test/cmp/pngsuite/tbbn2c16.png.RGB.8.out0000644000175000017500000000241711461476005020166 0ustar useruserPNG  IHDR IDATH_hSw?@#^i/4@of4Z`UVf )X1`}Hp` CO v,fP; -Hcb$=ddf]w=99k}6G^|:x(޽{&E1& @Q'O_>nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gzs0hgIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g02.png.RGBA.8.out0000644000175000017500000000035111461476005020250 0ustar useruserPNG  IHDR }JbIDATXTA0s~џa%꺮MK6e\!p 3SOO$l=af/5;s?;IlRʦt5/ Z+{:XA&g W~x99X́gn^pQ:~|zw< X x<{ @w78IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p04.png.GRAY.16.out0000644000175000017500000000050311461476005020373 0ustar useruserPNG  IHDR q IDATH1@D_>m"g<"{ &KE 6 LDUM5M.5M.54oEIj{IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g16.png.GA.16.out0000644000175000017500000000025411461476005020117 0ustar useruserPNG  IHDR n<sIDATX+0D:FvjBC~0{0{1`  8m2 ;@ H(t@R@- v@2@+Z$ p']c !IENDB`png++-0.2.5/test/cmp/pngsuite/s03n3p01.png.RGB.8.out0000644000175000017500000000012311461476005020024 0ustar useruserPNG  IHDRJ"IDATcdL +b;Bz%6kIENDB`png++-0.2.5/test/cmp/pngsuite/s04n3p01.png.RGBA.16.out0000644000175000017500000000013311461476005020206 0ustar useruserPNG  IHDRaB="IDATc🁁?.`22 FBV&vIENDB`png++-0.2.5/test/cmp/pngsuite/s34i3p04.png.RGBA.16.out0000644000175000017500000000105611461476005020214 0ustar useruserPNG  IHDR""IDAThX[ \9gȩGbDQ4/؝i"*X#¯U⸊hvL¤ rnQT(C%C~o7Jv%O9ohr;P[ʱvs1txґEiDSSFhS wOT9Fi ɑ,*#t1r֔w9}fH(#z<<&ӖY;oݯWX#&¼`a0d{'%&ԶfMbSxkG<YC i%ICfHן.U_qŨeF0}zQ)-ڽťLlI)-,Iw,N!) "X\Tѐ5 3ݯU{;) jO[?Gu Kp{e CHG3 ],Kr`vVGՒ*{HmTyzBtY9r_IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p04.png.RGB.16.out0000644000175000017500000000032511461476005020252 0ustar useruserPNG  IHDR 1IDATXQ 0C{dJ X@Va5Y5mĄAՁꗘr }b߼6lK~S@61u]mO dj]W(4wTO d]VkO d躺}e xtt}e t+[IENDB`png++-0.2.5/test/cmp/pngsuite/basi4a08.png.GA.16.out0000644000175000017500000000033511461476005020111 0ustar useruserPNG  IHDR ^IDATX1 0 EC%7HRGisSWw)-u *U@$Fz@&]A W&͏:R?L馵8D, sv;U@ uHV ]Gp']r߫O` ျp = V*IENDB`png++-0.2.5/test/cmp/pngsuite/s02i3p01.png.RGBA.8.out0000644000175000017500000000012011461476005020114 0ustar useruserPNG  IHDR=IDATc`?!,b \YIENDB`png++-0.2.5/test/cmp/pngsuite/f04n0g08.png.GRAY.8.out0000644000175000017500000000043311461476005020137 0ustar useruserPNG  IHDR V%(IDAT8i1WҌ{I 5\oҁ!TpWeobIJ:,x> {_EJ)UUE9prbnyefCy^^~$nIh6Rk ڄNA{bm^;zYM8 (&mJp=;7 >QO@=K ү_D3jft`෰1,CY4w`J3~c3|1Lѫ 5jZU>D _06s:<m*&&3`ܹm3jm9󺙩+ Hc IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p02.png.RGBA.8.out0000644000175000017500000000023511461476005020272 0ustar useruserPNG  IHDR szzdIDATX; CdP?x!FO [JtR](v%׆UҦpqpxSq0y`{<'zcIENDB`png++-0.2.5/test/cmp/pngsuite/f02n0g08.png.GA.8.out0000644000175000017500000000052611461476005017665 0ustar useruserPNG  IHDR sIDATH=R0JYHAMAMt dDLlY+I[X}jܭx!̴zzz:-5^|V2hvD=\6`%ݝdsQ ^X/eK5_3A:NJ0~D}G*;`ؑ )| %Va \Mڙ[ l C|yJ@[3NRdH!D(POmӷR{>1IENDB`png++-0.2.5/test/cmp/pngsuite/tp0n2c08.png.RGBA.16.out0000644000175000017500000000302011461476005020272 0ustar useruserPNG  IHDR #ꦷIDATh_hOH#1F0`"((4 ABad +>(TC&B@D#FH>̹KLfL~̝ͽ|ϟ߽5gqG?4lͶ=p v (4jԈ;ڊ 6ذW@Zu]G~3 W\c=* l C cƜ%[`&gТE z)N:$:ua$n;hՊB;`ԨX-T]i/p5װSXf2UN8FiӦp 78ߪ)^SNLd]o=2t $fꕋWa+ >.,K7nAg]' u<|윘rY97]VjFnʏ4.Y  9)ERT>d1/~9蠃.bCgK|'^:UFMC|2~'o| q>Ƶ!mK/@%]`vncz-w C=asqBsXx|ep-^ȃpZO+ tƸG^o|#/{nG59Wq׸GOOCn$\uUDŽ x3  MZ0 w"CA'㋐C!? )aÆe(%0f,ldZje .4/x6Ƿ+􄴆| yb 3 !i[!-8>^3qꆄ!Cb$J^z˘EI5:SQM6nBƥh5AH_Hrbɂx1Uɷ!Eߵ؊NhۢM i <eBBE"m׮}FOGI[oQ'7MhgWŐ\!MZ5a-Ȃ`z.RTw/xWE%D(]'MjN̙vcC0``Ƹ]vUƼK©ѣG0a„|E #ÞhSNX>?%5k񼔆' El$׫/S%]g34iճ#-4Єv}e L.|i_bo -7E/fQ?7k\ONA+-8cHJj([;u,c| 묳h@6mSNMR])x?`6|RaBhbVkp'u2ƥ9Urne1kFŨ\җH.s!f0m9;d@n'5HaqY5R)0Śz4Y~GK~Jd%v,Gx9IENDB`png++-0.2.5/test/cmp/pngsuite/f02n2c08.png.GA.16.out0000644000175000017500000000141711461476005017742 0ustar useruserPNG  IHDR n<IDATXM0tܓ!6KEb; pV@H܃bVӤY*y]CXzrخWv\=cG á0yTjk=jP;p#g@ } ȭtjR4.Aj~DI'fMJu;}Tĉƌ'Vʤ:44o&$΅T8c+ǥa9wCrKT787*/ȗH8 [*`:ùtHk$oa|(aD@l|1R˯{eHkPT /"|o3bouxbЅKr$c14FG"Q-q"hh4K6'L2jq%^t.0| kۥx%? .=T}bc j.e{`M玩 ђ7[`3Ʈ*S#/J_qEI+sv/9vՁ_u8(ł~DJC/J'OK!9Zqz BxZ@ssL HUnc{Cӷ#=ԔN -ϒ{;w&EW6P+dt΅ )]\7bb 1>M}PU~2Bn.ݎ_oON*Rs%#QRfJҭ U_ǘ brߒ%Y?8KIENDB`png++-0.2.5/test/cmp/pngsuite/s38n3p04.png.GA.16.out0000644000175000017500000000056311461476005020003 0ustar useruserPNG  IHDR&&Rf:IDATX-r12+:HSTavV!P @zz`zAv@?ÐmķI%{.a+0x;<7.2 Iq@$9gLJu,'!v`!X 6'!8[ov=kUCX1c(P OѶeP=~YsH)%?x@8qqs uǝz_."ƈ @cD  uhѢb̖-`+@/R C]pbĈѳb*)^N= #1c+-׬Y  Fp=;tdr5.psE@O & &8Bs̍)S qK,!Cγƍ.u}4is_#SF w a&ŰeJ(uv4+b;vXO~TH񛕑D\Li}m]-S̞=ivhN%U ^$m}~8Daŋb0DqadbP/ĈXӵQ@IENDB`png++-0.2.5/test/cmp/pngsuite/s40i3p04.png.RGBA.16.out0000644000175000017500000000117111461476005020207 0ustar useruserPNG  IHDR((iT@IDAThQ @; Sӏ"VPb Y@O RUEɵ*bPd)GpYM侪bο'u1[Ft;΀eV M]W4 =>(i~bW1v@KRKP|IdeYK%Fh^gqc*O/+h&roTGKL„6&&srY j`$G&ʲm%z揍(3w&I^e{9O2 V9`G_;' p`rkw@>e A0bzIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g04.png.GA.8.out0000644000175000017500000000022711461476005020030 0ustar useruserPNG  IHDR t^IDATHQ @D}ODe-A*03(d: ~ ӂ aá !9.;;PA)h19g Uجr;ha L%IENDB`png++-0.2.5/test/cmp/pngsuite/tbbn2c16.png.RGB.16.out0000644000175000017500000000362611461476005020250 0ustar useruserPNG  IHDR 1]IDATXX_HbiD  I  ƅ 6.Bq`*(`‹6 jYBȅrIHA!9CFxSgwWs<{djjjjj ywwwww!ICJT*J\[[[[[[cccccC WVVVVV`0H$DcX,_=FfvrH$----Noǣh4bx `0:N\. d2ᅮt*JR?ŋFc>/d<$t:  B>p|||||lv{~UHo0Ғr\<< BQje3 B@M,S&JpKs:N\O,r)ټw·d^ '@  UnL&dxa>|8J% )BBx灭ݻwͲ, l6˗jj5wt~ ~}6jZ7 J΍hThrXxe#T*`zeOY~[l6*W`͛7oy<dz loBP(DU@>:::::v:Y@oI*y`xaB*&&vp:GF8Nux~o'ӧ'O'OVWb.rnx5 L&IzFh48&(x8< 4T&@0H `b"HDfl~xD"H7i@6f, RT*B(2ٗy[Z[|>EzI |x|JPЅV{gg$ˊ}y,b\kE89= LOWUUUt:N~g2L&)|P( 3i). P Drz)Td`0 Y V֖N3PyF?F 03,+d2YG ..({U`'6{vvvvv033 kk@#|| ={<{q:iZVKAL  X,SjhцE_?Qt:Nh4Fp8ٮ.1MD[ *>er\.cYeY奞Aޠ@Vj4< 0࠘ qnjFH>Na::`"Ijsn>7ҍ7*1yT@HI$@$2ܬ--bpohhhhh ޳Dzz^r\NHw0D|a2r&˦,KX^+Aoooooo%w8RAZ܌n:*WUd U~hfl6奻^uL<:::::Z>.H$I%+t NOOOOOwKwgѴ[b_XXXXXX _-Jw7JMGP2F2Dڇ(*{^-w)SRRդ߿J uZ*|+n}}}}}}''''''-/ ywIENDB`png++-0.2.5/test/cmp/pngsuite/s05i3p02.png.RGB.16.out0000644000175000017500000000015611461476005020107 0ustar useruserPNG  IHDR%]g5IDATu ܚ>jL(r@C5,$ҧ6Qӄu]IENDB`png++-0.2.5/test/cmp/pngsuite/basn4a16.png.GA.16.out0000644000175000017500000000421611461476005020117 0ustar useruserPNG  IHDR n<UIDATXŗ_h[cHuRGT(8B-P.%4BiKaw]HɐXf%$zmiJWGc9w~t5O>>`eaX=`Ԃ±8G?]e _^X.wGO3wd3 gZú|'fef[Z!p&ކuh`c:oȇtri^g)X]UVZ l-5C`T$u!Z??p߅Cgj@dƱt-YY˅ae}';Ȁ~B@3 x'͌B ^SA#nr2r:QfGR`fAdv <@_"AÃևðqXZ3S:܀{Ճ< ';B 1/s,ZYߣ` `pg=U<@#뿃נ/`6,њ̀U]轏@`7&kc{ ? %:4o6JވaKGaɄ ? @= !e/sVVCpA5AhΠ.Ak%,?%!V[?hv@[/  !~Q`ZJHV@ס, \Z-tVKuVai *(a0ס  =i0Vކ.a{hQf\5 |ee8 l9QF haeXC9wnA D`6_Bh^SygLgv]~dA_ lwSR; I[VF&;5l :F$g 8h=ox yot| 'Q2 ,44c94O!1DӲͷ+3߲M:$m+?=*|~5{Wb zC`W݄辥< Cu㰈"j Q}8p|$;>.;/؏a 4/@ н[/E})x6훏m^=t)y#!ËGT/So SMO]]#7*gǏl!qXkdQa59G2 5e5$l (+畸2ۥ_$`Wb?@0 9E{Bk80/ƲVRZYxYf\ Nv{k By_@SaJcKjT𔥞cVE^>[v]7R>܉\i@)]SBBy$Ғh('eϭia;cҹ; МkX]HM%I%ŎUz]„Xj"22CO+h ɴ )oF\ܼ27 h+' wCQRY\-4-dA.Hax4,@ᜲ$o{ dJ;v,& C˧T$3ӔgVWsϓ<yhB# FP!v Vޔl X$p]y]\._s=,l7Gd){&TLK(}Z)h+V %@{gd"iiqૢ]Z^<y wPg+ЮB;  s%/ڟ gU<=DPw?({!l7d̀t:9-xIb z 4thFk2*<#~WQ\ 4eύpNf.J,OAdžN 6lf-ȌcGR3*%dE((\0){n$KJ3`38`ek+-w53&7yiIq#y|#^>;bZC`_@qŎghq8FG%A)`NFjU/Նz?VXm^ |W j_j9!`$TGJGKoEu"3U۫Vj𺡗~a5 8z8} 8*SޗE9IFK0vԵ3nH  Q=G ,b X*Vpzp+{?hlOM Ljz=OB`Jk20{"*pãT{FAvn'2deYf,X|ԗRNԫQtj8AFZV:a [/7C|oxy7RU;NRq<]>%$D,_Ms7VK1=IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g01.png.RGBA.16.out0000644000175000017500000000045611461476005020341 0ustar useruserPNG  IHDR #ꦷIDATh D3ܒf 1~m011$.\c.o@K5@ u|%`c &lڀlUogꤱu%8;z3O@to1Ъ]%% }7X-O@p̀jB(…wD^_U\(qdzCdk% K'*q'u$^q9({( @!"< "U|1AyIENDB`png++-0.2.5/test/cmp/pngsuite/basn2c08.png.GRAY.8.out0000644000175000017500000000030111461476005020303 0ustar useruserPNG  IHDR V%(IDAT8ݒA !K'v h=t95kL B!,`'ź̩;t?xR,f\n!Q\N'`g~24HQP@$4-\5i@]/bIENDB`png++-0.2.5/test/cmp/pngsuite/f02n2c08.png.GRAY.8.out0000644000175000017500000000112511461476005020132 0ustar useruserPNG  IHDR V%(IDAT8eS;1y."A\ q! q  Bd$=}f!Y-j[.m!&ٵbUEZYDv3!Z%6)&3h: iևE4ð6*] `1^m!tY8)$?g*fRk$wyqܑOI$hi<?H>O.}9iv&3K&vWK)yiN QJ\isBc%cN8gR\y+fqkZ[Ԛ5Zkj@yhf, A-](X87G:IsjbO?7$P@^bLvaK9j^aHa^D$,T8Nx8UDTM-CJqHjXUjRt2?=R3#H EE,B fzQ*jy `0C<+*J ZIENDB`png++-0.2.5/test/cmp/pngsuite/basn4a08.png.RGBA.8.out0000644000175000017500000000020311461476005020255 0ustar useruserPNG  IHDR szzJIDATXҡ 0E70Xm ^A0pHҾ6sx4DD^}IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g01.png.GRAY.16.out0000644000175000017500000000045711461476005020364 0ustar useruserPNG  IHDR qIDATHTQ0+eއ:؋$&B(BUFޘixaU p /F9d}qXLG*CVA0/Zxfdc@GWř5Q@8aMAֽD>)bPW85&ޟY|qwnM3¥ *u֔`). 7jp%wGz5o NI JƋ5{n['wFO?xyOmIENDB`png++-0.2.5/test/cmp/pngsuite/s06n3p02.png.GRAY.8.out0000644000175000017500000000014011461476005020157 0ustar useruserPNG  IHDRŧ'IDAT-1 0cv:I8CϞbn¦4E$IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p01.png.GA.8.out0000644000175000017500000000025211461476005020037 0ustar useruserPNG  IHDR tqIDATH t,!?)B#\j(1U;⠣ jT(ܟ6.' /+3oiuкfpBD{\Azl?IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g04.png.RGBA.16.out0000644000175000017500000000033411461476005020332 0ustar useruserPNG  IHDR T!IDATh C aV`` 1<֦ IҦ"u;^]";UڅQ8z V"8{Pi-,=߁(xv܁Vp<zwnt4 и@'@nt4La1NIENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a16.png.RGBA.8.out0000644000175000017500000000542011461476005020241 0ustar useruserPNG  IHDR }Jb IDATXV]H#W~L$ߙIvj5N~t⅔6. { KozKo7RD.#t% [udcQ1fdL AۯЋs>ݻyz$I>ER$IT!UU۷c[[[ ax<%#<<<4?R)dEQcccus4x(?c?KAAQiYZZBP>,d0>>.'`00ɲ}lll`xxXl2rX,=x (Jlff&ZA@<7 2(ɓ'B0DRAXD&"ׯiѣGqI\.?W~: ,-- ǭ[~GK\t]Ǐ`PNXEQ :fggq_[dY fYߖo޼)z^Çɓ'D4Ѽȣb,M&X.d2"DQ"|ͿFC8annLF{.n4 @ɲj UUQ* IH$011!ALOOp  4MjJ$ [[[x%Z[[7ncccW_}A$˗zalXYYagvgghtp8,2 #j5n~_r8<<$BPD---r(0BB~?v;(0BVff駟0 AGB ?jiiaX e( *t]7tttt|>mAD* ass`v;XE[[TUE^GV3Rg! 0hF&aRvֆRzM 2vwwd2h4*~PPnNkkk˗/Y:E4={!1z,VVVe6ZB$aaabOOqn2:::ى7x?f{MR)`||\r务躎jJ> baaY]]eo߾)pjL ǡ^^#  bpp#X .ddBKK uhJc#Lbrrϟ?_##88Nl6X,^jaEQdEoaܹC}bXȣGԕZEQHT"EQyhhȖL&þx}!;66FyFiDUUjJTU%s(mnn^b>}ʎ[on*)Dunoozj5RV fJ/F" f3hC ,X]]E2D\FTff+ `䙦iL&X,nG24|G@40͍>w(Q`V* %I2 q5255Eb`jj 4٫f')KRzY\z#0 ++@2;PB@ 1K hځv0:Va}>yu:l"X~ֱ& k~ ϢϢb˱rN ;YO֓z 5{^1 Ā}h+ڊҒҒMHqD>/ϋA1(?es{{{B(c1ؽ~6&==eBjs̡̡!>8477gvmxccl2e~5z^:DOn:UCP5S~x`D8u>`|%_Iҭt+c}MlFuU g2CD_/7 Nh02~e|||n-cX 3̰o}>} Q!*Dt]ĿWWWX )#t NGAbXT*KʫʫʫFQhTz^dj2 }վj{=3>LFd-d BD?XMF C\,piZQ|Gُ?W?:: Fv]Gl  y7ݜw s0Wv~gPyX1jZ&i2zMTC;;;U܉;qvZx!w~/5ob <l NQ: ,nv]n[tn L L L 1cccc—*b^ea#o<奼\E"W^1bx߀o7!<0 oXJq8PP:usss0`lQ[.]Vr+Z.ksΑK?\kkk5њhMkZ'I4;ii%gY}}}|=_vam춾_߯׏GD_** ab' ZVWWWN):BpG>O:})P`[6ow888 >!2Lɰ`0 5~ FQ}V_???Aנk4p^Ds,ZJ-WWWJҥtRR8G0eC#ߑtk5:>>>>>APf/;Vv"] _/c,oooQFZd-R!e2L אk5$ &o˶/ a;wdNfNfNSds9<+ʳ;1&&ko95xj ]zի-b5@1[ŭVaHX$\ ׅPJ$|1_n[4 vb4#H3iAz^z^z)7zN>'{ʍy<&sI%}ϟ(x'd?nXedJdr >>o+tg3 lR6)t{t{t{ jX aEQE___[VU _/@ >׾t].]Iդjo$HwǻN> AgnܪUs6m.'rrΊ9+欘ɜO|bZjvmg8c8fffd!Y(  ׋ÅÅL'''`J/^. jAtttAmWݨQuC+l钺.ѓI Z@ł8X`q67mP&clDXOQ(:xY *HKBnnq^W%tV=')NVƶ`Qs{u#M[ ueFJتUVR*>/Mw覐@ HysU5\^\m.!+a.ϺC`ITQlϼx"dߕ%luZ)$l{hU#"'oqKIENDB`png++-0.2.5/test/cmp/pngsuite/basn4a16.png.RGBA.16.out0000644000175000017500000000757411461476005020355 0ustar useruserPNG  IHDR #ꦷCIDAThYQUv2If&$ݮԤ]A-bn"jjR-Ƀ}pW"VI,Xh-U."+E*kQۺMt]I:N29_/!;3sw]9$Y%z!iHs|q`]p@nG?:pT~gϟyy鳟>3ۛoo.-]Zd<=^}A}ҾD)^R-ݖnKL0myͰ68۱۱\{{{@RRg ` X[[Oן? UW͍CP=d}F1[ W0444 nrrrXEPJ^JX +a*J).Ka:RNfe(b+TSU*u ZZj_qG#;u_ BAioڛ.ƥ"C2 @< ŷoߖ䒯+$YyWyWyWkkk%*)IV7 eH$M&IQ$7kΡΡΡR|1@*Hn-eг2P H1o+VN+|@RsW+~ůkZX[^[^[aƬ8+Ίg3Ob^"]H1[{P1rMJV;r#8b#f:y9e% 68Π3A!(O)( A}Pz4@Y= hY-eJd;;;-fY`!]d|.VRwCs@ Ϭg3 Ү+   [07 r7p#fSۿi ól.,˲, pqvn7 I$IZVz^@NQEQBP(y y. @1~rrtD;Q@Ky)x^ypE\W2BF?ƏY08c|7qgYvM7$پ;;  }RXmH҆/@9_(O'B*\r. 䒹d. ܼ|={JqrG x#ވ78 b+7 >8eV"Up|PM Y!k:y 9Kz5:Ƹ1n@pa]]]fv[z/E-*^ūbTQr.@ 1!p!.ągڙvKsjZƪj,C###fSaIrBN\GX__k5y+L|_{`*0 cccx-[]'N>bY,eqG?:t82#elF@z=7ْ,)&QSd`2^o/ hZkŹs_e666m|hCiF|_DQEp).ť|mG:؟?3=k%/_\|0Fc$&TǫTߩc:8:y 0}a´${d#vډk' _SO>[s9?۾۾ۀApw;+WNNN=f {mi[]]]D5)u.11F(ЛrBlLϜ>sR|ׯOl? pssq}`l̇̇̇0 (EۢmQhkkھj+-Ӗi88 0?,/H%\3>RY)nqJDP ڵk+ HG,)pݴh"&$YYYK 8g[߀`H 66)+`483Bu7q ud8 @À/Kygʙr, `lll۠m6h+>j)ԝٗKv W'dnD`S9#T'RӠy2|j@1P g qq$w;UGQ=l[ EIO5x& #GM qu܈PrFNFB=we2XX  9B`wۻ-ܮVVZBKh ShY%dDY:NP8:y _a@5ZVzKz1%>>> W+ 9Cΐ S7XzPjBM ===f[J5)ՉBI`ĨѠyqżgw-RYyWy$* Sz"fa¾}f?Nm)ugԤBZD` Tu0W|%Qi3 C 0#x>8TĔ#8dsl327ELLDK312řooCHriMcG3?}2!QhNE,,DR{a 58\_XZ{Y-[eˆ[֢ҩJs"_xNj2'`ErSRi:1>p|Dѝ)y` F+ [I>UZ׸.Bt_3ɵ܅hZ%BjyTE3¼~ln 'ѝr>@@\dE9|Bt'#7G TX YIh#T㧂-d|#G8xфZ3>ՁLs=}Yo#a`ELJM 8z=>egtUqa}Gքgi6o~_ϒdDz׺QQv7lm}_>ƃa.̱UقKT&Dz^(y)+D*VxOqKԸ(à]3~41WEgrLfî,zXb`uW~VԨ?9iYVVfDt "}xOfo<5HCG"'tLƝa ׌ Aj2G[O۞Sd%yn)X Ksn>SKAim5iLZ}-_*^[NV9u}8Vu+VPvMMobi)XZbeõ5;GnwTJ5KGwfSekpN+nDZ_=["S.c۝ ?fXe_%I&/{$WNV'*w:'S߆z7ƣLSF?nePv=q{XY* Ejn2~ycC R?;usA9Ñp:Q>ehN }-[f/7tGa?"лOy5fz^Z,y mGe=^ gò,v{@>NwL|6;)9;ٷ2O ޛ~ y] Iȭw ]R,kѐsp>/lg`;Z ? ERI-օbЏFCXFQ% (A? eйVcq"aH=5't vֻ ;4z(OH hMƖ9PA`2$@v&(ۡ{0?v`jW@+h-d9x7,!Wn3,#9tҷXU 6 ˢ!ex@ҥpV {餾L)dл@ehKA`h芊h蛷ݶ񦓞k9Ճr'Atw1d["M=aZ(?AF:jp+ 3RK,#]]Cg܅0F?Bc x"B CYb{ uՁJa8S.'!d oX=~@~ Le/#@R]ñf&h}> y>{^]` PN\^ψwL*j84Ar|iM4-Nnǂ"11 ANQ^M '@MVC5hHԓѐ2?_GCެh(y4-6@ϛlL%d{3\r3A [ M'_AR8v±hH}0퍆ҥБVķ z烞_6 CDžcGb%О1`p5Ƚ D+| ;3Q *p#%JPA\ }? 2?`Gгt6 b!7U CcXOL SQF(h@+hOļwxgLG7tlb?=M} 9G x@TCH!ȶ@+;/&oxu ǃ\ |vd`& "A:0*Q y# E?g6F~3&[e: ӑo#f:0ft>f:ѦNvere # ,~9a n cb->ɷ>Pv3>>}yۙ|Г!pN #e8x X  嵼o= -m2jS@{ *!̍Ċ&cjxixqvC@ay C=nndGAx wV5l2(_A h @xmx@3(к p_M:}G"HlE C#_@5詉 9_L5@ Ƃ[ !~+|=m$SPBh!jP_Io@ix6Qn@ o x@}ȺY(ӛ!;6;moA; Eaa(Y7@h+Aއ6 {mU[A|*j wȯd7Bo6rx5@@2c6CP ?zhzP.aȝ}2଀u نh/w5 :PԓiP?Իh4Bp"k@6zAG@ʏ<Ai+A^|c|*SAj)(ՠLQ Z %0;܇}2 eFT\  5 Y.jAc*sJ (ׁù ω [lClσD(6]b'-<.e-(S_oRe4 h gA d΂@()@P8 R+j5IENDB`png++-0.2.5/test/cmp/pngsuite/s32n3p04.png.GA.16.out0000644000175000017500000000055211461476005017773 0ustar useruserPNG  IHDR n<1IDATX͖1n@E_"(eDCPR9')|WޢJ*r(4^m"ٌdyvgywb8s`;`<+` L+Z&|ISEşf_* ۠8@✱xm濠>zo_!a*#&skP$P#I= BtQ†?gNgToWOIF9W-~ , ^])b, gNs4͜fٙ_C)åS_fQ < 3)(IENDB`png++-0.2.5/test/cmp/pngsuite/s08n3p02.png.RGB.8.out0000644000175000017500000000016711461476005020042 0ustar useruserPNG  IHDRKm)>IDATu :N]F4֐xɁ]߁|]=EM%[{C#d .!Ǽ&H㡡3?FUBhsg{ yCChc * ll|*EpX?pDWU:d !?e!o GAPsRrdaHX^JC7C$]Gߋw9N8ax*!JNP.)6!r@&$gPD0I,G;-vL@a#T * 8d@sQX➛zwGxOb:9z!λU?`g, s0N7Sc v>}337k"}"TO^ [R8JhCxBk&S] r`B2l'@)ʼ:UA`) }!&+`#0I<[j (ax~炙qG4gxR.jIo5wwwڭ&5slr)ӈ|!'&zSgIYmT@?W:X^@~@܉n*/5pㄬp\'~[t :l!-PrPipՈ|.ƫ>6|Q!krMً%*5q*uJ]%J]N`3/}I25~{c?aAV:(#gvBŅ\vR]Z@K\BFNIɩT*!tr"]^I~ !MWT,ŢaP,b(R2\Z`#6?Z +Z?6Zt%kqA8܉@Uf@ gӑŰt:k"BN,Ƕ>.t%ɝSaLU-nmS T! |_])L†Nː42ŋBa?Xr/^ONHR:ĺ aBܭ5PCyu, iR`?'[ ?ey?Em#QCV,59-PHua\]U8贰.\oneo}$|d2OZ2bzXTݸ-\<.z:{5ϊhS277 LcrgyGy]y -Rۼ7z6\})ݹgO6 ˻W ިc0⺮\hQYۭr˟JN>J$Z_@0õJk!0<f&mьg _{GV~/J7/ +e@Fa&"ncl' {KF*UpU] Kw{ 9(Qꌣͽ]DhHm'æ9Ӝy=]^3HWmrPqC1'lzl=mi$2dM`S%y7$K4zl'{qCO +~f;iXI7S.#)nK:nbq2Y?+fW!l/IENDB`png++-0.2.5/test/cmp/pngsuite/s33n3p04.png.GA.8.out0000644000175000017500000000054511461476005017717 0ustar useruserPNG  IHDR!! ,IDATH!nA$+JAUBaOSpToA*P *0dSG ]Y~/_$]hti]Q3_"JEdt!X'm,l6E܁)Hjϸbҧx+sSҦ g"juD,]2UkQ5&F#/T2VX}!A^ghx8jaSمIEz,FHuxZBu}uI@etHgmn`dz5ȼȮR ):L'IENDB`png++-0.2.5/test/cmp/pngsuite/bgbn4a08.png.RGBA.8.out0000644000175000017500000000020311461476005020242 0ustar useruserPNG  IHDR szzJIDATXҡ 0E70Xm ^A0pHҾ6sx4DD^}IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p01.png.RGB.8.out0000644000175000017500000000030411461476005020160 0ustar useruserPNG  IHDR 5IDATHc|_nRR0(_ DUS;1 X-PJ'&wT&ȆF1J!Qhb$mè('EZFF【hq@P|4rתvIENDB`png++-0.2.5/test/cmp/pngsuite/tbgn3p08.png.RGB.8.out0000644000175000017500000000241711461476005020212 0ustar useruserPNG  IHDR IDATH_hSw?@#^i/4@of4Z`UVf )X1`}Hp` CO v,fP; -Hcb$=ddf]w=99k}6G^|:x(޽{&E1& @Q'O_>nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gzs0hgIENDB`png++-0.2.5/test/cmp/pngsuite/s34i3p04.png.GA.16.out0000644000175000017500000000106111461476005017764 0ustar useruserPNG  IHDR""/IDATX͗N0Xca0u*#)x&fCեO !w NMj8_@ xJrJpdT2fO~ }d얀䶅4dbzEJ a?'̺ J.A.N0uZ8 vg!'/Ly/EUIJ*L6,igb9kʍKxyw(83$4ŪDa6gf0DO0;EǂJFw3y0ZI,&&+yj ѹlB X6& \7+G -]. a>V ӶM_`/G $-S.Շ==Q4n3[R9ɺZT5g煪jȑ:Y Z.C^UC?O Wd#zbPhPou[oDOz>oZ IENDB`png++-0.2.5/test/cmp/pngsuite/tp1n3p08.png.RGBA.8.out0000644000175000017500000000261311461476005020241 0ustar useruserPNG  IHDR szzRIDATX_hSw?@#^i/4@oFL ,„B V,X|(aB !'i`;}CTM p#)&&6{;|߿sLׯ_iO>5kc>(j7nرcmqRLk\-.KfJIb ,-A__|6ۭ={Lx"pJx GX˥(ۭmmmi?^5,Z nEzb[~Kmrr||?2l}KɓpBK>O{v=-*7j׿ >,.׮x|hȑ#Z$!~.A FavVq&_$P@2$ }*>_A2GWf0X:P߀?p>kAq|FGAR\*Jxb jdnf$`zFFΞjFnn~gYGe2SUUަH op V0euȘiv5u׼(GYD? -&l-tPP@,@L1E20 N4, ȲR Jl&t=L>Mlr [В|>OKb MuȑLyW!B(6l:EQX]]ݟb_ըD&22IL1ՠO$ 6 hB(  x50 `X~j8`;{n#98GeDQ4$+ b`9醋:utf|> xm iyggIEcz[>,2>>$I)ϟohL\.(h7oޘک044$ImM3>(2==ͭ[4Nmh2h4$IJ%eq>vVizx&S`F'./7sǗ 9/} a( K #. ¦o2LF:&V@? MRE㪕p\]YP #ơg]M#5#t.Mp(TOzKRhH@E;A 1V@ BC8 > 4T垏oԅvaѽbHcE^@JPC o zG]Y"~w'?OLDd\OMb4o Jxκ$3d &0{B/g\_߰`?9&mPAfw~ZX^S>n}cUl ig xt~=pUS4,5EL>,i j:|z_ۮXzG: aHѲQ#pe+2O j}B ]("8rVlGʌk}- Itr(E,h3L:\5dwzݰtt"$ 2_8/CL?D+~:/INvA#hOM #Gb)@VB"7f)+?aDt=*Äh#CLΧHOO%|Y/IENDB`png++-0.2.5/test/cmp/pngsuite/s33i3p04.png.GA.16.out0000644000175000017500000000076111461476005017771 0ustar useruserPNG  IHDR!!z1IDATXŕ1r0EftGHGEPbOSp 0T*!GpHWec֫_2P0Qr2ܺH 3Ӝ愲QOؼꗬm#H(g*ֱhK#Nw -788\D@KJ%s8$n`5;`ɅVGrR0W|r`F_v;}'qќ{}i7AIĥ.cWMpi؎C\m݅) +v1F@^F6yyuc4 yf E:)MIqN?įX{F9?/glX( ƅD'#oAEu| {Lu#1 YVx^;`Xx̍e/n[8-#03Pe=;Ԁs; 9p9lL,߸1qlL+FŰ <<<\R ܼa!4H-C*4H-> 4J!'^z)w} I?5' EOg`mohǝX!q/8ю7pZp gЮnIENDB`png++-0.2.5/test/cmp/pngsuite/tbrn2c08.png.RGBA.16.out0000644000175000017500000000305311461476005020364 0ustar useruserPNG  IHDR #ꦷIDATh_hTϴ*рF0#$P *U!>Ȳ`\h|Z}Z*hi󐇀)dA0B@D)F`d07L3™3w~{?w3gu֏lM6Ce?5UQN .ڊ6 w@2n_YC ᪫zUdOv fe Y&ermq|'w@&Mx≬N:1mk-ZsuOV Uw@2|뮻{e.χN1c`ƌ馛Uߪ9W^:Sq5KYێ֫GaoB$fW v@*O|AW\u9L4iAV9N+|=_Ĕ39?%rXT\ZkN:l\6.[; W>}(䌾堃Vj4n?|5 +]w|spahR a]^xs;lYwq5ay2nFʝ+8ۜ#wޅ᭚Q:91g~|a#1hy;. VG/)S:Z>B: -tbĊ\hԨqR7sʪ8U6zꩌ8PShРaCז9 5M6&j2Y)_{=B2 h#Xp qc"yos֦~ ;&6m!1Rh:m /S#Yg1B'@4r܅Nzފ 0 X}g sܽ@ZOGbk3 G, IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g04.png.RGB.8.out0000644000175000017500000000017111461476005020156 0ustar useruserPNG  IHDR @IDATHcd@Tg31 } iq@``4ނ8x F`-`4$ ؗX;IENDB`png++-0.2.5/test/cmp/pngsuite/s02i3p01.png.RGBA.16.out0000644000175000017500000000012511461476005020200 0ustar useruserPNG  IHDRU!IDATc``?$wGlIENDB`png++-0.2.5/test/cmp/pngsuite/s06i3p02.png.RGBA.8.out0000644000175000017500000000016711461476005020134 0ustar useruserPNG  IHDR>IDATUA@ t}z<: F4!R3tzVgZxB#ZFIENDB`png++-0.2.5/test/cmp/pngsuite/s07i3p02.png.GA.8.out0000644000175000017500000000017211461476005017705 0ustar useruserPNG  IHDR\AIDATmA 0ź/ ! $ԴD"m7lY/609$SIENDB`png++-0.2.5/test/cmp/pngsuite/s35i3p04.png.RGBA.16.out0000644000175000017500000000101111461476005020204 0ustar useruserPNG  IHDR##9N_IDAThٲ @os(e-?RF5''9HM! V`>FWũ+XR*WBa(zQiϺg q)1p UҶBb,"%*۔A$ ڦhe}!I[z 9>QʼRg=az:KSuɜ{*.,=äHļrYyyJ$Y}7A8֚,Vm*[魜u_&,Xo[i#"w ۑ۞J#M+җJgӝ_V ,aTȇIENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a08.png.RGB.16.out0000644000175000017500000000036011461476005020216 0ustar useruserPNG  IHDR ۏvIDATX핱 0CZyJTHoľeMz:kAdXXX,033? ~XYY%dY(SHD{ V\`ccS ȨXGVC)dR OP*P'NNN@c57hM tPcx龁֧gn ;ǠZIENDB`png++-0.2.5/test/cmp/pngsuite/s08n3p02.png.GA.16.out0000644000175000017500000000017011461476005017770 0ustar useruserPNG  IHDR>C?IDATc<`a````!!Mr&fB Ȁ`ApcQx?aGc2y W= {IENDB`png++-0.2.5/test/cmp/pngsuite/f04n2c08.png.GA.16.out0000644000175000017500000000136511461476005017746 0ustar useruserPNG  IHDR n<IDATXWKv@QNW`XbI`7"8q!gc[,%Z=BzK5= jg0k9wJm*̐4#A6x"pDF&ȗ&EMI ±W*$B2$fxa-#2!\՗ GJfB"; KSa<yBD$2ɒ3TgpmR`,_8 a/ 3WµsIΑH^x anXn ޗ|#o] *Xx%v?VN `1,h)w'x' /o DmS/ @ޡ9ji۱~miXgiF^",`<2:F%a. xc¸7*@%cū2V2C$]鷽})(h+`y'T\S@dal,?J-ribVPUg]cu ތ68:`|ǘz! Q.CofL!@?JnM mL MBDcH@ *ƍ3tOLT3 s6u't>9)eO$EHSq)k"4u 3|S%?eIENDB`png++-0.2.5/test/cmp/pngsuite/f02n2c08.png.RGBA.16.out0000644000175000017500000000243311461476005020165 0ustar useruserPNG  IHDR #ꦷIDAThՙ=Eٽe#@ 2$D GDீ? D$8 B FH6{>fgjgf}wTcީ.L0Ibm}^ %[ y\Ƞ"-ABK(ᅈ (Z%\P L1"B"}h|s2i NdX(Z?ǐz/?>$WD)"Xȟ8^>m%3!B'* L8`.q|&nK/ :ѓF?ì\}O"t??f_%d*+8~ "JG@&%x̃-^@0w4i=bq,KOmkr(hAtp&j>"qp& |wBOBUg@=0 %߀#b* 8o3гߓn4Q r/Mdbm"-{j2$"u-I-<0b;z$7O ;ycHrDߋm4nӗ?l6BuחtJ\<>[(7qκ 7yWT-&9Jg892 ^4qۅmb~*:8i$İΊNMB /`g#MMbqC'cs X!:9w-n.(50x8C5iѷG|úl-\KPc"zzܳ" 񡟈#(1_.e)WYpSζ,{$[Dp,N qXq* _'\q 1'"cpZW瞑Eʒ}pňXdֵ z8_+Z{[?pL4R]yj+ΥF^ uj>#ezém}]`%eGqwd"JD"-A#!N9T}qA>F{ z\"b`M.jW]wFtj׈wVȪ g ."e,5t3=^grlE8^Q[8$hsKuDw[42`n{-U6OksS"XOm1ap"A Fw^&kIm7˦}mh\nN> Uw ʲ@7fy IENDB`png++-0.2.5/test/cmp/pngsuite/s38n3p04.png.RGB.8.out0000644000175000017500000000042611461476005020045 0ustar useruserPNG  IHDR&&'_~IDATX] ;sPReM6d/N \ +Ɉm ѣNHNaRψ<7"\yI>rZSdUlCs3-@JsA(ʒ+c?r9yd+sX$I$'v#p4rBDֱm'ok(C55DQlI|#*DBQ7Q$ɿ!HQ;y+u}IENDB`png++-0.2.5/test/cmp/pngsuite/s40n3p04.png.RGBA.8.out0000644000175000017500000000052411461476005020136 0ustar useruserPNG  IHDR((mIDATXK Dܙ+4Y$ >hM-P(dTc@JHBIGIt!s#.ټ0;e*tFʁb 7\S0iՠ*{0K3kiwRwp!|qwu}Osdk sKuw\8ʒl-ݣ27a.\ 6oҤ1 y&꽛zau` p$[+ @@B@?S@3Z{/MYHIENDB`png++-0.2.5/test/cmp/pngsuite/s08i3p02.png.GRAY.8.out0000644000175000017500000000017311461476005020162 0ustar useruserPNG  IHDRcBIDAT5ʡ @~ A0#o%fbxv9CQ]9*>Jzk VV.vYw|mAIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g02.png.RGB.8.out0000644000175000017500000000034411461476005020151 0ustar useruserPNG  IHDR 5IDATHUA s~џ'CP[mUtF "݋Q ɈH l{D 5hDUj|fV T3K?ଯZ"drKz{hk6Μ|"lDGpˈc,6rϜ[9X[|ˡIENDB`png++-0.2.5/test/cmp/pngsuite/s05i3p02.png.GA.16.out0000644000175000017500000000016211461476005017761 0ustar useruserPNG  IHDR9IDAT]̻ CcB)quPv%~\{fēkr9laFs9mѡ#@@[<^!3/"M; &{&ԁOMtx$QhGt0_$shzuXށu?0 q,h}q+M͌(|r<jƵP8q]ٌpW3f+#li=e\Woq%_IENDB`png++-0.2.5/test/cmp/pngsuite/tbwn1g16.png.RGB.8.out0000644000175000017500000000267311461476005020222 0ustar useruserPNG  IHDR IDATHV_HSo~$lyN4utδM g(a62A$Ћ kY7݊E JQĆ ExmZۙ:MŁt{u{|gϞ$IXXXȞ ðZ]VV?`f2fggnyfii)KPZ.촷544|=:u*_9V(׮]Fׯ_r:r buuݻw$IDD"A`zDbxx~+W$ɏ?>}_sVJ$ɝ^e^/8addj޺uk||AN0L\fZz8q;0._<==Fa`s,W0 'P(TZZKHt涶\$ݻx)CQAKKKQ|gmm… ߾}knnd`0(_nCAAAٳglHP&I$xð*Th4JQTR@^^^aaa`eRbI]reD"Ǐm0Nͦ[ ES#n8Z,0fڍ72hOua&j{{{pmɓ'1 9s}35Mkk+Au`<Af\.7Fqss3Kw V%nc0 {ɫW?[GAT F |>(ZTT4ղFR!p8bqKK۷D"1L8=A޴͛X@.BIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g04.png.RGB.16.out0000644000175000017500000000031411461476005020227 0ustar useruserPNG  IHDR ۏvIDATXQ CS^a?>@HCj)g>֌o,FM5tá6ƥe5@k? !A3@|uPbg!vnFEStE[o] x+EǒIENDB`png++-0.2.5/test/cmp/pngsuite/tbwn1g16.png.GRAY.8.out0000644000175000017500000000124111461476005020340 0ustar useruserPNG  IHDR V%(hIDAT8}]HqM2?rY65K]hddaQQ؅ldHPAt}t+BRUaH E-6kL9[_du{\{9Gr-_[qŃ=CX=. .Zmm9sn'%.o=?Ud^g#!{}]DЯvu1ޤGb];;0~Y4$pϐKd[/{j:Ru>Gcèۚp!]v4[>ˎξu#~ENŒ].?+FSD^RSe:^z52E$8 &*az$"a lUEy9Z*XWr=+pȶSM l;h ϫt;\rlnn 0(RVۂP%>rB-)ԙnQIHL0˧2ky݄:Ubrd,)gk;(~V٬uGU@Y޾ vK$j 8P=MIƻ9WR'uf5]K.ݣ6< ,=ۂ?)cuIENDB`png++-0.2.5/test/cmp/pngsuite/s35i3p04.png.GRAY.16.out0000644000175000017500000000065111461476005020244 0ustar useruserPNG  IHDR##%PpIDATHq@ Δȉa:UP%CDq]0G NNV}owy+ +=TC)!|+MLTa1",k\ -`b9#Sghh`C,;ɪ Gա&~%7Y фvvp`|whY ٱ$%uC:y!oڿR>l4- H%~2-OBK{xjmFgyͳa!*G_le2 N?@0[!YUq?7 #eN"Z }M9gcT%/NՑap3 ˊx{֋_kI58.\/ES? S8<= {P0!H{h^y'}ǚAPh +kx\pXxA(4bq;xV:ԏ M%°03#|;eqxaFJ9Rd I,fddaqf9Vdݣ_#_ #倁%kmhc^=fB5eB&+#xn#\CSuO0q;KQ\{n! ea_&QtNxVY8oЉH3'qC ̖Hf&^q}Z^؎3# |af9at͌ᖅPJSlҟC_LMf F۸%tԠ+6C~ 5K UxK$:݃%}gAvIzJHFAK}!I%dp?,UWIENDB`png++-0.2.5/test/cmp/pngsuite/tbgn3p08.png.GA.16.out0000644000175000017500000000173511461476005020150 0ustar useruserPNG  IHDR n<IDATXAU˩FHsJtԚFjh& iQ6EEp $hPERAa*(hDñFmjP8܇}}{?绷^د2. `]7v].bXQZ 6|p7>>s%sDYlE<؁q,W]2dLJx7{0Oܷ)d`7֦uwM/D46k,o" u\َiN—؏G` I˕Ҭ'UpK+ЍGx q{1|0科O~iy O`1xUV9xX]%eӆg)0Fi*IFd`%&&R܎ Zq/ǟ" uP`2=%/Έr4JXߙ}":2@.1_Pa\iyN,"7⊨0Y$+@ߟOϊTq7fp% B?_+7GZ@pnѨ bhYpP3"%^%SG"x .֜d ߈XJ>= z҆y9y*z;~$o95WU*2#th-Tܔ;DDj !ᄒ' &eYvdHRAYk8efnA / qKoA!1% ƏcR Wd}]@£b`N^tXhLMvXTI.n$=,*bKʬggr[wVҬ'):EI鄅d& eA@lƒ9KSWQ-|I^q,NwNѨ^V0O+?gsxIENDB`png++-0.2.5/test/cmp/pngsuite/basi3p08.png.GA.16.out0000644000175000017500000000145711461476005020135 0ustar useruserPNG  IHDR ^IDATXNTAfa2pBX]+7>.t7D6b'(nF8k7;uN 8p<M $Z$xDb{I`93M{3\4&X7|aR^1~M0m5,$>. eIM0%wpp0lHzQ`/?o$چ͆aU3e;M.Aae-x+Þ3\)Sx-ߣ7+ *ŶT$+W~.zˢ@+xja腻 $M0Y[po4\/ك&51{7Aή~z?¿ Z%|\CM(|UxUx0 r#\-ֆ ώ`Ff̳ׄhxD(2 WM{@PKe9 u+9R޽K}5kZPg#U{4PKU@!|RxWXRzFs 7B&sR*8Mpu(Hڑ~w8~lIENDB`png++-0.2.5/test/cmp/pngsuite/basi6a08.png.GA.8.out0000644000175000017500000000042411461476005020033 0ustar useruserPNG  IHDR tIDATH͓1 1E`M=AZ@;O!lm^@-l,,\wqVB8!da3&DD}':1#2f x1>C.ZX+(QL_kᨅJ +]ppd2tgw6:o&ߺo 'Fk2pK;S(ebd.Հ=Gj^c S6 +8ql\<U$nqIENDB`png++-0.2.5/test/cmp/pngsuite/basi2c16.png.GA.8.out0000644000175000017500000000060211461476005020026 0ustar useruserPNG  IHDR tIIDATHRˎ0 Ho+tAUKɢ6=@N Dp2{2F݌3ht+ i]0Cb XB|':4t8P~ 4%[3^[1Bt8]FQQ[v, ,hdy42ᢅB[0w SVq{5,H6aZ ^"gk"'ĨRd6\dR-Έ䬎*ÒŎ5Yr u@8 jV-Mup[3t$Oҝ/BK'E]"|ߒa"Gܧ6N 7Ovv~ٙ}Zqbb13 1SIENDB`png++-0.2.5/test/cmp/pngsuite/s07i3p02.png.RGB.16.out0000644000175000017500000000020511461476005020104 0ustar useruserPNG  IHDRl,QLIDAT;0C_ܙ9;4JM/ 0qL#Z"wQ۞|PO~aő/5*IENDB`png++-0.2.5/test/cmp/pngsuite/s06i3p02.png.GRAY.16.out0000644000175000017500000000016111461476005020234 0ustar useruserPNG  IHDR0\A8IDATE10E] ' D#.v|,W(LIENDB`png++-0.2.5/test/cmp/pngsuite/tbrn2c08.png.GA.16.out0000644000175000017500000000173511461476005020145 0ustar useruserPNG  IHDR n<IDATXAU˩FHsJtԚFjh& iQ6EEp $hPERAa*(hDñFmjP8܇}}{?绷^د2. `]7v].bXQZ 6|p7>>s%sDYlE<؁q,W]2dLJx7{0Oܷ)d`7֦uwM/D46k,o" u\َiN—؏G` I˕Ҭ'UpK+ЍGx q{1|0科O~iy O`1xUV9xX]%eӆg)0Fi*IFd`%&&R܎ Zq/ǟ" uP`2=%/Έr4JXߙ}":2@.1_Pa\iyN,"7⊨0Y$+@ߟOϊTq7fp% B?_+7GZ@pnѨ bhYpP3"%^%SG"x .֜d ߈XJ>= z҆y9y*z;~$o95WU*2#th-Tܔ;DDj !ᄒ' &eYvdHRAYk8efnA / qKoA!1% ƏcR Wd}]@£b`N^tXhLMvXTI.n$=,*bKʬggr[wVҬ'):EI鄅d& eA@lƒ9KSWQ-|I^q,NwNѨ^V0O+?gsxIENDB`png++-0.2.5/test/cmp/pngsuite/basn3p02.png.RGBA.16.out0000644000175000017500000000032011461476005020344 0ustar useruserPNG  IHDR #ꦷIDATh10Mg:DStIpBR))ߍ=upӜhbe@ l:_?6@+?]}_O Є}ZmZmZZ !<']IENDB`png++-0.2.5/test/cmp/pngsuite/s04i3p01.png.RGBA.16.out0000644000175000017500000000015011461476005020200 0ustar useruserPNG  IHDRfr/IDATc🁁?a`d(g`@& `hA ،@&%n͜IENDB`png++-0.2.5/test/cmp/pngsuite/s40n3p04.png.RGBA.16.out0000644000175000017500000000060611461476005020216 0ustar useruserPNG  IHDR((nd.MIDATh E/f/̯f@iĐ(sR[>@O-Jڣ=o DEW-"01y0b@q[ySǩ uʠㄝ$C,A" l%(pI P)Π Yp PJF /nf7VrgjU+R kxQlO,.IIl{A+Vzdj"IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p01.png.GA.16.out0000644000175000017500000000030011461476005020110 0ustar useruserPNG  IHDR ^IDATXV <;K8:DE"m*i)ػ09N0zlPB@@NXaM?B!&R%W{?1[|N3^?9  @ACR YOx1tXǿgjvWIENDB`png++-0.2.5/test/cmp/pngsuite/tbgn3p08.png.GRAY.16.out0000644000175000017500000000143611461476005020421 0ustar useruserPNG  IHDR kIDATH_HuϛJxYs{}ui45% FwyQ]4`wuSDnхl." b03?tm9-y&ҹy{~ssbۊ4JIK|+ $ÀJ̹րq┴K޹/AGtXvN [%w;mN)+NkFsvW~tPvmNdM̢]~r ~.z5D#y`],;=T jT!f w%̻sT9-oZrkJEߗH4oƴ=!!ioJ?aδ=jq;uH0AIFMF*฻yHX!a<.[tz)oXZ[%Si" }V[x7tKY@êJ:ޓQFܘ^%#RΒP"!O{?fg3:IENDB`png++-0.2.5/test/cmp/pngsuite/s37n3p04.png.RGBA.8.out0000644000175000017500000000053511461476005020146 0ustar useruserPNG  IHDR%%Ş $IDATX͗Q DgYBՖe (&Z2r{1Ehg -ig 9e _ea:ձDY @WoJJHb~+b &Q̳aAiC]L41\>VhG[*7 aK`kowqo!Z-}1 , ٓI8*b]C [>*czD/Ud1ecUx]g˔u_]LoX\(;h]se ]IENDB`png++-0.2.5/test/cmp/pngsuite/s09n3p02.png.RGB.16.out0000644000175000017500000000020711461476005020115 0ustar useruserPNG  IHDR ?cMNIDATcd`@:`P*Ёx.g`D ռr4 h"L h`,tAmx ɋ7SG Q bIENDB`png++-0.2.5/test/cmp/pngsuite/f03n2c08.png.RGB.8.out0000644000175000017500000000204411461476005020004 0ustar useruserPNG  IHDR IDATH?$E{{SA P 5 eC1C@M3=wwf3aUUU}E8oKea>.Y`٢d` Q Vsx: g{a1-V`)n_1K ьicU +}Yd_8Bs*P*TWyR\z5Qe"TJ-TO¿@oPA4BLF]U,0Zun *rwkj$[5gT!Fjh)Ҡ7^t$D $P2*q[&1^ 2N萤%PgV7V;N4CmE,U h|r/x?ЗOaɶow#9du9g/ys<RB11pɯ[uvƜ;$ho0*<Ϩ T~~Uop^hqwF Z=\Z_\Ǧ`SEOIӱ%}0J]Rsu1,x KWYRN̹JX? pRR|EE9:r% yr0x>u%QψcPB{Tx YJ"9L,U_[h+qMA7R&&Nکr@z7 X$HB$$%Γ"v%RF<^^ k;9@A@o8aWpGH'8X0 ]A0`A5hrpp*?r q 5|x =0`M IENDB`png++-0.2.5/test/cmp/pngsuite/tbyn3p08.png.GRAY.8.out0000644000175000017500000000123011461476005020354 0ustar useruserPNG  IHDR V%(_IDAT8}OHq?A+y16W3FnBB#)%$y([]x"(!az+[Ԗ^mԭXݻM{~x~<_=aÝN{u?3ӯ9rwK=[osw_}ej\Xn>P:g.hPB'{ز^qktñArLZ!ʦ:<ͤaRBKD_]UtH ͸"*RxA4'ṊA|Ut(㆙ WDf ȿ<4#J.aҰt :)`[SQ_'^m>B>jr`9) lx*T -XP/8S\@DVU5J:_yJWzٰ̲4]ZYt ZbR@{(cX+ b=_5=>s :EmLmʥ:z2k73 !8&d&c;Ncyk-5B@4a=Aj# Ȋu jxQ(N_Gu:+IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g01.png.RGB.8.out0000644000175000017500000000037611461476005020162 0ustar useruserPNG  IHDR IDATHՕ a1T~95Q),"&f҉`л &]0-|ҵu4ئ4 m$ ~PVl>ƣCRYkAR@@tc:}OەJP}(N{́S$̛z}Iڇt8ӿN3A!3pIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g08.png.RGB.16.out0000644000175000017500000000061111461476005020233 0ustar useruserPNG  IHDR ۏvPIDATXA@DGBpp.r!DE ,tZS[_ 1FF5FJJƸsg-ȑ#;Ls ']N=8q!c!xlX:sC0ctPSSA.\( m ={*6mS7s7")))5A4GT+M]@\j LLLKN]TTT6l=hii5" af 8.D%<H*^M TDX]M]n Tݕ t@ O1ykIENDB`png++-0.2.5/test/cmp/pngsuite/basi4a16.png.GRAY.16.out0000644000175000017500000000374511461476005020373 0ustar useruserPNG  IHDR qIDATHm{PwdC0tEA 1W_Q s:iZ,w3Uv9JmE= *GBH <6d`s{72.\ڜ8]o2 ^/]=I83ZO#^c dBĽ-/Tvn%.67᪝~8:ZlFndOK>%%I bR*Z[ֺaxT^K|?Bv_9[q(0-k~;)hV|FQIx9Xv}45;- hs_H*`K;%yȟsx}^K|K1dJwdQ=ףzTF5Rhą{L nXꍥ\#}D͉MBBM=z!8'Tts_@W ^ő a~0H;Isz[J%U 8Yzx 8t7d}˝b¢}]9ٱUl!u['}Yf9q }PiID1B%`4wm Iiz.}ؑw.lSd)?{=LDZC];F- Mx )G6PQjF1fԍng^rcmR;r3Yɟ%{@ш.AHmm*ʯgZDyl6 9t͟"[eE-uլB/*Ə"H(4O ,9yclQ >RƒC˒-9coC+%~{ާbr$i(`?|Ś'{\6qrCi}gGJK 삔$!Gg!$43|%]DdvYoճQcܞIbDy:KmYX)5"򬹕Hn=_ z"tS㲃:wm5Qs5Q/U*צ_k!ijPmԌי*-6ޏ_˂n"/¯m%T9^gԀ45St~sx_S)SP W]glmm/AI q:ƿ4{_RZgidKd !?; å% -YdX!0!G0|{(u:m[ǟ.1|mr9Li<-8CrE$Xbt`!2.XENgTכrGNhklBKjuU\.21`RC` EF=VzM"ԘgJh{9Ʒ \Ƃ`; *KcٗyPJ+ݵYŖr\FX",@7~=+/w5\IZ duvV(V(V(jh5  #YL5BgwlsDM"u@̣ʷ $58kx[O1=_pEo$!MYM] .́ \D~ԏ\qpwMXF In){ZhA3,9|\.o36tj)sEF{M[6𷁿˱{Bfgg''|rRLhk˴C' 7/ܼ?L&ҝݝݝ @H)fmmmb 8<<λλλW\ypŮqu%JȒ#KKNf滛Ώ:]kڵxxx=000000۵5%%%.UUU@Hމy'a۰mؖM&7M,,,7V ೨Ϣ>G}yUX05BP#*ӷN:S)1En#ufgHv5?*x/r ))ܩhb-ϖg+666˾㋎bRRRLvMZ @9לk 4OzH}Zߵ>`333^Ab9P??08֜[sn94&Ny;6䷒ ܔf\͸)} ^ݽ{6QMGǾ}?PVVj̫!ŐbHQb֋Y/L"N;@ok~[[sB.KR s9,=o}0`5|}}٧q0JnI[ k5 ¥p=E?s9]Kw~|ie嗕_V艑 "'qqq@FEdYD{q'Nܝ8v]1?>lb&ntٽSE_~*ڡt(J 6:6:6`N0'{'vm]dKz/=;PV(+|'<==;wr[W/^US)z^]UkZ ZkqYtL:U* l2l2ljZytGWkTBmbTڙ3kUMhڄ*GE7V[*:au2ݻw ,[l}ZEEEA6:;:;:{(((d_ ~= d@6RAR!$d&M^?^z҃jjjV4<;]tQrw~_N:y!`eʂ@釁بب(@CC f1͘fL9SExI$.Ϙg3\ckkk111UW_[uoս/_xrf9l A 99ٮMz5i6mIݗ/u::: 9LiDAv@>Q|zާeFYo޿Bd:N|z%Z ȿ祖ԐԐTYccc XV[ícepZ%u:gq?~n[8CXVUfY + `0r0r02A7/UI<OtaGVEO~WS N-TS߮VE;*ohڬ6UK/={#{#{#UtiR5la6Лԛԛ$uewewe3:111 z4z4zO_GXXX<t,XбXTjQ dM&Y:*>n 79st)JR ij{{{p8~#Gٴ fuՀVЊg' ( 0~Pkhh`ttOl [pq0a0Lud; ȭr Hi)-M4%2L$1\"% P1c.\dcǎǾh.7c[K%?Cqm\P~7~P;;;%WFI. pQwD!S8#g䌀5z{{{x-5,k e0_ũ_kvjZm6q T o[h(yN^?KMMMWWW" ew/}z ^ 3JIIa)a)a)uAxR^)  D tyCi~p/^x"[xpp6L/^6p6d3.Gΐ3 Ǚpipk$IKFsFsFsjkkzzzYݬnV3ٕgW]PlG|- %\#G»޺{m{۽s|ǗpNtw~~=)uGsssss3pJ`}i6V’’’Atڵ`0+ʎʎy{R%C!ao~[ H[.e^4{)&MK8vaGs9 pᆆ_ jWl!|R'%\ *ϒgɳ Sq*p &.$܂ .JИИPEFF.h燞nۄsU]ՄLy6<.b3@4[V:I%LCv]c0mtH]gs͝xxx~%_ -t <7h\WU+J_~i%`ԡC`TY-[&lK%:ur+`Yt`[= ?/?/?OHk)3͌pXV N$Nζζu]b2RLwNwNwl#6d_/;1wbZZZe2@\$.2ol>͛f"wp8j5}}}?0Q;Q;Q k5hn47O:t>S)`f1,V+6pZUfYFjpW+ .Kasi::ut(`ڼ6/0;;KKKe:[-Lu<O0dnPDu: "1"1"q>-LZXL-[2077/<& MB smnYnYn]+ÀW+H 5bX>}.<<<oܿqp\2 pV9U#ߑQ({`YiYiY 1.33333Y7nf/?e#h>~}:0T=T=T ttt555@wKwKw JQ6Q12FHۤm6@'DVUd?\s@SO?}ƧikZO' Ul[3<7(p8 fNNN`͡.ea7 Ia^\maaXձcps7㋏/>NE`Ɯ9sr|> @hE`4a0 4Yjf5W_~pN9w>3RO` p\. nnnlX[,0:: tZݵѝ;wOsrrWA311|x3?HA҈6ڸ>@"oD-Q"H$=B(0u:@(+e@&TBCCҹҹR`5ssUsUsUsks~_~_=n kٵZ`jΩB0 AY(صg#FM&___PEOx?x<x>}C!F $"$"$  B!+!dC R)E~Wͳg7f>L.|&g^\ŮbW|+W@Ǚ3ppAlݲuV`ݻv /^4 ĬY U*dA jz/KjšCB/^xkxkxkhyZszN>OJo`OSllZ[->>Į]eT*J8^/JR=zVVV|_Gq 1{{{+bEpU*]LLL!09L`hhLLLLLLlnq:o.~s@YoA˪ȪȪ I$Hyf`@@0ov>@#ehhh0h4 ; x@U٘lL6H^"y+ EzBV>S;zZ=b!J{%`YyܱܱA??? ;R>R>w(裊fbAx& ïL=SzokkkzzaWɫUDDD=@ÑF(q9re@'=ZHjI-UnK.4 p+ _ UdYEUhZvܿm"& JZYLVF*C G8tG Hb$9z3 UUUN8E"KE8^^^VVVNvDvDvpRT-UNrLrLrp⍄Yg x%\HBHBHἧ[[[G٣Ggnhhpsܯ .x?3xi4QRR͏GNAAp@(N$l6wa777G1E(IENDB`png++-0.2.5/test/cmp/pngsuite/tbgn2c16.png.GRAY.8.out0000644000175000017500000000123311461476005020316 0ustar useruserPNG  IHDR V%(bIDAT8}]Ha ŕѴ͙nEu.2H"Ko(@,/ "D(/%\lM9>9k.t6s8ssB7{Œ#(Zqp d˕./uoqQj9|hr?zU}ޓm%>:V``]9 SFۨAsVnMBmm̘TĆXQx{JBSu^ّH(`xfo5ϋYWevjJYU4Cbcle8Z A $ :B?Q,>h9<&~؊{~Fwi\ݧ` >|32k}v 9 v/#&'FeN cT~bGUGr͝ue:| BA"v hviSEGD=:1p/cCh.:}M90\Px)w#c@Nfjץ#5@>Vޒ&$Į 7]0H[dTx/_3*P0s{t4|–%IENDB`png++-0.2.5/test/cmp/pngsuite/s07i3p02.png.GRAY.16.out0000644000175000017500000000016511461476005020241 0ustar useruserPNG  IHDRƮm\:wn њIENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a16.png.GA.16.out0000644000175000017500000000420011461476005020076 0ustar useruserPNG  IHDR n<GIDATXk]u9И:IxS]5mlaJ*xx[4LjB%b"` IEו&))'NaPb;q`㙹瞽a kkkIVaK{~vt ޱ)\Lp exW쉗hޖ&~cCAhxgQlVo!BGC8HAq]Ļx ꃌm64ħ7⯘t~/ak0^%ۚVn|!>찕{(^l&>L^//;o&LV'7K֋G*ݗ}įv^O F5@SݴwR/ |8#U甇f&N'>O>8q.å8LX|pa.4厴7{kR; vPN~>O|%<^c3QJ!ȊfcMگR~q_\F<%݀'{_&& sfPctKCsw#W)/\Lt#~p=&n|p$ÓnZz'Ѫ jSA?F{FJ1Yw 3.U$;̠tԊnƖsyh?CX^d||gAh/kڟ,ߪi">+fpbJ1huSO{pCq'AZ'GhHqb%IfѬ-".\Dq5Ek1^Z笠rc6:Jb'|xۉ+х[RŎ 9qz?wYpicLH)d+ǘ_q4e 0pń)\I/Z^[z1 sqfnd.&LK.dw#'CփDx8-1a,a>u'9q)oeFx^͗yFfv0:&R_H;=KlaWvTL>FVrj]pQ'&Q{.?^&jG7?[y8jmvS'9 5S=Ĝ>ZNxg^&?]=@~yOjz wusS\E(cozd{Pۛ'VPv^OQO_A9@y RtZclq%CoK*YJlI%Gv;%X©^ewb {?n<ߩ(+1bi6Lj]-o-$B-oY'KY~cRŃu2DFP#'~p3?q٧ɎgW$wQ"K%ޠLJvRC`d5f#, \$F,qA/ /`d' @Su;$,je.2E&ٖUQ|lY! q;_hWhݐ Ov8?ַhH 5HC_z|ïUcgHGv }0և{[eCxج몏lX&:Rf\>%:Uj&1x,TZ5qEUh%qwI6l6^<^CfbӞjNp 2ֶ40@7Vs{ BbA<wSܾNczO`1Yw-Ӿ}I`q -)ijg祵n"#v' l3ɞ/SV _EIIENDB`png++-0.2.5/test/cmp/pngsuite/basn4a08.png.GRAY.16.out0000644000175000017500000000015211461476005020366 0ustar useruserPNG  IHDR k1IDATHc@`N?a0T1`4GÀ*pF /TIENDB`png++-0.2.5/test/cmp/pngsuite/tbwn3p08.png.GRAY.16.out0000644000175000017500000000143611461476005020441 0ustar useruserPNG  IHDR kIDATH_HuϛJxYs{}ui45% FwyQ]4`wuSDnхl." b03?tm9-y&ҹy{~ssbۊ4JIK|+ $ÀJ̹րq┴K޹/AGtXvN [%w;mN)+NkFsvW~tPvmNdM̢]~r ~.z5D#y`],;=T jT!f w%̻sT9-oZrkJEߗH4oƴ=!!ioJ?aδ=jq;uH0AIFMF*฻yHX!a<.[tz)oXZ[%Si" }V[x7tKY@êJ:ޓQFܘ^%#RΒP"!O{?fg3:IENDB`png++-0.2.5/test/cmp/pngsuite/f00n0g08.png.RGB.8.out0000644000175000017500000000073711461476005020012 0ustar useruserPNG  IHDR IDATHM0ǓfҪw(\.7 r'\x%_[k̋ H'of4×eH[4RJ!CQ%n19)"msΕRp<>P_Ќd~`5r:HJsRx۵@[t⫡ /@c ^m1`5* -IENDB`png++-0.2.5/test/cmp/pngsuite/tbbn1g04.png.GRAY.16.out0000644000175000017500000000111111461476005020363 0ustar useruserPNG  IHDR kIDATHխB@999A"@lkȱȱȱȊ&mIfr=l+Wo}E=m8q)@vܸq%0HkjccIY Tw#GDApF?HyTUDdRAgzBQ$wPGлuKYmAZ*GY/ɮEAV Q={Ź /%ճ01((*ɓ$*)|eS* Mb7Bb̢d;rwn#ЭM1`#@7)eQga<$i2 nW8 hO϶*1U6h P~H((#,U^r*O~w[M7M )B\jMKud}rbͅ=^˚8H:Hs?}W~ha1PvHqC%UWӏ}.YJvn ~M5N0QB(uYa@9K?=-*IENDB`png++-0.2.5/test/cmp/pngsuite/s07n3p02.png.GA.8.out0000644000175000017500000000015711461476005017715 0ustar useruserPNG  IHDRn[X6IDATcπX9! , z  APy(wB/D0 T3sIENDB`png++-0.2.5/test/cmp/pngsuite/basi3p08.png.RGBA.16.out0000644000175000017500000000147611461476005020362 0ustar useruserPNG  IHDR T!IDATh혿nAkJh<!/B#Oa?BE%P,QTTin)n;=l>޹ofnd3k/ף`,*À (`ʔ%bd 7_={4 NͬQc9`9sY }QLU&m9;k7s&x.x jߧֈ,닗.K.kgD hY$⤥G{uk o ŤD*x o_"M8VwvV3Ѫ)*+ua Ud}R= _CMAHXl@6?]mY=ԫߙhyC)[I,;{UFe@GF g pݐxحc6[-@#z.ϯ95=v5} 6Bꍠ{t-ϠgcϢְ_tA  E@|-@Mdx`,:q"y }t} uIENDB`png++-0.2.5/test/cmp/pngsuite/s08i3p02.png.RGB.8.out0000644000175000017500000000020611461476005020027 0ustar useruserPNG  IHDRo/Y)ll4bl `"Y+geg}-@wH7$͕ K,<1wHF;vذe_Z6lزeAywǔj"5)aABs C @OOPҟ*R;~&*d⩚{uQ0ʧ忪FTT٘6.TE=wyNپĚ;bpIENDB`png++-0.2.5/test/cmp/pngsuite/s32i3p04.png.GA.8.out0000644000175000017500000000074211461476005017710 0ustar useruserPNG  IHDR tIDATH+n@@_WQ(RaP9APpUnXIPOPPb*u]~5cQ @ѹJ,X6 ~/ZE5UJi*(.$Z@NT]E'X$FDž8Rp\"(ƞ3 ~ܸ\{@M> ,yo^x46!zb` lCj=dԻDC Dʔ.Tr6O@95[B!io4qexOFܲ =ƲHsޜc@(3F 3:3?Թ@: ĒY$B rad* KbcDI3X>Ai u۴GEHj |,ߓAu[i4n$$]0akRz9_r围%ghTpk;H<ݿGϥDFGf # J#DN_ǻ־7҂SpS2Q(MȀBx$ 'Uctl DOsY+Ol'V~|a{'T=ޝDlj61 d`ded/sIENDB`png++-0.2.5/test/cmp/pngsuite/s07n3p02.png.RGBA.8.out0000644000175000017500000000016611461476005020141 0ustar useruserPNG  IHDRRW=IDAT} 0 P| VH|rI;'DV׽ 3JKUD^ #iIENDB`png++-0.2.5/test/cmp/pngsuite/basn3p04.png.GRAY.8.out0000644000175000017500000000022211461476005020317 0ustar useruserPNG  IHDR V%(YIDAT81 @Dw="@c 8@^ASO_YaŌ^4Pd{\A1Ԩ&dcO0| hסIENDB`png++-0.2.5/test/cmp/pngsuite/f03n2c08.png.RGBA.8.out0000644000175000017500000000212611461476005020106 0ustar useruserPNG  IHDR szzIDATX$E?ou!pbf(Fl`d`hh`|\("``b!Fw蹻7?fAUwW|WPCY\<֔ѳ@N%\`5yYx.`nF26_a!b:E="@dB&*6?v2Dv"#D B!+t`|s 0QmùB)P*L}o+su4(f󋮊du*Z`'P+v0\\`X ^c^`B!B2u]_8s8$͟J(Q*iDB;cBV]}]<<%2%% Sk}?\`,`JCɑe\ ~\/= q+y % $;b)J繇49=7G&l 20'fl},𶾸Tl7S'h$Ko.v=_d3M 4]btK s.iB|}#w/P`M92g8P$H"{(0Ӝ ^( .m56'a~[e.(Y@NS2 1c$19f׋TFv(1w~= l~v:$oWwIKE9qO= d)dE yEe1͡*֗\a^!e$aq-ҷ oƕ̀=g\v!0baI2PUHUlQp^(9g3wWtW泀,1P608ְ[T&7 N\@c{*"6vNzmX %LDMu& *]{LǑk \ HE4W^Z0;li. ),s^6k8 `u Bl%CLF!h. !dYIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g04.png.GA.16.out0000644000175000017500000000016711461476005020117 0ustar useruserPNG  IHDR n<>IDATXұ AX6sHNvz<h@4pM|gIENDB`png++-0.2.5/test/cmp/pngsuite/s33i3p04.png.RGBA.8.out0000644000175000017500000000066411461476005020140 0ustar useruserPNG  IHDR!! {IDATXVK! ͝= ?EA" Bh |d PsL&(2t]*JWZ ygjrOU1#2xuM19/wHA/P"­T\od@Fou L?p+F{)Q)Vs\锕W4\wH]oZwt/~ :1 - :<F8Zx-F0Z:`uh90 )e@ZIENDB`png++-0.2.5/test/cmp/pngsuite/s05n3p02.png.GRAY.8.out0000644000175000017500000000013211461476005020157 0ustar useruserPNG  IHDRy9!IDAT10c{?LvhK%-82q!87IENDB`png++-0.2.5/test/cmp/pngsuite/s34n3p04.png.RGB.16.out0000644000175000017500000000047411461476005020123 0ustar useruserPNG  IHDR""@IDATXݙ[  ʝ94 G5W*&kD(P "G;1y{w4?Q~Ht+cWcxFFF׈hp3bm&L&OzTQzK&|5#!aG\rZRl'%4">#Q+V/`~*@f!(i.L@̽"Lx>_/cO '];!hYY u4qUed\JcKbCIENDB`png++-0.2.5/test/cmp/pngsuite/s08n3p02.png.GRAY.16.out0000644000175000017500000000016311461476005020245 0ustar useruserPNG  IHDR=:IDATc< Xؑ?Xҡܙ LWPA&4# Z'0  IENDB`png++-0.2.5/test/cmp/pngsuite/basi2c16.png.GRAY.16.out0000644000175000017500000000165511461476005020371 0ustar useruserPNG  IHDR qtIDATHAh$Ec3 ) f'mO3'ae(l Q'Q,dW܉"U/S=(ͣ{{t<әfLg죗Ox0cLgsv|lGl_q~~a볢({ey,v< ykMk~pe\&11;Ec,lG&}6 km3Y&1}em6&&}~IC;ll݇vHٙC Wf%= h#6 mH'gv@!!f3I=P]*L1; } N;P)a0; 1JYH'6-څBLIVH(B$n40%ϺwWm5W뗙ĭoʇȅ"7&BEGL/Ya +VHa^B;#BD Z`Md2ju8E "h\uK^_ڋi]R4E%^=}M\SWKk-k=_6\K]˻D-piQrpo 't=@M+*+oݗC.E=Ke!ifwVY{o ھB%uﭕf!IENDB`png++-0.2.5/test/cmp/pngsuite/f01n2c08.png.GRAY.8.out0000644000175000017500000000106611461476005020135 0ustar useruserPNG  IHDR V%(IDAT8eS1 M.w))xZ&Qxeo,Kc[S1{d{b j!JJb?0SR[)Z033Sޛwjc<)[ZrTRmr| ҒD("ϙ,ĜH Zʶm"&"9AZj)AZkٶm+rĞ{kRoChϭ]73B!ikﭶZK)_?y SZ\E'w6g(lV0&8W<7U\ F z`UFw9jcL)os׻M`+yya>|^[ww8ϧg;u=T5`1S9-y-;SUw][bB)ҒvjfP4`C1`LRj6XB L%9S|`!8]Q_7IENDB`png++-0.2.5/test/cmp/pngsuite/bgwn6a08.png.GA.8.out0000644000175000017500000000017411461476005020054 0ustar useruserPNG  IHDR sCIDATHc4c`BN4N1p 70x9p }RZgRIENDB`png++-0.2.5/test/cmp/pngsuite/tbrn2c08.png.RGBA.8.out0000644000175000017500000000261311461476005020306 0ustar useruserPNG  IHDR szzRIDATX_hSw?@#^i/4@oFL ,„B V,X|(aB !'i`;}CTM p#)&&6{;|߿sLׯ_iO>5kc>(j7nرcmqRLk\-.KfJIb ,-A__|6ۭ={Lx"pJx GX˥(ۭmmmi?^5,Z nEzb[~Kmrr||?2l}KɓpBK>O{v=-*7j׿ >,.׮x|hȑ#Z$!~.A FavVq&_$P@2$ }*>_A2GWf0X:P߀?p>kAq|FGAR\*Jxb jdnf$`zFFΞjFnn~gYGe2SUUަH op V0euȘiv5u׼(GYD? -&l-tPP@,@L1E20 N4, ȲR Jl&t=L>Mlr [В|>OKb MuȑLyW!B(6l:EQX]]ݟb_ըD&22IL1ՠO$ 6 hB(  x50 `X~j8`;{n#98GeDQ4$+ b`9醋:utf|> xm iyggIEcz[>,2>>$I)ϟohL\.(h7oޘک044$ImM3>(2==ͭ[4Nmh2h4$IJ%eq>vVizx5kc>(j7nرcmqRLk\-.KfJIb ,-A__|6ۭ={Lx"pJx GX˥(ۭmmmi?^5,Z nEzb[~Kmrr||?2l}KɓpBK>O{v=-*7j׿ >,.׮x|hȑ#Z$!~.A FavVq&_$P@2$ }*>_A2GWf0X:P߀?p>kAq|FGAR\*Jxb jdnf$`zFFΞjFnn~gYGe2SUUަH op V0euȘiv5u׼(GYD? -&l-tPP@,@L1E20 N4, ȲR Jl&t=L>Mlr [В|>OKb MuȑLyW!B(6l:EQX]]ݟb_ըD&22IL1ՠO$ 6 hB(  x50 `X~j8`;{n#98GeDQ4$+ b`9醋:utf|> xm iyggIEcz[>,2>>$I)ϟohL\.(h7oޘک044$ImM3>(2==ͭ[4Nmh2h4$IJ%eq>vVizx{Bgdd]&'F=ұ8pJ1\ܹ#'No!Goua$)#1$J1̙2@3gލ Dr *rK,L@Ԅ+Tlذ2rAJHURRhii=Leyq`͚5q~eyp`ǎq썊jЊj/grmgooLZW;1½j={\^TC.KU wCnܸ1cƌyr:6}ŊUVqsBcm*99yWTTmg$P*E @U*b%EovĔIENDB`png++-0.2.5/test/cmp/pngsuite/basi3p08.png.GRAY.16.out0000644000175000017500000000124411461476005020402 0ustar useruserPNG  IHDR qkIDATHMkQW'ih6i6tYD.)_?B.A H_i) \9yι7="/X <;Ɉ^FB =Ƽ?cq0=.ENH)GsuF<{*o9ׁ>0~jՀw@f+ ؑ,[@ }?Yg^W"0F\j#^ۭJT *K$?=8ԇP|)uwh*ӼC!Vl!<9Fw (k@=/\@+ €|a{Wx}pձHcDz)Kjy3iSz.=@閴b+=( *G*H7$*ާBK3K`-XJ#0 ߧZ0hHR3AK^U#l zҖ@`f`2k l6p2"5] \qjNIENDB`png++-0.2.5/test/cmp/pngsuite/basi2c08.png.RGBA.8.out0000644000175000017500000000050211461476005020252 0ustar useruserPNG  IHDR }Jb IDATXA D{xx2ILok,34^}VR_!$`ů(I/ہcrd D<8Kr*JASP;&;ZJ)8cR(# I$փ H)w 5SȆ/pln`335ar9i"@ibE6fa78Geٻ`\y0@~+g~_IENDB`png++-0.2.5/test/cmp/pngsuite/s32i3p04.png.RGB.16.out0000644000175000017500000000077711461476005020122 0ustar useruserPNG  IHDR ۏvIDATX͘Qr szOmAWI7UTt~`h -Th jU ]= ĥݣqHAׄbs%{B1ivnOjۃ .s 4ȤㄮRcXc>RgUBYJ x,-gjlRaP.g]Atu(Z[N;6 7 K:dByp*[ ZE\7({=duE -AiZIvNJ_gg]]e1zPXR#חpuhmWYLj!&NՏ4H"Ng-뼔HPWc磘" e%m VByyu%~q~+'`-l '3*~jS\%UIENDB`png++-0.2.5/test/cmp/pngsuite/tbwn3p08.png.RGB.16.out0000644000175000017500000000266611461476005020317 0ustar useruserPNG  IHDR 1}IDATX]Hi*dt"dC B Ss!C8BLPslW @. )X 5Bxѣ6s?38.wM]Q\ .`vb-k:WW }5פAaÆWy>fm It6h7ve܌V@*Uy䑓N:Y գF :uۘ0_QA1c|3֭[3ᢋ1s ǬY3o3<ӦMo qA9W0gnP>ЫWJE\+([ouWtiʔ)i-J矃︃~?_=;eFmԡC2kT&pysᛍ^>b#@7jԘs*^ I(T #f)ΜhՊ}-4W&}EObH*4i2>gdd*TmWrEiAԸRHŨO"ㇼ<zVZ)/qZ"p!ȇ1lZЁgqV Jޛ7n\^+W`„Ff̘1k֬ӊ\΅?KG>E-DJJ*&W>p!B~(SmqaBL  9_K $)R.:f<x饗JSۀgȪ  >T#Zġ!鳈s!"a6D s]eDcV5jΏ<4d8{rJ%G6mZBB" 1/탘;7JƷRʸ7Ll)~F O%B=aι9IRRr~eAҀ:}$ Emt%J~*F`\Iφ@A9-,e\o֬9mY}BZj+VsWhLҼ_[m55Bh4Q¸D ą1Vc FֹjkSW^k*l)rz!ih֪UkK+Z7q_d@Nwg~/bt+V 8:X+.v]rɥ~W  ʄdJ[@@ 6ذ&AsaW! fHt<2Uz `됐jC[]J̭a87xH))IENDB`png++-0.2.5/test/cmp/pngsuite/basn4a08.png.GA.16.out0000644000175000017500000000020011461476005020105 0ustar useruserPNG  IHDR n<GIDATXҡ  VvE  _SIv؀ }{uIENDB`png++-0.2.5/test/cmp/pngsuite/s02n3p01.png.RGBA.16.out0000644000175000017500000000011711461476005020206 0ustar useruserPNG  IHDR"&gIDATcd`? 01WZIENDB`png++-0.2.5/test/cmp/pngsuite/bgwn6a08.png.RGBA.16.out0000644000175000017500000000031411461476005020353 0ustar useruserPNG  IHDR #ꦷIDATh1 0 '"y=#RHi\0"x`bYoAg AJbBr gWm Zm @ $@ dSm!EH%P `~(h0O{?"L|IENDB`png++-0.2.5/test/cmp/pngsuite/tbwn1g16.png.RGB.16.out0000644000175000017500000000342411461476005020274 0ustar useruserPNG  IHDR 1IDATXŘI(]͙!cy !C 22RR, V +"!E23dg2gY={{=s-)))))ӓ*I+eeeeee?------######/.....խ|o_WFFFFu______ wo)శᏏMMMMMM[[[[[[?һͤbuuuuuˋujjjjjmmmmmmyyyyyy]]]]]]!!!!!!bࠑQiiiiiiMMMMMMOOOOOO\\\\\\PPPPPPooooo_1@smmmmmmUUUUUdx}nnnnn.:::::YO IVtuuuuu?抉"п*\yOOOOOOCCCCCC  q0&+++++{~{{{{{kfffffvuuuuuSQQQQQA>hiiiii%&&&&&HdJIIIII9<<<<<::::::(''''''0=====NNNNNN88:::::鍏olllllP%~< YZZZZZ!c~~~~~A]]]]]BSSSSSaGtwwwwwS8z8Kj*VUUUUUe냃Pnaaaaaӡ;;;;;;99999Q|c 499999ᡢ"/g}RRRRRuvvvvvv{{{{{HKK!^{{{{{#&\366666+//////_6HG8I vCl q&O%tvvvvvB*`! , y{{{{{ښРtnnnnnnPCفa@O%}}}}}}@_ Kr7TH\DPXաB $T u#99999EYYYYY.b7ƵG辂x xI&rsssssC9(V)/////gg:/Ju*S4p)|QF@0 H$UG@OQ L_aY b@84s`>IH0j vש+0b"}`W5 2<Qfndiiiiiib44/)θ*Ag}}}}}}0}|||||,566666I3/}wtq8?+ݗ xK8.l%VVVVVVO{c S5$=DQ1"؅I_Iw7#/R~U((:MJدj  f<IENDB`png++-0.2.5/test/cmp/pngsuite/basi2c08.png.RGBA.16.out0000644000175000017500000000060311461476005020333 0ustar useruserPNG  IHDR T!JIDAThaʃ0 @MdLo5Z61 Fh mMEI/ }؞5(a0gXX1\aQs8ְo8re<(}1ω~1sϝ (m˯*==}26ut# ic 7*'@r_px+꜊dsUOaUL0/s;RRVl9 WIENDB`png++-0.2.5/test/cmp/pngsuite/s32i3p04.png.RGBA.8.out0000644000175000017500000000076111461476005020135 0ustar useruserPNG  IHDR }JbIDATXŗk ?3{N=7!)Hi? B.6@y%lVB,`nsuaGbӾU P&UA{͋n9O^L0D4kR*cˠ  ((Zny0-n z볊& weɧV4="JE!ϭ<(B@<ɃL'M>T]K<04 k 71? Spzbl'9iBEvΠdd0npʳG@m/p}PsP ;=b3Qq{b=@\AGP<8bӨ'CU0T簒=՟xa#[Y*n"GSLE%v`)9k.t6s8ssB7{Œ#(Zqp d˕./uoqQj9|hr?zU}ޓm%>:V``]9 SFۨAsVnMBmm̘TĆXQx{JBSu^ّH(`xfo5ϋYWevjJYU4Cbcle8Z A $ :B?Q,>h9<&~؊{~Fwi\ݧ` >|32k}v 9 v/#&'FeN cT~bGUGr͝ue:| BA"v hviSEGD=:1p/cCh.:}M90\Px)w#c@Nfjץ#5@>Vޒ&$Į 7]0H[dTx/_3*P0s{t4|–%IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g16.png.RGBA.8.out0000644000175000017500000000055711461476005020265 0ustar useruserPNG  IHDR }Jb6IDATX10GMx)r@@!M ʼbƷDzׄ&u +qQ`~PJ0ưilyƧ%ׇ(MSdUUpZy.?2PJ3 qpңRP!).eYBu1t( V%c-~`?(˲K{,c!p5h?g? l7 t`+(c̲ B2#!@q7_e&xoIo` p`5m0D6kCvXAF&3!V YvܨO =2|dxIENDB`png++-0.2.5/test/cmp/pngsuite/s03i3p01.png.RGBA.16.out0000644000175000017500000000013311461476005020200 0ustar useruserPNG  IHDRqYj"IDATc``P# @0D33 gXmIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g16.png.GA.8.out0000644000175000017500000000041311461476005020030 0ustar useruserPNG  IHDR tIDATHőA0ET0SHhf.Ќ T!oחԀK(?@'>_}Ur!A}v~QWD)c.+L9r@5sjVL!кZ` ?`"ΰ,74hߖ_%G][ hc P PC8T0~Nx@KjIENDB`png++-0.2.5/test/cmp/pngsuite/s02i3p01.png.GA.8.out0000644000175000017500000000011411461476005017673 0ustar useruserPNG  IHDR9IDATc8"fWC)IENDB`png++-0.2.5/test/cmp/pngsuite/s34i3p04.png.RGBA.8.out0000644000175000017500000000074011461476005020134 0ustar useruserPNG  IHDR""M@;TIDATX͖a N<5Jg2%@@)H`fr@B7i05/{VH@jq-+25},/74"P Bqʽ=bϺ80A|A-G4#M_YĮvm#ɾ7xH[Z[k f` d`h(U%@?N $N8RBf"PEDž脤CȘ q!#hH˧Wd hLܕ(ZQBT zk~20('uV˶?1"-IZK#N)aoK?~mHwdudo>9b&HKguj# RA_++I} xd]j7%(B0 IENDB`png++-0.2.5/test/cmp/pngsuite/s37n3p04.png.RGB.16.out0000644000175000017500000000056011461476005020122 0ustar useruserPNG  IHDR%%lk7IDAThݙQ0 D733^SPBӖ}`f%*@RZ 3Hrd>l71&H0'Wb)#ٔYXrxn ._Gd-[Q"|lyk'p~vaj.{r@]QqpuΖ}a}Rn%8݇s@9AxrtaKst-׋9G[6b7_'w=07syu1^P~2}X*NIENDB`png++-0.2.5/test/cmp/pngsuite/tp0n3p08.png.GRAY.16.out0000644000175000017500000000143611461476005020350 0ustar useruserPNG  IHDR kIDATH_HuϛJxYs{}ui45% FwyQ]4`wuSDnхl." b03?tm9-y&ҹy{~ssbۊ4JIK|+ $ÀJ̹րq┴K޹/AGtXvN [%w;mN)+NkFsvW~tPvmNdM̢]~r ~.z5D#y`],;=T jT!f w%̻sT9-oZrkJEߗH4oƴ=!!ioJ?aδ=jq;uH0AIFMF*฻yHX!a<.[tz)oXZ[%Si" }V[x7tKY@êJ:ޓQFܘ^%#RΒP"!O{?fg3:IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g04.png.out0000644000175000017500000000020111461476005017371 0ustar useruserPNG  IHDR )HIDAT(c``TR26vq MK+/g CA*wLrPV#ݽT3r%G_-iAIENDB`png++-0.2.5/test/cmp/pngsuite/tbwn1g16.png.GRAY.16.out0000644000175000017500000000211611461476005020421 0ustar useruserPNG  IHDR kIDATHUMLm–ʊ݂-kjh@D$!1!&z01WB"(k' h$h kXi!ǵJ~G3<;;3؂$l%8ݻg047/ ۧ<Ǐfjc߿GwS'F08xd:}Գgcc>ZEfiihsJGFr9Z\-}$Þ=w>z41qBW\_pW\gu$ s<929yVw7X>e2SSK1AAfaѺ:$DBFE?bNv`^NS2@mm}}Up"""cm lVy(*`cc:t V(OJ&ҥK SLddڅa~KQ> JKL|YxJ$VfVVʷSD9f(t 8U O!Vӊ3Rzv Ӛ_!mTݲ8R70\3: <4NqmIڲ#UZ'm$н=]TܺIg]73A{vY]c]"kO-*Erwޘζ丱?z'7kz7kzb*,zTJYZպ䀥>u=!]oF}R˸^7e jIENDB`png++-0.2.5/test/cmp/pngsuite/basn4a08.png.GRAY.8.out0000644000175000017500000000014411461476005020310 0ustar useruserPNG  IHDR V%(+IDAT8cπ|'H C‘w#!bIENDB`png++-0.2.5/test/cmp/pngsuite/s32n3p04.png.RGB.16.out0000644000175000017500000000050711461476005020116 0ustar useruserPNG  IHDR 1IDATX՘]0; =uuuL0-p #oK4l; #u# (Kr]0$L躰/pZaI&n|k+' ,2M $vKeT:lz[nBւus/q2ℨ )M! IIBP2Jz XB@y_B .#33:ktRFoF гm>Y[T<"/@g+gIENDB`png++-0.2.5/test/cmp/pngsuite/s03i3p01.png.GRAY.16.out0000644000175000017500000000012611461476005020231 0ustar useruserPNG  IHDRTIDAT0 |}"19;cIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g02.png.RGB.16.out0000644000175000017500000000040311461476005020224 0ustar useruserPNG  IHDR ۏvIDATXWA 3S'$=MFk'SB 6tqfFFFFEEf_-bigPxhxhkH /4/IJ"ig>!>5A H+Kp ;~R_ΐ G+Xaot?<0~8i Xa:ށ;f+[|,7IENDB`png++-0.2.5/test/cmp/pngsuite/s40n3p04.png.GRAY.16.out0000644000175000017500000000047211461476005020246 0ustar useruserPNG  IHDR((;IDATH!R@G'Avj*zL p*NSp3(*S 0JDCH쯂Uxw7[kJ4=[88v.]b~"xt` k8  <ǁ a 1'D~`6I+}yxL`._\ Iv](ɬϡEO=B7e ~=vA[/\SV] &p!|3( l 0ѩrƮgV8~v4MIENDB`png++-0.2.5/test/cmp/pngsuite/s06n3p02.png.GA.16.out0000644000175000017500000000015011461476005017764 0ustar useruserPNG  IHDRU/IDATc`π 0000ȣ >d```qpc#6XtHFIENDB`png++-0.2.5/test/cmp/pngsuite/s33n3p04.png.RGBA.16.out0000644000175000017500000000061311461476005020216 0ustar useruserPNG  IHDR!!t,RIDAThQ D wf੻P|DAъv%ۇ|(;n'%yb" yj”g*pͧwC]f)|"U@EJo ~MGRPs}BwvG*au'XR'< 5J݂exU T[n54O{qk;J݋v^U5 i"Ty /\DU^gJD䯆j$p1zLȼ|^}S<% VO͘h5ކBǷb!v0װokV7װHքlWFRi\q:IENDB`png++-0.2.5/test/cmp/pngsuite/f02n2c08.png.RGBA.8.out0000644000175000017500000000206711461476005020111 0ustar useruserPNG  IHDR szzIDATX$5?Wn]]$"CBrD1xV@B&l@ ,ZKNo{.݇v3ی/__6JW;M~`S~zWxh 2!8 e@ FB.k"zP4"D2˗J`K([$AD/_j`;!\L^4 Mk}y/q̼V`fYw4@S) (GJ7 BB0ffRI #0h(E0'TMكO9ÕPz4-YDE=u+Q CuhoWBFrLK9kr[<F?Z BYud_":ß;;)hܓ@@(Q|tGS,l2TO!l 51##0vqݳJ^O͐HV(ܬ o= b*hkHO9B5faK͖&9-1$Cl#Ml(4蕅U}"~lW˻)TÞP9\o4.NV IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g04.png.GRAY.16.out0000644000175000017500000000023711461476005020363 0ustar useruserPNG  IHDR qfIDATHA 0 gC?/,҃tلA]MKmчC>xhhH`$']TBV²'tBJ0;3VEPl`9IENDB`png++-0.2.5/test/cmp/pngsuite/s36n3p04.png.GA.8.out0000644000175000017500000000050411461476005017715 0ustar useruserPNG  IHDR$$K P IDATHݕ-@? $'@9p N@'@`$lvl_gM-4ł%7tcπvɌ7I '#9+S"2 @?&(-qҮ~Yy7_@)0 쇭 2cRMmCH/~P C䌢ZtPAvYr{+;r\A5,zZ!5Nq**5;O5GS5K-3.oEIENDB`png++-0.2.5/test/cmp/pngsuite/s36n3p04.png.GRAY.8.out0000644000175000017500000000043411461476005020172 0ustar useruserPNG  IHDR$$kDIDAT8!n@W*L r r'(ʭ"+$'‚*t֠'|f7|n_^?(R4R"P*`>jW`{}]cF Y#g) =K4̒)SG*P)[D9 n l48taB3pNS)/s2/ IENDB`png++-0.2.5/test/cmp/pngsuite/basn4a16.png.GRAY.8.out0000644000175000017500000000146511461476005020316 0ustar useruserPNG  IHDR V%(IDAT8Mn<)HQL H"=B#BA E alӤHQߢ(ڬ:syf&AB>3Ae,w>mX;whv pd,/q@1xgajԲb@X^.CgaUf"1PKn6i-Ȍ+L(/. (Uj6UYȲ^奰>"o\Χ,8H"L۬O/_LDYD95DV)HNjs#L۳FQ wΖe9O^y_޽(g4# = !^hi]9}w֜Lr^Q c}|gͫ7gۛ,#䈆acv>q$I0@ЫϷ~C嗻stsRyh_ﯯN]SmV_]{3vΚ}]Ab~aZ9j\}}Zs@>ݺGou>No~>azf"8g˂am˗i] Wކ>ZY_LdU0aE% |unֳDVB8W1x߁nj3Ԣ匤 J Gu!cV5Z˂ 1^ևU-EUQ8Aec3DPZqU<IqpJ2s5F)%bp Ҝw]B$Q %IENDB`png++-0.2.5/test/cmp/pngsuite/s35i3p04.png.GA.8.out0000644000175000017500000000067011461476005017713 0ustar useruserPNG  IHDR##KDIDATHm0?\\2 xM)'4,]h27/n2ÝxWLi7R@zs8Cv ?hs4O܁:+pꑬ^A#olOHriS7O hZ=xd)qo y]r2uT)/Nvb/d=58a= N|l |~D*Y@IENDB`png++-0.2.5/test/cmp/pngsuite/s07n3p02.png.GA.16.out0000644000175000017500000000016011461476005017766 0ustar useruserPNG  IHDR>C7IDATcbπ 0000"d```CUF\Nd#>''IENDB`png++-0.2.5/test/cmp/pngsuite/s05n3p02.png.RGBA.8.out0000644000175000017500000000014411461476005020133 0ustar useruserPNG  IHDRo&+IDATc 0000T w00208HAFlf>xIENDB`png++-0.2.5/test/cmp/pngsuite/s03n3p01.png.RGBA.8.out0000644000175000017500000000012411461476005020126 0ustar useruserPNG  IHDRV(IDATcd W@82z~x:IENDB`png++-0.2.5/test/cmp/pngsuite/s07n3p02.png.RGB.8.out0000644000175000017500000000016211461476005020034 0ustar useruserPNG  IHDRK09IDATcd`πXW1v@:" LHJL$4"auVIENDB`png++-0.2.5/test/cmp/pngsuite/tbyn3p08.png.RGB.8.out0000644000175000017500000000241711461476005020234 0ustar useruserPNG  IHDR IDATH_hSw?@#^i/4@of4Z`UVf )X1`}Hp` CO v,fP; -Hcb$=ddf]w=99k}6G^|:x(޽{&E1& @Q'O_>nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gzs0hgIENDB`png++-0.2.5/test/cmp/pngsuite/s01i3p01.png.RGBA.16.out0000644000175000017500000000011211461476005020173 0ustar useruserPNG  IHDR8(\IDATc````2IENDB`png++-0.2.5/test/cmp/pngsuite/s08i3p02.png.GRAY.16.out0000644000175000017500000000021011461476005020231 0ustar useruserPNG  IHDR OIDATE̹ 0!J wKD3K‌pf XcwAea6U;bpH. ͸dK1VIENDB`png++-0.2.5/test/cmp/pngsuite/s35n3p04.png.GRAY.8.out0000644000175000017500000000044311461476005020171 0ustar useruserPNG  IHDR##;IDAT8!@E$+ jH59CO)8[4(`zDMSIv[T1d_flzPu)r%k=TmYn{P%gR!{!D2XRɼ}Q'8oA_V7?nY/`.KiRK䤥%-4 t,ɫzr8p2){鿠|_| L14cf_L.CNIENDB`png++-0.2.5/test/cmp/pngsuite/s37i3p04.png.GRAY.16.out0000644000175000017500000000066511461476005020253 0ustar useruserPNG  IHDR%%b |IDATHm@ ?7ҥJ#J09}nHj"5I$H64H2C$L E7*^TK1fF[GC%I& +s#AN̙yμysv,R*R,K K-YU5,̦,ƛloT({ٗ(P~74IzfZlAZ! ~AN 4N& bc.&ĐNKikYi4uk<;̞rHC TS.E3G {5ʽVfNFLO}I<(;|cƾ.(al& `9,@S5bcы䨜!w&+L. 7RS)* 4@!?-8Qچ<(f2ck%ᮉ5CKOmcwk~%}uW:U|jtA֤SRKh)c-c'5QG1Sj5+cuH Jf kÚC[uos ock;ԋ!։. V8jf9mKƽ^=rN[rLY8&ٔLi[MAz^X<3HI3(ôS}ʡb<='`1>D?fGM6~ḥU+#uɊQ@/3Y5hoo3xBwn8%& Ǡ !@k=l8$Pɚ,UѾI u)Jcj[A -l+m2bA^y򑓲O>L70>)8$\(@O P 01pA@ǎA0R _x ݕቇIENDB`png++-0.2.5/test/cmp/pngsuite/s37i3p04.png.RGB.16.out0000644000175000017500000000067511461476005020124 0ustar useruserPNG  IHDR%%mk[IDAThݖK D;U3xjfaH`&%"B`$Bk>!i[-fK9~tY\57nmimO:agV$!I^YJ-bSC籔9HtpmuФkbP;t(d0^ĞS;n=+,L.Qu}WQꩭЍ,@{it"Xxmؐn<9wcC7wnpFMWׂ: hV_iTuZr mֺ7Juo+qVVMx,)Tb2䪸Sa IENDB`png++-0.2.5/test/cmp/pngsuite/tbyn3p08.png.RGBA.8.out0000644000175000017500000000261311461476005020333 0ustar useruserPNG  IHDR szzRIDATX_hSw?@#^i/4@oFL ,„B V,X|(aB !'i`;}CTM p#)&&6{;|߿sLׯ_iO>5kc>(j7nرcmqRLk\-.KfJIb ,-A__|6ۭ={Lx"pJx GX˥(ۭmmmi?^5,Z nEzb[~Kmrr||?2l}KɓpBK>O{v=-*7j׿ >,.׮x|hȑ#Z$!~.A FavVq&_$P@2$ }*>_A2GWf0X:P߀?p>kAq|FGAR\*Jxb jdnf$`zFFΞjFnn~gYGe2SUUަH op V0euȘiv5u׼(GYD? -&l-tPP@,@L1E20 N4, ȲR Jl&t=L>Mlr [В|>OKb MuȑLyW!B(6l:EQX]]ݟb_ըD&22IL1ՠO$ 6 hB(  x50 `X~j8`;{n#98GeDQ4$+ b`9醋:utf|> xm iyggIEcz[>,2>>$I)ϟohL\.(h7oޘک044$ImM3>(2==ͭ[4Nmh2h4$IJ%eq>vVizx417@2Vd $eHc %; _sWAbC 3N.`b '5 L*eKwn;(vZ MGLHLb-<H޾+P T J6!Q.fGK\/jMcSr.F`fZ\,Oۧ@3*X l鬋}]@+)cz5)\IE{~d__{ 8 lPG䟨ǟ 1c߷ @*AqjZc}^_gs%2il$25Bcz+5=KQ F ;廬+w>_ ^4ғ1zL ~q{Rs}oP5s#wBa"GzL] &y򨤤~r9rĹs\Sq0@@inVʟw IH~ ˇb4FnG`|Bo4*E>h,zŠ#kҧiͭʜ.љpN>yLb^D!UBzPcM [=i!R/7QV?ЛaXzU$^ytl7Ś.s)4B )<} MMjX6غ:k̃|5h@|2=n<,oPIh H }ghqa=B> ?7 5H57!|?B~%"{"GQL=X`6\s/c}IENDB`png++-0.2.5/test/cmp/pngsuite/s02n3p01.png.GA.8.out0000644000175000017500000000011311461476005017677 0ustar useruserPNG  IHDRؿůIDATc<񟁁OIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g16.png.GRAY.8.out0000644000175000017500000000017211461476005020312 0ustar useruserPNG  IHDR V%(AIDAT8ʱ @gT"A&[) (`9?$ Eh ?5{5)B4kڙX@ h VKVc2Dh!: G\.JD? &IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g16.png.RGBA.8.out0000644000175000017500000000026211461476005020263 0ustar useruserPNG  IHDR szzyIDATX; a'?cnڭS oB`.3AU쥔";<@y/; (pv@T@+ u@4@/zDX rL̵q@;IENDB`png++-0.2.5/test/cmp/pngsuite/s33i3p04.png.GRAY.8.out0000644000175000017500000000054211461476005020162 0ustar useruserPNG  IHDR!!%)IDAT8}ѱQ@з3WP dh8Ј+ *p 4QD@qBDF NatD߯tD34h ~A.#Cdʹ3KȘ `dI0:qu1W6]9ܨf3D)6}1[q:0hAKSa($n@*mF&ue]@w]N7.MŊOX󹌓lyw2mWʇ/eFzˌ^5dvf"$/VS O .ZKCVw1Gx IENDB`png++-0.2.5/test/cmp/pngsuite/bgwn6a08.png.GRAY.16.out0000644000175000017500000000017011461476005020402 0ustar useruserPNG  IHDR k?IDATHc4c Qjo[J]s_7y]0P/܀WozRR"QIENDB`png++-0.2.5/test/cmp/pngsuite/s33i3p04.png.RGB.8.out0000644000175000017500000000060211461476005020027 0ustar useruserPNG  IHDR!!eIIDATHTA K{O_l񳘑I~];&4da42F'*bCE?@Pw$RxY6Ϣ2bA;Lk4M\C*cJt09!xW^6\ UJ1W1La-H6cQ!'q:t&uD )5Fz.%.w*X5gk@]+ۅЂn3W?Nps#st)8w_jCjiS;~NqGYIENDB`png++-0.2.5/test/cmp/pngsuite/s35n3p04.png.GA.16.out0000644000175000017500000000061211461476005017773 0ustar useruserPNG  IHDR##@QIDATX!AE'%6+'Ğ`Qd=gY@  0Y fꄮ3]Ld~28YǠXNEͩLiܮ1ؼ3*t.|y ޫ`l^LD`c.L9]Uw~glw]{6+fss@k?HnqQ΢N 0wS/t[fgCnqs9 7,GPApS)BZȉn*A߲T^dᜀt/xs83x7i#/@pq'»M)L$)~;W}¾~?b;f}IENDB`png++-0.2.5/test/cmp/pngsuite/s38i3p04.png.GRAY.16.out0000644000175000017500000000075711461476005020256 0ustar useruserPNG  IHDR&&ZIDATH-n@l B'$'*YX@(')|* $(JYSXO=<H9pBH*pss o%na׋\$i*rRt! l ((C@Oqkiʨ;#֠33ہpާ.(qUhm%Zm,9nҼߣ.R` Fc#?cڳEž`"|Zx6fJiN9il (86R 6i_}ϕ>Ϛ$j֖hkvLj>À_xo&+s ~!I(SzpTt(u>8[)r͇UV2 "'ngÑDzss=n۳[3L~y?)jb\xX4{\-3%,ǯ I-l<`h>MPL+qIENDB`png++-0.2.5/test/cmp/pngsuite/tbwn3p08.png.GRAY.8.out0000644000175000017500000000123011461476005020352 0ustar useruserPNG  IHDR V%(_IDAT8}OHq?A+y16W3FnBB#)%$y([]x"(!az+[Ԗ^mԭXݻM{~x~<_=aÝN{u?3ӯ9rwK=[osw_}ej\Xn>P:g.hPB'{ز^qktñArLZ!ʦ:<ͤaRBKD_]UtH ͸"*RxA4'ṊA|Ut(㆙ WDf ȿ<4#J.aҰt :)`[SQ_'^m>B>jr`9) lx*T -XP/8S\@DVU5J:_yJWzٰ̲4]ZYt ZbR@{(cX+ b=_5=>s :EmLmʥ:z2k73 !8&d&c;Ncyk-5B@4a=Aj# Ȋu jxQ(N_Gu:+IENDB`png++-0.2.5/test/cmp/pngsuite/basn4a08.png.RGB.8.out0000644000175000017500000000017311461476005020162 0ustar useruserPNG  IHDR BIDATHѱ 0 `e E:nDhx<x`<2wWsg?IENDB`png++-0.2.5/test/cmp/pngsuite/s03i3p01.png.GRAY.8.out0000644000175000017500000000012011461476005020144 0ustar useruserPNG  IHDRDIDATcưq6&mW".IENDB`png++-0.2.5/test/cmp/pngsuite/f01n0g08.png.GA.8.out0000644000175000017500000000044411461476005017663 0ustar useruserPNG  IHDR sIDATHԽ 07d6az$$:*z f`JVSp b;]aV}W8TTJF#mPhC^FOBNIHL&2A.Y@4؇P)r^uU I`2XyȺ[~P2TO|3p1J'gyU}xXAïRyg&)w1LG}K7@@d|Uٕ3g8T pS頁Mwp`}c}V:TIENDB`png++-0.2.5/test/cmp/pngsuite/s04n3p01.png.GA.8.out0000644000175000017500000000012611461476005017705 0ustar useruserPNG  IHDRVIDATc|󟁁!!€F_󗓡IENDB`png++-0.2.5/test/cmp/pngsuite/basi2c16.png.RGBA.8.out0000644000175000017500000000060611461476005020256 0ustar useruserPNG  IHDR }JbMIDATX;r0D g\cG=d8EF)@3HJ΁'FHsAX̅XN BJӔ4+\S*> :Xth6LH,zh40#Ԋڀ(ʔO|`&@x0 Z)vղ``~AӇ _(R} 2vbTAz7FQPzaKAq> ÈP;йe}R/6b:K|a;9O|9PO@;q:p=q'8p:ښ)IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g02.png.RGBA.16.out0000644000175000017500000000042611461476005020332 0ustar useruserPNG  IHDR T!IDAThVA \:"z4"-=8%$M `D<<BDB"mfY~eQ;liQ]/@}jTDVBH+Tz8?PeH Ű-|]ͻU$ۚZāEgH c=qUA@ơɼ}êBs#ULz_w[>է5ۚ]ou֟b$X?aa(~W4G(c>$926`f.x*͒J鸷e+GD|ǥ'vḗCuJ!IԿ/H0#NfZ1j;M=cm/?x&*$GLTiWSǦya(RHbS)]S 9B 3}Wى Ӄrea}e5VHV?CәM!W6SA-fjZ.iF{z4AUS&yAGRzjIENDB`png++-0.2.5/test/cmp/pngsuite/tbbn2c16.png.GA.16.out0000644000175000017500000000246311461476005020123 0ustar useruserPNG  IHDR n<IDATXLUe?{{7``'L{L('94?\8eSem~"6MXRcK(R6Ą Wm vs/g;;<>|y*1eb p钢]c**p!̜BA]|omGp8rh]&D xs;|JSgBtty3<] %oX!}%N)D!غNN0~:,lX 7ߡ\]]<!rsRP/ P UH6Q39 AlBqEEg#a%T}SP*Y;(FS3̂ӅC; XL$?WGAm[ ;{"Ahj||߂;Qs|Q+aW!@i,hHO"ab=04G < I/,h| 7pB^Pì|h_Wem̀ ./q7Խ _%R3ؙiX# oMpsi$8 佭 _A|\].u0Y5`_dtBc# :p׃`4ZH:UF^Wak x^p=\0 bkcA@{;XԢOςp#c:baa94st0;| C-ũSVߗ VJA t/jmw`S~`9i0}p> ƫ0mkh&{z0m= aQ=\!I`'0-M۬(;ԂZA \s9ޅgxr2L,dQlIxHllp:K}s aaZ7n(ډN'=YW7NB(x,]W /YwAUe7TKJcWl-Z@Z}ODG h/dr$%##X~bQߞ^0A ʱ+Xq֯FY!׋@ EEpvy¶<*JQTUFG˽HVɑ1!eҞpF%$@AE iRK|诮 >>T€! $[%)'"";/fVuQ_Xjܿs@x<Z,P=MM ƱOoIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g02.png.GRAY.8.out0000644000175000017500000000025311461476005020300 0ustar useruserPNG  IHDR !rIDAT8] ]1~0LڤA(@eQ1*QKӆ!b+|"|j%ԑdzlNDœ^#sO=aCt![IENDB`png++-0.2.5/test/cmp/pngsuite/s05i3p02.png.RGBA.16.out0000644000175000017500000000016311461476005020206 0ustar useruserPNG  IHDR0:IDATA Ê'k0!B82Bb4yN֐XhcCj-IENDB`png++-0.2.5/test/cmp/pngsuite/basi2c08.png.GA.16.out0000644000175000017500000000067511461476005020120 0ustar useruserPNG  IHDR ^IDATXVKN0}#7q =COX J;؎?ijigfޛoBc8&#pƘ"hЖGl< :;>H%@07r> 0I:FQ|20<9 5>Vmq+iX_2c1IJϘϭRr,_wJ-&_++;z' :6#(%s*]O\Cfb,T At`5ƻ*z2Ҷ[<-9}fJ_lnC %Y[ 7mO'F 5R\6vQ آ񡑰w7\]A@\T|.=IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g16.png.RGBA.16.out0000644000175000017500000000066211461476005020341 0ustar useruserPNG  IHDR T!yIDATh=0 rr *n@R$wQ/bz3͋2H+Vs~VZ@IIfBrdN;=he9M0AjY [ *!ԉhәfɣyۃ%K/xpQGAޚb$ɣy0٘1c>u 6>xÏ0 8E]~<glʔi}A̙ x`)>-x,''GjHUO:$سgϏFA[`,u7 z ґFxw %k'ckIހWx.:;좓5/ÉIENDB`png++-0.2.5/test/cmp/pngsuite/s35i3p04.png.RGB.8.out0000644000175000017500000000061711461476005020037 0ustar useruserPNG  IHDR##VIDATHUQ KfgԼ- c,B,4# g{NVk UTu8hF93bԴ<6@jvMz" o-2IE]rݴl侅YMDYQ'$(I4@8"5DoaG^5}SGc97v,mo!3FeF*Qy#ܘb()n=Lr`Ș5rA"ݴYË(J2>徘- +z$xQX4Wj}o_'- W̗+TWɷtI^/6^S/ C,o5C ,Oe5IENDB`png++-0.2.5/test/cmp/pngsuite/s02i3p01.png.GA.16.out0000644000175000017500000000012211461476005017751 0ustar useruserPNG  IHDR()zIDAT _&?sW5ʿIENDB`png++-0.2.5/test/cmp/pngsuite/s08i3p02.png.RGBA.16.out0000644000175000017500000000024011461476005020205 0ustar useruserPNG  IHDRR^gIDAT(Q B_wvGpfV]:C Btb `  x˭9 ߌTkDĨ4#Xɓ sC:)>ԱƼRTzh;<+HIENDB`png++-0.2.5/test/cmp/pngsuite/tbbn3p08.png.RGB.8.out0000644000175000017500000000241711461476005020205 0ustar useruserPNG  IHDR IDATH_hSw?@#^i/4@of4Z`UVf )X1`}Hp` CO v,fP; -Hcb$=ddf]w=99k}6G^|:x(޽{&E1& @Q'O_>nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gzs0hgIENDB`png++-0.2.5/test/cmp/pngsuite/s33n3p04.png.RGB.8.out0000644000175000017500000000047211461476005020041 0ustar useruserPNG  IHDR!!؆U8IDATHVA %̾Ў>DC8%=xpNamr1Q1,"FBD@roM ҄AʤЌXJ ?!ad:z s 90NvTXlt_1zI"*z$i6-ȯ`w_AC8Ҳj|]-9zy;JYjPՉzPW jPLS#T$=BIENDB`png++-0.2.5/test/cmp/pngsuite/s07i3p02.png.RGBA.8.out0000644000175000017500000000020211461476005020123 0ustar useruserPNG  IHDRUgEIIDATuA0?@̲Pz(r 2!yY*b:~ce<}&^b6?ފ )gIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g04.png.RGBA.8.out0000644000175000017500000000026211461476005020253 0ustar useruserPNG  IHDR }JbyIDATXA Gҋ4"R6$F z{nH!Q6(ρ-@T&9]yU m&`&`&`8SLC78IENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a16.png.RGB.16.out0000644000175000017500000001134311461476005020220 0ustar useruserPNG  IHDR ۏvIDATXX{PSW'^rIg(`QfkYvE:aVu\mݙ*ckQfj_Z]|%8 {p7ao~̞9sιGQPPpƝwnPETUq pLWG|m6]N8:'pju)""""U**J*]w]uq|f???;;;aqcY_[/X/X/<5O-W_M5`0 ɌɌɌ 7oFߌ _2\[[+=.=.= Alp~; cKZZZ˘Я777d9s7F܈rrrl~{ۛ6{.jK%  L 2=ˉH"`색///ir&n2v̟NtSJ~%V[x e[#Fnr M[61?k3jBMhۛmo|ߝ;sw9syN坒677C3/~ruN%JX2-LV`A8GRBJH9`?5P (ap0S)[@LSXYYMVNVNV^j~!by|E_}>GTżn̻Faa-X B^ AdY@x5^=77wPV嶶6FhRE)jA-3řLAfc!`.k嗗_8/ ';NƗėė !!$`Lb$6Qb%s9(L&iZf-vrrD(ecw;ݝ+ 1y z\o46 7i)@ JYϒg3UӪiDDDz=5ǚc pfn~ԏ:/;/;/[,q5#kFdeeթ0d<Oƃ:E"uahb41M&Y z3&9KΒ6kmK|S DV"+$<HHHHtDu$Hԑ޵k{צS)@` 0;88ضԶԶ٢٢ْjN5Řc(<Ѯ]GDbX HRT*F999[VBo{CЙ'gy7foޘ ^/x=ISzO^(/FDD0̧̧̧B. 'PX:,g?}ӗ?}9͜fN3ōFEz\.e{e2zW+7Bo}žŢŢ"?rt9```'Ƀ#Y,g~5ccc~wvfwyqlqlqld6^xa@@@CCCCCi,moK⪸*'}"^(9JVVV9ӜiΜ FݚnMڦkmdw7yǏ@?HnMA4I}|aaa{=jjj}{g.oS/R/R/£(<11z+V*JRE(+i0i0ip=Ϟg8wdIT.Keff&N8p2Q&B 4 eWt:N Ds9fr3kK(ᣄe2E*N_:f-~TVFWFWF!}EߢW42T{^W+ʨ2>'$0= fԌcn܌ 22,#Ub9'Ip!uHR+ӕkvٽf%cX C/--yzz~uA-x ;Nj>(?GY,n7?;_VVɹǹǹYs96ZNk0g3l!}}mmmxo7W;PO`삓+p H,kZ#0s.E; d@\U*Wg3:N3L&χχϳXU*n[#Hq*P< žb_1H4###KMKMKMF[iuZǭq涹m !111 EaբHo75[-#4zz/t0t0t08 W] GHbbbbbxY,"t3&zf=+WB!d&bt1͌O">d4L4LWW^]yuexexe8J E@ *JzK ؚlMxO5k Cy᰻].h&YXXX7X7X7[[[^eaaaO A!(x0x0x0l ݁n"uc>6i%  & o.k Ax}PZ,-,""x]u BAx㟃@K-dGx4B njc1c[c[c[K>Oq qD\N 9!&ĄO? &_/՗Jt>[h$JD`FͨG~i4YeGQ *A%A XQPY~ ¶a1,VB /T@%P)yq8}^Ɩe올,kפEQt-LS"wFbd1o ޣ??? `:n`7ppp!jD] ûŻŻŻ׻׻wwwfKjr5+4@7N?<] ` ?}f8+U >ƨUdEE"{QEPJ*$ UdYc1BX1cǠ[X7|O`삓+p H@[ IENDB`png++-0.2.5/test/cmp/pngsuite/tp1n3p08.png.GRAY.16.out0000644000175000017500000000143611461476005020351 0ustar useruserPNG  IHDR kIDATH_HuϛJxYs{}ui45% FwyQ]4`wuSDnхl." b03?tm9-y&ҹy{~ssbۊ4JIK|+ $ÀJ̹րq┴K޹/AGtXvN [%w;mN)+NkFsvW~tPvmNdM̢]~r ~.z5D#y`],;=T jT!f w%̻sT9-oZrkJEߗH4oƴ=!!ioJ?aδ=jq;uH0AIFMF*฻yHX!a<.[tz)oXZ[%Si" }V[x7tKY@êJ:ޓQFܘ^%#RΒP"!O{?fg3:IENDB`png++-0.2.5/test/cmp/pngsuite/basi4a16.png.RGB.16.out0000644000175000017500000001134311461476005020234 0ustar useruserPNG  IHDR ۏvIDATXX{PSW'^rIg(`QfkYvE:aVu\mݙ*ckQfj_Z]|%8 {p7ao~̞9sιGQPPpƝwnPETUq pLWG|m6]N8:'pju)""""U**J*]w]uq|f???;;;aqcY_[/X/X/<5O-W_M5`0 ɌɌɌ 7oFߌ _2\[[+=.=.= Alp~; cKZZZ˘Я777d9s7F܈rrrl~{ۛ6{.jK%  L 2=ˉH"`색///ir&n2v̟NtSJ~%V[x e[#Fnr M[61?k3jBMhۛmo|ߝ;sw9syN坒677C3/~ruN%JX2-LV`A8GRBJH9`?5P (ap0S)[@LSXYYMVNVNV^j~!by|E_}>GTżn̻Faa-X B^ AdY@x5^=77wPV嶶6FhRE)jA-3řLAfc!`.k嗗_8/ ';NƗėė !!$`Lb$6Qb%s9(L&iZf-vrrD(ecw;ݝ+ 1y z\o46 7i)@ JYϒg3UӪiDDDz=5ǚc pfn~ԏ:/;/;/[,q5#kFdeeթ0d<Oƃ:E"uahb41M&Y z3&9KΒ6kmK|S DV"+$<HHHHtDu$Hԑ޵k{צS)@` 0;88ضԶԶ٢٢ْjN5Řc(<Ѯ]GDbX HRT*F999[VBo{CЙ'gy7foޘ ^/x=ISzO^(/FDD0̧̧̧B. 'PX:,g?}ӗ?}9͜fN3ōFEz\.e{e2zW+7Bo}žŢŢ"?rt9```'Ƀ#Y,g~5ccc~wvfwyqlqlqld6^xa@@@CCCCCi,moK⪸*'}"^(9JVVV9ӜiΜ FݚnMڦkmdw7yǏ@?HnMA4I}|aaa{=jjj}{g.oS/R/R/£(<11z+V*JRE(+i0i0ip=Ϟg8wdIT.Keff&N8p2Q&B 4 eWt:N Ds9fr3kK(ᣄe2E*N_:f-~TVFWFWF!}EߢW42T{^W+ʨ2>'$0= fԌcn܌ 22,#Ub9'Ip!uHR+ӕkvٽf%cX C/--yzz~uA-x ;Nj>(?GY,n7?;_VVɹǹǹYs96ZNk0g3l!}}mmmxo7W;PO`삓+p H,kZ#0s.E; d@\U*Wg3:N3L&χχϳXU*n[#Hq*P< žb_1H4###KMKMKMF[iuZǭq涹m !111 EaբHo75[-#4zz/t0t0t08 W] GHbbbbbxY,"t3&zf=+WB!d&bt1͌O">d4L4LWW^]yuexexe8J E@ *JzK ؚlMxO5k Cy᰻].h&YXXX7X7X7[[[^eaaaO A!(x0x0x0l ݁n"uc>6i%  & o.k Ax}PZ,-,""x]u BAx㟃@K-dGx4B njc1c[c[c[K>Oq qD\N 9!&ĄO? &_/՗Jt>[h$JD`FͨG~i4YeGQ *A%A XQPY~ ¶a1,VB /T@%P)yq8}^Ɩe올,kפEQt-LS"wFbd1o ޣ??? `:n`7ppp!jD] ûŻŻŻ׻׻wwwfKjr5+4@7N?<] ` ?}f8+U >ƨUdEE"{QEPJ*$ UdYc1BX1cǠ[X7|O`삓+p H@[ IENDB`png++-0.2.5/test/cmp/pngsuite/s38i3p04.png.RGBA.16.out0000644000175000017500000000115611461476005020221 0ustar useruserPNG  IHDR&&{5IDAThZ[ =agહk3ZB!/#oNq'AwO \[{e$}f1 d)5.&ׇPWQQi*B,ql]}DR+OD1n؟I0'O)R+ب'{b E|AɯWԘ@ ?1E m s[GAz,$Ő4ƘNcT?= ELnE_ɿC1%a E@l-ܯ< X͔+lRl#*M5cQ7YT$Q9̰|x eYiLB2L 5rLcʘ.dtֽOTf,Rx..uKN#hy[QIY(U&jY*%c9xOcmrVٺPOa{abdIW^x v?iPq>hWOO_Ok8!W!i~Sju;$Y^}9B t ;m|N3p,IENDB`png++-0.2.5/test/cmp/pngsuite/s06i3p02.png.GA.8.out0000644000175000017500000000016311461476005017704 0ustar useruserPNG  IHDR=U:IDAT=10E".hO^OGgt&t\iq6*XG}z,_IENDB`png++-0.2.5/test/cmp/pngsuite/tp0n2c08.png.RGBA.8.out0000644000175000017500000000254611461476005020227 0ustar useruserPNG  IHDR szz-IDATX_hSW?@#^i/4@oF@-X0 +3>P 80B !'i`;}CTD` 4+@"&6J%9{}]ӧm1TpQq(H$H(rmK\.ٿ)&( ,.B__ŶlͳgϸppJx GXunM~xykX,0; 015˗LNNOP`pPáC} 8qVV8/|{{4tE6f'&`ud|>XX^տ'ݭʚ#GFK%G(}T *HRBO| c{|~&(֡u4XG-K06 WxPz/^h `!:XM$H9 &rfBO9*yTgyXCe%@4 Z.8T8c.3Lam &'!:DcU[59Qw\˵` Ͳt´@Q UH6SL&(xC"r{R Jl&t=J>,M$lp [RcKr MG:Q%F ]_P`eeebVQ׉-jM22)RL1O& PAQ(/ &`usX,~?~jt6vC`}e~؍9r,N~dYFEcɓ';吺%HS ]P@W#=d2;fpB!j r h{}$IB,Jen7JeϟsiCEUUq:za|ΌʏiȲ  6}+6 C6/JECZEe]=fh9@.#Bnx ²j( [[[M@$@oo/`<}"r dVv7f3|p^4a8o߾mYNDQl^/HIMR};wl2Zu\b1bo޼i+C`xxIv;;LNEu;;; M&X I(J'HÇpy^<fUUaN:68tD^BP۹߁|>V+kkk ƁybIENDB`png++-0.2.5/test/cmp/pngsuite/s32n3p04.png.GA.8.out0000644000175000017500000000047411461476005017717 0ustar useruserPNG  IHDR sIDATH!NP I 0UPS Vq| ԬL$8YB2ϴ339@>}uͻ=9wK<2uς p,W`. f >r#u}h<uPT³$F*jom+^&" ؀N qT[+-qZS,, ,@ߘ\wQ@C3iQ&dM,GFj3 IENDB`png++-0.2.5/test/cmp/pngsuite/bggn4a16.png.GA.16.out0000644000175000017500000000421611461476005020111 0ustar useruserPNG  IHDR n<UIDATXŗ_h[cHuRGT(8B-P.%4BiKaw]HɐXf%$zmiJWGc9w~t5O>>`eaX=`Ԃ±8G?]e _^X.wGO3wd3 gZú|'fef[Z!p&ކuh`c:oȇtri^g)X]UVZ l-5C`T$u!Z??p߅Cgj@dƱt-YY˅ae}';Ȁ~B@3 x'͌B ^SA#nr2r:QfGR`fAdv <@_"AÃևðqXZ3S:܀{Ճ< ';B 1/s,ZYߣ` `pg=U<@#뿃נ/`6,њ̀U]轏@`7&kc{ ? %:4o6JވaKGaɄ ? @= !e/sVVCpA5AhΠ.Ak%,?%!V[?hv@[/  !~Q`ZJHV@ס, \Z-tVKuVai *(a0ס  =i0Vކ.a{hQf\5 |ee8 l9QF haeXC9wnA D`6_Bh^SygLgv]~dA_ lwSR; I[VF&;5l :F$g 8h=ox yot| 'Q2 ,44c94O!1DӲͷ+3߲M:$m+?=*|~5{Wb zC`W݄辥< Cu㰈"j Q}8p|$;>.;/؏a 4/@ н[/E})x6훏m^=t)y#!ËGT/So SMO]]#7*gǏl!qXkdQa59G2 5e5$l (+畸2ۥ_$`Wb?@0 9E{Bk80/ƲVRZYxYf\ Nv{k By_@SaJcKjT𔥞cVE^>[v]7R>܉\i@)]SBBy$Ғh('eϭia;cҹ; МkX]HM%I%ŎUz]„Xj"22CO+h ɴ )oF\ܼ27 h+' wCQRY\-4-dA.Hax4,@ᜲ$o{ dJ;v,& C˧T$3ӔgVWsϓ<yhB# FP!v Vޔl X$p]y]\._s=,l7Gd){&TLK(}Z)h+V %@{gd"iiqૢ]Z^<y wPg+ЮB;  s%/ڟ gU<=DPw?({!l7d̀t:9-xIb z 4thFk2*<#~WQ\ 4eύpNf.J,OAdžN 6lf-ȌcGR3*%dE((\0){n$KJ3`38`ek+-w53&7yiIq(P(OKKV {ZZmkb1,,,̌X,+roA 21bO@Xq Ȟ@G`C{/ǶOGǞ\RJ@<@`ώGCx`1|{$k xNII#SV~322r΍7 MT/DB| qI+M,933113pM`sZ^n.I̚S 杯1T#x" Q9RQz\ Y'xiNbIr&Ɲ9El/Ș*z3KM 8m֟*؍yS |X!E 2&=~}E:ʎ={.j0L5jws``Bυܸpgc%OK (u);;2SqLL8 W}< CqVi"XOM'TgbrkŷE441u. 0y#e[7`K#+Ai.IENDB`png++-0.2.5/test/cmp/pngsuite/f01n0g08.png.GRAY.16.out0000644000175000017500000000044311461476005020214 0ustar useruserPNG  IHDR kIDATHԽ 07d6az$$:$?m]aV}W8ECMEMmXJmd06 6ȁZSJ1 =<, r &. Lgjk]]xHO5@F%'h+Z< ^+iܢ@ĈH n`Ox/ |cJ,% KI18qE,BtB #1IEJEIENDB`png++-0.2.5/test/cmp/pngsuite/basi4a08.png.GRAY.16.out0000644000175000017500000000025011461476005020360 0ustar useruserPNG  IHDR qoIDATHc,01j1XC #BJM` =>0xOHQ3a8pzF@!@Ѝ 䇑aQPF -0oIENDB`png++-0.2.5/test/cmp/pngsuite/s09n3p02.png.RGBA.8.out0000644000175000017500000000020411461476005020134 0ustar useruserPNG  IHDR KIDAT 0 ψک/+}RD|hP?C`VQ~v<;ឈu(sIt`IENDB`png++-0.2.5/test/cmp/pngsuite/basi6a08.png.GRAY.8.out0000644000175000017500000000035511461476005020311 0ustar useruserPNG  IHDR !IDAT8 @ E%SCLʫ ((CвBt 4)#׻w>- UKvw [;JFVFZ#g W wIM@K/`<g(38D,9FƑtO3;xNmwE ^.B "N؍IENDB`png++-0.2.5/test/cmp/pngsuite/f00n0g08.png.GA.8.out0000644000175000017500000000055611461476005017666 0ustar useruserPNG  IHDR s5IDATH?N0op$.Quc@b@b@ĀĄؐX:p %-j4I8Dǿg9.„ 6Si*JR(A|2rd5-l,$umJ0=|G_s kHS+3 >]S%f^ho?&ͮσ{-iKxb nka&p68 ;s XS[$+;^Qs\G=ܘ O71bKy"$@xB #Z|6IENDB`png++-0.2.5/test/cmp/pngsuite/s09i3p02.png.GA.16.out0000644000175000017500000000024111461476005017763 0ustar useruserPNG  IHDR m"NhIDAT B~YeP;< lChO vJ-'/s FTKK~DoBͼW[tSVoˎIENDB`png++-0.2.5/test/cmp/pngsuite/basn6a16.png.RGB.16.out0000644000175000017500000000614711461476005020251 0ustar useruserPNG  IHDR 1 .IDATXm]u}9fy`xLM`LI `-K*;JZg@$0ی%&{9u/ws~/({޷f惢}*QگsN+=zJT6Cy6Ct!D_>W Ha(b(>@s.d͐;$~ z_9{++8^(~|6f <~[5_v{u#>WʧE148t`zymbΛ3SŜ7gO7V6/oW(|3P,kqb _$d#>~ g!~(|?4C֊~HPjM}3顮^j~+Ih8΁c$l~]A\ x⿆y_|!4oq>$P:\ 'Գ-S,cz}+mnW=0ˁ'A"mCnユ ~e55mA{'wFY-Tdky=6ҳ3 *72y|߻F1Gߖ]x D\u0smݕIA:"=%>L;^Uڴ _B"C_м 3 ϩVUC6 g@ Zѻ`B[;Zѹs9#ZU"UMcI#HgI\h3}J@х03 ! rH ?n82Ђ~򅻘g]]ԷT6L{h4::HLv #d%{K+g^!$OҦ\-':i1C(m6arןhA}I3>0oScsSU$woq~Ǔd~Dv0ZB=fO(?.#ipJ-5n^t3a;yV7vȝ-#}C Ne3ݟ$)IH?l8;ȯ +V |5@3Q= '3g0;nş|ÙV3{Zwu]iuF5OΣȟ G~ZxcW o K]L B^!jqQ8\zzzg}7?{Ѷ/#rqhfT"%_!.*8H) ^p̀kyi(OA@6Q[ue :Ț\UW?+?jhͤT!wQ (bKU)aW1Eq 珍Q^u܍.ȯh{t !I6@(N`N^3xOI9| /gK}˂SGP]VO$[[?~h([L)kFPZ|0: B3k{.dL Ю?6}z9qy<9˘jY;rȝn&8M2PŜgQj$xqpKf9uvJ}wfOo1[Whbx}7'] nfh91kX} ~)3ޢ{܉ FѹcZ*nH>L+ >B*=ˁlf{Ĭɣ;9Iw4]]jP.)qlR*AЪf2IRR5ttdQщ==[ 䯅',m-*Omn&fngoz|-LAEtxtxq%HiJ˛7Q;_Hx.^&8ņkZ &7X9gΪP&%03:ޙQ:ԚTKn*"#.~ 6I?. z-a0hlq4L A` F@=+*۩n_BzJ- $[)Ow GD}vkO#KV PYY+yz[1izu/We"Vs|]yHPEpXY 9yEP-ūHw/_Gz_GJ#.o%Y_>.-sIENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a08.png.GA.8.out0000644000175000017500000000030611461476005020014 0ustar useruserPNG  IHDR tIDATH 0 ֽA((sOAVG":ݙbH$ @ɾzM2x<7U[0t<n!Y~.,>RfqXAh٪wϤ50o0N N6 O= %.IENDB`png++-0.2.5/test/cmp/pngsuite/s37n3p04.png.GRAY.8.out0000644000175000017500000000045511461476005020176 0ustar useruserPNG  IHDR%%IDAT8!@E&+H% z AUT5=COSUY¡ l*+&ݿ|32l srzSf aZ Za{U/pW F*373uNc+>U^~W25$R_?*j*PF%칅׻D \>$ AtVpL=!Z {A F{h?}zjicx 0f:^IENDB`png++-0.2.5/test/cmp/pngsuite/s36i3p04.png.RGBA.8.out0000644000175000017500000000075711461476005020146 0ustar useruserPNG  IHDR$$IDATXՖ Ayzd鎔Č= PeFOg`S"-ߠF0Fպ' :bV]: lk•f|S~ NLOr:&0 ̀6p}d&-N3*:Qp%N)BbZP2 UŒNfNd;ls֞!p _)HT@顖xA&C+JԨ@Q\I݁rQS*DZƘph/:wtlPS:!)[.[CpxG0iV`Y uy1=]B6rз 3HGIpxG1vX]6m|WC\lWPx> Fo_D- :l.5o}&'s9MIENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a08.png.RGBA.8.out0000644000175000017500000000025011461476005020245 0ustar useruserPNG  IHDR szzoIDATX1 0 F'dhO?U!ExRP(M(ي0^{~3uG XN5"}\TB\.y 6{@<P6@R ֏gIENDB`png++-0.2.5/test/cmp/pngsuite/s02i3p01.png.GRAY.16.out0000644000175000017500000000011411461476005020225 0ustar useruserPNG  IHDRpJ-IDATc8pxZq!nIENDB`png++-0.2.5/test/cmp/pngsuite/s02n3p01.png.GA.16.out0000644000175000017500000000011511461476005017760 0ustar useruserPNG  IHDR/IDATc<🁁 oˠY>IENDB`png++-0.2.5/test/cmp/pngsuite/s06i3p02.png.RGB.8.out0000644000175000017500000000015711461476005020032 0ustar useruserPNG  IHDRH6IDATM d@V \XM-i>)f?VUW :IENDB`png++-0.2.5/test/cmp/pngsuite/f02n2c08.png.RGB.16.out0000644000175000017500000000230411461476005020061 0ustar useruserPNG  IHDR 1IDATX=oUglB@tHA mD?B$HH *%"$`'ljK1ww:&A3Ξ~ # 1J-z9kl%QCV1]O` ,I2bߋuQpkpDd%V9j/JCǚՅ`ޙud}ωoCHriZZ&%MCqI?#TXX\.毸OanvLvݹ\Ӟn]xnq$'`"*MUf'tP$י J#̮S#ddr\B_0E CHTj˂\샫]iėB#,&`YZ;};' /D |B?ڐuqzqϑ<G=-,2Mz(7Ycy8ty{ԄO.VHTKGّ ~k%7׺QQlNWEC#,xӂcT&L^f^掜x֭ϋ^Wy2GD3uVf;ovDZ.&Y 5<\r1LjhUE#W)Wg& cе34` 7KC7^JcLX;4V_5\>Vfhma/$14c9nS_BP-Ma֫.\;ޟ}eA*i7aiQαFGem;v$ڝ{渟:i;*1%O3̿xay1Su5L=uΑ2%UX^M\ޅGVz}I;-fHe',p:'Sz7ƣLSF;eXWv]q{XQDݐe4CUO>6tj)sEF{M[6𷁿˱{Bfgg''|rRLhk˴C' 7/ܼ?L&ҝݝݝ @H)fmmmb 8<<λλλW\ypŮqu%JȒ#KKNf滛Ώ:]kڵxxx=000000۵5%%%.UUU@Hމy'a۰mؖM&7M,,,7V ೨Ϣ>G}yUX05BP#*ӷN:S)1En#ufgHv5?*x/r ))ܩhb-ϖg+666˾㋎bRRRLvMZ @9לk 4OzH}Zߵ>`333^Ab9P??08֜[sn94&Ny;6䷒ ܔf\͸)} ^ݽ{6QMGǾ}?PVVj̫!ŐbHQb֋Y/L"N;@ok~[[sB.KR s9,=o}0`5|}}٧q0JnI[ k5 ¥p=E?s9]Kw~|ie嗕_V艑 "'qqq@FEdYD{q'Nܝ8v]1?>lb&ntٽSE_~*ڡt(J 6:6:6`N0'{'vm]dKz/=;PV(+|'<==;wr[W/^US)z^]UkZ ZkqYtL:U* l2l2ljZytGWkTBmbTڙ3kUMhڄ*GE7V[*:au2ݻw ,[l}ZEEEA6:;:;:{(((d_ ~= d@6RAR!$d&M^?^z҃jjjV4<;]tQrw~_N:y!`eʂ@釁بب(@CC f1͘fL9SExI$.Ϙg3\ckkk111UW_[uoս/_xrf9l A 99ٮMz5i6mIݗ/u::: 9LiDAv@>Q|zާeFYo޿Bd:N|z%Z ȿ祖ԐԐTYccc XV[ícepZ%u:gq?~n[8CXVUfY + `0r0r02A7/UI<OtaGVEO~WS N-TS߮VE;*ohڬ6UK/={#{#{#UtiR5la6Лԛԛ$uewewe3:111 z4z4zO_GXXX<t,XбXTjQ dM&Y:*>n 79st)JR ij{{{p8~#Gٴ fuՀVЊg' ( 0~Pkhh`ttOl [pq0a0Lud; ȭr Hi)-M4%2L$1\"% P1c.\dcǎǾh.7c[K%?Cqm\P~7~P;;;%WFI. pQwD!S8#g䌀5z{{{x-5,k e0_ũ_kvjZm6q T o[h(yN^?KMMMWWW" ew/}z ^ 3JIIa)a)a)uAxR^)  D tyCi~p/^x"[xpp6L/^6p6d3.Gΐ3 Ǚpipk$IKFsFsFsjkkzzzYݬnV3ٕgW]PlG|- %\#G»޺{m{۽s|ǗpNtw~~=)uGsssss3pJ`}i6V’’’Atڵ`0+ʎʎy{R%C!ao~[ H[.e^4{)&MK8vaGs9 pᆆ_ jWl!|R'%\ *ϒgɳ Sq*p &.$܂ .JИИPEFF.h燞nۄsU]ՄLy6<.b3@4[V:I%LCv]c0mtH]gs͝xxx~%_ -t <7h\WU+J_~i%`ԡC`TY-[&lK%:ur+`Yt`[= ?/?/?OHk)3͌pXV N$Nζζu]b2RLwNwNwl#6d_/;1wbZZZe2@\$.2ol>͛f"wp8j5}}}?0Q;Q;Q k5hn47O:t>S)`f1,V+6pZUfYFjpW+ .Kasi::ut(`ڼ6/0;;KKKe:[-Lu<O0dnPDu: "1"1"q>-LZXL-[2077/<& MB smnYnYn]+ÀW+H 5bX>}.<<<oܿqp\2 pV9U#ߑQ({`YiYiY 1.33333Y7nf/?e#h>~}:0T=T=T ttt555@wKwKw JQ6Q12FHۤm6@'DVUd?\s@SO?}ƧikZO' Ul[3<7(p8 fNNN`͡.ea7 Ia^\maaXձcps7㋏/>NE`Ɯ9sr|> @hE`4a0 4Yjf5W_~pN9w>3RO` p\. nnnlX[,0:: tZݵѝ;wOsrrWA311|x3?HA҈6ڸ>@"oD-Q"H$=B(0u:@(+e@&TBCCҹҹR`5ssUsUsUsks~_~_=n kٵZ`jΩB0 AY(صg#FM&___PEOx?x<x>}C!F $"$"$  B!+!dC R)E~Wͳg7f>L.|&g^\ŮbW|+W@Ǚ3ppAlݲuV`ݻv /^4 ĬY U*dA jz/KjšCB/^xkxkxkhyZszN>OJo`OSllZ[->>Į]eT*J8^/JR=zVVV|_Gq 1{{{+bEpU*]LLL!09L`hhLLLLLLlnq:o.~s@YoA˪ȪȪ I$Hyf`@@0ov>@#ehhh0h4 ; x@U٘lL6H^"y+ EzBV>S;zZ=b!J{%`YyܱܱA??? ;R>R>w(裊fbAx& ïL=SzokkkzzaWɫUDDD=@ÑF(q9re@'=ZHjI-UnK.4 p+ _ UdYEUhZvܿm"& JZYLVF*C G8tG Hb$9z3 UUUN8E"KE8^^^VVVNvDvDvpRT-UNrLrLrp⍄Yg x%\HBHBHἧ[[[G٣Ggnhhpsܯ .x?3xi4QRR͏GNAAp@(N$l6wa777G1E(IENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a16.png.GA.16.out0000644000175000017500000000542711461476005020103 0ustar useruserPNG  IHDR ^ IDATXpTu?Z=IowB2O߄5f pњf4b8O5vH\ Cc7Ԯ#-+06P ЂzW+tOL2m%K,: 뻇oތ! ~>6K2m4?)u7,㍝4ueqCYcgg' i!lB4M\x2s&߆OiҮC-hDýgt<Kzz)]}?30.W\ZQKiپnp7Bn(A ;`n~"OÎ, :X@apy(b.7 9-#X1s;WhPfS!6ئrͬ’(T(o+ܟ| KWcf޶܀ fC>A y(kfPEMpx4t! ٟ%kx370%8$NA-!xzX!jl5+ .S3;-[W~u>Gtu,_WՁS7_ի:aTnZM߳0ctµvx,jq(VAyOjoBe-oA>k+?3V̮ū!xS [3O01 'wj칷d/SU槜wpx6kfi]^.#jkFS dF0,~Fef[7}^X݆@-xOC^#AQA ̋ɇ2B*Kik * \,koBZJ<w||&f(o@)Lirm^[Я.OFJ[_ye_uJȿ:)d!?eC;2zFW^'d2)d2#z3\8MoU(P̮Yӗ,Q lȞuN]s#ǯ\++rB|\H!e7n5]߷#BR r ,9gG$  ; &(\ ?k%{M+0lrow[O2Ip An;nC[0c5 {r Fچl늺fVXH] Y6_{6 Y-%B !?2uHM̋B45VL? cp>f֖ܷfEW!+7oB`30~&k74z<©̋uC_?0/MoB3 cV2|*( aHA$aAy٫.}fs]yu]uN΁Uh = =Ms>=ㅢ0%-C/ SRRaHv {a`z>C0EPs ʜGB't:p4t@IBK,# )ȏ7 _MHoFH,k*nvR3΅!nw!WIЅQ2 o? 7O0`7ȓ0eHTlͷ5 ƺ ?@w.3`>aoW phJς~ CoA&A>cQHoR): ӡ\^7_cbtƮSQr '!<PoA^r]P+a"0$L0d2&ȝ0`pttͥ4Wce_׋ȺYqa@f3dR 0\N~ UTcZ$XCϙ!C(9q>3Z_3=g@ BޛW;I`RU}]N;ծTC.(σ@3;`|ۡh thA ϙHZ7A4۞$lZHxjks# !(M@LO@ ,{022 ' }g|P\_{@MLG25 >i!'505-0e 䅜Bk)F[a"J+[4Bo+PA(x|%EqXk@G>3c٤ehu![HPSB 9!! 9uyBROH)!}B?+Bz]H6!f9z@ȱ+*!'~ $_B*T2gys >!H{I9.>2IENDB`png++-0.2.5/test/cmp/pngsuite/s08i3p02.png.RGB.16.out0000644000175000017500000000022411461476005020106 0ustar useruserPNG  IHDRl [IDAT}A VOȾ:{*apB.aM[c͚ W'B;4W^Ȋm-Fذk>&׎]IENDB`png++-0.2.5/test/cmp/pngsuite/f01n2c08.png.GA.16.out0000644000175000017500000000134211461476005017736 0ustar useruserPNG  IHDR n<IDATXW;0 JkǩRMzSO1$B4@yD ILOXZť 4qlR$=+ٺQx"pDJ&;5I<`12FD6VvB]1"Ҫ[S<-\HFUIiG,|61l*U jkEGm Ö0UA% (έ v_x5A$:v;*  vl(|TG7"P+ ?"Y:HyT-z,]-W 'r`\^ TX V"_,]}ϘR8!-}pcru @0=)g=59&TE/mENYR[I?0%jUuDlCD8lqЇ⼱tVhn/,SߞR H)8wk2Bi~tɀڻ(_J>dR2h&˩IENDB`png++-0.2.5/test/cmp/pngsuite/f00n2c08.png.GRAY.16.out0000644000175000017500000000130511461476005020207 0ustar useruserPNG  IHDR kIDATH}0?ۓ9g!DE(x$*#wBtqѲ''9Pd8aY|I=dl)))Z} 9%ybX, rۯA a q9ǵ(SD*q@SQ .ͲxʿY l)5w;qx<S a 0᜹]F>򛎎#GZZZ&ySLRW z n-&V3@Kzzz`[,w!`ˤ1X+`XfмG0٨JT$ 4<#2ejIg|.\N3jf$902.9dpN ##ҥ&^R6GX?Nn.CҨLVyzhpZ _$Ջ<i)S`0ȠQ'Z++91:%ӐZӿy=5{вg0.%eS+  )ЛSZ;^``.V˶EɞhQ"U#`!r[xW"żp ̭r1;`]F&H,GD`AIENDB`png++-0.2.5/test/cmp/pngsuite/bgyn6a16.png.GA.16.out0000644000175000017500000000420011461476005020126 0ustar useruserPNG  IHDR n<GIDATXk]u9И:IxS]5mlaJ*xx[4LjB%b"` IEו&))'NaPb;q`㙹瞽a kkkIVaK{~vt ޱ)\Lp exW쉗hޖ&~cCAhxgQlVo!BGC8HAq]Ļx ꃌm64ħ7⯘t~/ak0^%ۚVn|!>찕{(^l&>L^//;o&LV'7K֋G*ݗ}įv^O F5@SݴwR/ |8#U甇f&N'>O>8q.å8LX|pa.4厴7{kR; vPN~>O|%<^c3QJ!ȊfcMگR~q_\F<%݀'{_&& sfPctKCsw#W)/\Lt#~p=&n|p$ÓnZz'Ѫ jSA?F{FJ1Yw 3.U$;̠tԊnƖsyh?CX^d||gAh/kڟ,ߪi">+fpbJ1huSO{pCq'AZ'GhHqb%IfѬ-".\Dq5Ek1^Z笠rc6:Jb'|xۉ+х[RŎ 9qz?wYpicLH)d+ǘ_q4e 0pń)\I/Z^[z1 sqfnd.&LK.dw#'CփDx8-1a,a>u'9q)oeFx^͗yFfv0:&R_H;=KlaWvTL>FVrj]pQ'&Q{.?^&jG7?[y8jmvS'9 5S=Ĝ>ZNxg^&?]=@~yOjz wusS\E(cozd{Pۛ'VPv^OQO_A9@y RtZclq%CoK*YJlI%Gv;%X©^ewb {?n<ߩ(+1bi6Lj]-o-$B-oY'KY~cRŃu2DFP#'~p3?q٧ɎgW$wQ"K%ޠLJvRC`d5f#, \$F,qA/ /`d' @Su;$,je.2E&ٖUQ|lY! q;_hWhݐ Ov8?ַhH 5HC_z|ïUcgHGv }0և{[eCxج몏lX&:Rf\>%:Uj&1x,TZ5qEUh%qwI6l6^<^CfbӞjNp 2ֶ40@7Vs{ BbA<wSܾNczO`1Yw-Ӿ}I`q -)ijg祵n"#v' l3ɞ/SV _EIIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g01.png.GA.16.out0000644000175000017500000000057211461476005020107 0ustar useruserPNG  IHDR ^AIDATXVK <e  $ `܃A&CpOįd&>HH+Sj<<=")nrB fASa mM&yyx#S.eh+&f hy/:D(3p[ųjU+qL(iV1F9eVSi F(snw2Lcp~JQ=8r|ݢK3Sua#i]d;\EZZ_-ǝ~| ;N99pMHXk8]>.-vJrrȕc<IENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a08.png.RGB.8.out0000644000175000017500000000023711461476005020151 0ustar useruserPNG  IHDR fIDATH 0CQSYUhN⎐?$ IGdY//k JnKn״Mve6_VXϠ.C 4|~T|’IENDB`png++-0.2.5/test/cmp/pngsuite/bgwn6a08.png.RGBA.8.out0000644000175000017500000000025011461476005020273 0ustar useruserPNG  IHDR szzoIDATX1 0 F'dhO?U!ExRP(M(ي0^{~3uG XN5"}\TB\.y 6{@<P6@R ֏gIENDB`png++-0.2.5/test/cmp/pngsuite/tp0n1g08.png.RGBA.16.out0000644000175000017500000000275411461476005020312 0ustar useruserPNG  IHDR #ꦷIDAThYNmk۔y3O!c(L %' 'Np"2f3gZ|~kwJVXa_6_]tSV cV - }Ӯ' a8餓\s l 7pQıBguvmrqGFA{a>՞n[n曏1/&ڊmن{'I`PD= -m]"n5T뭷}t 34=j+}Jz K,-|o;R(?mXe4&J#/ҡHN7LCj5>T*Jڷs?Ļnٷgܿ]\Lm7pGtωi}ճ+Զ͚ڷn{R?}*e޹ P_FUeힱ];a?1X:}Ka =A04Vqu $ZOo EW9]-\ QR疙;4t7]EBR̤:w=0\{[ג?)hIENDB`png++-0.2.5/test/cmp/pngsuite/s39n3p04.png.RGB.8.out0000644000175000017500000000053211461476005020044 0ustar useruserPNG  IHDR''b!IDATXŗK0 CmwfSgi`+HZז8*]7+m,s1׭_:WMf ]tRgU:c0K*i2{BϯWrx>W-cHk}ƻ|8lq/w^~kIENDB`png++-0.2.5/test/cmp/pngsuite/s03i3p01.png.RGBA.8.out0000644000175000017500000000013111461476005020117 0ustar useruserPNG  IHDR!/) IDAT=Ʊ 0Ӝd ݿm9 IENDB`png++-0.2.5/test/cmp/pngsuite/tbbn1g04.png.RGB.8.out0000644000175000017500000000145011461476005020162 0ustar useruserPNG  IHDR IDATHV0 )4  4 tB&~B ]VBBB@֗mz[q5i$cz˴DB>=|8/OC}߇saOZBDm۶m[UU!ƨ1ZH4Ƙc]u];Nlx1}1M16HDι7kc JqǣsksHs4&\XkOSkH*ߨ읙c0uZk{kC\E")eYe)"88Dv]=eB45d 4:4 3+BZz%nWEQDB_.ngIDڶH0@":.֚E{܏!4'Hd]ԋs.a5z/,3q l>`,!i_iA0Ƭ݁1fc ҥJ!hQAy =I@yW0K30dPTGhuMDRN'Rlms!f ̧6>H!"<߻6,vzi[ H)'-?iY'ND k$g2IENDB`png++-0.2.5/test/cmp/pngsuite/s09i3p02.png.RGBA.8.out0000644000175000017500000000023311461476005020131 0ustar useruserPNG  IHDR 6bIDATm 0 wVG~8AT.& m"oͤ[W8 7s {]*;fG]eR#0cVIENDB`png++-0.2.5/test/cmp/pngsuite/s34i3p04.png.GA.8.out0000644000175000017500000000072711461476005017715 0ustar useruserPNG  IHDR""IIDATHNAlN4ȣ'@l ix>E&U˙S}fs8ܿޱ =e2;}3 +K ik24Aĸ |Ma,*9*%Jdxa ;8@ux_ʼnv&鑝(W>,b!bǑ}+CBك!9XYT r;Opѱ͎=p2K#rCl٬MH~ lr:,L.ٷ(/}4{3VfV(ZܷAD dPvE~ժƹGdc@rW3֒DW=̯ͨvNn Z u_'u] VU؇EZ=/RTQB Rb?pi`EIENDB`png++-0.2.5/test/cmp/pngsuite/s35n3p04.png.GRAY.16.out0000644000175000017500000000054211461476005020250 0ustar useruserPNG  IHDR##k"0)IDATHݕ!n1E%pU ' aOSAETT BVUaz9^gMFe`lEl4ӔlSy@MƷ=[>dPZ6R'd+Wet?35eL]3)5َmL$d*f*qiԩLK@HkSi ؏<ށ%)3UyH:R ?-a & .sQ OIENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a16.png.GRAY.8.out0000644000175000017500000000113311461476005020274 0ustar useruserPNG  IHDR V%("IDAT8}A%E DNj  q9# tׯ*; VXs:}&9fff $AH*#Y# ;K!I3R#`@D䞳"%*eo-k(W\{U#Ig͞I vۖ5gwD˚9g7#}9g7EDvuIvf#AzYNNFYreu7EEط-d^ݤDDG,޷_$% 掔6?b~Hyq)92dXN5C! S]='Js'ɕc>0I{ Un$.Mǧ팖>L}p.ߘDꦈ^KWq`v]QWB.*y֊ή"L33v2.q=)C @&m]H=XbI`6vfL+ʠ EsJ܅b-([PMf[Uc7 jfŘ5g}Qcpn۫Kޞ{uk߭'/qhB*X֮|nH3ac' *N$?,mA檜?ͱ B| Sb~QWq:Y|P;P+qB`هPv[Cx/9w[6g`'z3pEإIENDB`png++-0.2.5/test/cmp/pngsuite/basn6a08.png.RGB.8.out0000644000175000017500000000023711461476005020165 0ustar useruserPNG  IHDR fIDATH 0CQSYUhN⎐?$ IGdY//k JnKn״Mve6_VXϠ.C 4|~T|’IENDB`png++-0.2.5/test/cmp/pngsuite/s40i3p04.png.GA.8.out0000644000175000017500000000077411461476005017714 0ustar useruserPNG  IHDR((Q@pIDATH͖R@?n*dA bnPLE @}>Ag*:̙< SkHICoK"Ewos V"IJ$Qڬ6#@Mr=0]mZDb%98$DM'-huRH*3y4ou U2ձCfV ARd&V I~ ImY: VDAʞOU*B6Nl+p)1Oq=S>yi ġP^ksȀ.j19ӊ 2X)Zc~ؐq9ntX':ժsaGމg^aĖ%Wg)' 0(U m(x$l~. %%.72T7˟S9K`ӟ(pɺ FÜk5qV uK3b}?-2LyfI6~ ~vMxIENDB`png++-0.2.5/test/cmp/pngsuite/s07n3p02.png.GRAY.16.out0000644000175000017500000000015611461476005020246 0ustar useruserPNG  IHDRL5IDATcb@, k=K L < QM' IENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a08.png.GRAY.8.out0000644000175000017500000000015311461476005020276 0ustar useruserPNG  IHDR V%(2IDAT8c4cX) 2 PkXD{C /)VVP-za/IENDB`png++-0.2.5/test/cmp/pngsuite/s36i3p04.png.GRAY.16.out0000644000175000017500000000072611461476005020250 0ustar useruserPNG  IHDR$$+IDATHr@\##'@dP"L%P')xN SPhe%$$a Dfgwnn _br(ЅH]b4eƺ@ hb'|1, TꆂjUUH⪉vref,;4!uv%9a $])!ELXRPNx^dp"%ށTLy3S>'n /B4;.'Ou. wS&S!3\‰Nttׂ^1sM[^xcȝW1K,/}Ym3 ̂ȲcFxZ(Ky%1sf= \Cg=m3gˤQ>wl/$ Оo^QKn۾XvUiQv5hj|qIENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a16.png.RGBA.8.out0000644000175000017500000000227611461476005020256 0ustar useruserPNG  IHDR szzIDATXMr<6'&KnYK,܀dT2[X>Wu9T,Oj5^A1DCAFGGkŸJ(uqTz_3!\-n\G-T9`fCcL/ST B3v%ٖ3| CCDk@Z RN (ޙVF'7.FBp\%d ?BwNT";OB< @dѭeډԞpHhGb#t֬6__ ?Ӹ)uR=Ѯd7!_~Z5`$Uv //J[irxx{I~,͚ 80a8\ ,Bf\I|7Fu:+ ƀ:#l=~]Ka}3U% ݎo]JwKQ)o5`[vsޖ:+ JjppZ\7vûf7EWq`_!PW0&$*Oyet~=$!&&a˞~ <}BAXtH 3 f$c[x_̘Q686]>|C؎pTTs;|DΒ%9O|x{{v@9@L/@q=Dw;7dD(\\|SN@  141>/5!>-->!%3j<h@*nGH#+rȕ x( )XpI2LM)UqbыW4=KOC\Rpχշcan+^Xj&3S Ԅ0"ڱEKv>53;p@wCEY.d?- T L֌^IENDB`png++-0.2.5/test/cmp/pngsuite/s01n3p01.png.RGBA.16.out0000644000175000017500000000011211461476005020200 0ustar useruserPNG  IHDROIDATc````2IENDB`png++-0.2.5/test/cmp/pngsuite/s40i3p04.png.RGBA.8.out0000644000175000017500000000102311461476005020124 0ustar useruserPNG  IHDR((IDATXQr D<3W(~vHet_X!k $@ !ŸŢd#0@ , Hmd`< êu^E9wn9#ϧ6 d[/8ݫO>D(ƣ VoFH)iQJ`e)x־T4Vry0ȱNy:A`Ќuo9hI {g=p%J݈$%$_$!/y>zJ1Cx:!@+ 5 U=$T!KIqrs#3=I& "C0zC9C*C?}~f?=\\*V?T}y~$/h0zDktpǛ,v>%ZmghRMwKEiٟAD㾃Hߋ>(u%E8&!jC.-`RfqXAh٪wϤ50o0N N6 O= %.IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p01.png.GRAY.8.out0000644000175000017500000000015411461476005020320 0ustar useruserPNG  IHDR V%(3IDAT8c|PЉfb (WN:a4 n FÁ"P!m8:IENDB`png++-0.2.5/test/cmp/pngsuite/s08n3p02.png.GA.8.out0000644000175000017500000000016411461476005017714 0ustar useruserPNG  IHDRnv;IDATc<00#q20000C3 ̯ _L hBqO0'd h..IENDB`png++-0.2.5/test/cmp/pngsuite/f03n0g08.png.RGBA.16.out0000644000175000017500000000107311461476005020167 0ustar useruserPNG  IHDR #ꦷIDATh;0tHt4Tl (h)h(WM@FNdE쒿Ơaig̘15jԀ*UMBJ-Sa ]\\߸&[D):88V$:rH@$u9TRĉSVY8[L @(P.\&GY)۳gb<ѿ+W*['Lf١C'$Ζ-[,Ȼt醌Ylgd#,Yb1 3gd},7nє)ӈ "%|lze`ӤI/>}{_|?`ӠNzHH*9>uuBUx֖ ߦMx*`{/XbE<3f!*iР趚3ᩱc b>5bω}Ѻz;H1 ~1=z!LyIi--Z$Gdu% k @T40}:% BE {@IENDB`png++-0.2.5/test/cmp/pngsuite/f01n0g08.png.GRAY.8.out0000644000175000017500000000037411461476005020140 0ustar useruserPNG  IHDR V%(IDAT8ѱ 0Fglg6az$$:*z f`JV SqY\K_Ĝc{;q9k1`e,`t`XX@+l `婃Yaͭ߅ Iysf^88u{6>1^sxB_JQz&q Lb1ĮFREHBЅ$t!TPIE3IENDB`png++-0.2.5/test/cmp/pngsuite/basn6a16.png.RGBA.8.out0000644000175000017500000000227611461476005020272 0ustar useruserPNG  IHDR szzIDATXMr<6'&KnYK,܀dT2[X>Wu9T,Oj5^A1DCAFGGkŸJ(uqTz_3!\-n\G-T9`fCcL/ST B3v%ٖ3| CCDk@Z RN (ޙVF'7.FBp\%d ?BwNT";OB< @dѭeډԞpHhGb#t֬6__ ?Ӹ)uR=Ѯd7!_~Z5`$Uv //J[irxx{I~,͚ 80a8\ ,Bf\I|7Fu:+ ƀ:#l=~]Ka}3U% ݎo]JwKQ)o5`[vsޖ:+ JjppZ\7vûf7EWq`_!PW0&$*Oyet~=$!&&a˞~ <}BAXtH 3 f$c[x_̘Q686]>|C؎pTTs;|DΒ%9O|x{{v@9@L/@q=Dw;7dD(\\|SN@  141>/5!>-->!%3j<h@*nGH#+rȕ x( )XpI2LM)UqbыW4=KOC\Rpχշcan+^Xj&3S Ԅ0"ڱEKv>53;p@wCEY.d?- T L֌^IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g08.png.GRAY.16.out0000644000175000017500000000040311461476005020362 0ustar useruserPNG  IHDR qIDATHŒM 1 "\BăzRqUp,P6!6H!e!3d7 6^41O.jtQdda8Cn'ZOX2,k [b9<,3]|z;\\!R{r 7`5EoIENDB`png++-0.2.5/test/cmp/pngsuite/s03n3p01.png.GRAY.8.out0000644000175000017500000000011511461476005020155 0ustar useruserPNG  IHDRsCcIDATcpA VvoIENDB`png++-0.2.5/test/cmp/pngsuite/s35n3p04.png.RGB.8.out0000644000175000017500000000050011461476005020033 0ustar useruserPNG  IHDR##$IDATHA w%~WM & 1SK,+):A.),],?ѣt>.ט'5&OE~*kL,6F%@939抌uEI1qhN:&. 8OoP|7i[c:إrv";3' m7zzo[[`ͫpKށNUT͆{o? d-m;Jx2^=gH7ON&hd, V IENDB`png++-0.2.5/test/cmp/pngsuite/s07n3p02.png.GRAY.8.out0000644000175000017500000000014511461476005020165 0ustar useruserPNG  IHDR9,IDAT-1 n fx@9IK,$.w 3 IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g02.png.GA.16.out0000644000175000017500000000022211461476005020105 0ustar useruserPNG  IHDR n<YIDATXK D( 7!;AሎI1-Y@=y>;Zss֜x]IENDB`png++-0.2.5/test/cmp/pngsuite/s35i3p04.png.GRAY.8.out0000644000175000017500000000055411461476005020167 0ustar useruserPNG  IHDR##L3IDAT80 EMx\R2 dO)2AFWi\e CY ˲|$?-`@ #рcb~< A8hA1>zEWm h>͆+P1< )u\A.$I4$TTNpT #HRF48tTQqge bvAyE ְ18UgҸ\r}340ƕ"GjKuC}_ Ke,s+!5f3n6Tb|s:pv˾xoDJʬRIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g01.png.GRAY.16.out0000644000175000017500000000034411461476005020364 0ustar useruserPNG  IHDR kIDATH DezR&䃍.'q2LN ?۷Ayˋu`&[ |t)&Xͷ 46b󵼣 gVfm It6h7ve܌V@*Uy䑓N:Y գF :uۘ0_QA1c|3֭[3ᢋ1s ǬY3o3<ӦMo qA9W0gnP>ЫWJE\+([ouWtiʔ)i-J矃︃~?_=;eFmԡC2kT&pysᛍ^>b#@7jԘs*^ I(T #f)ΜhՊ}-4W&}EObH*4i2>gdd*TmWrEiAԸRHŨO"ㇼ<zVZ)/qZ"p!ȇ1lZЁgqV Jޛ7n\^+W`„Ff̘1k֬ӊ\΅?KG>E-DJJ*&W>p!B~(SmqaBL  9_K $)R.:f<x饗JSۀgȪ  >T#Zġ!鳈s!"a6D s]eDcV5jΏ<4d8{rJ%G6mZBB" 1/탘;7JƷRʸ7Ll)~F O%B=aι9IRRr~eAҀ:}$ Emt%J~*F`\Iφ@A9-,e\o֬9mY}BZj+VsWhLҼ_[m55Bh4Q¸D ą1Vc FֹjkSW^k*l)rz!ih֪UkK+Z7q_d@Nwg~/bt+V 8:X+.v]rɥ~W  ʄdJ[@@ 6ذ&AsaW! fHt<2Uz `됐jC[]J̭a87xH))IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g04.png.GRAY.16.out0000644000175000017500000000015711461476005020371 0ustar useruserPNG  IHDR k6IDATHб {q_ BIȕ2#1 6z^IENDB`png++-0.2.5/test/cmp/pngsuite/s09i3p02.png.GA.8.out0000644000175000017500000000022011461476005017701 0ustar useruserPNG  IHDR = WIDATM̱0Cg ! 'W PfAd/1HRJdZ"/pNA{ ceJcա=Cg}ՠϲ? IENDB`png++-0.2.5/test/cmp/pngsuite/s06n3p02.png.RGB.16.out0000644000175000017500000000015611461476005020115 0ustar useruserPNG  IHDR?>\5IDATc?`P X3t2000 v00I@S:>FbE*IENDB`png++-0.2.5/test/cmp/pngsuite/f02n0g08.png.RGB.8.out0000644000175000017500000000064211461476005020007 0ustar useruserPNG  IHDR iIDATH!0XH p W#8pb<} lI&Ir8c_f˲Ls&%:!R ]בdR9 ð#} X0` dz hiF A0vm8Nh,u]E\.de ֖J:>9 "چq"S"YMp>,jp)$IyHTA4Iu]<9Em/b5c `&t8y xfbt~?WhBdWkk3 ǎҰВdoƝ"&Wd^(ZY䯁)nSnwe~<% {oW̳/|ҧ$ d`㙾 < /k7VZLZ /lZ]R-_GOP*u`4zs>p-sË }ނ3Uu*jA/ۓNx1$BË,oҪ &ST'l7 ƴ)r~:8p'N^ZZ=,;y #%N8qi]d:i Lf XX`vg\Q\-{Ǔt'msNtQ|eVaûrg XE`Is&&:;#khf{ 4iKC6b@vF!iQsS;GV6Қar8Hy'uonҹf*㟞OdQHﷵRgxHmyKWfttMJ6^@0 4R1\n ~? g~q|UG,՗&e.G-33P*\\!u!|C\o*LbQh<1d9o̔J9DXjϛe4R,<ZW(-ewc%rrÙ5c=! (IITZ^NkKLfm It6h7ve܌V@*Uy䑓N:Y գF :uۘ0_QA1c|3֭[3ᢋ1s ǬY3o3<ӦMo qA9W0gnP>ЫWJE\+([ouWtiʔ)i-J矃︃~?_=;eFmԡC2kT&pysᛍ^>b#@7jԘs*^ I(T #f)ΜhՊ}-4W&}EObH*4i2>gdd*TmWrEiAԸRHŨO"ㇼ<zVZ)/qZ"p!ȇ1lZЁgqV Jޛ7n\^+W`„Ff̘1k֬ӊ\΅?KG>E-DJJ*&W>p!B~(SmqaBL  9_K $)R.:f<x饗JSۀgȪ  >T#Zġ!鳈s!"a6D s]eDcV5jΏ<4d8{rJ%G6mZBB" 1/탘;7JƷRʸ7Ll)~F O%B=aι9IRRr~eAҀ:}$ Emt%J~*F`\Iφ@A9-,e\o֬9mY}BZj+VsWhLҼ_[m55Bh4Q¸D ą1Vc FֹjkSW^k*l)rz!ih֪UkK+Z7q_d@Nwg~/bt+V 8:X+.v]rɥ~W  ʄdJ[@@ 6ذ&AsaW! fHt<2Uz `됐jC[]J̭a87xH))IENDB`png++-0.2.5/test/cmp/pngsuite/s36n3p04.png.GA.16.out0000644000175000017500000000060611461476005017777 0ustar useruserPNG  IHDR$$PMIDATX헡R12':HTtPN}')xAU*ਸK^aD7I.+n=M- ́{% 7'U  @AY+// N-A 76n1Ҭ7:Ul#tԡAZ)ITUEwuaW{E,5쀊n,mCbee@._ eM T+\w2hY0 |ŲL~d%m5Hdg.eeu>bMq3.<ÔIENDB`png++-0.2.5/test/cmp/pngsuite/f02n0g08.png.RGBA.16.out0000644000175000017500000000100611461476005020162 0ustar useruserPNG  IHDR #ꦷIDATh+0@O!|@cp̠<C0l OxsI~cB.mIOozK 0 J*PB}_[Lі(Q _H&.}_[@FDDwZAfÆ ADc.Be6Ԩ#l gۣ"2E ۯXR С~ua8(O#>aeE1M9s$Eh]( I{ѺPjtrMOj9* x_*&U 2d?[5bN8)1cƎ* 2eK*X`ሷi&}|sdoҤITf3f^8^rpoW2 +F{@:/QP2SY ȫ!o" .ȇ0v o"~Cȯ$IENDB`png++-0.2.5/test/cmp/pngsuite/f04n0g08.png.GA.16.out0000644000175000017500000000054711461476005017751 0ustar useruserPNG  IHDR n<.IDATXŗKN@ cm8CzvHzJl8@ꩀEg7JEbK=}IjC` ,g-1|j91ؤH {D.Qpn BC9%9CƍR 9e4)ܧ\m */1+ RC' #ݷ("'æ[DuGG(Rьcn?ޙJ QB@_{E*|!P@ %LMxV\K^X!V\Q a5 'xA^WD/I/}M"*IENDB`png++-0.2.5/test/cmp/pngsuite/basn2c08.png.RGBA.16.out0000644000175000017500000000030011461476005020332 0ustar useruserPNG  IHDR #ꦷIDATh 0Qߕ:IVxdM\LơtjIt 0H{0g}k#tdYr CT2{W`e9` SS>& ZYIENDB`png++-0.2.5/test/cmp/pngsuite/basi3p04.png.RGBA.16.out0000644000175000017500000000067111461476005020352 0ustar useruserPNG  IHDR T!IDAThq0?2TB-܂[p N )ira21$xޢa\13 0n񌑟|BĠ9rCL>4A=A(;aAJ.60 k 'm\c8LlAtpǁJ?O_A,bmGlKTMq-+70Uq;,P}vYo8}!rg}%g{)vg}/pg}3g{7tg};vg`<КZc [ʯBץ*eo̜uwW{$AE^=+jRW@rPa=)v>K;0{Va+vo?_]FLlIENDB`png++-0.2.5/test/cmp/pngsuite/f00n0g08.png.RGBA.16.out0000644000175000017500000000112111461476005020156 0ustar useruserPNG  IHDR #ꦷIDATh=21w! , FM\[߹ǹJf&r9& 'Odɒ2d@miҤCl;VP7$I76 !ûcEV[l d>>>;rΥvع "6D: u޼Q"NWXY*ЦMJ(a:rha>}!s1YVPo3`̘1r ,Q"@ףgM*Ր~[ @g&;׭8qdab].]#@O!C!L|zz\;I &!GaN?`ƌYH=kΜ9[8J-Zx|aF/VY )S.\ ,Yra鬰^8vKd,,b*.7x#%{˥V)Xwa t"( Zr V$EP\aه]J,%` $݃w5|^r=9al^$pX>(ȃt2d _ ~hÖaH"zl#2P &jAB=WG@`|Q|$bJNgIENDB`png++-0.2.5/test/cmp/pngsuite/basn3p08.png.GA.16.out0000644000175000017500000000060211461476005020131 0ustar useruserPNG  IHDR n<IIDATXv0ФNm{g3'PSL<g3B<)*c P2 @T Y`#<Fv]}Pr).¹c}]l^U 2^KaΉr&nsv{ |<e z `ZAf3Qu:lձnv8ۥ*lQ4~w|0z՗i]}RUU֋:v3@]wI) BB@  u粃R"IENDB`png++-0.2.5/test/cmp/pngsuite/s33i3p04.png.RGB.16.out0000644000175000017500000000067311461476005020116 0ustar useruserPNG  IHDR!!IDATX͖[ DqϮU3M~uyP$QBpq#lvi3qnnW6twf"+FWڱmM+JQBM~˔r1uZ): $nJI)]Q)RwRq ߹ aJO(4T.Y4_xMz2rlLJ³ ^yM+A1#~r&U?08<*qds~̺f8ƽmxVQFp#p/td,?4%:0Wo}w 6Y<!+^y(ꃕ;Y'.I}[.>3'x=AC 9v|Se'UKV'UK#HIENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a16.png.GA.8.out0000644000175000017500000000253611461476005020022 0ustar useruserPNG  IHDR t%IDATHm_hWo$M6%YfVPp"2"/e/.['ؼtABR\uR]jleiڦɟEnyy6xϚ3^:SsI-U\ƛnVʛg߼ኖsS}|de7Ygnr#YWv wLf/ZUUUiӦ#P7#'Kt_=t'ӎJ>JGmy҇o:]W᥋6C»מ<;?z3n>aڼkZI:>j!aZK61f̐nAM]@K${zܩGlņ][ZT1_GnAkvlZQYAሂh&.lǺ̼.;Ɣ"<pĖ7]# c3P)' ( G:|Mǿ05ϧ/VTlp Sѥ*: BŎ۶u":O!hժEj]=\Oӳ^U5GaΒ̼/tIGOYQsM;U0qor̈}"<Ƞ䰇0x:nXY~#2\jY3g"M+hաdA+œ!}zujt+ۧaN%GX=55LD]E5۶U.ݶ`˺UKkѝ-cYIH,(dͦ]m:mm ܴ`@>EJzĪK,Yu ,wp~<(U-$5ZQY4lGnڌ+J6iú5 j|ݶ]wOeC*Jztԡ]Hl۶| kV-7Ŕ_̆Ui~ǎ;lZsϵDĹtV֥)V-AțA{ulڰfUnegӎֵW6md!eذY1dO B̢h>`Ѐztjgݰ+(Uqebe%!TϷTui׊v]ʶgVУYHHEyGbIw{֡h6ZԭGY&_3 .þ-KfIENDB`png++-0.2.5/test/cmp/pngsuite/bgbn4a08.png.GRAY.16.out0000644000175000017500000000015211461476005020353 0ustar useruserPNG  IHDR k1IDATHc@`N?a0T1`4GÀ*pF /TIENDB`png++-0.2.5/test/cmp/pngsuite/basi3p02.png.RGB.8.out0000644000175000017500000000033111461476005020161 0ustar useruserPNG  IHDR 5IDATHS  X'1Daŷ?kzMO# 5\ 0--_e8p`R+*{>7n-wq(0gΜou\pUrrrRRR[Y Us>iĞa}G`:C5C^a# xࡲߦGȋy䉶bqUN8[..a Ոƞ={{ I)I>Pye1#CjX!Dƈp57.GIIENDB`png++-0.2.5/test/cmp/pngsuite/s09n3p02.png.RGB.8.out0000644000175000017500000000017511461476005020042 0ustar useruserPNG  IHDR oGDIDAT} BsA_O4H \+dqr27Y ͳsT̸} g'IENDB`png++-0.2.5/test/cmp/pngsuite/s06n3p02.png.GRAY.16.out0000644000175000017500000000014511461476005020243 0ustar useruserPNG  IHDR7l,IDATc`@y(!??a#.E IENDB`png++-0.2.5/test/cmp/pngsuite/tbbn1g04.png.GRAY.8.out0000644000175000017500000000071511461476005020315 0ustar useruserPNG  IHDR V%(IDAT8}"A ?5#cXd#W # vmG;2\-Uu=I*c?QA}_{7S^,6M)rG$ Cr莙(JPMmũ宋˅",GB̰GLW]~x[,f<4@0j@E*R@ȼ' $P xd6\Qx70˱H n@T́Y Dw@kT'>HI#1QیfBfz,#,ed:: +tDB05P$F3 $-0Vvvrp搭+^v͆lʻf"=5BJtZl.I>$IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g04.png.RGB.8.out0000644000175000017500000000025611461476005020155 0ustar useruserPNG  IHDR 5uIDATHA 0wC>/G @THK;QFDc$=KJ:~ ̗j|k Eʇ+O(M97卪?UХ D B_ B.9ElKaIENDB`png++-0.2.5/test/cmp/pngsuite/basn3p01.png.GA.8.out0000644000175000017500000000020011461476005020035 0ustar useruserPNG  IHDR sGIDATHұ Q3dV"dDAno,u}k/Ws@yv~A8 `fB)e`IENDB`png++-0.2.5/test/cmp/pngsuite/basn2c08.png.GA.16.out0000644000175000017500000000035611461476005020121 0ustar useruserPNG  IHDR n<IDATXQ 'Vz'#Cid%@ǓRo` VknPFU6t@(} \#؃r.@P2 hϱ+d:@ ^@9v XHdh4$>˜gų!>!& Oy nIENDB`png++-0.2.5/test/cmp/pngsuite/f03n2c08.png.GRAY.16.out0000644000175000017500000000130111461476005020206 0ustar useruserPNG  IHDR kIDATH}0?ۓ8wЂD!#x*^ D_"c.k9s<6Ox-۫f:5e; b1 X,r˯΂$$c< ²}Q (ihiXᐢű@Ҳ.R9 x< kV*5o⨨xZ6 Wa`tLȑ#%h:;+_D~ņ2200 z@6A #*B՘#BfT[:Ӿ##S>q)ϔ." S1_.O7|T---+V:_9i1䠸)yXHGLj>){eg. x1f#{ްL9iԫ34|X$ŋk UV| K-kvik)91:_PD={lٱ#[:G߉)xj y-+ZVWĎ@/k!ި(iy䩚FSewoUE੨"m20x*RQ V{uZ KppIENDB`png++-0.2.5/test/cmp/pngsuite/basi4a08.png.RGB.16.out0000644000175000017500000000036011461476005020232 0ustar useruserPNG  IHDR ۏvIDATX핱 0CZyJTHoľeMz:kAdXXX,033? ~XYY%dY(SHD{ V\`ccS ȨXGVC)dR OP*P'NNN@c57hM tPcx龁֧gn ;ǠZIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g01.png.out0000644000175000017500000000022411461476005017373 0ustar useruserPNG  IHDR [GY[IDAT-̱ 0 J z4o< aEQ/ҤlΩ%SS4W!K&=Bs%%^ڲoj0i.)ano0eI/x[IENDB`png++-0.2.5/test/cmp/pngsuite/s07i3p02.png.GRAY.8.out0000644000175000017500000000015411461476005020160 0ustar useruserPNG  IHDR>83IDATE1 }$ AhxE'nSB(Ns W IENDB`png++-0.2.5/test/cmp/pngsuite/s39i3p04.png.GRAY.8.out0000644000175000017500000000060411461476005020167 0ustar useruserPNG  IHDR''>KIDAT80 ?y*"LL,KEAŹc\X$cX' (-X _5ouH-c Љ:2<:L>KDhUs`TYuPWzɖq9t*8",c\,fhUBX06$`sI<^k)/mD붑G3)><jxX`ް+ޅ3vp(d=$O%YM@C=.Er-O]~I~Ep`]eHg=,uYc۱_/=}^ TL:IENDB`png++-0.2.5/test/cmp/pngsuite/tbyn3p08.png.GA.8.out0000644000175000017500000000145411461476005020111 0ustar useruserPNG  IHDR sIDATH_HuS)45mnGKA FD^An(]nn$ERAVl43vlg..tx4tr뢳wyn}.^VaD~faE_?X~(IENDB`png++-0.2.5/test/cmp/pngsuite/s38i3p04.png.GA.16.out0000644000175000017500000000113511461476005017772 0ustar useruserPNG  IHDR&&%$IDATX͘N@4Y0iP'r @(47(A\ΠxGpEN-: oLg3PQRP|G6TaQ6}YtZ{Hֲ6@- ;b$lP2))X{Që"4H $V]Brnf=/w6c=甾 B c2(q)U'e.Ex7Ż ǘsUM1uO2`gep G+ R1T(*ٗ\3j3J.b|h$T́8.vkQjޜtd,j<4 e^La\iȢRzL" h)X;uh빤 X9uf @Tm,NoK9xYͩ&EHy(3ܖ C C)4r3g=1/g=ImcJb7ǤE~DHY>IENDB`png++-0.2.5/test/cmp/pngsuite/basi6a08.png.GA.16.out0000644000175000017500000000045411461476005020115 0ustar useruserPNG  IHDR ^IDATX1 @E @j D;XjJ Kac؜E,BNv[ *M> f %g?l1O,:0 eY_knL5تgkV 9{r|:"uopnpn`AK` 2q$Ϩu( m. s(iG$nEВIENDB`png++-0.2.5/test/cmp/pngsuite/tbwn1g16.png.RGBA.16.out0000644000175000017500000000365311461476005020401 0ustar useruserPNG  IHDR #ꦷrIDAThYY(u]~Y!2f<2%".TRRnpå. Q.̙2b|9z u d~/----- ߣVVVVVVUUUUUU'&'''''u-1AC]R1 @SSSSS>>>>>\NNNNNNJT5?ϏSC """""B8y@SSSSSS*:%QK^gX>>>>>>.`yyyyy8<<<<"I(`D)Kto)ڋȐē,1w'ZnB[ULU RY&@>14$W?Ζ,/9GU"mĈmU?VD]*?Lnnnnn.?`=߫ 2L& Kя@T IAIIIII P[[[[[K/`yH:A$ 0F3E vH@"J655555URPۧ1Q$~$z̨&&&&&&kkkkkk}1`lllll̿$#o{?@;1dpč'`y*[MjIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g16.png.GA.8.out0000644000175000017500000000021211461476005020032 0ustar useruserPNG  IHDR sQIDATH! C PMX1uauĚh qTWfLXp`vTWs8O fIENDB`png++-0.2.5/test/cmp/pngsuite/f01n0g08.png.RGBA.8.out0000644000175000017500000000057411461476005020113 0ustar useruserPNG  IHDR szzCIDATX=01Ɲ{Fp -o^e#dHx.&qndB8v9Z8}D!& p84ϳ3`@|@$jm"-,˴eYΙQu]u4(.ਪu}q/0 QWemWem})(cw}ߟεmy?6.ơ (\'AqAHJ R3Bh:2IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p01.png.RGB.8.out0000644000175000017500000000021211461476005020163 0ustar useruserPNG  IHDR QIDATHc|_Lgf*SE`[ΡV# }`4 `-oh>x F[/+b JIENDB`png++-0.2.5/test/cmp/pngsuite/basi2c08.png.GA.8.out0000644000175000017500000000057711461476005020042 0ustar useruserPNG  IHDR tFIDATHm0 ?tvnc{ !(r N׃U,=!?/0FEBr7$q [vs"-1I^jR }?)BRMP.:* * ,BZEHY n,ː)8FD;6 6 BR*tJ8LuaB$ 4Uv]@H spҽT*!*UNVTN (AmCلC\i4 ՊUIkISAjvchZ{R]rI% 4aY!h4H]C@꾅 x\ ۶A)ED^+PT` À4 3M`LT>??1,S,S.9 }86FZm|$y*HRy_y\nmj)pB^˲ e"X,, zRa$I$I!6 ryX,8>>?~@^V TBIiBusj! "E "!Ws}.M+1!jdY00͘ihZt:Y0D'^^^0pqq{ݮ7)FC'41N)!v'''HTYyx~~t:8==8m[U1LDD)Uj@d2a1!"xzzd2 ???ёj {R|}})3u:t:uz=11 %\ׅmh4ߞS. l[Uy2yE0 0`4a8+8Jηi^v'& EQ[ÃhZJ/U* 4?_1GW9PyxzzxWa%?g s~3 (&!T*@R!fmQ!2,ΒE+ORzẮa"?ϥI2j54M0n4IU: D.K8ûn\dTVVQl6|/Dt!DaiXVvn{md" %( 岰EeYW@J6m24dyrVb$Z =s6yy;@ae&A.TXac.y%O @)ȯtsvR!O-;xjB|zAk= {;IENDB`png++-0.2.5/test/cmp/pngsuite/basi6a16.png.GRAY.16.out0000644000175000017500000000352211461476005020366 0ustar useruserPNG  IHDR qIDATHeyPgƿ+Q!qu`Ըu(f2F]OԘd5qU4Uq3 Jx,X#L@f{z;I=}녏PP(\3su8uTV (% -bmT֝pXե1u}I)-?mk?/7QF?%4jςiyubPyaeD.\7H T[,!cOpXi#سu2,^{Z ?wm.k/6&xJ&{gi Nq7 tx.lPN;` V~n`F7#%FAu\/zG5;O6d~U=uϮ^ -ɿ|O:y@ rmۘڈd˷4EgP6 fcb#K߄s*^%E{L1ͫƇ`Ghoȉq L|,--Z 2~c#x ÿs@xpI4K0:Gs/n&{X sJA f\go{˧ⳟ;&!8v]{;E>13Zd{MaRjfQJ%.{4׆pPGhq-5 ނ z ۽]ď=׳oY (J*r3;8 <]Ѯpl)A#0ӷs @Xԣ%+ccd;Mi4T4*YklX;O$!hqG:ZY*Kei<$gf7rUjZŪYfլ>.~JO:zy,DJbg_؈Sh|4JtO6:$a/Ҭr"l4fh6M,¿ E t iaPR8N,uR'A.Nt֟U>R  [+| "dtt;tgh:{ʬb!N='XI!GAtθK͏ Y/&dĒY2K⏩J(VZ#->Rnza| Ԃ_j ]7Zp/4P"*.P ./ A1_J 2p4` ]0s(^Fyťaycu'X\uIi:7IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p08.png.GA.8.out0000644000175000017500000000125711461476005020054 0ustar useruserPNG  IHDR tvIDATHNA;=0Mf(]+7>.t҄7D6b@ bCBtSΩjG?S u/^/s0`5܇,LCRVh#2͘P9,wYmRF$'cyӤ4TG%N|*C.V78[9*a]c@j =+S[:0-ˆ:( 0 T3%`WNMpŠ*CluKȁh> C Zp(:):P C!αC 9Q Q.zMOv4f"z!afbڀaӺ>$J^I4zۘKc%JWuW#t?Ҳt-60ܗFV$]Œt+҆z@4gxR.jIo5wwwڭ&5slr)ӈ|!'&zSgIYmT@?W:X^@~@܉n*/5pㄬp\'~[t :l!-PrPipՈ|.ƫ>6|Q!krMً%*5q*uJ]%J]N`3/}I25~{c?aAV:(#gvBŅ\vR]Z@K\BFNIɩT*!tr"]^I~ !MWT,ŢaP,b(R2\Z`#6?Z +Z?6Zt%kqA8܉@Uf@ gӑŰt:k"BN,Ƕ>.t%ɝSaLU-nmS T! |_])L†Nː42ŋBa?Xr/^ONHR:ĺ aBܭ5PCyu, iR`?'[ ?ey?Em#QCV,59-PHua\]U8贰.\oneo}$|d2OZ2bzXTݸ-\<.z:{5ϊhS277 LcrgyGy]y -Rۼ7z6\})ݹgO6 ˻W ިc0⺮\hQYۭr˟JN>J$Z_@0õJk!0<f&mьg _{GV~/J7/ +e@Fa&"ncl' {KF*UpU] Kw{ 9(Qꌣͽ]DhHm'æ9Ӝy=]^3HWmrPqC1'lzl=mi$2dM`S%y7$K4zl'{qCO +~f;iXI7S.#)nK:nbq2Y?+fW!l/IENDB`png++-0.2.5/test/cmp/pngsuite/tbgn2c16.png.GA.8.out0000644000175000017500000000145511461476005020051 0ustar useruserPNG  IHDR sIDATH_HuI MƩۼoM>[sbk aCixǀSz<4p,Z9eԣ;A(bpgxY&Zk1^Z-k`ޒ yϨˀBJEjlSnUrixRRIJ+șS`ԩhĈ {o^LCD0qrɜ9FF%_9%XVغ*vٜecgLIf=wYw:hΗ8]`Z3b}_ICtcԘ]R3"vIi {[ٸ3Qْ5uՖ<$m9nT2iQ{IH?EQ *2l*l~MlP+yQ2˺^Rjt^WF)h1/̺"c1{UF~VRsHj"-*{ 1L@)cT c푂UA?hLDJF,nOlN WnTQ m}G"SzAR_ w-Q<֗tĻB 0 ~)YqPuI +1ڴ*7er *5 D*lB@IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p04.png.RGB.8.out0000644000175000017500000000053611461476005020172 0ustar useruserPNG  IHDR 5%IDATHё D7Zh!-R ieCΝxPD_kZ@+gGr8tAh,Pơj{Ryc R(TFܿĊxUUvvQfv6u$8< OS^-^-O|HYTk6^1~jE0ƒ WO:^!j-E!jx[Rox~9(7sXQ4U `7EwPR7wZAv38Jw|O-QO[4@;#CS\yIENDB`png++-0.2.5/test/cmp/pngsuite/basi6a16.png.GRAY.8.out0000644000175000017500000000142111461476005020303 0ustar useruserPNG  IHDR !IDAT8]n$UTwόwaDHA"%ExDBw^ƞ>ݧ *puݜC/ \ 7:zS_t[ŷOuӘ:/2nN]9kFHw]C:继wχۧ͊*eoX ͸Y˿=:&91񶪗ר~OyH|oZ>3Ae,w>mX;whv pd,/q@1xgajԲb@X^.CgaUf"1PKn6i-Ȍ+L(/. (Uj6UYȲ^奰>"o\Χ,8H"L۬O/_LDYD95DV)HNjs#L۳FQ wΖe9O^y_޽(g4# = !^hi]9}w֜Lr^Q c}|gͫ7gۛ,#䈆acv>q$I0@ЫϷ~C嗻stsRyh_ﯯN]SmV_]{3vΚ}]Ab~aZ9j\}}Zs@>ݺGou>No~>azf"8g˂am˗i] Wކ>ZY_LdU0aE% |unֳDVB8W1x߁nj3Ԣ匤 J Gu!cV5Z˂ 1^ևU-EUQ8Aec3DPZqU<IqpJ2s5F)%bp Ҝw]B$Q %IENDB`png++-0.2.5/test/cmp/pngsuite/s06n3p02.png.RGBA.16.out0000644000175000017500000000016311461476005020214 0ustar useruserPNG  IHDR\3 :IDATc?`d(ǫ?C'T# h IPGz p aIENDB`png++-0.2.5/test/cmp/pngsuite/f04n2c08.png.GRAY.16.out0000644000175000017500000000123411461476005020214 0ustar useruserPNG  IHDR kcIDATHK!? ^k#\\{z/2;O`tuE%Դ#$ ?I-}l% O/*03331`X.Q$dd 7<ATq, =-6OCÞV\Rp@<@`ώ_]GEx`1}U%)Di4̞3Q[`Luϴ #\3;F>o/ڏȲr$|Gҹg&mWU632ˮY+k+@v - `2A; ;)cȘVXrH&2;pk<<8 +K^gd;yt ){Z˫8s̉8qq)[!)<5@/aGNgCtGPqLx;&A0m˜6R%{Euʕ5ALtc\UQ#x*2e`n*2>CY$l-3XiD<IENDB`png++-0.2.5/test/cmp/pngsuite/basn4a16.png.RGB.8.out0000644000175000017500000000271011461476005020160 0ustar useruserPNG  IHDR IDATHVnJmL6-`K䁄ez6@>kEP$㱐!Ip5ւ pNUuթSCQJcD !8ĔR!DV4^cF0MlfYVEYx<"Bp8eYEeY{)nvB!3j80ƺ+BHEQtREQy^E}}vs91TӴZ$ Q%,KQ%PiZE$Iycq뚦ilT M<ϡK@'Il6cu]q0c180 4 !mi ]REQiBzG)ujaXu]uiQia@,+ʲ:(}wǶm˲0# C((P a뺀N1azj(R<ρ s)nK$0 /_6T7ML)mV8 V+] !N)i$IE///ժA ,!ei꺾\. p]H)˲DI)$rzn[gR2i3 cXBEQ a>==-K=tՆ>B9c*MSPEv0eY^KL)=;gt:l~zxxfx8Aym۪-?q1z3ƎT5Rʋ^7N}Nd4O)h5倫}Dm#N4MjC}ua`u~! ρ"!DE!twwa?=2lSl2}d2N}d!_ti>h.Bh4l91WMi$(b}8rrۢ !B[q\.onnAR]$A0 "2KzWaZ/// 1ByvͲl\(K)zz=(߶m45MCi۶yK)XVp)ל]U~~8FF8yoooie^CAB 9QAC;,-%,qƘjjna05m6Vq E,Pnit^ׁH8q+W%Cs$h4`q`38L5e)kFi9hH!̙Nʟ)$ 2S^:dj!ArEL&t:a84P`áctB'3IENDB`png++-0.2.5/test/cmp/pngsuite/f01n2c08.png.RGB.8.out0000644000175000017500000000170611461476005020006 0ustar useruserPNG  IHDR IDATH_Dec;WhH܀+c/{ ^7@ ZXH Yw&vN2֧WUUUDJ*U]Of[J.鲀 d '`Ԛ- &(4&w92Ce!jm+;c4SyO)J(.(;L4zB,Zmȹo\wTBBsd 5okhQ:UVBvR)%)ka PrbUǀH B:tm]cwQ/^26 V+P d Y~+dD":F?k5}^Le[-XZ"%U*xh}TJl}AQ>TuU̯'ҕv` oR _<kmd3 n,#Gąg94 ?=t dO444 mKuVlZ`g}0Cla zxPBgЎ~mU801xٳ?nL\g3ar8q&r-#م5 :0B*}RGYHVj;A ScVrRb IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p02.png.RGB.16.out0000644000175000017500000000037411461476005020247 0ustar useruserPNG  IHDR ۏvIDATXUA \?Ӄi`FbLKlo,BxTrt nA9Km["@~{m'iyP?r48__.r~ٷ$ws-w߿!n$t[AdX2O(du}rW/vwPʬPs`*jF́٨90o;$= IENDB`png++-0.2.5/test/cmp/pngsuite/s05n3p02.png.RGB.8.out0000644000175000017500000000013711461476005020034 0ustar useruserPNG  IHDR &IDATcπX* LV'L_3 `>(IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g02.png.GA.8.out0000644000175000017500000000020611461476005020030 0ustar useruserPNG  IHDR sMIDATHK DQl~ n ʢoZx,ֻ-`{;p=RɃHt8B#QIENDB`png++-0.2.5/test/cmp/pngsuite/tbgn2c16.png.RGBA.16.out0000644000175000017500000000371211461476005020352 0ustar useruserPNG  IHDR #ꦷIDAThY_H#WE#0 $ ((4*TB- ]A-M FPX![k 6yBЀHM1B"Ӈan::ofsϽ#_Y뽽=A~]a4F,/-----@{{{{{nVxcccccFhT?88888dP;&GUNYN$~\.~?%ŋ/鎶 `X,, v p}}} N 6A˗/ fY1Vp:NӲd2 JRlnnnnnj7_ p~~~~~.˳@2"2PVd2eş?P\q޽{ =g2ݝ 5,ʲO*|>DDm56Zi@aܛs,O,,^՟\VE@Ya~`CE"ČHVr\d2 Wa[Z@t:(5e_ _}1>}PVZEÇ`||||ٳ\3NOOOOO5 HL דn7Qcٙ GC!ZE1 RnXǏS~Ib1]rjا΀%j?hm2R ^OdV2ܣGtb@z''% 0`{;I67I@ T prrrrr\'D"Ӓd8C qiŽ^2I2@(; #hdl䣏H*!JR) h t:NSx F#r%h _ F I0HrrB$P+jf"P*Yv; ^^:%& ބKד#)aY fٷTJRxB]kO> "5D"$2 +ht:e}8Z@&w{onB5?믕6HDI(:á77O U0pyyyyy  (T' ?+]I$f$jZV%6[ vvvvvvaxxx'FF@0H=LNj^QKff漛6_v8^d2x<W[R3 B!+P( DQ#W!)Kf٬0gr0 N c$I$C@ <:KpD"b@v%\W{XnP___SϮA~6-VXa_EjGfUnV `PHn^l%wQy@GGGGG OPpQdDQ Z Z188888Xs}"499999>Kfj100000@'I~?puuuuuUi{kW.@rLOIg~0T~A>G?՗;+RYjv <VVVVVVy.շAZiYbp:A)Ԥj(s~24:4444434cQGiS)wWhn>'bu ^AIENDB`png++-0.2.5/test/cmp/pngsuite/s36i3p04.png.RGBA.16.out0000644000175000017500000000110311461476005020207 0ustar useruserPNG  IHDR$$ƗtM IDAThX[ =a]~Z i!ؼ$<>|ť,=u1O:/с}^@=#GյM갣z`u ڑi9jt*2BgF\J,41=rLYHP'z#POhvwږ[ln4slo3K>EΗ@ [|GdbjpVc!EcEm¯b6_ ]qY!˼X mkRl_݊/0бyu|cl~]& IENDB`png++-0.2.5/test/cmp/pngsuite/f04n2c08.png.RGBA.8.out0000644000175000017500000000203011461476005020101 0ustar useruserPNG  IHDR szzIDATXO#5rRUT5j=`Ϟ=+vs j,YFX43q:I=ˮJ;D`S=?;[ PPUS连 &BA#n⡁ȈC{zh-L9Fq.'^},0U0L7bz>z"P T6 Q 揮K@&#oJ`澦n9 1p3x-0w_XRӷPo ,}W sX*X l|ԤpT굓\j9q@XhOXnO пBQB5Bcl}_7؋CEU 6r<1900z-LP]p N.\˷#+l'M(_+b.cvVP9bO;`nz!z4a6z yik#k|Źͽojzg~ubIKhJԢ}=`Ya90CיAb  a\VsiCȚ]K[eJoXCdWg/Y\!}<%DWi{PK%>} >w[ l]\B 6K(G?gr@ĽE}wNAjҶ` -t.b7 lmA#;TyF3Jga=q \9Ooߊe0*Pt^lhxX*3g1`s1Ic:!^_ePu =xU}IENDB`png++-0.2.5/test/cmp/pngsuite/s39i3p04.png.RGBA.16.out0000644000175000017500000000105611461476005020221 0ustar useruserPNG  IHDR''4IDAThY @5tվSVl"HTO_1n*ҭ1j%-b3d閹3*V:kJ^Q *t|:e N2"[F=˴OLsmL zfH4q=`XWTX@/[l[^ 2g纰*x OSa]1f.NiN NVcp9K*P'-TlSTwX<5X@mqbX(+ ʵp[fVZll&Ŭ'd/MjYG{R;\ʹ_cCcIz0H=_Gv6b&7-j'>yz(R:}خ*U+੫rcʖhtՇapWV4 AL^Ns#zߨ87쪽j*gm虚>MWp]RK֝*IENDB`png++-0.2.5/test/cmp/pngsuite/s34n3p04.png.GRAY.8.out0000644000175000017500000000040711461476005020170 0ustar useruserPNG  IHDR"",TIDAT8!@E_ R`*z* F5x zG  0TVl 5;3II3ٰ0s#T1xvAK(Rh,'ͨn`(S-DԸ ,jPIa:R@9hpeAkS(%KPBYg'T&yGeY;0P+H^lIENDB`png++-0.2.5/test/cmp/pngsuite/s08i3p02.png.RGBA.8.out0000644000175000017500000000022111461476005020125 0ustar useruserPNG  IHDRXIDATm 0 C ;#S>B@!QW-mY-Z&`skcf0]sNO]x)_!f2+cIENDB`png++-0.2.5/test/cmp/pngsuite/tbgn3p08.png.GRAY.8.out0000644000175000017500000000123011461476005020332 0ustar useruserPNG  IHDR V%(_IDAT8}OHq?A+y16W3FnBB#)%$y([]x"(!az+[Ԗ^mԭXݻM{~x~<_=aÝN{u?3ӯ9rwK=[osw_}ej\Xn>P:g.hPB'{ز^qktñArLZ!ʦ:<ͤaRBKD_]UtH ͸"*RxA4'ṊA|Ut(㆙ WDf ȿ<4#J.aҰt :)`[SQ_'^m>B>jr`9) lx*T -XP/8S\@DVU5J:_yJWzٰ̲4]ZYt ZbR@{(cX+ b=_5=>s :EmLmʥ:z2k73 !8&d&c;Ncyk-5B@4a=Aj# Ȋu jxQ(N_Gu:+IENDB`png++-0.2.5/test/cmp/pngsuite/s02n3p01.png.RGBA.8.out0000644000175000017500000000011611461476005020126 0ustar useruserPNG  IHDRr $IDATcd?- IENDB`png++-0.2.5/test/cmp/pngsuite/f02n0g08.png.GRAY.8.out0000644000175000017500000000045011461476005020134 0ustar useruserPNG  IHDR V%(IDAT8=RC!8p7.RX[XIL,7`h"? >~v UދwsZcseeG!<=۠H#i\BvDx]J༡}u*5pմT5ax8l-3?/wDMr">Wcա ĎH[H-$BGQ8IENDB`png++-0.2.5/test/cmp/pngsuite/bgyn6a16.png.RGBA.16.out0000644000175000017500000000653311461476005020365 0ustar useruserPNG  IHDR #ꦷ "IDAThݙ_luKrM.ZKʴRM Y.R2Z[Ɋ^qb,ZɊ (0PrB&\)(D~D4KK/9wUU4AΝ;ww|猕i |ؘ}}+M!3߀ޱ&}߯ZfF5[,@f.3rZtL017qHÿto Z?TR4٢:O~-{D`kEU4")sZHfn2@6RtXO)ޯ;voR'zֽO۴=5ߣDOqD Oc3`co47e k$9SQ aȗ~U5`:OE5CJ :u'|VMt?\3%'*JS_7W&; 42@THtZ]m'Ի6tmrwK'Z׉^щ~QCbV b^NJ^Jr宁Z S _XfxNEOfͅz-/?ջu5Dp^vGVˏGW5| %˿\5ėf%XYhNf uSSn6Ys;;:p-'AW:UGpxqB?7GsZ g`/f@%6mW#r?zf7k.{zzz _NF٪ At5Huta>4u-⋋=wTK\*< e7 M@x޶"&nܛ9f5|>IEtSqEUvvhƫ ^R\TjVz=XtodɎap~~ p}c ׍{3lvB}ކ|9:^TyJz5%WkFƫ%X go|h7#aL$7u)7ݬP?*>WU4^Y+/WZO?{1+^ |{ w u'0oh5HM@3~ݸ7sf7k.7e-/NK?RxZ s'@/eAY@ [?p| HQtu yfKϼQ-ѪHM@3~ݸ7sf7k.ԇ _|IV?4ħځN,'[3kXf|>o$_NY%an }MEFj0&fqo攛n\~|[~|!~ݻj%VyN&#āHFq@ ҊU;2t`@2zKoT۵3=-nj7#aL$7Vlvkeݻμ K@pR (#8grRKX4L;V݌14׍{3\67aZi.3o~`i޻ {pi 3 =)opQqdv%)3{>5XaXiH4ь̤+[h7#aL$׀fiZV!_ Cɽ?x~;w1[o zDE3ؓI~]Rl~%yZ+1S5ISZj݈VF˜H.~xVv: N]mx⁍/43}Ȉ c'ݛ l/Ib*aS1Q&1%?3j݈VD\9߭;wR'3j=K3Y ҕx{vi 1\[SΦx>lOcJF ޒ4ŨuWGjO9hn$83*}}§Rw~;@4k7syv|aE%aL>  j0&3gƫˁȽ_BAqޓ=vA&folnon4|6jd.dndoGq?e `^IENDB`png++-0.2.5/test/cmp/pngsuite/f02n0g08.png.RGBA.8.out0000644000175000017500000000070211461476005020105 0ustar useruserPNG  IHDR szzIDATX=0` 3VttM^Ca|$37~l`Tz4!If{EV'"DQ0 ADApWJYR!ZX)5zx2 1h^M7Av30Z?r4oit{O^Vei혓 l6.ncD0빑ܔe$A)<ޓ֬Ii%1(`^sV|(8\|?82rZ~|>,ˏ!AөS-Y>dmrP5)ʰ Bc>sB|~0oF3 Ѕv#5|"Hk  >>d_IENDB`png++-0.2.5/test/cmp/pngsuite/tbwn3p08.png.RGB.8.out0000644000175000017500000000241711461476005020232 0ustar useruserPNG  IHDR IDATH_hSw?@#^i/4@of4Z`UVf )X1`}Hp` CO v,fP; -Hcb$=ddf]w=99k}6G^|:x(޽{&E1& @Q'O_>nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gzs0hgIENDB`png++-0.2.5/test/cmp/pngsuite/s39i3p04.png.RGBA.8.out0000644000175000017500000000074011461476005020141 0ustar useruserPNG  IHDR''aIDATXVY f3gȩ> &LG;bˋL@T˄CE7^&I|]s7q25 :Zx:5ӿt]<5csP LkӒJe2 TR/B۠+H Q\*{@2[ Cir\"2087't9A_f<]S~Prb87lrwf-'M3_5sWӚ/7Y`4"=ҏg pّ DLR\_>ƎNqSjYn-xh̺eBtպ]9s=Oʆm {kԏQkZszZ3SkkxZ{E:oQ+UiA"t*9Z IENDB`png++-0.2.5/test/cmp/pngsuite/s34i3p04.png.RGB.8.out0000644000175000017500000000064311461476005020035 0ustar useruserPNG  IHDR"""jIDATHUQ  ޙ3phַ8c_ ,Āq=G]Xq<^t 룈];> 'e:IQ;d|9B!UR'dw@HðzUau2 =pNp7 B9S:z P*J;ZαOrM,yr1`[N-,vkALxl>s& a="}uL̓Cb+&mI$ t4Cm'2oi#iiJ|Ҟ$yy)O&߀25OzLϩ%1oF#hi|$YIENDB`png++-0.2.5/test/cmp/pngsuite/basi4a16.png.GA.16.out0000644000175000017500000000542711461476005020117 0ustar useruserPNG  IHDR ^ IDATXpTu?Z=IowB2O߄5f pњf4b8O5vH\ Cc7Ԯ#-+06P ЂzW+tOL2m%K,: 뻇oތ! ~>6K2m4?)u7,㍝4ueqCYcgg' i!lB4M\x2s&߆OiҮC-hDýgt<Kzz)]}?30.W\ZQKiپnp7Bn(A ;`n~"OÎ, :X@apy(b.7 9-#X1s;WhPfS!6ئrͬ’(T(o+ܟ| KWcf޶܀ fC>A y(kfPEMpx4t! ٟ%kx370%8$NA-!xzX!jl5+ .S3;-[W~u>Gtu,_WՁS7_ի:aTnZM߳0ctµvx,jq(VAyOjoBe-oA>k+?3V̮ū!xS [3O01 'wj칷d/SU槜wpx6kfi]^.#jkFS dF0,~Fef[7}^X݆@-xOC^#AQA ̋ɇ2B*Kik * \,koBZJ<w||&f(o@)Lirm^[Я.OFJ[_ye_uJȿ:)d!?eC;2zFW^'d2)d2#z3\8MoU(P̮Yӗ,Q lȞuN]s#ǯ\++rB|\H!e7n5]߷#BR r ,9gG$  ; &(\ ?k%{M+0lrow[O2Ip An;nC[0c5 {r Fچl늺fVXH] Y6_{6 Y-%B !?2uHM̋B45VL? cp>f֖ܷfEW!+7oB`30~&k74z<©̋uC_?0/MoB3 cV2|*( aHA$aAy٫.}fs]yu]uN΁Uh = =Ms>=ㅢ0%-C/ SRRaHv {a`z>C0EPs ʜGB't:p4t@IBK,# )ȏ7 _MHoFH,k*nvR3΅!nw!WIЅQ2 o? 7O0`7ȓ0eHTlͷ5 ƺ ?@w.3`>aoW phJς~ CoA&A>cQHoR): ӡ\^7_cbtƮSQr '!<PoA^r]P+a"0$L0d2&ȝ0`pttͥ4Wce_׋ȺYqa@f3dR 0\N~ UTcZ$XCϙ!C(9q>3Z_3=g@ BޛW;I`RU}]N;ծTC.(σ@3;`|ۡh thA ϙHZ7A4۞$lZHxjks# !(M@LO@ ,{022 ' }g|P\_{@MLG25 >i!'505-0e 䅜Bk)F[a"J+[4Bo+PA(x|%EqXk@G>3c٤ehu![HPSB 9!! 9uyBROH)!}B?+Bz]H6!f9z@ȱ+*!'~ $_B*T2gys >!H{I9.>2IENDB`png++-0.2.5/test/cmp/pngsuite/s01n3p01.png.RGB.8.out0000644000175000017500000000010511461476005020022 0ustar useruserPNG  IHDRwS IDATc``]ZIENDB`png++-0.2.5/test/cmp/pngsuite/bgyn6a16.png.RGBA.8.out0000644000175000017500000000227611461476005020306 0ustar useruserPNG  IHDR szzIDATXMr<6'&KnYK,܀dT2[X>Wu9T,Oj5^A1DCAFGGkŸJ(uqTz_3!\-n\G-T9`fCcL/ST B3v%ٖ3| CCDk@Z RN (ޙVF'7.FBp\%d ?BwNT";OB< @dѭeډԞpHhGb#t֬6__ ?Ӹ)uR=Ѯd7!_~Z5`$Uv //J[irxx{I~,͚ 80a8\ ,Bf\I|7Fu:+ ƀ:#l=~]Ka}3U% ݎo]JwKQ)o5`[vsޖ:+ JjppZ\7vûf7EWq`_!PW0&$*Oyet~=$!&&a˞~ <}BAXtH 3 f$c[x_̘Q686]>|C؎pTTs;|DΒ%9O|x{{v@9@L/@q=Dw;7dD(\\|SN@  141>/5!>-->!%3j<h@*nGH#+rȕ x( )XpI2LM)UqbыW4=KOC\Rpχշcan+^Xj&3S Ԅ0"ڱEKv>53;p@wCEY.d?- T L֌^IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p08.png.RGB.8.out0000644000175000017500000000117311461476005020174 0ustar useruserPNG  IHDR 5BIDATHŔnA9*vg0EhxzG@HHG4H!UKw=QdY?;{F@hhF[ V+}D⒦y ~)K/oXGPA5\8.p k5|X59P5į97pWԡ l$s-nq!8O] `JX}_Oos08ǜNe&NCp KPi \%zB>VDfZU0a[ئhi]Ԧ##4K<?]$3iVSi͟tp% ҄8I ]" $b2*w0PIi HCCPv IxdӏpUׇ37CkQEo8 cz=HS뢧Stu!/A/ uMlB?|y8y< LSO8zG(խ=@ G@vw^e &;S:IENDB`png++-0.2.5/test/cmp/pngsuite/basn6a16.png.RGBA.16.out0000644000175000017500000000653311461476005020351 0ustar useruserPNG  IHDR #ꦷ "IDAThݙ_luKrM.ZKʴRM Y.R2Z[Ɋ^qb,ZɊ (0PrB&\)(D~D4KK/9wUU4AΝ;ww|猕i |ؘ}}+M!3߀ޱ&}߯ZfF5[,@f.3rZtL017qHÿto Z?TR4٢:O~-{D`kEU4")sZHfn2@6RtXO)ޯ;voR'zֽO۴=5ߣDOqD Oc3`co47e k$9SQ aȗ~U5`:OE5CJ :u'|VMt?\3%'*JS_7W&; 42@THtZ]m'Ի6tmrwK'Z׉^щ~QCbV b^NJ^Jr宁Z S _XfxNEOfͅz-/?ջu5Dp^vGVˏGW5| %˿\5ėf%XYhNf uSSn6Ys;;:p-'AW:UGpxqB?7GsZ g`/f@%6mW#r?zf7k.{zzz _NF٪ At5Huta>4u-⋋=wTK\*< e7 M@x޶"&nܛ9f5|>IEtSqEUvvhƫ ^R\TjVz=XtodɎap~~ p}c ׍{3lvB}ކ|9:^TyJz5%WkFƫ%X go|h7#aL$7u)7ݬP?*>WU4^Y+/WZO?{1+^ |{ w u'0oh5HM@3~ݸ7sf7k.7e-/NK?RxZ s'@/eAY@ [?p| HQtu yfKϼQ-ѪHM@3~ݸ7sf7k.ԇ _|IV?4ħځN,'[3kXf|>o$_NY%an }MEFj0&fqo攛n\~|[~|!~ݻj%VyN&#āHFq@ ҊU;2t`@2zKoT۵3=-nj7#aL$7Vlvkeݻμ K@pR (#8grRKX4L;V݌14׍{3\67aZi.3o~`i޻ {pi 3 =)opQqdv%)3{>5XaXiH4ь̤+[h7#aL$׀fiZV!_ Cɽ?x~;w1[o zDE3ؓI~]Rl~%yZ+1S5ISZj݈VF˜H.~xVv: N]mx⁍/43}Ȉ c'ݛ l/Ib*aS1Q&1%?3j݈VD\9߭;wR'3j=K3Y ҕx{vi 1\[SΦx>lOcJF ޒ4ŨuWGjO9hn$83*}}§Rw~;@4k7syv|aE%aL>  j0&3gƫˁȽ_BAqޓ=vA&folnon4|6jd.dndoGq?e `^IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g08.png.GRAY.8.out0000644000175000017500000000035611461476005020312 0ustar useruserPNG  IHDR !IDAT8] 0B{C%>x!Kܦ$]!2,$UIBH"*V$$ŏ Jl, lܲ 9:eSW}q@Şp쿣;_|?/ }.^VaD~faE_?X~(IENDB`png++-0.2.5/test/cmp/pngsuite/s36n3p04.png.RGB.16.out0000644000175000017500000000051411461476005020120 0ustar useruserPNG  IHDR$$>ӌIDATXA E?ޙ3pj\JiS&ط@DJYYf{BGg* HlͶ l%P"$(eGJĺ%iǃd㧨oJNESHw99W)RMuczR`;.nzEհD4{`T鰶ǁx (zŤAΔOɶXMX+}Llt:ݑ91o8k"U~ (qS57@"d $sT]IENDB`png++-0.2.5/test/cmp/pngsuite/s37n3p04.png.GRAY.16.out0000644000175000017500000000055111461476005020252 0ustar useruserPNG  IHDR%%e0IDATH!@IF$T!jjŪ 3p=Ş-*WTP=$H Ȕ7 ^_j!i{4/K~}C-O0g`,j=8[گZ tl0fT@&PEwQ7a)&J;wW`zx$9 Pu,|Sfb7)V[%tI(BSVaFk\5` g]0;<t$(Q$ഔ@ؙn|P@0DIENDB`png++-0.2.5/test/cmp/pngsuite/s03i3p01.png.GA.8.out0000644000175000017500000000013011461476005017672 0ustar useruserPNG  IHDR&MIDAT00<|ð1Ǝ eIENDB`png++-0.2.5/test/cmp/pngsuite/basn3p08.png.RGB.8.out0000644000175000017500000000036511461476005020203 0ustar useruserPNG  IHDR IDATH! D[C?OF/tDFt%,%u7,")B~;kuT'`t9vQ~ ;9r?כ;+N-Y_qd/Dˊ0Mo=H r9ZEjnjIIENDB`png++-0.2.5/test/cmp/pngsuite/s32i3p04.png.RGB.8.out0000644000175000017500000000067011461476005020033 0ustar useruserPNG  IHDR 5IDATHK DܙNݳXrzGA(},X:, =.ņ62Z78`+$(Zm̦6O|\; $0[70%Y/&W,Ƣ{C][鮠Fd0}>l{ځT*U-+ePy0ޟ ވy*%OnCyރ㖊CaKPMyux0*ľ2wiVh)dQzp)5AU5^O*Б>X•O<>C.jLCsǖytBޅC0,׎@f+ڇL}@&6p+pb(d=76ɴQIENDB`png++-0.2.5/test/cmp/pngsuite/tbbn3p08.png.GA.16.out0000644000175000017500000000173511461476005020143 0ustar useruserPNG  IHDR n<IDATXAU˩FHsJtԚFjh& iQ6EEp $hPERAa*(hDñFmjP8܇}}{?绷^د2. `]7v].bXQZ 6|p7>>s%sDYlE<؁q,W]2dLJx7{0Oܷ)d`7֦uwM/D46k,o" u\َiN—؏G` I˕Ҭ'UpK+ЍGx q{1|0科O~iy O`1xUV9xX]%eӆg)0Fi*IFd`%&&R܎ Zq/ǟ" uP`2=%/Έr4JXߙ}":2@.1_Pa\iyN,"7⊨0Y$+@ߟOϊTq7fp% B?_+7GZ@pnѨ bhYpP3"%^%SG"x .֜d ߈XJ>= z҆y9y*z;~$o95WU*2#th-Tܔ;DDj !ᄒ' &eYvdHRAYk8efnA / qKoA!1% ƏcR Wd}]@£b`N^tXhLMvXTI.n$=,*bKʬggr[wVҬ'):EI鄅d& eA@lƒ9KSWQ-|I^q,NwNѨ^V0O+?gsxIENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a08.png.GA.16.out0000644000175000017500000000023011461476005020076 0ustar useruserPNG  IHDR n<_IDATXҡ 0 Dkk,nI6HQyHH| ,<}4IҽtE[`4`<4\4OzzxЀxpIENDB`png++-0.2.5/test/cmp/pngsuite/tp1n3p08.png.RGBA.16.out0000644000175000017500000000305311461476005020317 0ustar useruserPNG  IHDR #ꦷIDATh_hTϴ*рF0#$P *U!>Ȳ`\h|Z}Z*hi󐇀)dA0B@D)F`d07L3™3w~{?w3gu֏lM6Ce?5UQN .ڊ6 w@2n_YC ᪫zUdOv fe Y&ermq|'w@&Mx≬N:1mk-ZsuOV Uw@2|뮻{e.χN1c`ƌ馛Uߪ9W^:Sq5KYێ֫GaoB$fW v@*O|AW\u9L4iAV9N+|=_Ĕ39?%rXT\ZkN:l\6.[; W>}(䌾堃Vj4n?|5 +]w|spahR a]^xs;lYwq5ay2nFʝ+8ۜ#wޅ᭚Q:91g~|a#1hy;. VG/)S:Z>B: -tbĊ\hԨqR7sʪ8U6zꩌ8PShРaCז9 5M6&j2/d<$t:  B>p|||||lv{~UHo0Ғr\<< BQje3 B@M,S&JpKs:N\O,r)ټw·d^ '@  UnL&dxa>|8J% )BBx灭ݻwͲ, l6˗jj5wt~ ~}6jZ7 J΍hThrXxe#T*`zeOY~[l6*W`͛7oy<dz loBP(DU@>:::::v:Y@oI*y`xaB*&&vp:GF8Nux~o'ӧ'O'OVWb.rnx5 L&IzFh48&(x8< 4T&@0H `b"HDfl~xD"H7i@6f, RT*B(2ٗy[Z[|>EzI |x|JPЅV{gg$ˊ}y,b\kE89= LOWUUUt:N~g2L&)|P( 3i). P Drz)Td`0 Y V֖N3PyF?F 03,+d2YG ..({U`'6{vvvvv033 kk@#|| ={<{q:iZVKAL  X,SjhцE_?Qt:Nh4Fp8ٮ.1MD[ *>er\.cYeY奞Aޠ@Vj4< 0࠘ qnjFH>Na::`"Ijsn>7ҍ7*1yT@HI$@$2ܬ--bpohhhhh ޳Dzz^r\NHw0D|a2r&˦,KX^+Aoooooo%w8RAZ܌n:*WUd U~hfl6奻^uL<:::::Z>.H$I%+t NOOOOOwKwgѴ[b_XXXXXX _-Jw7JMGP2F2Dڇ(*{^-w)SRRդ߿J uZ*|+n}}}}}}''''''-/ ywIENDB`png++-0.2.5/test/cmp/pngsuite/s01n3p01.png.RGB.16.out0000644000175000017500000000011011461476005020075 0ustar useruserPNG  IHDR珝IDATc````_)IENDB`png++-0.2.5/test/cmp/pngsuite/s33i3p04.png.GRAY.16.out0000644000175000017500000000064311461476005020243 0ustar useruserPNG  IHDR!!UqfjIDATH0Q:pE$""F\UqP58"qBDv%0Ydxޟz+h͈6 i$׈9+6t(bD4 gu@}I٤u2<hyȕ-Ba2zd.4c6JDe4bN͆+Nsd{u0PZ_ 1S,A,+HaI@KϪ jX X¨Spx!7gn"PO\g}_tPWYBf;08sc5Noa0WD.U\8Х;`]u_`F?W FBT+r;^UGxwIENDB`png++-0.2.5/test/cmp/pngsuite/basi6a08.png.GRAY.16.out0000644000175000017500000000037211461476005020367 0ustar useruserPNG  IHDR qIDATHc4cƷP)C&E "{tuZUDx 3tNKmIfP@HSB R  (`t =>0%@R1a'|X !7!)5чB`lk@R%GJwJ @(7o(5Pv$hJ0jRh ".2<2IENDB`png++-0.2.5/test/cmp/pngsuite/tp0n2c08.png.GRAY.8.out0000644000175000017500000000123011461476005020243 0ustar useruserPNG  IHDR V%(_IDAT8}OHq?A+y16W3FnBB#)%$y([]x"(!az+[Ԗ^mԭXݻM{~x~<_=aÝN{u?3ӯ9rwK=[osw_}ej\Xn>P:g.hPB'{ز^qktñArLZ!ʦ:<ͤaRBKD_]UtH ͸"*RxA4'ṊA|Ut(㆙ WDf ȿ<4#J.aҰt :)`[SQ_'^m>B>jr`9) lx*T -XP/8S\@DVU5J:_yJWzٰ̲4]ZYt ZbR@{(cX+ b=_5=>s :EmLmʥ:z2k73 !8&d&c;Ncyk-5B@4a=Aj# Ȋu jxQ(N_Gu:+IENDB`png++-0.2.5/test/cmp/pngsuite/f00n0g08.png.RGBA.8.out0000644000175000017500000000100411461476005020077 0ustar useruserPNG  IHDR szzIDATXŗ;1LNf= M v`!N,܄ uVɝ(py|9'fT**Zڄ97,m11:(#A`cR.K) (I J@,7An~8l=05MknOS]nƋj rsvٔT;7v[m6z}np߭xusݶ^ NHJl6]L&/g xX4 r+]Fc8 ㏻@h˞ Z&*["ҪWBǏF#DQj"js?$Ai8Nz==^͕ysRFGp4 ޑx( _ ARJ|A> |B*SֽGIENDB`png++-0.2.5/test/cmp/pngsuite/bgyn6a16.png.GRAY.16.out0000644000175000017500000000326011461476005020406 0ustar useruserPNG  IHDR kwIDATHuTkp>}nHj"5I$H64H2C$L E7*^TK1fF[GC%I& +s#AN̙yμysv,R*R,K K-YU5,̦,ƛloT({ٗ(P~74IzfZlAZ! ~AN 4N& bc.&ĐNKikYi4uk<;̞rHC TS.E3G {5ʽVfNFLO}I<(;|cƾ.(al& `9,@S5bcы䨜!w&+L. 7RS)* 4@!?-8Qچ<(f2ck%ᮉ5CKOmcwk~%}uW:U|jtA֤SRKh)c-c'5QG1Sj5+cuH Jf kÚC[uos ock;ԋ!։. V8jf9mKƽ^=rN[rLY8&ٔLi[MAz^X<3HI3(ôS}ʡb<='`1>D?fGM6~ḥU+#uɊQ@/3Y5hoo3xBwn8%& Ǡ !@k=l8$Pɚ,UѾI u)Jcj[A -l+m2bA^y򑓲O>L70>)8$\(@O P 01pA@ǎA0R _x ݕቇIENDB`png++-0.2.5/test/cmp/pngsuite/s03i3p01.png.RGB.16.out0000644000175000017500000000012711461476005020102 0ustar useruserPNG  IHDR=IDATc``< ?C9 pt@oIENDB`png++-0.2.5/test/cmp/pngsuite/basi6a16.png.RGB.8.out0000644000175000017500000000311211461476005020152 0ustar useruserPNG  IHDR 5IDATHowzv]۱kR% _Z#=@ . zNTT^),DIHmv;av\Pzjv4<} I|hɟ%_$kwΟfjkw>Ab7A+7JCM7O䀛/`9H~2ۣm.ǎC?gσddߺGq@ uB4yx+cߠD'N= oULLz[~&7=CO^sN}#wNo4yYƱNB ͯ:bfe]<UV:$D֪]<䴹xK_Pȑ#@ɽ5c>u[5LCy.tȌ) ishnۼTzD~$?dD#w؝ 7YivCzʉZ_9odxlwuBFbJJѲS(̋F5|hZo緂aMư8R+~yd3f@m9-(S$$^fOZ7B-+*X"`ʐ.-pSӫb\^QӧE =xKkEbj1`PcyqUݪa8 (/lG>l]bX2)B19r]-9\C!MM{y"-(H B-fY{{޽{n.SY]w>}{z@q0 $Y(Tu_nbƩZG8 37SEu-Fgq ˃PLs'6[VcQ"M j:=u7{uPعzWu8QHyȸ_ӹ4 櫦a(ktz*Ch&rѲ5/peԃdHhQ |wgQ1&R,*D,Q:BvS&;'3ÒQ8 ,Q\\^tPH>kT \e{KvK6 D U:,L`9CV85I\m ^AEvv'n\``^+~V7RNm86EkΧeӣӣ{V&[X, -y XmL>oV2k'IY?n6B#&8dvU_& sJ)̗\ jB#+LBz@_KX*]X A MSK M#aWőhCRJw5>R15I,pjF bJwz,Js9O3ϛL8©hTXIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g02.png.GRAY.16.out0000644000175000017500000000020111461476005020355 0ustar useruserPNG  IHDR kHIDATHcdP4#y& Ha `!)14b@yhy0Z00ZvIENDB`png++-0.2.5/test/cmp/pngsuite/s39i3p04.png.GA.8.out0000644000175000017500000000073611461476005017722 0ustar useruserPNG  IHDR''Q(IDATH0Ef\.#"]pC#TpUP%Ѐ%xL @-۲zk $bZ6,B"{yQҚ>֛6 8R0@I*'9g{ eSL #izKTF@i-TcIU6wyqw-O^Lc;]q82|P'tBYf3e?l)IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p08.png.GA.8.out0000644000175000017500000000053611461476005020060 0ustar useruserPNG  IHDR s%IDATH!C}?ZإwJ)}ǚ̄K|QH^Κ,+S';(X»F Xpj U ;TxR%yKȉN@^Q@ {ۘl7$H"IR%H6"L< 4K8%6-0s=3[$D"# jlppHA8(){0XAdb0&]B6noLȁU0P A5:%u/}~o%!NIENDB`png++-0.2.5/test/cmp/pngsuite/bgbn4a08.png.RGB.8.out0000644000175000017500000000017311461476005020147 0ustar useruserPNG  IHDR BIDATHѱ 0 `e E:nDhx<x`<2wWsg?IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g08.png.RGB.8.out0000644000175000017500000000051011461476005020152 0ustar useruserPNG  IHDR 5IDATHݓM@B{ÜK\xQ/"BB;vȓyY0߶jb 0RN:BDNI)@u腙moAD^('{ն_@a Zk%1"2?kfFDuIցDeY %pb(3!*ƘJfXT ;,3.*<`Y̏1 ˲aG;X5Pk$p#?~i$ *s|IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g01.png.RGBA.16.out0000644000175000017500000000066611461476005020337 0ustar useruserPNG  IHDR T!}IDAThX NC'2Sm", "v}$|Go ?>P0#?-Q}9<ȶjS4\YWck]5KlRa:^de@WR_J79yզyt'"}9CB"ln`[ cNbl13ǭD{̭;bxXdϊl\DUr1^b 7]yiy^^=Gߺne5&gd~Tڜ|YktnQ}܏?NmtC׹]q핹ߦu&Ƃ8`7~0vA!~&8IIENDB`png++-0.2.5/test/cmp/pngsuite/s09i3p02.png.RGB.8.out0000644000175000017500000000021711461476005020032 0ustar useruserPNG  IHDR VIDATe[@fl=MLP#B`! c{wb$REB-:zkG+4t1[ hFռK"q~kIENDB`png++-0.2.5/test/cmp/pngsuite/basi6a08.png.RGB.8.out0000644000175000017500000000045511461476005020162 0ustar useruserPNG  IHDR 5IDATH@ Cep.H'3BeJJPr|X3w}q[ nC$lb3P)n<ԁSo^JL&f"HB۱FsൾRpWFQ% z@bPFPtSJpp ?'9sҁf!&M@n`"zyypewL& fm It6h7ve܌V@*Uy䑓N:Y գF :uۘ0_QA1c|3֭[3ᢋ1s ǬY3o3<ӦMo qA9W0gnP>ЫWJE\+([ouWtiʔ)i-J矃︃~?_=;eFmԡC2kT&pysᛍ^>b#@7jԘs*^ I(T #f)ΜhՊ}-4W&}EObH*4i2>gdd*TmWrEiAԸRHŨO"ㇼ<zVZ)/qZ"p!ȇ1lZЁgqV Jޛ7n\^+W`„Ff̘1k֬ӊ\΅?KG>E-DJJ*&W>p!B~(SmqaBL  9_K $)R.:f<x饗JSۀgȪ  >T#Zġ!鳈s!"a6D s]eDcV5jΏ<4d8{rJ%G6mZBB" 1/탘;7JƷRʸ7Ll)~F O%B=aι9IRRr~eAҀ:}$ Emt%J~*F`\Iφ@A9-,e\o֬9mY}BZj+VsWhLҼ_[m55Bh4Q¸D ą1Vc FֹjkSW^k*l)rz!ih֪UkK+Z7q_d@Nwg~/bt+V 8:X+.v]rɥ~W  ʄdJ[@@ 6ذ&AsaW! fHt<2Uz `됐jC[]J̭a87xH))IENDB`png++-0.2.5/test/cmp/pngsuite/tbbn3p08.png.RGB.16.out0000644000175000017500000000266611461476005020272 0ustar useruserPNG  IHDR 1}IDATX]Hi*dt"dC B Ss!C8BLPslW @. )X 5Bxѣ6s?38.wM]Q\ .`vb-k:WW }5פAaÆWy>fm It6h7ve܌V@*Uy䑓N:Y գF :uۘ0_QA1c|3֭[3ᢋ1s ǬY3o3<ӦMo qA9W0gnP>ЫWJE\+([ouWtiʔ)i-J矃︃~?_=;eFmԡC2kT&pysᛍ^>b#@7jԘs*^ I(T #f)ΜhՊ}-4W&}EObH*4i2>gdd*TmWrEiAԸRHŨO"ㇼ<zVZ)/qZ"p!ȇ1lZЁgqV Jޛ7n\^+W`„Ff̘1k֬ӊ\΅?KG>E-DJJ*&W>p!B~(SmqaBL  9_K $)R.:f<x饗JSۀgȪ  >T#Zġ!鳈s!"a6D s]eDcV5jΏ<4d8{rJ%G6mZBB" 1/탘;7JƷRʸ7Ll)~F O%B=aι9IRRr~eAҀ:}$ Emt%J~*F`\Iφ@A9-,e\o֬9mY}BZj+VsWhLҼ_[m55Bh4Q¸D ą1Vc FֹjkSW^k*l)rz!ih֪UkK+Z7q_d@Nwg~/bt+V 8:X+.v]rɥ~W  ʄdJ[@@ 6ذ&AsaW! fHt<2Uz `됐jC[]J̭a87xH))IENDB`png++-0.2.5/test/cmp/pngsuite/f04n0g08.png.RGB.8.out0000644000175000017500000000060211461476005020005 0ustar useruserPNG  IHDR IIDATHɄ0':1-/V ؅`U7av]q4q y,\Bкs۶1eY[R0 ~y)0 h0i47hi^;]UUiuUATu-<ϵ<_n*$InuMv}ʣ,g(Wt˲b<{HV9˶mOy~>kU[.}ຮ NAq,L !J.C1/@8w u(`c|FHs?v`tWIENDB`png++-0.2.5/test/cmp/pngsuite/basn6a08.png.GRAY.8.out0000644000175000017500000000015311461476005020312 0ustar useruserPNG  IHDR V%(2IDAT8c4cX) 2 PkXD{C /)VVP-za/IENDB`png++-0.2.5/test/cmp/pngsuite/s09n3p02.png.GA.16.out0000644000175000017500000000020511461476005017770 0ustar useruserPNG  IHDR LIDATc`a```G6L^, My$C$6n,&b(ڈEu(@QC\6 \"Q IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p02.png.GRAY.16.out0000644000175000017500000000022111461476005020373 0ustar useruserPNG  IHDR kXIDATHcb( J1(o#OK~@y2wta`e``<-F򀁁k qz IENDB`png++-0.2.5/test/cmp/pngsuite/s38n3p04.png.GRAY.16.out0000644000175000017500000000045711461476005020260 0ustar useruserPNG  IHDR&&j1IDATH!N@ 7'Xi6x{=*ߠVH '@`6Xn&$}#d73'˝{>9ɥ_C`>vT5 TnC®kE?A!Q[;PGa{ohڬbNI Jt0:k \1A%"`{k,2 Pe^TF`͟13؞u ʆ4Xю^b-بUz"m[cj]/ >6,IENDB`png++-0.2.5/test/cmp/pngsuite/basi2c08.png.GRAY.8.out0000644000175000017500000000050711461476005020306 0ustar useruserPNG  IHDR !IDAT8m0 E??@7&dݤ2'(Pc1E%XʃI~>ʤ ⒒)"4M)%ѧi_@ww/A9Ea΀ =,x$H)xRBMb?g͞[!꿂s;إI-IU8Ԁ8F,SˈZXo/kv  3 k+ٲ}k RLՠ8al1NZZ>,~ Nx?|І=>f0QxIENDB`png++-0.2.5/test/cmp/pngsuite/s40i3p04.png.GA.16.out0000644000175000017500000000114511461476005017764 0ustar useruserPNG  IHDR((`3,IDATX՘R@?n*dA(L`5H)UhߩB0L Odcp$M$6f^I ̱ȽY U:$Ka@yΠp&˂7xc|حX"1}ɀTNaD #5F<#,|5%&% U(C jEȀs( 5HW4T? nqA%p !p\} i!D('x3-BM `3(+bWHb.Wݮĝm «+ q+o&`N;}Ac g5E9m9XBt:!,)У\PӒ\+Yy߹r*z2t6rJ̪^ڿ/Tv#^IENDB`png++-0.2.5/test/cmp/pngsuite/f00n0g08.png.GA.16.out0000644000175000017500000000063511461476005017743 0ustar useruserPNG  IHDR n<dIDATXŗJ1;G%B,B+;—_B}-xR5͘0:wt6qOG5=de3[zC9Wٰke۲P㉽Sl'@{”jDܢ.@J #D B`yIL!H&ZYIENDB`png++-0.2.5/test/cmp/pngsuite/basn2c08.png.GRAY.16.out0000644000175000017500000000032711461476005020372 0ustar useruserPNG  IHDR kIDATHA 'Pl4P!,ϮJ0FkT/Ѹ-f[.#|3KA ,٪60 }+FѸUo=@0[ E7`bt|kL&w919o:b(p^?8+#}IENDB`png++-0.2.5/test/cmp/pngsuite/s34n3p04.png.RGBA.8.out0000644000175000017500000000045411461476005020143 0ustar useruserPNG  IHDR"":G IDATX[ E=w (A$C1>ݹ$LɐLlڿ-d &CA!f! !DsA b%M4UAR̹J֙zHIJ c c |5[)z\!gCoe,N )wF DQn M#e9ǵuS'vա16:oȃ"2/ ("wͫ&IENDB`png++-0.2.5/test/cmp/pngsuite/s37i3p04.png.GRAY.8.out0000644000175000017500000000056411461476005020172 0ustar useruserPNG  IHDR%%OI;IDAT80 ?@׹r#J*0psxLqd,`Jp[ )+)G k@ h̜o%c6SC55k 3uiOVZ cRnX@%qev bo ryHMJ ^Y8@Rΰ>'_Njp'ڛ֠{Ԧ _ds@ pCAK)iIY괤}0ỳUaIY.ǝިC}c,2hTO$>E#B/ 12J.IENDB`png++-0.2.5/test/cmp/pngsuite/tp0n1g08.png.RGB.16.out0000644000175000017500000000266711461476005020214 0ustar useruserPNG  IHDR 1~IDATXŘ]L}?,E2P"mi14 8`͆6k[@tjqXKƦ5 )2J|gۿOo^RJ)'VU>‚7GeQ Vyc^Psd9q涭?8iN<C7M@ f~<#\rF6'cx+V՜ ghf3:d-(R`4HtX*n X`\hLa S|3Lea"-nq˲AV?WU 09#S;z=LW覛ncب|f9Yf6ٌkVeo/HL`!(Ƣ=qd%ĤUu^zys<ti#"QEU>t/}^nxAQO~Z 4@:J(]}k^ v@pBW,~{I/(*}ͧn\2MTAְ5ְܐAiF"$2̵UysOfAyKT~9 (}^wqk|'(LRI%RrCUTMB2]RB?DIF$nlg>RH!"0-M4g(t kr|vH*9q[k]r~ge UgKgK/⨠x:~B0*MĎ?}Lʃ RUʣ.e%}Q1̉5 7D$)r>%}3YWʙ[/1W/oh,S尻!mlc_w#;x^ GL[%I?X%Xbӽfh9!.z 98º8@g8~gGwJJsvCy;QRN9vG!;U?9#1" *zC]v,0ʣEqWUkjpve0 t"U 3Pu6Mv&MĿGךIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g01.png.GA.8.out0000644000175000017500000000035011461476005020027 0ustar useruserPNG  IHDR sIDATH Dezɐ;>hrB1k&Ā-&n0> NF_%ϲD_KX x=yE$[Rm5$A$ b9pg֩.W|6NtG!rA5 n:7X6ne0txH`dIENDB`png++-0.2.5/test/cmp/pngsuite/s37i3p04.png.GA.16.out0000644000175000017500000000100511461476005017765 0ustar useruserPNG  IHDR%%H]IDATX͖10E% AT[!$Α)a/RQP4T" Gk;{-$Ǝ=g<# tht,)b ` @`2|z=3ejj%kyrraE )$ gN!+-TxWtؐkB vV]b :&)\8aRq5<[hܠ̛k2ve7j<|Yt~*U[:XbZMU|/hjl}70{'o7JE0=TF}sbZ9Gm@3ԑi}T}D׾\H7}IENDB`png++-0.2.5/test/cmp/pngsuite/s03n3p01.png.RGBA.16.out0000644000175000017500000000012411461476005020205 0ustar useruserPNG  IHDRiIDATcd` P"K~x;*IENDB`png++-0.2.5/test/cmp/pngsuite/basn2c16.png.GRAY.16.out0000644000175000017500000000076311461476005020375 0ustar useruserPNG  IHDR kIDATHUm0T`nЯʑ :FB4x.J\?pl/w8Ϸ&l4VƘtCE}=H ֤XO\AJJ@d:~.fzLC^wd̼y@u#/w9^Ž YYS# dvz<3T ?D@D@Jnpm(WP%MgzBJM\wT$aK`V`fԄ 3RPv~=sa5JxCI ;w779Ž]&n-; W;fȝΕ ;7XvD;7L~5Na  .ye.UO:P+LLs"؜T-ޖ#Nq:dy_Vvy<#9* 쿲rU IENDB`png++-0.2.5/test/cmp/pngsuite/tp0n2c08.png.RGB.16.out0000644000175000017500000000266611461476005020210 0ustar useruserPNG  IHDR 1}IDATX]Hi*dt"dC B Ss!C8BLPslW @. )X 5Bxѣ6s?38.wM]Q\ .`vb-k:WW }5פAaÆWy>fm It6h7ve܌V@*Uy䑓N:Y գF :uۘ0_QA1c|3֭[3ᢋ1s ǬY3o3<ӦMo qA9W0gnP>ЫWJE\+([ouWtiʔ)i-J矃︃~?_=;eFmԡC2kT&pysᛍ^>b#@7jԘs*^ I(T #f)ΜhՊ}-4W&}EObH*4i2>gdd*TmWrEiAԸRHŨO"ㇼ<zVZ)/qZ"p!ȇ1lZЁgqV Jޛ7n\^+W`„Ff̘1k֬ӊ\΅?KG>E-DJJ*&W>p!B~(SmqaBL  9_K $)R.:f<x饗JSۀgȪ  >T#Zġ!鳈s!"a6D s]eDcV5jΏ<4d8{rJ%G6mZBB" 1/탘;7JƷRʸ7Ll)~F O%B=aι9IRRr~eAҀ:}$ Emt%J~*F`\Iφ@A9-,e\o֬9mY}BZj+VsWhLҼ_[m55Bh4Q¸D ą1Vc FֹjkSW^k*l)rz!ih֪UkK+Z7q_d@Nwg~/bt+V 8:X+.v]rɥ~W  ʄdJ[@@ 6ذ&AsaW! fHt<2Uz `됐jC[]J̭a87xH))IENDB`png++-0.2.5/test/cmp/pngsuite/tbrn2c08.png.GA.8.out0000644000175000017500000000145411461476005020064 0ustar useruserPNG  IHDR sIDATH_HuS)45mnGKA FD^An(]nn$ERAVl43vlg..tx4tr뢳wyn}.^VaD~faE_?X~(IENDB`png++-0.2.5/test/cmp/pngsuite/bggn4a16.png.RGB.16.out0000644000175000017500000000726711461476005020245 0ustar useruserPNG  IHDR 1~IDATXX[lGwۛqBⲮ F -E *QhADi8<$ҖRT@ BBE ) P/J4jǗ_<2=3|t:Nc.EHY[[6@[e[e[宣:rv9OԜ9Qs3xƋ7^{&''5YX _av$ Z@Tg3Չ#H?BChH1,Pk54 ͤDJD}E}E}% JҠCrHLbN]}@l-j J9,0H')KRzY\z#0 ++@2;PB@ 1K hځv0:Va}>yu:l"X~ֱ& k~ ϢϢb˱rN ;YO֓z 5{^1 Ā}h+ڊҒҒMHqD>/ϋA1(?es{{{B(c1ؽ~6&==eBjs̡̡!>8477gvmxccl2e~5z^:DOn:UCP5S~x`D8u>`|%_Iҭt+c}MlFuU g2CD_/7 Nh02~e|||n-cX 3̰o}>} Q!*Dt]ĿWWWX )#t NGAbXT*KʫʫʫFQhTz^dj2 }վj{=3>LFd-d BD?XMF C\,piZQ|Gُ?W?:: Fv]Gl  y7ݜw s0Wv~gPyX1jZ&i2zMTC;;;U܉;qvZx!w~/5ob <l NQ: ,nv]n[tn L L L 1cccc—*b^ea#o<奼\E"W^1bx߀o7!<0 oXJq8PP:usss0`lQ[.]Vr+Z.ksΑK?\kkk5њhMkZ'I4;ii%gY}}}|=_vam춾_߯׏GD_** ab' ZVWWWN):BpG>O:})P`[6ow888 >!2Lɰ`0 5~ FQ}V_???Aנk4p^Ds,ZJ-WWWJҥtRR8G0eC#ߑtk5:>>>>>APf/;Vv"] _/c,oooQFZd-R!e2L אk5$ &o˶/ a;wdNfNfNSds9<+ʳ;1&&ko95xj ]zի-b5@1[ŭVaHX$\ ׅPJ$|1_n[4 vb4#H3iAz^z^z)7zN>'{ʍy<&sI%}ϟ(x'd?nXedJdr >>o+tg3 lR6)t{t{t{ jX aEQE___[VU _/@ >׾t].]Iդjo$HwǻN> AgnܪUs6m.'rrΊ9+欘ɜO|bZjvmg8c8fffd!Y(  ׋ÅÅL'''`J/^. jAtttAmWݨQuC+l钺.ѓIR!xbtLLTMb&\wS>iojnQ-.fz^<$CQ uK1cz[R2<VVX TfE䊯11ϩEH0$ƈdjޤYpƎqׂ݅;眓 [rR6@?ig~ yF eaKr~55Oxxlʏ6j*Ӟ4^ eҶu,N'C>pXuM*d℡ 1Yk4PVFq 1m 8bhV:YY̺mRV:'rְLjƈv  搇jKj5A/*hd2 JRlnnnnnj7_ p~~~~~.˳@2"2PVd2eş?P\q޽{ =g2ݝ 5,ʲO*|>DDm56Zi@aܛs,O,,^՟\VE@Ya~`CE"ČHVr\d2 Wa[Z@t:(5e_ _}1>}PVZEÇ`||||ٳ\3NOOOOO5 HL דn7Qcٙ GC!ZE1 RnXǏS~Ib1]rjا΀%j?hm2R ^OdV2ܣGtb@z''% 0`{;I67I@ T prrrrr\'D"Ӓd8C qiŽ^2I2@(; #hdl䣏H*!JR) h t:NSx F#r%h _ F I0HrrB$P+jf"P*Yv; ^^:%& ބKד#)aY fٷTJRxB]kO> "5D"$2 +ht:e}8Z@&w{onB5?믕6HDI(:á77O U0pyyyyy  (T' ?+]I$f$jZV%6[ vvvvvvaxxx'FF@0H=LNj^QKff漛6_v8^d2x<W[R3 B!+P( DQ#W!)Kf٬0gr0 N c$I$C@ <:KpD"b@v%\W{XnP___SϮA~6-VXa_EjGfUnV `PHn^l%wQy@GGGGG OPpQdDQ Z Z188888Xs}"499999>Kfj100000@'I~?puuuuuUi{kW.@rLOIg~0T~A>G?՗;+RYjv <VVVVVVy.շAZiYbp:A)Ԥj(s~24:4444434cQGiS)wWhn>'bu ^AIENDB`png++-0.2.5/test/cmp/pngsuite/s05n3p02.png.RGBA.16.out0000644000175000017500000000015311461476005020212 0ustar useruserPNG  IHDR2IDATc!F&tNc(,g`ĪX7. IENDB`png++-0.2.5/test/cmp/pngsuite/tbyn3p08.png.RGBA.16.out0000644000175000017500000000305311461476005020411 0ustar useruserPNG  IHDR #ꦷIDATh_hTϴ*рF0#$P *U!>Ȳ`\h|Z}Z*hi󐇀)dA0B@D)F`d07L3™3w~{?w3gu֏lM6Ce?5UQN .ڊ6 w@2n_YC ᪫zUdOv fe Y&ermq|'w@&Mx≬N:1mk-ZsuOV Uw@2|뮻{e.χN1c`ƌ馛Uߪ9W^:Sq5KYێ֫GaoB$fW v@*O|AW\u9L4iAV9N+|=_Ĕ39?%rXT\ZkN:l\6.[; W>}(䌾堃Vj4n?|5 +]w|spahR a]^xs;lYwq5ay2nFʝ+8ۜ#wޅ᭚Q:91g~|a#1hy;. VG/)S:Z>B: -tbĊ\hԨqR7sʪ8U6zꩌ8PShРaCז9 5M6&j2=A쉏+ <  Oه[IENDB`png++-0.2.5/test/cmp/pngsuite/tbrn2c08.png.GRAY.8.out0000644000175000017500000000123011461476005020327 0ustar useruserPNG  IHDR V%(_IDAT8}OHq?A+y16W3FnBB#)%$y([]x"(!az+[Ԗ^mԭXݻM{~x~<_=aÝN{u?3ӯ9rwK=[osw_}ej\Xn>P:g.hPB'{ز^qktñArLZ!ʦ:<ͤaRBKD_]UtH ͸"*RxA4'ṊA|Ut(㆙ WDf ȿ<4#J.aҰt :)`[SQ_'^m>B>jr`9) lx*T -XP/8S\@DVU5J:_yJWzٰ̲4]ZYt ZbR@{(cX+ b=_5=>s :EmLmʥ:z2k73 !8&d&c;Ncyk-5B@4a=Aj# Ȋu jxQ(N_Gu:+IENDB`png++-0.2.5/test/cmp/pngsuite/s32i3p04.png.GRAY.8.out0000644000175000017500000000064311461476005020163 0ustar useruserPNG  IHDR !jIDAT8}-n@lD[de`Xs 򕑁U21** Y%, ,p~דIENDB`png++-0.2.5/test/cmp/pngsuite/s34n3p04.png.RGB.8.out0000644000175000017500000000041611461476005020040 0ustar useruserPNG  IHDR""%IDATH՗Y DQ8RRHE(/P"(AcXLޢD0ң1N`2L %31syidX7&+GZOq #֑~Hwؑ)3}rJ05TK}'q^ nٴ%cz;ar v`b6/C1w r6K!{6-tՃ PbU®IENDB`png++-0.2.5/test/cmp/pngsuite/tbbn1g04.png.GA.16.out0000644000175000017500000000131511461476005020116 0ustar useruserPNG  IHDR n<IDATXq0 ?V \AA!!!!Y+h`QhdHG_H 1tU|r d@lN|Hf!0p"M&`%(BHfUfEU{]PO7Ap#E?t`^\,<)UvOB2řD/Ȟfdc $Xgā x&8uNfs:ꟑ ,4$t|ұ mI`o7vJI *o jQQɨרq P\lkq)2Tcd"7rےl*ǁ#9D= ۻ0DضdtƗJQu$,@&-ʄLd7$5Q)Bd o\>N#O2<8e,p`p–qIq'_Bd+Woۘ\ [RY -FWhhuSYn K=HkCD<|'|}+' '/<{kaDF=9T }yGq=!@ f$ɞC .\>@/#KЙ\zPWIENDB`png++-0.2.5/test/cmp/pngsuite/bgyn6a16.png.RGB.16.out0000644000175000017500000000614711461476005020265 0ustar useruserPNG  IHDR 1 .IDATXm]u}9fy`xLM`LI `-K*;JZg@$0ی%&{9u/ws~/({޷f惢}*QگsN+=zJT6Cy6Ct!D_>W Ha(b(>@s.d͐;$~ z_9{++8^(~|6f <~[5_v{u#>WʧE148t`zymbΛ3SŜ7gO7V6/oW(|3P,kqb _$d#>~ g!~(|?4C֊~HPjM}3顮^j~+Ih8΁c$l~]A\ x⿆y_|!4oq>$P:\ 'Գ-S,cz}+mnW=0ˁ'A"mCnユ ~e55mA{'wFY-Tdky=6ҳ3 *72y|߻F1Gߖ]x D\u0smݕIA:"=%>L;^Uڴ _B"C_м 3 ϩVUC6 g@ Zѻ`B[;Zѹs9#ZU"UMcI#HgI\h3}J@х03 ! rH ?n82Ђ~򅻘g]]ԷT6L{h4::HLv #d%{K+g^!$OҦ\-':i1C(m6arןhA}I3>0oScsSU$woq~Ǔd~Dv0ZB=fO(?.#ipJ-5n^t3a;yV7vȝ-#}C Ne3ݟ$)IH?l8;ȯ +V |5@3Q= '3g0;nş|ÙV3{Zwu]iuF5OΣȟ G~ZxcW o K]L B^!jqQ8\zzzg}7?{Ѷ/#rqhfT"%_!.*8H) ^p̀kyi(OA@6Q[ue :Ț\UW?+?jhͤT!wQ (bKU)aW1Eq 珍Q^u܍.ȯh{t !I6@(N`N^3xOI9| /gK}˂SGP]VO$[[?~h([L)kFPZ|0: B3k{.dL Ю?6}z9qy<9˘jY;rȝn&8M2PŜgQj$xqpKf9uvJ}wfOo1[Whbx}7'] nfh91kX} ~)3ޢ{܉ FѹcZ*nH>L+ >B*=ˁlf{Ĭɣ;9Iw4]]jP.)qlR*AЪf2IRR5ttdQщ==[ 䯅',m-*Omn&fngoz|-LAEtxtxq%HiJ˛7Q;_Hx.^&8ņkZ &7X9gΪP&%03:ޙQ:ԚTKn*"#.~ 6I?. z-a0hlq4L A` F@=+*۩n_BzJ- $[)Ow GD}vkO#KV PYY+yz[1izu/We"Vs|]yHPEpXY 9yEP-ūHw/_Gz_GJ#.o%Y_>.-sIENDB`png++-0.2.5/test/cmp/pngsuite/s08n3p02.png.RGBA.8.out0000644000175000017500000000017311461476005020140 0ustar useruserPNG  IHDRBIDATI I I< v4@S8"ksl %SQIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g04.png.RGB.16.out0000644000175000017500000000021311461476005020232 0ustar useruserPNG  IHDR 1RIDATXӱ @_6/t]SSp_[hO4vi@s4hnf q WfIQIENDB`png++-0.2.5/test/cmp/pngsuite/s09n3p02.png.RGBA.16.out0000644000175000017500000000021311461476005020213 0ustar useruserPNG  IHDR SRIDAT(cd`?CY02tD0m**8a;Pl0(./`P9Q^AJG TIENDB`png++-0.2.5/test/cmp/pngsuite/f04n0g08.png.GRAY.16.out0000644000175000017500000000047411461476005020223 0ustar useruserPNG  IHDR kIDATHA0җĽ 2g\y'0qF E Ih̖!qGŶX,&6ƧG.1!` 'Eb WjR#&- \3 ֔Lh pxO"%ZfNG sx߉ŧlAK4I 'pV9 k)x "Ј%Hi#&Bzh""0h#ڈ\K$9SIENDB`png++-0.2.5/test/cmp/pngsuite/s01i3p01.png.GRAY.16.out0000644000175000017500000000010411461476005020223 0ustar useruserPNG  IHDRw IDATcb'WIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g08.png.RGB.8.out0000644000175000017500000000023211461476005020160 0ustar useruserPNG  IHDR aIDATH ! PSCOM ANR Kk KJ2޻Iw/J<1BD膶nhIz>ynpHBj|B0ص*FٖO80e3jrK3~%p| pg+,OcT¤Gn^drJ`MxK!P$p" ! 6p#N ZF-#K@37`D jQ`a4PxSk#xɞ1.71(`VH+X,cĹ^Xz@CI W[E|+m]$lu*񨗻4 Rws &fܛ|I^!w_l˼duCX2ޫ@CIENDB`png++-0.2.5/test/cmp/pngsuite/basn6a08.png.RGB.16.out0000644000175000017500000000027411461476005020245 0ustar useruserPNG  IHDR 1IDATX 0 \tBlO& Cq:TO`J۬.rn0H&>`5m0D6kCvXAF&3!V YvܨO =2|dxIENDB`png++-0.2.5/test/cmp/pngsuite/tp0n1g08.png.RGBA.8.out0000644000175000017500000000303711461476005020226 0ustar useruserPNG  IHDR szzIDATX]Ho?jm KrDAaAB A7AtnEH" 1D$Z8M&_Hڬ?wyy9|#qFMp>fWܺu ?jN޽{_t:\.?NII ϟ?OPZZ(=zX,F]]ǎѣGtttt qZZZx1& \N[[+++j% ӧO7ׯ_t9rXc|?vܻ͛wN:lիW;ioop8L0@`Zy$q ˗/ٹ^I*ڵk)G:D__W^dzoZy=KKKy[_QjjjB&D,..RTT|r@VV022(xI4%;;FCNNHD__o߾E.sA /_dvvSf!)cccn4  $Ibbb P^^dB$zzz8|p™>NFFF*BDQAnc4L[^^FN>8OX0pX#LcTeN&q}KLJ&O J>3m$-aDHvaJcoa-*찄YiRIENDB`png++-0.2.5/test/cmp/pngsuite/s38n3p04.png.RGBA.8.out0000644000175000017500000000046611461476005020152 0ustar useruserPNG  IHDR&&=IDATXA Q7P@i*pYc҄$\ɑ\[ߘT9Hic`Q O(hY1PPJcV̤Y X@TwcL(t c-`\YB z]T6l6-Z`w_2 iNcv"Bx,7Ӓ0258Sд*5Yy)5Yò[!_GiCZ`]EYvp WlAIENDB`png++-0.2.5/test/cmp/pngsuite/tp0n1g08.png.GA.16.out0000644000175000017500000000171511461476005020062 0ustar useruserPNG  IHDR n<IDATXMh\e'6UVMH)&Um"UP ?A nq#vF"(* "u!XԴmF M鴶4)9;ɤ|r~?9yw۞vBПު;,V@'6|kNv؏x U\?&Ѓ7cwؓ[J?)//tc;$Ň)p'1.:[%T+Cx;p[lcٿɿUO*W7 њ!|csXQ!58 m88Kpx^h\܍NNߊku^#;rLk:W&!||D6B ~nٷTO7: -|q"Q}®$p"E\\`B ?VO-Fb8 nwIfxw4$@#$ a,pu.r0"ùb%OD[E"b03ěo(ٿgUQB-"0(Ji~XQE|zDT"jEԉp\䮈1C+yID+"SkQpP}ߙm"ӹpd"e(%vGOyDw#yK䲈E3-D9Q2[O_.Qb@f2fc"ǵ]*r=𠨈>R<>Pxner&oIerx/d|>ꜰtU(!B}<,O>QB|Eގ]8MF.aT~@0--Z IENDB`png++-0.2.5/test/cmp/pngsuite/s35i3p04.png.GA.16.out0000644000175000017500000000076511461476005017777 0ustar useruserPNG  IHDR##GIDATX͖q0?iQpԩ8 20B(RqiGFp $x%NF1P0)(\;KkEx mas} גF>2  uL<Ǿ&Mro /b&íR 70cN,© >..ݸP! znx/?=)EMPTS|~/IENDB`png++-0.2.5/test/cmp/pngsuite/basn2c16.png.RGBA.8.out0000644000175000017500000000034311461476005020261 0ustar useruserPNG  IHDR szzIDATXK Кv2A3LDŽDV=rFND<pb'Wlj8im>n\7 Í6 60+W0+XÕ6+l`߬`/n@_؀.>Y>>nlT`wpxxe\S/@ 7OmwIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g02.png.RGB.8.out0000644000175000017500000000021611461476005020154 0ustar useruserPNG  IHDR UIDATH1 0MSX"TL @ɿY=GJBDSAIȋP>@}245TIENDB`png++-0.2.5/test/cmp/pngsuite/s38i3p04.png.GA.8.out0000644000175000017500000000077011461476005017717 0ustar useruserPNG  IHDR&&u3IDATH!n@E_WQ&$'*YD(')r|UTX&A=AAl ֎']ggF X1E*(еɹ bD#^"$>3h1bOc9p ess+W̤Tm(!>G2j~B8 D :"\h/-.hob́-%C3#o1{;:0^oj͞`䕢,$Pl43pU܂J]A" U=~oSULI\n!ڒ܈h3~c3_|8W5{]CȂGnoYzvˬ`ctv+Uc=ayݡf @q750-߇gVMfČ +-W˴U2dr eַ б5kTS6T53,H-AIENDB`png++-0.2.5/test/cmp/pngsuite/s04n3p01.png.RGB.16.out0000644000175000017500000000012611461476005020107 0ustar useruserPNG  IHDRvjIDATc`1$:`e,,oIENDB`png++-0.2.5/test/cmp/pngsuite/basi0g01.png.RGB.16.out0000644000175000017500000000060211461476005020224 0ustar useruserPNG  IHDR ۏvIIDATXX9 eRB ,Z"&tӮ` jܔ=;UK-u煈#ԩ2,LK-c\M`x qDa@.PJK /Qx#3 Az]3 Bidzu+#,<AHզn1x-Je(YTc#)c~ׁCjMC^ݮӑ8 ?̘( #a('RȳG{1Z~.S'QHoF[@a|Z\v!uṕ(x:keBJ,D,#o ӫԄIENDB`png++-0.2.5/test/cmp/pngsuite/tp0n3p08.png.GA.16.out0000644000175000017500000000170411461476005020073 0ustar useruserPNG  IHDR n<IDATXMh]e'&j V-V4 Fh,T0BwQDƍ( .Ă. B(`DmKn5MzIr^|r~μ3ΜUC^ȹ#Qv}s~\ Up9T1uâ"Nb/!:`W$*`!N;܋ `2EVJ# "=i[Db0ob#06;!9W`=.NG׎p#~i6xQy#0h.?&ٜoa/'S$ZB *y]HvDh/;-HgI"~#0SRxvחlO"ZńhL?(Ʋ?%ܤT}d5k ebL_h4Z/!@h_DE7,JUm^zD e:(NM烆"@>FDyiۯizEI\%IENDB`png++-0.2.5/test/cmp/pngsuite/basn4a08.png.GA.8.out0000644000175000017500000000015611461476005020040 0ustar useruserPNG  IHDR s5IDATHch41",(,?a0T1`4GÀ*hP* }qXIENDB`png++-0.2.5/test/cmp/pngsuite/f00n2c08.png.RGBA.16.out0000644000175000017500000000253611461476005020167 0ustar useruserPNG  IHDR #ꦷ%IDAThՙ=o\Eg{^/:Q"!Z ZdChi"j@h)  "c=sܳ3ލN3;3g>8`0`"cZ_Ǘ\V888gy[B+*BZާ<_' kboS Xwh.` ķS.K5'D=#m"!vʳRHӾQP~(.iﵔK vSQEj18^^' EO=FbXWEߨFBDiv|h)0;>7D}$DhVk?d@ȺHꍥXp(5\ ?]wT?(]c|9;<ûoiM}̄E_p;3&1> :\VCˁ}Pʃ]:c?xI0Ho ? Q?~8B 0-vC|*s kmibw%zǍA6&p#/>w.\2c"RǒaUȝ>p3.ȟ-i%ǻB1aVٵsD7%k vuBΦ+knj;LzK'꽊 pÝ;>K.E`Kʚ]d3ex1Yc٘>YEzgnD~w#f\K:.WڇYz+K"_$,UBCaRDL~1T䗨!pydP h8\ƒvK`zv%/ m` [ޓb1|[c*B8P# 񡝈=. k|h_Wx. l񌸳*nmMс`!\c"PW13r0"}h"cpR]#s)\瓮^oiu$\d83elPc{q^l Pfr(W q0Hި/^Ƅ+'b2&p"BHa)I [G^$`aSɯNcySq-r4+, r$": YA+nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gzs0hgIENDB`png++-0.2.5/test/cmp/pngsuite/s36i3p04.png.GA.8.out0000644000175000017500000000074011461476005017712 0ustar useruserPNG  IHDR$$<`IDATHNAlN4ȥTTUDx>OB A>AfS\?Ol&́ 8b% Zd_qb%/ VdidlH5+ڄׂLK^Ʒ0:"q[5$z/m !X7*-O3.4#Ϊ4cuOJ)7'gV|#Ff ^bFn#F7WS$PhvG-SZ{qu2PЩFewά1e/<578(WUà< #1(vu<+"f&0K}L۳F pEiC޲fQw刬$`ʮyBj::0RlH_x=IENDB`png++-0.2.5/test/cmp/pngsuite/s05i3p02.png.GRAY.16.out0000644000175000017500000000014211461476005020232 0ustar useruserPNG  IHDR)IDAT=ȡ c_P= "#D[.X?gVIENDB`png++-0.2.5/test/cmp/pngsuite/basn3p08.png.RGBA.8.out0000644000175000017500000000040511461476005020277 0ustar useruserPNG  IHDR szzIDATX헱0 D(eB,B=;yMZ[66 *6rs>I;Zq UEPMЊk~@0| , +aeonP=$l3мØ. g.~o"`;cqCDDr@$tw1Zhy\q\c1hBIENDB`png++-0.2.5/test/cmp/pngsuite/s35i3p04.png.RGB.16.out0000644000175000017500000000070411461476005020113 0ustar useruserPNG  IHDR##,IDATXVI0 3oՙ$x!0/- "5#DfϘ8׌HJtwf"Ϯm$9_u0֖/&jj\͜+{i \Q,; @Pe1PڛlwNmpVs&FbE(W1hb]圛랡[6If+OŻ :?u/{-'IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g08.png.RGBA.16.out0000644000175000017500000000067311461476005020344 0ustar useruserPNG  IHDR T!IDATh]0R)?҇".Lۍ!i[U#ħC@gN&gB , 'O _Pf̘0ȝ;wgʕkÜ96e Á V ߣ󩡡l1yU`]dW$''CZ[龄={}\/v.Cs ;vdddl?08JII(fg[e34R#G=Tk d͚b dddM.@***(~DvCuaF3"")4sĉfܸqr@3VXi@JJ } h 3g! 2d w*GJ`c0x&{pڡ +C&W/IENDB`png++-0.2.5/test/cmp/pngsuite/s33i3p04.png.GA.8.out0000644000175000017500000000066311461476005017713 0ustar useruserPNG  IHDR!!:rzIDATHq0DfP)rQ@FW T0RHÄ2J H|(s=TBz( D5/yg6&Ѩ .3=vV24NY$_|_}Z"L1(C[$жc!*2Q(| h#8Joj͔X**CQEֻI̷aDcfdXcz]s>8ɰvhٴDv{]hw]hm;03eW"zE)|oԖΤ[܁]a,B;2y{WZ(\\}G^ :ƏC ?(2O?E#վ v;IENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a08.png.RGBA.16.out0000644000175000017500000000031411461476005020325 0ustar useruserPNG  IHDR #ꦷIDATh1 0 '"y=#RHi\0"x`bYoAg AJbBr gWm Zm @ $@ dSm!EH%P `~(h0O{?"L|IENDB`png++-0.2.5/test/cmp/pngsuite/basn0g01.png.GRAY.8.out0000644000175000017500000000030411461476005020301 0ustar useruserPNG  IHDR V%(IDAT8K0y_R1p9Z`}@Ke@o4b%`])na+M3\7Oc qz*noo "0}58~&%/ źmH<Ӝ85}^"^)֎sIENDB`png++-0.2.5/test/cmp/pngsuite/s40i3p04.png.RGB.8.out0000644000175000017500000000072011461476005020026 0ustar useruserPNG  IHDR((tIDATXVKv xsgPN. ҐC/0,`@t{;]C}*(ݢsrkH$pxSk|ɕkE^&N4rAh!d 3~&SsvQ!k'%z,B1%`mɪ"ىN#Kq[frf+,`sxɶn܎@"YiM1$0&lUhMa=඄_Tz( Ίmw--ʱ5+"6WW丌޶7GIENDB`png++-0.2.5/test/cmp/pngsuite/s36n3p04.png.RGBA.8.out0000644000175000017500000000047511461476005020150 0ustar useruserPNG  IHDR$$IDATX Do૧@mӤ ǘ(xxY7I rh7&@X]|d(h8{Pr  P0χ:0{˺nI T]r }.Pɪ+`6'|! eM/m4)nS0*z>)ȻPXK* O 'l I|.Sǁ:5h0]i)՟h2o$RNxR8SmE<4IENDB`png++-0.2.5/test/cmp/pngsuite/s02i3p01.png.RGB.8.out0000644000175000017500000000011711461476005020021 0ustar useruserPNG  IHDRӪIDAT ?ڀp2%?!IENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a08.png.RGBA.16.out0000644000175000017500000000042211461476005020316 0ustar useruserPNG  IHDR T!IDAThU10s ЧSLthPT5FsYbņGTwo0o j0`Htr?\'oEs[#F ̌sGB&LAy(Gg9  w,X$dj[j}Zؠ6%To(J[J@ ݀hmNhIENDB`png++-0.2.5/test/cmp/pngsuite/basn3p04.png.GA.8.out0000644000175000017500000000025511461476005020052 0ustar useruserPNG  IHDR stIDATHœ@PDr" Ҁ5HJ@`pf\Q`5m0D6kCvXAF&3!V YvܨO =2|dxIENDB`png++-0.2.5/test/cmp/pngsuite/s01n3p01.png.RGBA.8.out0000644000175000017500000000010611461476005020124 0ustar useruserPNG  IHDRĉ IDATc`` :IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p08.png.GRAY.8.out0000644000175000017500000000046111461476005020330 0ustar useruserPNG  IHDR V%(IDAT8N0D N{+Jb9PKJd$|G#0jsd >8e؀w  k1SKpAI& }֐=X ʡDBϡFU9Ԗ-.a92y֬Ioq")ڤR3\0SͭVUgTYъ2sAw厊D|Ɏ$d:|sGW#ߘ,  PU*Ԇ͒4C=3Q86sS-C?"SWkK/:[l; ~-&g]۔Bj+SwݗTQ@id'D|_0$[]d)u]3/U'NJ&:=V!``wS W uTBWAUD|UjՒ9U>z1ulh0,9h H=0HF-_0M-R_V[[TSϪ C7dg$@~s9%@Vm֋㔷ޓKN]]35 _#igT}ޙ3c\s  {$)cng*c4&'[9X`}'p 1g>"@BlOjbc%Q4Ի`RVUuH3 eMл@,Lr%е̬i(?XQ-7z(m626 ~Pt2o@ċPgCƁy.`$Jg]q0pUzOs$ɒ%}䦿^)cdmXrSd8j -7!ܘNSו qpH@8fʹn]Ʉ*yU.O.~UZ_4ö*p2Ib늦-D/.l_YY0E%; )7eBkGD!-7KJ@&ڕI:Mi㊽FaPŀ!oyF(Qp\rs@I{5w_8*-#yfvC۫"ʒ*%&%iO:6@8-'*S,dHNn-L] 8tJo26VA8:jgM hw*OogY=|=@j>@3mq2N)@U̿)*K KGk;aR<\/| bp:C=&R2}F2\r~_Wڮێ5e:DV[:850b-{l4K uAzPY/V.yA p H%L;k*h gZ1=LlС \m$M=_/ ,50!2[s!B}n(ӽϽԡ}" RP\WzHlA+50$!8oo E3@Et6BشpdGC[ PHN> K.`C +P!ҿo!_aCA-CLnQhr ->u157"v0  a{6reDCB%[>C> }"03a8:LR ,0D=4C܆">$D@n1v]f=g3b1/BPv@͐!Xڌ.&Aö g>7jYJ} ^k @jm&+ceVUhlMTB+ o5@*ot'|զޱVL]vQP_ Z40+XhV{#I+f3*#-Y;;ɗi@^rBXbVQAD{0b_l $@ p3,n<(nPPޑ(-Z4%~eE"RR`2JY]Z1 _0ߗ(([Zc2uH.t w%@fg@fCҧE @II(ZD 흧U) E@ZBR;ijaKX,2uHtbLֻ~{ p*_|Vp; 2_:>(ux h2  R[ }d}#VL;.*>m[>:c,gL7piR )qv{.@zW3@aCVS%d6UVpޠTPuu J%z#?&|tE+QOl5jvyԑN-Cϛo7uS!9Cd2Rl{ ŵ 3`/vot.PpSGUY)UV12 P^4Т55 A8Z^۹NK4S)8Y܃rrMۖc;5vCơ R{cҳt/{VS2|WμdvdWBB\>dQ.w- k`"mm#M޷J<K9ʖ\R|+sK~ 8tqm ȫGUV)E*aeWTiRJјuJv8=g韮YtmQKa znޙh;:~+P򶎷JW=)gONzg}f%;in<9_UjCV@N¬ jYehɋ*PH$$q{/ϵP^gѽgCã_n>=Ő XUн:}Lzl4%?  J |!nI/;) ۟M\٫X+NާW4-4A,2z w 9\* KR"2@Lw+tJ()g`qb %!RϞ|O}S+ckY1 V|jT {;cޙPv W"6"!ׁCC8?u2 BcM_np5X' Qvzgn "CgqEL9j[^.V^ck;`m+ jtKOX$F@$Cp#$Ap$*!r Gb; .ਖ?0̀@ r"`s{#dGR-0# #)O&_hPT4y`}~(M C/BmPt!7C]CLksk\c{"8q쉆ppiCxCCd)w!q!6Ca kп0w4 }~C,)gi({lo`W8RRT񧋶X6Ѧz?5XA%~7Rf}z?!8!5.k2`„JV=kMafpMRnA3.\qW4Gc΃ƥ#Z'̽fWБ3 5 ܒSYIܮF ^P vD%qs""~pHMsM X@2sbNޑUQJJC* 8)ԠVV 6+7Σ[3#eHi2W6[bÉyRsFtI\ɻ̓Det޼\剕x.:% iqռټlߝH. N;`s|z(N-ї":1 ̘C*xS&Ic*_o^w.ZۅȄ2'W [ԂDIENDB`png++-0.2.5/test/cmp/pngsuite/s34i3p04.png.GRAY.8.out0000644000175000017500000000062111461476005020161 0ustar useruserPNG  IHDR""h+dXIDAT8n0zՠR'( (RaO OAVQ`Amp MSJO~H@ՃZ;RinZPH+5@Lp<b6p 4di#[wjN*apr ocZ?s6`O[q`"V!g0c S*w>xV'9]o&tVқ-*1!D)F8 f?}HD]@Q_Z k2"0.7bZjR;6 D7tcAbJ)IENDB`png++-0.2.5/test/cmp/pngsuite/s39n3p04.png.GRAY.16.out0000644000175000017500000000057211461476005020257 0ustar useruserPNG  IHDR''XҪAIDATH!n@EH BĠ { r$'( F<4B&\(.|W>?Y;] N&k>M(9q46X1ऊ*7YDeC4K耴' q-q2>[_~D{S1;6g`ZO㝝 *;yIENDB`png++-0.2.5/test/cmp/pngsuite/s39i3p04.png.RGB.8.out0000644000175000017500000000066311461476005020044 0ustar useruserPNG  IHDR''tzIDATXWK 9-PI0a1AF;L $# S%zzzhz:Նy␌ /J<3_R[2{dS\i,EqqPrY7j%0'!Isœ4a8V3v$J r_lg) Ռ$Tb {0'.6vE}YʊF YEZqH+~JsB(,ҊV\Z]̛Wz>IENDB`png++-0.2.5/test/cmp/pngsuite/s08i3p02.png.GA.8.out0000644000175000017500000000021111461476005017700 0ustar useruserPNG  IHDRFPIDATE̱ PRȯ%jrGj#fm It6h7ve܌V@*Uy䑓N:Y գF :uۘ0_QA1c|3֭[3ᢋ1s ǬY3o3<ӦMo qA9W0gnP>ЫWJE\+([ouWtiʔ)i-J矃︃~?_=;eFmԡC2kT&pysᛍ^>b#@7jԘs*^ I(T #f)ΜhՊ}-4W&}EObH*4i2>gdd*TmWrEiAԸRHŨO"ㇼ<zVZ)/qZ"p!ȇ1lZЁgqV Jޛ7n\^+W`„Ff̘1k֬ӊ\΅?KG>E-DJJ*&W>p!B~(SmqaBL  9_K $)R.:f<x饗JSۀgȪ  >T#Zġ!鳈s!"a6D s]eDcV5jΏ<4d8{rJ%G6mZBB" 1/탘;7JƷRʸ7Ll)~F O%B=aι9IRRr~eAҀ:}$ Emt%J~*F`\Iφ@A9-,e\o֬9mY}BZj+VsWhLҼ_[m55Bh4Q¸D ą1Vc FֹjkSW^k*l)rz!ih֪UkK+Z7q_d@Nwg~/bt+V 8:X+.v]rɥ~W  ʄdJ[@@ 6ذ&AsaW! fHt<2Uz `됐jC[]J̭a87xH))IENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a08.png.GA.8.out0000644000175000017500000000017411461476005020026 0ustar useruserPNG  IHDR sCIDATHc4c`BN4N1p 70x9p }RZgRIENDB`png++-0.2.5/test/cmp/pngsuite/tbwn3p08.png.RGBA.16.out0000644000175000017500000000305311461476005020407 0ustar useruserPNG  IHDR #ꦷIDATh_hTϴ*рF0#$P *U!>Ȳ`\h|Z}Z*hi󐇀)dA0B@D)F`d07L3™3w~{?w3gu֏lM6Ce?5UQN .ڊ6 w@2n_YC ᪫zUdOv fe Y&ermq|'w@&Mx≬N:1mk-ZsuOV Uw@2|뮻{e.χN1c`ƌ馛Uߪ9W^:Sq5KYێ֫GaoB$fW v@*O|AW\u9L4iAV9N+|=_Ĕ39?%rXT\ZkN:l\6.[; W>}(䌾堃Vj4n?|5 +]w|spahR a]^xs;lYwq5ay2nFʝ+8ۜ#wޅ᭚Q:91g~|a#1hy;. VG/)S:Z>B: -tbĊ\hԨqR7sʪ8U6zꩌ8PShРaCז9 5M6&j2 !4+LPEL:iBځ9Nv~@.T@jF1ڂֵB1vpoޡ>zppoUT>il'aJq0eW+%}q &O&rE֕/\bяoo kߌAVdHݭ~ѝ~>8=/ r\.|ttttt|l&3g8X9I~`|`ն E(~O=wM(DC?M]O{65^.ۧeù!kNtpP{QNCpqOĺF[5lG`Bܻ@w eu#(P[WBCh"-7ŃfK\dL,]jZ-:d}WֵxBl.:@*r*$T6\?=8hX$ʹKj8^P=x, e;ℇ MǛT<A044N xTIENDB`png++-0.2.5/test/cmp/pngsuite/bggn4a16.png.GA.8.out0000644000175000017500000000171411461476005020032 0ustar useruserPNG  IHDR sIDATHKnG5g#c%@Baf8\+F,"HcYSgz<΢yIz}COJvvCCc{VZW`Fke壥޻t)Ij;b 2Aiue:=KoEQ+Rر =~AÓhaj3P:ƕk\X𷢅 v`&T`W*#cFw)Yp(Uf&Bmh` (ՅG+Xextܙx63/T hmj|ߝ:IGL+8MMTֶX[p_śU'T ^W -,kw҉n>j+}Jz K,-|o;R(?mXe4&J#/ҡHN7LCj5>T*Jڷs?Ļnٷgܿ]\Lm7pGtωi}ճ+Զ͚ڷn{R?}*e޹ P_FUeힱ];a?1X:}Ka =A04Vqu $ZOo EW9]-\ QR疙;4t7]EBR̤:w=0\{[ג?)hIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g16.png.RGB.16.out0000644000175000017500000000027411461476005020244 0ustar useruserPNG  IHDR 1IDATX;0 atBCLM {׆LIENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a08.png.GRAY.8.out0000644000175000017500000000023611461476005020271 0ustar useruserPNG  IHDR !eIDAT8cF0Z2000b,0}rs1JRȁ.M= b7L v C‘7Q0oPIENDB`png++-0.2.5/test/cmp/pngsuite/s04i3p01.png.GA.8.out0000644000175000017500000000013711461476005017702 0ustar useruserPNG  IHDRtfc&IDAT%1 zrð`/{4IENDB`png++-0.2.5/test/cmp/pngsuite/f04n2c08.png.RGB.16.out0000644000175000017500000000224411461476005020066 0ustar useruserPNG  IHDR 1kIDATXؽnQ&a"YݧO*"ʽTFÈa.6CJ) 9iwo!y|0e,0ǢiO--45s9qpf#;puOh..k5qw#f!2̬HƙSYklM{12ͥd̕ӐZsy9п}{2R4md,%,e<ɭn=<sk$q[k'ol*f%˸6:` ': YEƨI*t?=fH;dHUhu33?r,1zA.߮d _"[!UM$VVw`oA9hJ@@\2> r8&<G+)^RB,,fo&8ɏ^N,3EsهANY}V ibzM4HZީzMsekϔ I'95aŃw׺Yv6w4߻U#I˪c Xv*.mvVˤX˘UN|׸ܭNYt?O>c_x>z\,ƚ=[|\K8ƻ^ \qRj qy+]dWuL2? 4xѱC"ƝiA.?bess[`m!p穿Vglj˴ zsl6OCS8:4B.#ү+[mzgu0gFc֧c YxڃtZ†۽F9T>Oi/|5:vj'uh4v3p6`S:`KRX;HB)hkfo.ˈ|%P([ 7O$m&vYF#9x mxn ^SP/ge$V@ 57WQjj P̹uQI rn[M xw)K r ?@}^W)Wm(~iZr+塓HΞI3e>O>5cn܇PcWŽ2)M݇r CbLOdu]ݷ><yIENDB`png++-0.2.5/test/cmp/pngsuite/f02n0g08.png.GA.16.out0000644000175000017500000000057311461476005017746 0ustar useruserPNG  IHDR n<BIDATXŗN0G˳x ffn:uƀxF$އmФ\ι>t?;bC90c>S~qZQ>Hc] _ 3!@D tAdf"B~ J?о1/#!nݳ,ʔBƲ(CC `g<->a)Q2VGR]؟0қOxTz YEm7 PWK{ ق!NgPX KM0Sq␫ ۤrBHU\G\-Gb.iD._NRhٝIENDB`png++-0.2.5/test/cmp/pngsuite/bggn4a16.png.RGBA.8.out0000644000175000017500000000323111461476005020252 0ustar useruserPNG  IHDR szz`IDATXWn,M궀X"(DGg(>!?/0FEBr7$q [vs"-1I^jR }?)BRMP.:* * ,BZEHY n,ː)8FD;6 6 BR*tJ8LuaB$ 4Uv]@H spҽT*!*UNVTN (AmCلC\i4 ՊUIkISAjvchZ{R]rI% 4aY!h4H]C@꾅 x\ ۶A)ED^+PT` À4 3M`LT>??1,S,S.9 }86FZm|$y*HRy_y\nmj)pB^˲ e"X,, zRa$I$I!6 ryX,8>>?~@^V TBIiBusj! "E "!Ws}.M+1!jdY00͘ihZt:Y0D'^^^0pqq{ݮ7)FC'41N)!v'''HTYyx~~t:8==8m[U1LDD)Uj@d2a1!"xzzd2 ???ёj {R|}})3u:t:uz=11 %\ׅmh4ߞS. l[Uy2yE0 0`4a8+8Jηi^v'& EQ[ÃhZJ/U* 4?_1GW9PyxzzxWa%?g s~3 (&!T*@R!fmQ!2,ΒE+ORzẮa"?ϥI2j54M0n4IU: D.K8ûn\dTVVQl6|/Dt!DaiXVvn{md" %( 岰EeYW@J6m24dyrVb$Z =s6yy;@ae&A.TXac.y%O @)ȯtsvR!O-;xjB|zAk= {;IENDB`png++-0.2.5/test/cmp/pngsuite/bgyn6a16.png.GRAY.8.out0000644000175000017500000000113311461476005020324 0ustar useruserPNG  IHDR V%("IDAT8}A%E DNj  q9# tׯ*; VXs:}&9fff $AH*#Y# ;K!I3R#`@D䞳"%*eo-k(W\{U#Ig͞I vۖ5gwD˚9g7#}9g7EDvuIvf#AzYNNFYreu7EEط-d^ݤDDG,޷_$% n'BQ$2E4ИӹR 2ju'̵;8maLF ֓/{j@T G_`άb LU\[xc{hB Bΐ;<`KOd~$:)Ga86RH;PEBX+ԿK@gıS~M/>tJ]s?(rʂPT*-ebJĵ0\t%5vfX8n~UC0lC{qA7LhF锶e6c6c\{.݀boo 5 j4ؾ0 = fhjT0l1 Mp|{}N"6d ->D'ho\#vt %g&)Ɛ!e77ݐUw5r1U Vi47R hpQ$"V [_5IENDB`png++-0.2.5/test/cmp/pngsuite/bgai4a16.png.GRAY.16.out0000644000175000017500000000374511461476005020357 0ustar useruserPNG  IHDR qIDATHm{PwdC0tEA 1W_Q s:iZ,w3Uv9JmE= *GBH <6d`s{72.\ڜ8]o2 ^/]=I83ZO#^c dBĽ-/Tvn%.67᪝~8:ZlFndOK>%%I bR*Z[ֺaxT^K|?Bv_9[q(0-k~;)hV|FQIx9Xv}45;- hs_H*`K;%yȟsx}^K|K1dJwdQ=ףzTF5Rhą{L nXꍥ\#}D͉MBBM=z!8'Tts_@W ^ő a~0H;Isz[J%U 8Yzx 8t7d}˝b¢}]9ٱUl!u['}Yf9q }PiID1B%`4wm Iiz.}ؑw.lSd)?{=LDZC];F- Mx )G6PQjF1fԍng^rcmR;r3Yɟ%{@ш.AHmm*ʯgZDyl6 9t͟"[eE-uլB/*Ə"H(4O ,9yclQ >RƒC˒-9coC+%~{ާbr$i(`?|Ś'{\6qrCi}gGJK 삔$!Gg!$43|%]DdvYoճQcܞIbDy:KmYX)5"򬹕Hn=_ z"tS㲃:wm5Qs5Q/U*צ_k!ijPmԌי*-6ޏ_˂n"/¯m%T9^gԀ45St~sx_S)SP W]glmm/AI q:ƿ4{_RZgidKd !?; å% -YdX!0!G0|{(u:m[ǟ.1|mr9Li<-8CrE$Xbt`!2.XENgTכrGNhklBKjuU\.21`RC` EF=VzM"ԘgJh{9Ʒ \Ƃ`; *KcٗyPJ+ݵYŖr\FX",@7~=+/w5\IZ duvV(V(V(jh5  #YL5BgwlsDM"u@̣ʷ $58kx[O1=_pEo$!MYM] .́ \D~ԏ\qpwMXF In){ZhA3,9|\.o3<3>ז [ ytӶqcA#^ə柆!0LOUMoHrm>0Ueu\:ؓ$[FZ2"~֪]7=pc'z?\ϰK]Վ98\G=)jտ9*@sƄZXIENDB`png++-0.2.5/test/cmp/pngsuite/s36n3p04.png.GRAY.16.out0000644000175000017500000000050311461476005020246 0ustar useruserPNG  IHDR$$ IDATHݕ-@?ȊI0NP!(sTO)8E0(N4HDlIxLw6ٯ3-JxfɊ;"z3deRd&bbFh@*b*0()J8\_FVW8ЅuV ʁMcCH7/~P \T'#ƍ蠂9r{U+;r\%A5xzZ)5X|3rG5{JPLڈ2/;ZIENDB`png++-0.2.5/test/cmp/pngsuite/s36i3p04.png.GRAY.8.out0000644000175000017500000000063211461476005020165 0ustar useruserPNG  IHDR$$laIDAT8n0zUR'( (``(OЧ OVQ@5` X&&?< @ M%ЗsPHRTKHb$XX{!ɸŗ,4}CY ȿ֖-l!c ` z5B {B$¥0Sx~z{Qlʜ#W*s*pqS ,a᪢<`>,Glb9lwG'jcK Hf7L歨c7QC_דZ#SG==uv|SdUݿ+Jh];{j|8IENDB`png++-0.2.5/test/cmp/pngsuite/f03n0g08.png.GRAY.16.out0000644000175000017500000000057311461476005020222 0ustar useruserPNG  IHDR kBIDATH=R0Fl `ZPJ 7KGKAC %w ^;J-4Vo>JkTTP SX,F fu4@Qb" `,@REd5;/_`) Zkrq<0ROrZs`1N̩$LOW)~N[5?p#p0oBr@s$ S$Uqӣw%FVd;G YeX,u"H?C 1CH Y! <@ K͉'IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p01.png.GRAY.8.out0000644000175000017500000000023511461476005020313 0ustar useruserPNG  IHDR !dIDAT8 0EO,Xv`!{9u/ws~/({޷f惢}*QگsN+=zJT6Cy6Ct!D_>W Ha(b(>@s.d͐;$~ z_9{++8^(~|6f <~[5_v{u#>WʧE148t`zymbΛ3SŜ7gO7V6/oW(|3P,kqb _$d#>~ g!~(|?4C֊~HPjM}3顮^j~+Ih8΁c$l~]A\ x⿆y_|!4oq>$P:\ 'Գ-S,cz}+mnW=0ˁ'A"mCnユ ~e55mA{'wFY-Tdky=6ҳ3 *72y|߻F1Gߖ]x D\u0smݕIA:"=%>L;^Uڴ _B"C_м 3 ϩVUC6 g@ Zѻ`B[;Zѹs9#ZU"UMcI#HgI\h3}J@х03 ! rH ?n82Ђ~򅻘g]]ԷT6L{h4::HLv #d%{K+g^!$OҦ\-':i1C(m6arןhA}I3>0oScsSU$woq~Ǔd~Dv0ZB=fO(?.#ipJ-5n^t3a;yV7vȝ-#}C Ne3ݟ$)IH?l8;ȯ +V |5@3Q= '3g0;nş|ÙV3{Zwu]iuF5OΣȟ G~ZxcW o K]L B^!jqQ8\zzzg}7?{Ѷ/#rqhfT"%_!.*8H) ^p̀kyi(OA@6Q[ue :Ț\UW?+?jhͤT!wQ (bKU)aW1Eq 珍Q^u܍.ȯh{t !I6@(N`N^3xOI9| /gK}˂SGP]VO$[[?~h([L)kFPZ|0: B3k{.dL Ю?6}z9qy<9˘jY;rȝn&8M2PŜgQj$xqpKf9uvJ}wfOo1[Whbx}7'] nfh91kX} ~)3ޢ{܉ FѹcZ*nH>L+ >B*=ˁlf{Ĭɣ;9Iw4]]jP.)qlR*AЪf2IRR5ttdQщ==[ 䯅',m-*Omn&fngoz|-LAEtxtxq%HiJ˛7Q;_Hx.^&8ņkZ &7X9gΪP&%03:ޙQ:ԚTKn*"#.~ 6I?. z-a0hlq4L A` F@=+*۩n_BzJ- $[)Ow GD}vkO#KV PYY+yz[1izu/We"Vs|]yHPEpXY 9yEP-ūHw/_Gz_GJ#.o%Y_>.-sIENDB`png++-0.2.5/test/cmp/pngsuite/tbyn3p08.png.GA.16.out0000644000175000017500000000173511461476005020172 0ustar useruserPNG  IHDR n<IDATXAU˩FHsJtԚFjh& iQ6EEp $hPERAa*(hDñFmjP8܇}}{?绷^د2. `]7v].bXQZ 6|p7>>s%sDYlE<؁q,W]2dLJx7{0Oܷ)d`7֦uwM/D46k,o" u\َiN—؏G` I˕Ҭ'UpK+ЍGx q{1|0科O~iy O`1xUV9xX]%eӆg)0Fi*IFd`%&&R܎ Zq/ǟ" uP`2=%/Έr4JXߙ}":2@.1_Pa\iyN,"7⊨0Y$+@ߟOϊTq7fp% B?_+7GZ@pnѨ bhYpP3"%^%SG"x .֜d ߈XJ>= z҆y9y*z;~$o95WU*2#th-Tܔ;DDj !ᄒ' &eYvdHRAYk8efnA / qKoA!1% ƏcR Wd}]@£b`N^tXhLMvXTI.n$=,*bKʬggr[wVҬ'):EI鄅d& eA@lƒ9KSWQ-|I^q,NwNѨ^V0O+?gsxIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g04.png.RGBA.16.out0000644000175000017500000000025311461476005020337 0ustar useruserPNG  IHDR #ꦷrIDATh @ b?,LpZ(ן(js%Id2G/ <Ҿ,@, и4n*: ,@, и4RQ qxIENDB`png++-0.2.5/test/cmp/pngsuite/s39n3p04.png.RGBA.16.out0000644000175000017500000000066711461476005020235 0ustar useruserPNG  IHDR''3v~IDATh] ;wW?YhIaR;=6Ҭ̍ *ݛпԿ #1׽uL&22Slx&%Wz$qc$S-z̆x<]L]3Z*$}S`/\p|pr^z׻#fY{- 0jlZ+My,.'JM6}eR&-5TdՁAVadA Yu`єUiʪ4gUV~Uc>$.U2]=Aeᗬ,z huںs:`qﯨwo'ʪ[/;vxwmjYY.GVDdUMutcɪW﹔ޓ_LXf|7RJj)iO&,1 [έ3 Zpn{pn b0(.;[dhҠ)IENDB`png++-0.2.5/test/cmp/pngsuite/s02i3p01.png.GRAY.8.out0000644000175000017500000000011011461476005020142 0ustar useruserPNG  IHDR bnIDATc8p jZIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g08.png.GRAY.16.out0000644000175000017500000000021011461476005020363 0ustar useruserPNG  IHDR kOIDATH !CE*eg{0\N!y& -+}hxuԲ\?F9fOWpqIENDB`png++-0.2.5/test/cmp/pngsuite/s39n3p04.png.GA.8.out0000644000175000017500000000060211461476005017717 0ustar useruserPNG  IHDR''&IIDATH!n0?K`CDE;CNSEE@P5R DXti{yI0r%or\59]|gRa\0q {SpOxWe\T8{pvT f l1k ZMmW$ebqzl yzYs|5:y]=Tଶ(Ng'/)#KL-vĸ9`?4V7WJgJg\&HUFYtϪζmpe3!U8;y[Y]uC枌OIENDB`png++-0.2.5/test/cmp/pngsuite/basi2c16.png.RGBA.16.out0000644000175000017500000000114611461476005020335 0ustar useruserPNG  IHDR T!-IDAThWv@9A\pX$YK]ePIe*J$HTVTL$GpnޙGDml>Hc82!+|x1L*b 1@}Ǵ 1!U S,͡nA:-^Х0HۏcRdf7,lABt4YXAQ/<%ؘ/ZɽԽSqZ òLxm`?ka° ~֌q5e\ ;Әq8go!c2o>"܏ԃ] e­VX 41nm7[cYswƢIc*`Xxml / c 4Iqż1}cy=_rC8x!W,an$ 0կ$ k`#a\$u#K$ }?w@ֺg@v5$:z^s/;( 9L'"IENDB`png++-0.2.5/test/cmp/pngsuite/f04n2c08.png.RGBA.16.out0000644000175000017500000000237211461476005020171 0ustar useruserPNG  IHDR #ꦷIDAThՙ5sݹbepQ8x;'"[D \T(\. 8}ʁg5̬o%Njt&c&LXfCk ⁊=.iO >a)8^~+BxWh?gr s1ǧZz\}l) Ls!b)DZ;k־f_%Pp&8~K"*.A"eymڭ g@)`,ȚQ>-< ".ܕ Yc8 xznʊÀIX$?(:,-/CVRR4揊%eF^dS/|?9$@8-K*_sŒ (VekғqK10x)I(n5-5 [:< Hx"+,q# n Q YSQqY HYʍvKB[&/~7ZdLi)asD-;2`hioS&;[oYocB"zzG27]O S22$`^PG3GJ'y&[ t1IENDB`png++-0.2.5/test/cmp/pngsuite/s09i3p02.png.GRAY.8.out0000644000175000017500000000020011461476005020152 0ustar useruserPNG  IHDR iZGIDAT%1 < [eT_  :. $R<"]Q5E.N@F[LIENDB`png++-0.2.5/test/cmp/pngsuite/basn0g08.png.GA.8.out0000644000175000017500000000021011461476005020031 0ustar useruserPNG  IHDR sOIDATHcd@ dQH3PYP}(GQ42202GD F˃a` I ܋wIENDB`png++-0.2.5/test/cmp/pngsuite/s34n3p04.png.GRAY.16.out0000644000175000017500000000044611461476005020252 0ustar useruserPNG  IHDR""O]IDATHŖ!0?HA.3NY(2PSpON)N,1D_W{MoNЖovydƜ W,O RFhNjD pBD oq;)RRvr'M~ 9GwtW gD4a%ꝓ (`/?DcBװc-2*'$b'ׄN I}73Y^j$'@iw+HIENDB`png++-0.2.5/test/cmp/pngsuite/bgbn4a08.png.GA.16.out0000644000175000017500000000020011461476005020072 0ustar useruserPNG  IHDR n<GIDATXҡ  VvE  _SIv؀ }{uIENDB`png++-0.2.5/test/cmp/pngsuite/tbrn2c08.png.GRAY.16.out0000644000175000017500000000143611461476005020416 0ustar useruserPNG  IHDR kIDATH_HuϛJxYs{}ui45% FwyQ]4`wuSDnхl." b03?tm9-y&ҹy{~ssbۊ4JIK|+ $ÀJ̹րq┴K޹/AGtXvN [%w;mN)+NkFsvW~tPvmNdM̢]~r ~.z5D#y`],;=T jT!f w%̻sT9-oZrkJEߗH4oƴ=!!ioJ?aδ=jq;uH0AIFMF*฻yHX!a<.[tz)oXZ[%Si" }V[x7tKY@êJ:ޓQFܘ^%#RΒP"!O{?fg3:IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p04.png.GA.16.out0000644000175000017500000000026311461476005020130 0ustar useruserPNG  IHDR n<zIDATX핡@ xEP (ܺ2[{3H|qK܄,;by {X^/{X^|'7,{by @"2(IENDB`png++-0.2.5/test/cmp/pngsuite/bgbn4a08.png.RGB.16.out0000644000175000017500000000022311461476005020222 0ustar useruserPNG  IHDR 1ZIDATXӱ 1 @H;)yVәk\zŃ]4?@3hxb4?@36? urrWD"IENDB`png++-0.2.5/test/cmp/pngsuite/s09i3p02.png.RGB.16.out0000644000175000017500000000023711461476005020113 0ustar useruserPNG  IHDR Hd}fIDATQ CwfGfu$-R"Æ&FciĐA0dyZ2WjGo5iG?>+TJz "qpOIENDB`png++-0.2.5/test/cmp/pngsuite/s05n3p02.png.RGB.16.out0000644000175000017500000000014611461476005020113 0ustar useruserPNG  IHDRRm-IDATcπ@ T LB fH30I3' OۤIENDB`png++-0.2.5/test/cmp/pngsuite/bgan6a08.png.GRAY.16.out0000644000175000017500000000017011461476005020354 0ustar useruserPNG  IHDR k?IDATHc4c Qjo[J]s_7y]0P/܀WozRR"QIENDB`png++-0.2.5/test/cmp/pngsuite/basi6a16.png.RGBA.8.out0000644000175000017500000000350111461476005020255 0ustar useruserPNG  IHDR }JbIDATXo\g#uCʸJ%YHEte D6,`͞ n@RAY"Vi#k;oyxKy9'3p9"wJ{[xoL~4~rwՏ<8~7[^oً~+u/Tѻ{/LQ1>Y#w+W򺝟c]qtA]#?xWl9Z/O$OψugWUcD;|7T ||ȧ8bkK[T>pIk),\Q7rBnDvԧsU>+`ypbݖ}_q7W9$FYߠ+ƑX]Q]m_hb՚CJXfsMusK_8>]n4VbEzEـi[몷T ߪi.l0g"ޣ-ū>QC;1Z^T?xxEʍǬYnRMĴKȆ/s*‡j\2wK a @M+!77Uރެ9Y?p1ΆPdi;v8)nMoնlٻyjrB˥3aL)Y}jmі}Ǐ~y =`Ћ'[u_rzŵcV,)BV#Q-KƲ  gNBcz^G6juLdDthK4.1'ke=Ey9#}V4d^1 bZÊ%]%}#9YcyE= :.{j(2M2.ʽjWL" *Œr!%a(l_~SŽt.@]cEJ* ʩDe. Huڋn)+N+i&B.:loNй6CQCs9^S/\0ySˆVUV*ʧMvdS:1Oq%\uzfH(d`RBJXbvM9=aw %r<Δ8~u2H4| r}]Migl<8Y QnFje oxRr&9ܔV^j{ܱu.{SpeH{I4)EnͻL>BrdÆ#ozg{/xd{2f wQlHS3_ԍiY8o݉ȂknvП6TȬ!&sw9yU$ʺJFrrFJyӊt\DD3 -˚=uypƲfSҝuKΔt5˚im̋BHyb` J\2Ș g]02TWn-jB]DiegRe-u;%LD$̈R Fr3M\ zjެjIENDB`png++-0.2.5/test/cmp/pngsuite/tp1n3p08.png.GRAY.8.out0000644000175000017500000000123011461476005020262 0ustar useruserPNG  IHDR V%(_IDAT8}OHq?A+y16W3FnBB#)%$y([]x"(!az+[Ԗ^mԭXݻM{~x~<_=aÝN{u?3ӯ9rwK=[osw_}ej\Xn>P:g.hPB'{ز^qktñArLZ!ʦ:<ͤaRBKD_]UtH ͸"*RxA4'ṊA|Ut(㆙ WDf ȿ<4#J.aҰt :)`[SQ_'^m>B>jr`9) lx*T -XP/8S\@DVU5J:_yJWzٰ̲4]ZYt ZbR@{(cX+ b=_5=>s :EmLmʥ:z2k73 !8&d&c;Ncyk-5B@4a=Aj# Ȋu jxQ(N_Gu:+IENDB`png++-0.2.5/test/cmp/pngsuite/f03n2c08.png.GA.8.out0000644000175000017500000000127111461476005017662 0ustar useruserPNG  IHDR sIDATH}0?ۓٽR!$ =B*^ -Deov5ǎ\l'}<>s267 ->b1D"G.t&HAAF rBD', 5 j~n+tt8au+1 x<J&#p`1U8\\/0Poٱcǹ,{;/WKF =( wUVN.?U FFF {qpX]PWE6ey}#c4hl9Bfy=V7t-G  'C܋O?UGGNJ|.Z[كJ#5N3Y]V=KHD43Z8+mO1Nѫ]ګ\DYoŒ|1S "5sŋl˦590>NK͕ke߳B XydbgC%YܩJt12gGJt-@ДV98qz< % 8[,M'{ԖH3IHu\u[ZOCZjh3BX}~eI.i{IENDB`png++-0.2.5/test/cmp/pngsuite/basi3p08.png.GRAY.8.out0000644000175000017500000000107511461476005020325 0ustar useruserPNG  IHDR !IDAT8mjQ;ܙL2if&M Մ.h%A}} _wЅ.] VKX/M\̙:^80;s<6ׂ6ƀl>?So$ܔͽH6&O~'Vͷ݊`q5pɤ#u Y2^eIc\3cIxȐSN y"dĘ I2f]Z82OE@NYP'#fYgGτsO'1Eb)ιGd t/e#c".M<|jt9aqD F1ⓓ"K4,}a,3 Hd@ \[@H@8t:NTPF CX@Ӎr}nL`jDJK.脯;%Ь"r RЮFx"r^ihTv * Vs5N_)j IENDB`png++-0.2.5/test/cmp/pngsuite/tbrn2c08.png.RGB.8.out0000644000175000017500000000241711461476005020207 0ustar useruserPNG  IHDR IDATH_hSw?@#^i/4@of4Z`UVf )X1`}Hp` CO v,fP; -Hcb$=ddf]w=99k}6G^|:x(޽{&E1& @Q'O_>nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gzs0hgIENDB`png++-0.2.5/test/cmp/pngsuite/tp0n2c08.png.RGB.8.out0000644000175000017500000000241711461476005020123 0ustar useruserPNG  IHDR IDATH_hSw?@#^i/4@of4Z`UVf )X1`}Hp` CO v,fP; -Hcb$=ddf]w=99k}6G^|:x(޽{&E1& @Q'O_>nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gzs0hgIENDB`png++-0.2.5/test/cmp/pngsuite/basn2c16.png.RGB.8.out0000644000175000017500000000033011461476005020154 0ustar useruserPNG  IHDR IDATH70DA0?LC4f);7bGBR@rl'Z6hmuN`{N$R@tԺjua.9Kxq>h{'o@֫|}ҁtE+Nny 5IENDB`png++-0.2.5/test/cmp/pngsuite/basi0g01.png.GRAY.8.out0000644000175000017500000000037711461476005020306 0ustar useruserPNG  IHDR !IDAT8A C|ʙ"hE+$@ 21؀F6r4@J-%xi#)mĢItKfg8&ejuѱkXcAF(ø\Ye%OƲUㄗ/e?\֗HU+Iݳrz*I5j8pҟpmPOG?q~:?x]IENDB`png++-0.2.5/test/cmp/pngsuite/basi2c16.png.RGB.8.out0000644000175000017500000000055411461476005020157 0ustar useruserPNG  IHDR 53IDATH1 DUlf^ÃQ#hVԔ%t2.;^|C ]haV f:ӁƼYSCo1[7M _~*ʬl"|ꜿ84\^9@5Z}>n@V}Z O!TRY!QExW Q\(&V;p} tR֭Wo ^?\4׵Gf}m$[9RwP@D Zr?RKܢvЀ:u1_m~ۢ\IENDB`png++-0.2.5/test/cmp/pngsuite/basn3p02.png.GRAY.8.out0000644000175000017500000000020111461476005020312 0ustar useruserPNG  IHDR V%(HIDAT8cb``Pa``p!@Pq{p,"3,"qhz`````u YIENDB`png++-0.2.5/test/cmp/pngsuite/tbbn2c16.png.GA.8.out0000644000175000017500000000145511461476005020044 0ustar useruserPNG  IHDR sIDATH_HuI MƩۼoM>[sbk aCixǀSz<4p,Z9eԣ;A(bpgxY&Zk1^Z-k`ޒ yϨˀBJEjlSnUrixRRIJ+șS`ԩhĈ {o^LCD0qrɜ9FF%_9%XVغ*vٜecgLIf=wYw:hΗ8]`Z3b}_ICtcԘ]R3"vIi {[ٸ3Qْ5uՖ<$m9nT2iQ{IH?EQ *2l*l~MlP+yQ2˺^Rjt^WF)h1/̺"c1{UF~VRsHj"-*{ 1L@)cT c푂UA?hLDJF,nOlN WnTQ m}G"SzAR_ w-Q<֗tĻB 0 ~)YqPuI +1ڴ*7er *5 D*lB@IENDB`png++-0.2.5/test/cmp/pngsuite/f03n0g08.png.RGB.16.out0000644000175000017500000000105611461476005020067 0ustar useruserPNG  IHDR 1IDATX՘;0?6un!@Dtt4Ht܁+-&-cP)̧I&s (P@>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  s#IDATxm۶m۶mj۶m۶m۞>c@A "da† !bQF#fqƋ aI&K"eiҦK!cYf˞#gy_`E+^deʖ+_bUV^fu֫ߠaM6kޢemڶkߡc]vޣg}` 0?C##(4?C#$2?OC#3,6?C# "1_/C#+*5_C#&3ߊoC#;.7ߋC#!0?C#')4?C#%2_C#7-6C##1?C#/+5C#'3C#?/7zIENDB`png++-0.2.5/test/Makefile0000644000175000017500000000560411461476005013576 0ustar useruser# # Copyright (C) 2007,2008 Alex Shulgin # # This file is part of png++ the C++ wrapper for libpng. PNG++ is free # software; the exact copying conditions are as follows: # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ifndef PREFIX PREFIX := /usr/local endif ifndef PNGPP PNGPP := .. endif make_cflags := -Wall $(CFLAGS) -I$(PREFIX)/include -I$(PNGPP) make_ldflags := $(LDFLAGS) -L$(PREFIX)/lib ifndef NDEBUG make_cflags := $(make_cflags) -g make_ldflags := $(make_ldflags) -g endif ifndef LIBPNG_CONFIG LIBPNG_CONFIG := libpng-config endif sources := convert_color_space.cpp \ generate_gray_packed.cpp \ read_write_gray_packed.cpp \ generate_palette.cpp \ write_gray_16.cpp \ read_write_param.cpp \ dump.cpp deps := $(sources:.cpp=.dep) objects := $(sources:.cpp=.o) targets := $(sources:.cpp=$(bin_suffix)) all: $(deps) $(targets) dist-copy-files: mkdir $(dist_dir)/test cp -r $(sources) Makefile test.sh README cmp $(dist_dir)/test tar cf - pngsuite --exclude=\*.out | tar xf - -C $(dist_dir)/test clean: clean-targets clean-tests-output clean-deps clean-targets: rm -f $(targets) $(objects) test: all ./test.sh clean-tests-output: rm -f *.out pngsuite/*.out .PHONY: all dist-copy-files \ clean clean-targets \ test test-convert_color_space \ clean-tests-output \ clean-deps %$(bin_suffix): %.o g++ -o $@ $< $(make_ldflags) `$(LIBPNG_CONFIG) --ldflags` %.o: %.cpp g++ -c -o $@ $< $(make_cflags) `$(LIBPNG_CONFIG) --cflags` %.dep: %.cpp g++ -M $(CPPFLAGS) $(make_cflags) $< -o- | \ sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@ clean-deps: rm -f $(deps) include $(deps) png++-0.2.5/test/dump.cpp0000644000175000017500000000141211461476005013600 0ustar useruser#include #include #include // inline png::uint_16 // to_png_order(png::uint_16 x) // { // return ((x & 0xff) << 8) | (x >> 8); // } int main(int argc, char* argv[]) try { if (argc != 2) { throw std::runtime_error("usage: dump PNG"); } char const* file = argv[1]; png::image< png::gray_pixel_16 > image(file); for (size_t y = 0; y < image.get_height(); ++y) { for (size_t x = 0; x < image.get_width(); ++x) { if (x) { putchar(' '); } printf("%04x", image[y][x]); } putchar('\n'); } } catch (std::exception const& error) { std::cerr << "dump: " << error.what() << std::endl; return EXIT_FAILURE; } png++-0.2.5/test/generate_gray_packed.cpp0000644000175000017500000000474111461476005016766 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include template< class pixel > void generate_image(png::image< pixel >& image, char const* filename) { for (size_t j = 0; j < image.get_height(); ++j) { for (size_t i = 0; i < image.get_width(); ++i) { image.set_pixel(i, j, pixel(i + j)); } } image.write(filename); } int main(int argc, char* argv[]) try { size_t const width = 32; size_t const height = 32; png::image< png::gray_pixel_1 > image1(width, height); generate_image(image1, "gray_packed_1.png.out"); png::image< png::gray_pixel_2 > image2(width, height); generate_image(image2, "gray_packed_2.png.out"); png::image< png::gray_pixel_4 > image4(width, height); generate_image(image4, "gray_packed_4.png.out"); } catch (std::exception const& error) { std::cerr << "generate_gray_packed: " << error.what() << std::endl; return EXIT_FAILURE; } png++-0.2.5/test/generate_palette.cpp0000644000175000017500000000620511461476005016150 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include template< typename pixel > void generate_image(png::image< pixel >& image) { typedef png::pixel_traits< pixel > traits; size_t colors = 1 << traits::get_bit_depth(); size_t size = colors / 2; image.resize(size, size); png::palette palette(colors); for (size_t c = 0; c < colors; ++c) { palette[c] = png::color(c * 255 / colors, (colors - c - 1) * 255 / colors, c * 255 / colors); } image.set_palette(palette); for (size_t j = 0; j < image.get_height(); ++j) { for (size_t i = 0; i < image.get_width(); ++i) { image.set_pixel(i, j, i + j); } } } int main() try { png::image< png::index_pixel_1 > image1; generate_image(image1); image1.write("palette1.png.out"); png::image< png::index_pixel_2 > image2; generate_image(image2); image2.write("palette2.png.out"); png::image< png::index_pixel_4 > image4; generate_image(image4); image4.write("palette4.png.out"); png::image< png::index_pixel > image8; generate_image(image8); image8.write("palette8.png.out"); png::image< png::index_pixel > image8_tRNS; generate_image(image8_tRNS); png::tRNS trns(256); for (size_t i = 0; i < trns.size(); ++i) { trns[i] = i; } image8_tRNS.set_tRNS(trns); image8_tRNS.write("palette8_tRNS.png.out"); } catch (std::exception const& error) { std::cerr << "generate_palette: " << error.what() << std::endl; return EXIT_FAILURE; } png++-0.2.5/test/pngsuite/0000755000175000017500000000000011461474721013772 5ustar useruserpng++-0.2.5/test/pngsuite/s33i3p04.png0000644000175000017500000000060106511716506015665 0ustar useruserPNG  IHDR!!gAMA1_sBITw'PLTEwwwwww;IDATx]1r0E?0(xFHܸSKε+4>y˒Vo 4Ĺp:4a`5$9k L~FQZ #J3^K?Z]T4Z?&ikEJ 3) ]aVYEh-7[m0EuʩPs"'}H '8JEXiVE?h$"ˋ?CCP75Cp`,%/}XPζIENDB`png++-0.2.5/test/pngsuite/tbwn1g16.png0000644000175000017500000000217206511716545016056 0ustar useruserPNG  IHDR kgAMA1_tRNSĬbKGD1IDATxUMLm–ʊ݂-kjh@D$!1!&z01WB"(k' h$h kXi!ǵJ~G3<;;3؂$l%8ݻg047/ ۧ<Ǐfjc߿GwS'F08xd:}Գgcc>ZEfiihsJGFr9Z\-}$Þ=w>z41qBW\_pW\gu$ s<929yVw7X>e2SSK1AAfaѺ:$DBFE?bNv`^NS2@mm}}Up"""cm lVy(*`cc:t V(OJ&ҥK SLddڅa~KQ> JKL|YxJ$VfVVʷSDVVk }^( e ݋wѳO},g V1Mrnƾ@2 wfCx>+cKQ–[-ȱ䈻#0Dfݦ%#v3nwd@\ qjɲ TYs%IENDB`png++-0.2.5/test/pngsuite/unused/0000755000175000017500000000000011274633570015276 5ustar useruserpng++-0.2.5/test/pngsuite/unused/cm0n0g04.png0000644000175000017500000000044406511716704017235 0ustar useruserPNG  IHDR )gAMA1_tIME "8ݜIDATx] 0 P*@# #T10lPF`ؠF=IQ*u`%qk H񚈩mߟ э=,fOK t(F ;P{xp]9/p*$(*yՃ@C  cqNU#)11.rf0gh(tEkIENDB`png++-0.2.5/test/pngsuite/unused/z06n2c08.png0000644000175000017500000000034006511716720017170 0ustar useruserPNG  IHDR IDATxK Кv1~a>W$n(8yKr-"ˡ %PzPE:wNh~uJLН#uOE" m(t:][ZWXtF]]Tҗ^}@'#si" |A~UUNn1R,IENDB`png++-0.2.5/test/pngsuite/unused/ps1n2c16.png0000644000175000017500000000315106511716657017267 0ustar useruserPNG  IHDR 1gAMA1_/spALsix-cubePNG group 1996-10-223f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f3333f333ff3fffff3f3f̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f@IDATxՖ 0DA~&fzE=֠B>/drs~='3_Zwt(p3p]`_yt?t(C\l52L̩g I@g.`(`g Dg&((`60Y`zl(P49܀:{z*zȟmt3ΞAO3B^IENDB`png++-0.2.5/test/pngsuite/unused/pp0n6a08.png0000644000175000017500000000146206511716652017264 0ustar useruserPNG  IHDR szzgAMA1_PLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3fcQUIDATx1 0 CQ<$o ԥKA4 z-qKjI`~Ux\Ku7UIENDB`png++-0.2.5/test/pngsuite/unused/cdun2c08.png0000644000175000017500000000132406511716677017342 0ustar useruserPNG  IHDR gAMA1_sBITw pHYs{RkgIDATx qjhWK %ܵB q @ Fx7 zO/̃/[ü ̍ӑm@`]]6y~KXa;e" ṯ[I=du5V3>&?wVӶc[lJ6YՖ` ⤉)?euSX,QOyKN]J:#< CL=v%$ǃ'JwMk=b+\u;zwP^<'pbS d(@J,=9ּnH])rt`oIAtUۛDVbmB5˙(YkTns=xBd"\`"[ fRhz0'mehCMݨ3  Ldٯ?`~+Іdl*#p]q2^ɩ8|_ rj:2Ckiʙ9ff |ADJi?c~++ 範t>rl5yM.f P6@.lIENDB`png++-0.2.5/test/pngsuite/unused/cdsn2c08.png0000644000175000017500000000035006511716677017336 0ustar useruserPNG  IHDRKm)gAMA1_sBITw pHYsO%{IDATxEQ @DSga-B+ X JV++|4L2]C0بp|̡b?Liy+[}5kIR0_66T$'GjD>Pe}P] aO_w |*/^֮IENDB`png++-0.2.5/test/pngsuite/unused/ctzn0g04.png0000644000175000017500000000136106511716705017356 0ustar useruserPNG  IHDR )gAMA1_tEXtTitlePngSuiteOUL1tEXtAuthorWillem A.J. van Schaik (willem@schaik.com)GAzTXtCopyrightxs/,L(QIU(KSNHQKO,/JU04յ4aRZzTXtDescriptionx-0 D~MLX`\C"8J UWY{wwRg+]|?BO&2 .IlL} "$ܮg<-.=KMk.QI#|Ě=&'*EQ5 o>ᤊ{,SPm{͹<}mUxoGmҥVbz@zTXtSoftwarexs.JM,IMQSHTK).I,sJ3 rK ҕBQzTXtDisclaimerxs+JM-O,JU`ԮIDATx] 0 P*@# #T10lPF`ؠF=IQ*u`%qk H񚈩mߟ э=,fOK t(F ;P{xp]9/p*$(*yՃ@C  cqNU#)11.rf0gh(tEkIENDB`png++-0.2.5/test/pngsuite/unused/g25n3p04.png0000644000175000017500000000032706511716617017172 0ustar useruserPNG  IHDR TggAMAАTOPLTE--\\\RQdIDATxα 0 DQ[J+ ^msQ$s5HІ:P 5B) oe p/)FqjS!*$BB?x(:5tf;PIENDB`png++-0.2.5/test/pngsuite/unused/ch1n3p04.png0000644000175000017500000000040206511716702017235 0ustar useruserPNG  IHDR TggAMA1_sBITw-PLTE""fwDDҰIhIST@p0`` P@0PpHYAGIDATxc =sfժrcwfd C+(H*ŅTݻq@*)#MK#G{7}IENDB`png++-0.2.5/test/pngsuite/unused/ch2n3p08.png0000644000175000017500000000342206511716703017250 0ustar useruserPNG  IHDR DgAMA1_PLTE"Dww :w""""Uffff"DDUU"DDUU3DDff3D"ffD33U*D˺[""f2Ucw:DDkfBkܺ33sJw{"w332fDwJf""UUDff3UwwDwffD"w"3333cU3{UUUUf܃wwUUww""DD3ԪU*U˴f3BSD̙"Sww333Ĉwff""UU"DD[wfwws33wD""U"f 3bhISTMIDATx GHd+;3 ekXegа**4h lޣY2W%syiHCL*;8"KE6sx'HK?Y9sģ>1~!'B 0IENDB`png++-0.2.5/test/pngsuite/unused/g05n0g16.png0000644000175000017500000000052306511716565017157 0ustar useruserPNG  IHDR kgAMAOX2 IDATxս 0~ H7i>AA U As GA/@ Q#99͹~ͅEX@p:)q)8WSp80/)n#vW <8`2C~8\x8ah`,uA׭ nV @_`+(W]X&*&5-~> ϧR#лtpDPGXDzЂd ?_fAIENDB`png++-0.2.5/test/pngsuite/unused/g03n0g16.png0000644000175000017500000000053106511716562017151 0ustar useruserPNG  IHDR kgAMAIIDATxM 0WZEP(]S4^"\"_mu!A3Ct7Hi|k,P1 Q`8  M$ z NA)]Wqm)*N ׫_ׂ X.TyecyZBJu2y"8MN7E@WP Mw; N'`2}&8MUeem`<u+DݷIENDB`png++-0.2.5/test/pngsuite/unused/g05n3p04.png0000644000175000017500000000031606511716613017162 0ustar useruserPNG  IHDR TggAMAOX2PLTEs$[IDATxcP pA `@`P@W,@Gi@` p00vq`AV`CU ``gjARQ^w*x;JUIENDB`png++-0.2.5/test/pngsuite/unused/oi1n2c16.png0000644000175000017500000000045606511716714017253 0ustar useruserPNG  IHDR 1gAMA1_IDATxՖ 0DA~&fzE=֠B>/drs~='3_Zwt(p3p]`_yt?t(C\l52L̩g I@g.`(`g Dg&((`60Y`zl(P49܀:{z*zȟmt3ΞAO3B^IENDB`png++-0.2.5/test/pngsuite/unused/cs3n3p08.png0000644000175000017500000000040306511716667017271 0ustar useruserPNG  IHDR DgAMA1_sBITBTPLTEmmI$$II$m$Imp+KIDATxbWT#$tNzC{h t. mtn:B"@3w&IENDB`png++-0.2.5/test/pngsuite/unused/g07n0g16.png0000644000175000017500000000050106511716566017156 0ustar useruserPNG  IHDR kgAMAp;XVIDATx͕ 0 B%hXI\1-Dl IL9P8j-Z׵Z{ۦ>2x n@i$qliE: - tA LZ߷4 di`Y8 }SU1@ͣAYhgphk \";9@39BuxC]] @ Ҡ >š,s,IENDB`png++-0.2.5/test/pngsuite/unused/ps2n2c16.png0000644000175000017500000000471106511716662017267 0ustar useruserPNG  IHDR 1gAMA1_spALsix-cubePNG group 1996-10-223f3333f333ff3fffff3f3f3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fffffff3fffff3f3333f333ff3fffff3f3f3f3f3333f333ff3fffff3f3f3f3f3333f333ff3fffff3f3f3f IDATxՖ 0DA~&fzE=֠B>/drs~='3_Zwt(p3p]`_yt?t(C\l52L̩g I@g.`(`g Dg&((`60Y`zl(P49܀:{z*zȟmt3ΞAO3B^IENDB`png++-0.2.5/test/pngsuite/unused/z03n2c08.png0000644000175000017500000000035006511716720017166 0ustar useruserPNG  IHDR IDATx^@0 J\l" [ןED=SJSf^տ> xЀ(9CNщ֠ .Gtx_AC:$%tgcݳ"n]ZWXtyF]؁]ȥ:Й1zd\ROx DWUNnCIENDB`png++-0.2.5/test/pngsuite/unused/g07n3p04.png0000644000175000017500000000031706511716614017166 0ustar useruserPNG  IHDR TggAMAp;XVPLTEvvvNTl\IDATxc4 PA `@`0 @P p0S EX (//(Wbb 00 ``gRBQQ^w*#kr=IENDB`png++-0.2.5/test/pngsuite/unused/g10n0g16.png0000644000175000017500000000040606511716570017147 0ustar useruserPNG  IHDR kgAMA1_IDATx1 E? ,=\!^KXHbřDdcfy΁HkMqye--HwZ_< JMGi =ضB;݃al>hly,kdǔ41{mi!,RIϴϫ IENDB`png++-0.2.5/test/pngsuite/unused/oi9n0g16.png0000644000175000017500000000240306511716712017255 0ustar useruserPNG  IHDR kgAMA1_IDATxvIDATсIDATށ[IDAT@IDAT1y}IDAT IDAT\XIDAT0MDIDAT !1IDATCmIDATQ4TIDAT9w=IDAT[ԁIDATIDATEIDATZ?mIDATܧ]IDATIDATA>IDAT\XIDAT(IDAT{\IDAT2,hIDATށ[IDAT*>IDAT/UIDATg珺IDAT7IDATU?YIDAT?^PIDAT8:vIDATŀIDAT`KIDATFVIDATW7IDAT<6IDAT<6IDATcM IDATIDAT:4ZIDAT+IDAT`eIDATK>1IDAT&IDATVIDAT(8}IDATZӁIDAT+IDAT|*IDAT@^)4(cIENDB`png++-0.2.5/test/pngsuite/unused/oi9n2c16.png0000644000175000017500000000573606511716715017272 0ustar useruserPNG  IHDR 1gAMA1_IDATxvIDATсIDATށ[IDAT1TKIDAT[IDAT IDAT\rIDAT0MDIDAT5mIDATDYaIDAT`KIDAT2IDATA) IDATEIDAT$fIDAT~!IDAT}=[IDAT4IIDAT_IDAT|*IDAT1TKIDAT7@IDAT[IDAT1,RIDAT69IDAT,[IDAT&5IDATf鹅IDATA>IDAT̺sIDATzIDAT;TIDAT,[IDATE.IDAT_[IDAT=pP1IDATG IDATIDATU?YIDAT5mIDATB]TIDAT(8}IDAT>Y`CIDAT/@IDAT2IDAT8IDATIDATdbةIDATr3mIDATs4]nIDAT~!IDAT;TIDAT=pP1IDAT'2ȃIDAT3IDAT_1IDATT_IDATf<IDAT NIDATZIDATwYwIDAT}=[IDAT6IDATFIDATT_IDATtPIDAT(IDATpx= IDAT,IDAT3IDATFS{IDAT NIDAT-IDAT{IDATpx= IDAT]=PIDAT쟪IDAT_?M~IDAT`eIDAT NIDAT WHIDAT^IDAT_1IDATIDAT쁄ӻIDAT{IDAT6IDATypIDATtPIDAT{5IDATYdIDAT\XIDAT?^PIDATtPIDAT{5IDAT_[IDATLS(IDAT(IDATCmIDATV 3IDAT\J`7IDATll1IDAT(8}IDAT :kQIDATgIDATV 3IDAT VUIDATKIDATDYaIDATgIDATIDAT&5IDATЮ<IDAT0pIDATIDATO7$IDAT\XIDAT(IDATKIDAT(IDAT`eIDAT WIDATK>1IDAT;TIDATRR'@IDATT_IDATWV|IDAT1uIDAT6qIDAT0MDIDAT1,RIDATIDATIDATY:IDAT`eIDAT7@IDATzIDATzPIDAT\XIDATllIDATzIDAT2⩕IDATȽ7jIDATH=IDAT_?M~IDATm;` IDATtPIDATT_IDAT3IDAT]IDAT𕅏IDATŀIDATT_IDAT?ëIDAT&IDAT^IDATA) IDATO[!IDAT/UIDATOIDATIDAT3IDATsIDATaQ:IDATB]TIDATr=IDAT^IENDB`png++-0.2.5/test/pngsuite/unused/pp0n2c16.png0000644000175000017500000000170206511716652017256 0ustar useruserPNG  IHDR 1gAMA1_PLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3fcQIDATxՖ 0DA~&fzE=֠B>/drs~='3_Zwt(p3p]`_yt?t(C\l52L̩g I@g.`(`g Dg&((`60Y`zl(P49܀:{z*zȟmt3ΞAO3B^IENDB`png++-0.2.5/test/pngsuite/unused/ct0n0g04.png0000644000175000017500000000042106511716705017240 0ustar useruserPNG  IHDR )gAMA1_IDATx] 0 P*@# #T10lPF`ؠF=IQ*u`%qk H񚈩mߟ э=,fOK t(F ;P{xp]9/p*$(*yՃ@C  cqNU#)11.rf0gh(tEkIENDB`png++-0.2.5/test/pngsuite/unused/g25n0g16.png0000644000175000017500000000057706511716571017167 0ustar useruserPNG  IHDR kgAMAАTO6IDATx 0 @@|"gnā:]5 8DQ-YPVVo@EN\o6VEVj4ef 0O c@ `ӟ3i(ͦzZB 7me\ tf|4t~3Cl^f3{oLkeU>b0]β  o1z0}we}&%ϧS<ے$m 664p_4f@B`2|? 8IENDB`png++-0.2.5/test/pngsuite/unused/cm7n0g04.png0000644000175000017500000000044406511716703017243 0ustar useruserPNG  IHDR )gAMA1_tIME V IDATx] 0 P*@# #T10lPF`ؠF=IQ*u`%qk H񚈩mߟ э=,fOK t(F ;P{xp]9/p*$(*yՃ@C  cqNU#)11.rf0gh(tEkIENDB`png++-0.2.5/test/pngsuite/unused/cs5n3p08.png0000644000175000017500000000041706511716670017272 0ustar useruserPNG  IHDR DgAMA1_sBIT&C`PLTEB{c!Z::cZ!B{G/KIDATx0[>@Vj%(`R A XtY VA,`d\p *-hq>IENDB`png++-0.2.5/test/pngsuite/unused/z00n2c08.png0000644000175000017500000000614406511716717017200 0ustar useruserPNG  IHDR  +IDATx                                                                                                                 UNnIENDB`png++-0.2.5/test/pngsuite/unused/oi2n0g16.png0000644000175000017500000000026306511716712017250 0ustar useruserPNG  IHDR kgAMA1_@IDATx1 0 CQ9[ܠ({2*ُ?8Wc:`݂@B&@=2:3IDAT -hL`?oO8K_z_}IENDB`png++-0.2.5/test/pngsuite/unused/oi2n2c16.png0000644000175000017500000000047206511716715017253 0ustar useruserPNG  IHDR 1gAMA1_IDATxՖ 0DA~&fzE=֠B>/drs~='3_Zwt(p3p]`_yt?t(C\l52L̩g I@gseIDAT.`(`g Dg&((`60Y`zl(P49܀:{z*zȟmt3ΞAO3B^MwbIENDB`png++-0.2.5/test/pngsuite/unused/g10n2c08.png0000644000175000017500000000043506511716603017145 0ustar useruserPNG  IHDR gAMA1_IDATx1 0D }ǰ Bp 3H*M&S-g O 7C @T PĠ("kp3p _ (d Pu )-wzCDD2O5 H3oiۺvtv|GSMd"*?l kblt RUԭMTߏIENDB`png++-0.2.5/test/pngsuite/unused/cs3n2c16.png0000644000175000017500000000032606511716665017254 0ustar useruserPNG  IHDR 1gAMA1_sBIT 7~IDATx @ H*)^ < 4\u wClPgXPR3ޛߟ:Ž~!N$#|G}LCli(?c"B@aEDG@0S&i\vgIENDB`png++-0.2.5/test/pngsuite/unused/ccwn3p08.png0000644000175000017500000000302206511716702017343 0ustar useruserPNG  IHDR DgAMA1_ cHRMz&u0`:pQ<PLTEމu k51I&442tQ#l-^>bOw3X .c$s=;Y\z<HA(-I`%{KR~o|dqj`+_p5]g+=dEcC=K&037c, G6ǫfYLqLَJ{AL;[@]~T<e9O)f ˝4foX㌖Ae=6&^?)gKT!i¿kK{|SiC/5^eMu@~rs>oݛ?@3'0|{O%?|{S 9OU>/WLbz Y+к+JIDATxc8B0m\ 4RR¥ #* \kjZ]OhM$]un6n SUrn: a(`Ywhsh \7Oڿ{ѣ[BCWǣ*Uy~55T]E$Wvwk^a\",:Ad9IW 45dVUO8\YI$.lkzÂzz $\\cz)nh4Ck']pn.OM^ȱr-e8q́_jխ[ Nl)s6SE^~YPtKQQ ۇNX&Ѷ]I{7(31s+H׀ ]jSRokV֩e+O>{bk'ܙt>/_N-[&$T"+a)P^Me#ΗS>BϜ93or S}}TTW$n(8yKr-"ˡ %PzPE:wNh~uJLН#uOE" m(t:][ZWXtF]]Tҗ^}@'#si" |A~UUNnIENDB`png++-0.2.5/test/pngsuite/unused/g07n2c08.png0000644000175000017500000000052406511716602017151 0ustar useruserPNG  IHDR gAMAp;XV IDATxՖA 0E'"+/Ir&!ݖm)E+U:34`;"!WPMė"p)~~ ʒ~\( !C@@I LR4b2fI" Ā30FEow0R2~hp2@Z  6fMW^uP릪R|y?i ` DlknkYuKc,5U(s(28 3Z? IENDB`png++-0.2.5/test/pngsuite/unused/ps2n0g08.png0000644000175000017500000000444506511716661017275 0ustar useruserPNG  IHDR V%(gAMA1_spALsix-cubePNG group 1996-10-223f3333f333ff3fffff3f3f3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fffffff3fffff3f3333f333ff3fffff3f3f3f3f3333f333ff3fffff3f3f3f3f3333f333ff3fffff3f3f3f AIDATxcd`$ȳ )?`y00gdy\ q10edPq5YIENDB`png++-0.2.5/test/pngsuite/unused/oi4n2c16.png0000644000175000017500000000052206511716715017251 0ustar useruserPNG  IHDR 1gAMA1_cIDATxՖ 0DA~&fzE=֠B>/drs~='3_Zwt(p3p]`_yt?t(CnTZXIDAT\l52L̩g I@gecIDAT.`(`g Dg&((`60Y`zl(P49܀:{z*zȟmt3ΞAO3B )IDAT^z zIENDB`png++-0.2.5/test/pngsuite/unused/ct1n0g04.png0000644000175000017500000000143006511716705017242 0ustar useruserPNG  IHDR )gAMA1_tEXtTitlePngSuiteOUL1tEXtAuthorWillem A.J. van Schaik (willem@schaik.com)G8tEXtCopyrightCopyright Willem van Schaik, Singapore 1995-96P8tEXtDescriptionA compilation of a set of images created to test the various color-types of the PNG format. Included are black&white, color, paletted, with alpha channel, with transparency formats. All bit-depths allowed according to the spec are present.M k9tEXtSoftwareCreated on a NeXTstation color using "pnmtopng".jdytEXtDisclaimerFreeware._,JIDATx] 0 P*@# #T10lPF`ؠF=IQ*u`%qk H񚈩mߟ э=,fOK t(F ;P{xp]9/p*$(*yՃ@C  cqNU#)11.rf0gh(tEkIENDB`png++-0.2.5/test/pngsuite/unused/g04n3p04.png0000644000175000017500000000033306511716612017157 0ustar useruserPNG  IHDR TggAMA7PLTE",hIDATx 0D!ہ[\Ӷ` `N?eq]Q- q@SMť" DCܛ6 ѐ }~ uIENDB`png++-0.2.5/test/pngsuite/unused/cdfn2c08.png0000644000175000017500000000062406511716676017324 0ustar useruserPNG  IHDR gAMA1_sBITw pHYs2R0'IDATxUaq0 ௙SPp R8 @h Tv6]iW[dogsPz`qfX)\ةo_ճ_ժLNNq u*nVS pv5%/sPdG"Gx% ^ .Utl[mv=K#~e%ȥkQ|܏y1](+AFK F898%| OҎISSq-r3˯[œ"}p4=ABYi9Q@u3us IENDB`png++-0.2.5/test/pngsuite/unused/ccwn2c08.png0000644000175000017500000000275206511716700017334 0ustar useruserPNG  IHDR gAMA1_ cHRMz&u0`:pQ<uIDATxOg3g̜sfnbrBiFS06"ئwAE7q.Dq)R[PP1r9y'kJH^^f3<̫D;M }#x=_+s8Rr˰#O3#o!AK!EupKOFb=0Y1\d{9fҞߣ31AL|~}v@v {t{t#:aD'"rԌo·>6*@Hp4R1 Ng V㬞d<t:XAդ>#88z~ N{nCT8^@7f{0>c&`[M4.!E4&AKgڧ藘MtP]k):b$B`نDua֎ś1pi{nLO .Q*F搸 kº0求xIv |it(=7b65aC #a$ SANEG{G8gCa, 7^^=I]BЭ-Cʅ;8N{A$6$*0Ԍ>qل"a:&$2u>Of[9E fskTZ$ A27CRu,_9s_~G5b .07ɛmK9.r<};,%"o㞩6",5f}<ܞo@JLWW/FJ*y]^'; D(IENDB`png++-0.2.5/test/pngsuite/unused/oi1n0g16.png0000644000175000017500000000024706511716712017251 0ustar useruserPNG  IHDR kgAMA1_^IDATx1 0 CQ9[ܠ({2*ُ?8Wc:`݂@B&@=2 -hL`?oO8K_+IENDB`png++-0.2.5/test/pngsuite/unused/g03n3p04.png0000644000175000017500000000032606511716611017157 0ustar useruserPNG  IHDR TggAMAIPLTEȭ1 cIDATxc(% 0A `@`@W,@G.@p`06`FRalb\%U@ l@-H*@ SRpIENDB`png++-0.2.5/test/pngsuite/unused/cm9n0g04.png0000644000175000017500000000044406511716704017246 0ustar useruserPNG  IHDR )gAMA1_tIME ;;u0IDATx] 0 P*@# #T10lPF`ؠF=IQ*u`%qk H񚈩mߟ э=,fOK t(F ;P{xp]9/p*$(*yՃ@C  cqNU#)11.rf0gh(tEkIENDB`png++-0.2.5/test/pngsuite/unused/ps1n0g08.png0000644000175000017500000000270506511716656017275 0ustar useruserPNG  IHDR V%(gAMA1_/spALsix-cubePNG group 1996-10-223f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f3333f333ff3fffff3f3f̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3f@AIDATxcd`$ȳ )?`y00gdy\ q10edPq5YIENDB`png++-0.2.5/test/pngsuite/unused/g04n2c08.png0000644000175000017500000000057106511716600017146 0ustar useruserPNG  IHDR gAMA70IDATxՖ=n@F̟D-}H(R"~_Oq)xw޼!Su4T矪'3p0R%F``\~ql\^6 >`k\Π1d@Wnw G/Ȼ15+:@ l`6 rD^_](iX."d@3V1yod@o3LzdR f8l6?VFpaHnnrenuݮ|4-/6ީ~k\hIENDB`png++-0.2.5/test/pngsuite/unused/oi4n0g16.png0000644000175000017500000000031306511716712017246 0ustar useruserPNG  IHDR kgAMA1_IDATx1 0 CQ9[ܠ({2*ُ?8mIDATWc:`݂@B&@=ΣIDAT2mf IDAT -hL`?oO8K_z_}IENDB`png++-0.2.5/test/pngsuite/unused/g10n3p04.png0000644000175000017500000000032606511716615017161 0ustar useruserPNG  IHDR TggAMA1_PLTETTUZcIDATxcP H% `@`@W,@G.@` p00NK`CV`Ɩ *@-H*ـ"(/YLFə:IENDB`png++-0.2.5/test/pngsuite/unused/g25n2c08.png0000644000175000017500000000062506511716604017155 0ustar useruserPNG  IHDR gAMAАTOLIDATxm1@Nj #؎8Pu-` @ T@|HsZOH0gi,a&^ݥݧSȀY@'%  @V T2H o2 @'J\^_^|AU ov2`4"236"yA瓲4 x pϋ< HHQ‰ b_`8,ߢ^-v@'N=yLӅw@["^] s2 pd@@?+ZD _-a2wIENDB`png++-0.2.5/test/pngsuite/unused/cs8n2c08.png0000644000175000017500000000022506511716664017257 0ustar useruserPNG  IHDR gAMA1_LIDATxA 0 BQcjS҉hi Dk`j}0MA_uoFIENDB`png++-0.2.5/test/pngsuite/unused/g03n2c08.png0000644000175000017500000000056206511716577017162 0ustar useruserPNG  IHDR gAMAI)IDATxM@F1Dw.x!.2dFgFˆ$øVJ_.b+gƻGq98`>//߀шVa" A+P :Π P Z-@TfSA2~4@]5Ȁ_>tl̮1333$RdV8$lB'4I^7m6MV78YmtC|wcn'[|(% jПA Ϻd@ ZY#[jIENDB`png++-0.2.5/test/pngsuite/unused/cs8n3p08.png0000644000175000017500000000040006511716670017265 0ustar useruserPNG  IHDR DgAMA1_`PLTE ߠ?_`@`@_ ?cKIDATx0[> |Gp "lX *A/P $BP Z.Y N-x)>SIENDB`png++-0.2.5/test/pngsuite/basi0g02.png0000644000175000017500000000023206511716426016005 0ustar useruserPNG  IHDR k gAMA1_QIDATxcPb`r`p16nDgg]!dDCH dJHR? 0A 9RM}IENDB`png++-0.2.5/test/pngsuite/s05n3p02.png0000644000175000017500000000020106511716464015666 0ustar useruserPNG  IHDRvgAMA1_sBITw PLTEwAsIDATxcX0a"\*JIENDB`png++-0.2.5/test/pngsuite/basi0g16.png0000644000175000017500000000045306511716432016014 0ustar useruserPNG  IHDR qgAMA1_IDATx;0DI ]0S ,D @C#IVhk& \lX5R 2'+d~G @4 @4߁@\\y9۩ܵEkQט-} Q FAQ wbk@|DVIENDB`png++-0.2.5/test/pngsuite/basn3p08.png0000644000175000017500000000240611274633102016030 0ustar useruserPNG  IHDR DgAMA1_PLTE"Dww :w""""Uffff"DDUU"DDUU3DDff3D"ffD33U*D˺[""f2Ucw:DDkfBkܺ33sJw{"w332fDwJf""UUDff3UwwDwffD"w"3333cU3{UUUUf܃wwUUww""DD3ԪU*U˴f3BSD̙"Sww333Ĉwff""UU"DD[wfwws33wD""U"f 3bIDAT8 GHd+;3 ekXegа**4h lޣY2W%syiHCL*;8"KE6sx'HK?Y9sģ>1~!'B 0RIENDB`png++-0.2.5/test/pngsuite/tbrn2c08.png0000644000175000017500000000250306511716546016046 0ustar useruserPNG  IHDR gAMA1_tRNS33ObKGD3'|IDATx_hSw?@#^i/4@of4Z`UVf )X1`}Hp` CO v,fP; -Hcb$=ddf]w=99k}6G^|:x(޽{&E1& @Q'O_>nO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gz IENDB`png++-0.2.5/test/pngsuite/basi2c16.png0000644000175000017500000000112306511716440016004 0ustar useruserPNG  IHDR ۏvgAMA1_ IDATxՖ!s0?8a>Vx?0.;Xx0p0 SW+c Y}+EI$ ottЅ Awj88:A?/ĠnqsT`z/drs~='3_Zwt(p3p]`_yt?t(C\l52L̩g I@g.`(`g Dg&((`60Y`zl(P49܀:{z*zȟmt3ΞAO3B^N IENDB`png++-0.2.5/test/pngsuite/bgyn6a16.png0000644000175000017500000000657506511716542016052 0ustar useruserPNG  IHDR #ꦷgAMA1_bKGD~# "IDATxݙ_luKrM.ZKʴRM Y.R2Z[Ɋ^qb,ZɊ (0PrB&\)(D~D4KK/9wUU4AΝ;ww|猕i |ؘ}}+M!3߀ޱ&}߯ZfF5[,@f.3rZtL017qHÿto Z?TR4٢:O~-{D`kEU4")sZHfn2@6RtXO)ޯ;voR'zֽO۴=5ߣDOqD Oc3`co47e k$9SQ aȗ~U5`:OE5CJ :u'|VMt?\3%'*JS_7W&; 42@THtZ]m'Ի6tmrwK'Z׉^щ~QCbV b^NJ^Jr宁Z S _XfxNEOfͅz-/?ջu5Dp^vGVˏGW5| %˿\5ėf%XYhNf uSSn6Ys;;:p-'AW:UGpxqB?7GsZ g`/f@%6mW#r?zf7k.{zzz _NF٪ At5Huta>4u-⋋=wTK\*< e7 M@x޶"&nܛ9f5|>IEtSqEUvvhƫ ^R\TjVz=XtodɎap~~ p}c ׍{3lvB}ކ|9:^TyJz5%WkFƫ%X go|h7#aL$7u)7ݬP?*>WU4^Y+/WZO?{1+^ |{ w u'0oh5HM@3~ݸ7sf7k.7e-/NK?RxZ s'@/eAY@ [?p| HQtu yfKϼQ-ѪHM@3~ݸ7sf7k.ԇ _|IV?4ħځN,'[3kXf|>o$_NY%an }MEFj0&fqo攛n\~|[~|!~ݻj%VyN&#āHFq@ ҊU;2t`@2zKoT۵3=-nj7#aL$7Vlvkeݻμ K@pR (#8grRKX4L;V݌14׍{3\67aZi.3o~`i޻ {pi 3 =)opQqdv%)3{>5XaXiH4ь̤+[h7#aL$׀fiZV!_ Cɽ?x~;w1[o zDE3ؓI~]Rl~%yZ+1S5ISZj݈VF˜H.~xVv: N]mx⁍/43}Ȉ c'ݛ l/Ib*aS1Q&1%?3j݈VD\9߭;wR'3j=K3Y ҕx{vi 1\[SΦx>lOcJF ޒ4ŨuWGjO9hn$83*}}§Rw~;@4k7syv|aE%aL>  j0&3gƫˁȽ_BAqޓ=vA&folnon4|6jd.dndoGq?eí۵IENDB`png++-0.2.5/test/pngsuite/basn0g16.png0000644000175000017500000000024711274633102016014 0ustar useruserPNG  IHDR kgAMA1_^IDATH1 0 CQ9[ܠ({2*ُ?8Wc:`݂@B&@=2 -hL`?oO8K_^IENDB`png++-0.2.5/test/pngsuite/basn0g04.png0000644000175000017500000000022111274633102016001 0ustar useruserPNG  IHDR )gAMA1_HIDAT(c``TR26vq MK+/g CA*wLrPV#ݽT3r%G_-iAIENDB`png++-0.2.5/test/pngsuite/basn4a16.png0000644000175000017500000000423611274633102016014 0ustar useruserPNG  IHDR n<gAMA1_UIDATXŗ_h[cHuRGT(8B-P.%4BiKaw]HɐXf%$zmiJWGc9w~t5O>>`eaX=`Ԃ±8G?]e _^X.wGO3wd3 gZú|'fef[Z!p&ކuh`c:oȇtri^g)X]UVZ l-5C`T$u!Z??p߅Cgj@dƱt-YY˅ae}';Ȁ~B@3 x'͌B ^SA#nr2r:QfGR`fAdv <@_"AÃևðqXZ3S:܀{Ճ< ';B 1/s,ZYߣ` `pg=U<@#뿃נ/`6,њ̀U]轏@`7&kc{ ? %:4o6JވaKGaɄ ? @= !e/sVVCpA5AhΠ.Ak%,?%!V[?hv@[/  !~Q`ZJHV@ס, \Z-tVKuVai *(a0ס  =i0Vކ.a{hQf\5 |ee8 l9QF haeXC9wnA D`6_Bh^SygLgv]~dA_ lwSR; I[VF&;5l :F$g 8h=ox yot| 'Q2 ,44c94O!1DӲͷ+3߲M:$m+?=*|~5{Wb zC`W݄辥< Cu㰈"j Q}8p|$;>.;/؏a 4/@ н[/E})x6훏m^=t)y#!ËGT/So SMO]]#7*gǏl!qXkdQa59G2 5e5$l (+畸2ۥ_$`Wb?@0 9E{Bk80/ƲVRZYxYf\ Nv{k By_@SaJcKjT𔥞cVE^>[v]7R>܉\i@)]SBBy$Ғh('eϭia;cҹ; МkX]HM%I%ŎUz]„Xj"22CO+h ɴ )oF\ܼ27 h+' wCQRY\-4-dA.Hax4,@ᜲ$o{ dJ;v,& C˧T$3ӔgVWsϓ<yhB# FP!v Vޔl X$p]y]\._s=,l7Gd){&TLK(}Z)h+V %@{gd"iiqૢ]Z^<y wPg+ЮB;  s%/ڟ gU<=DPw?({!l7d̀t:9-xIb z 4thFk2*<#~WQ\ 4eύpNf.J,OAdžN 6lf-ȌcGR3*%dE((\0){n$KJ3`38`ek+-w53&7yiIq/d<$t:  B>p|||||lv{~UHo0Ғr\<< BQje3 B@M,S&JpKs:N\O,r)ټw·d^ '@  UnL&dxa>|8J% )BBx灭ݻwͲ, l6˗jj5wt~ ~}6jZ7 J΍hThrXxe#T*`zeOY~[l6*W`͛7oy<dz loBP(DU@>:::::v:Y@oI*y`xaB*&&vp:GF8Nux~o'ӧ'O'OVWb.rnx5 L&IzFh48&(x8< 4T&@0H `b"HDfl~xD"H7i@6f, RT*B(2ٗy[Z[|>EzI |x|JPЅV{gg$ˊ}y,b\kE89= LOWUUUt:N~g2L&)|P( 3i). P Drz)Td`0 Y V֖N3PyF?F 03,+d2YG ..({U`'6{vvvvv033 kk@#|| ={<{q:iZVKAL  X,SjhцE_?Qt:Nh4Fp8ٮ.1MD[ *>er\.cYeY奞Aޠ@Vj4< 0࠘ qnjFH>Na::`"Ijsn>7ҍ7*1yT@HI$@$2ܬ--bpohhhhh ޳Dzz^r\NHw0D|a2r&˦,KX^+Aoooooo%w8RAZ܌n:*WUd U~hfl6奻^uL<:::::Z>.H$I%+t NOOOOOwKwgѴ[b_XXXXXX _-Jw7JMGP2F2Dڇ(*{^-w)SRRդ߿J uZ*|+n}}}}}}''''''-/ ᵅ IENDB`png++-0.2.5/test/pngsuite/s04n3p01.png0000644000175000017500000000017106511716464015672 0ustar useruserPNG  IHDR? =gAMA1_sBITwPLTEwCIDATxc0?  IENDB`png++-0.2.5/test/pngsuite/tbgn3p08.png0000644000175000017500000000215006511716552016044 0ustar useruserPNG  IHDR DgAMA1_PLTE""ssQ DDb ffs sssoookkkgggUUUggQQQMMM88 V 333////+/++w||+'s+++o'''x ###UMMM < oo/8' UUM M  bb UU3لww<<D ||| bbb"^^^ZZZ''xxxxssooDDD@@@ff<<< UU444MM|EE<<"""<33"D''<  // m4#tRNS@fbKGDf |dIDATxc`XW_!^.aaҡ^KE],C:OWF\` T%ڭg➗#~aξNlEdDU4.-S s D-JjA*t2g#3)"gįp(0I5{8 H\ _ $a}Fc7@y1`vY/rU&K­PqL%B}?aaDL*_*h>Md'R@C r+ ³L bXZ%J!F8N7) ( .&  $v̆Kwq10i^̼0>m8 jQ9/KxvYžL8xqI+s'IENDB`png++-0.2.5/test/pngsuite/s06i3p02.png0000644000175000017500000000021706511716470015666 0ustar useruserPNG  IHDR7MgAMA1_sBITw PLTEwEh"IDATxch`h` - +<"&0LH`XYLe$IENDB`png++-0.2.5/test/pngsuite/s09i3p02.png0000644000175000017500000000022306511716471015667 0ustar useruserPNG  IHDR gAMA1_sBITw PLTEwwVd#IDATxc`@ X ^3\b  duFIENDB`png++-0.2.5/test/pngsuite/tbgn2c16.png0000644000175000017500000000371206511716547016036 0ustar useruserPNG  IHDR 1gAMA1_tRNSYbKGDމc]IDATxX_HbiD  I  ƅ 6.Bq`*(`‹6 jYBȅrIHA!9CFxSgwWs<{djjjjj ywwwww!ICJT*J\[[[[[[cccccC WVVVVV`0H$DcX,_=FfvrH$----Noǣh4bx `0:N\. d2ᅮt*JR?ŋFc>/d<$t:  B>p|||||lv{~UHo0Ғr\<< BQje3 B@M,S&JpKs:N\O,r)ټw·d^ '@  UnL&dxa>|8J% )BBx灭ݻwͲ, l6˗jj5wt~ ~}6jZ7 J΍hThrXxe#T*`zeOY~[l6*W`͛7oy<dz loBP(DU@>:::::v:Y@oI*y`xaB*&&vp:GF8Nux~o'ӧ'O'OVWb.rnx5 L&IzFh48&(x8< 4T&@0H `b"HDfl~xD"H7i@6f, RT*B(2ٗy[Z[|>EzI |x|JPЅV{gg$ˊ}y,b\kE89= LOWUUUt:N~g2L&)|P( 3i). P Drz)Td`0 Y V֖N3PyF?F 03,+d2YG ..({U`'6{vvvvv033 kk@#|| ={<{q:iZVKAL  X,SjhцE_?Qt:Nh4Fp8ٮ.1MD[ *>er\.cYeY奞Aޠ@Vj4< 0࠘ qnjFH>Na::`"Ijsn>7ҍ7*1yT@HI$@$2ܬ--bpohhhhh ޳Dzz^r\NHw0D|a2r&˦,KX^+Aoooooo%w8RAZ܌n:*WUd U~hfl6奻^uL<:::::Z>.H$I%+t NOOOOOwKwgѴ[b_XXXXXX _-Jw7JMGP2F2Dڇ(*{^-w)SRRդ߿J uZ*|+n}}}}}}''''''-/ ᵅ IENDB`png++-0.2.5/test/pngsuite/basi3p08.png0000644000175000017500000000276706511716446016050 0ustar useruserPNG  IHDR 3PgAMA1_PLTE"Dww :w""""Uffff"DDUU"DDUU3DDff3D"ffD33U*D˺[""f2Ucw:DDkfBkܺ33sJw{"w332fDwJf""UUDff3UwwDwffD"w"3333cU3{UUUUf܃wwUUww""DD3ԪU*U˴f3BSD̙"Sww333Ĉwff""UU"DD[wfwws33wD""U"f 3bIDATxei\ 7JMc))IDXQaѡ29s%"B!W*M%:9Z<}RE4XL1M.5#\HmP!BzԞ]Be&hAViڍ5Fױ{Y.L؛# 0Mun`7%RYH5!C33;;׷522%JK *+}|ظյ()JJHY'00/OI),LW7< sr::mm)>>&&*JNBKK_22x< 0: fiAޞ]\"rqa2|ۛdkj&&zz֦v 05MMuvnh`0TTd9:ƆFDȶmn%53 ke(/^S#Av/#,0 '0N5X S vc0jXw`  p>U0 N x!<۰ .^ nZs` z\?0! oa<~Np&023 0 tx C8, `#G0srIENDB`png++-0.2.5/test/pngsuite/tbbn3p08.png0000644000175000017500000000215006511716551016036 0ustar useruserPNG  IHDR DgAMA1_PLTE""ssQ DDb ffs sssoookkkgggUUUggQQQMMM88 V 333////+/++w||+'s+++o'''x ###UMMM < oo/8' UUM M  bb UU3لww<<D ||| bbb"^^^ZZZ''xxxxssooDDD@@@ff<<< UU444MM|EE<<"""<33"D''<  // m4#tRNS@fbKGD \IDATxc`XW_!^.aaҡ^KE],C:OWF\` T%ڭg➗#~aξNlEdDU4.-S s D-JjA*t2g#3)"gįp(0I5{8 H\ _ $a}Fc7@y1`vY/rU&K­PqL%B}?aaDL*_*h>Md'R@C r+ ³L bXZ%J!F8N7) ( .&  $v̆Kwq10i^̼0>m8 jQ9/KxvYžL8xqI+s'IENDB`png++-0.2.5/test/pngsuite/tbbn1g04.png0000644000175000017500000000064306511716544016026 0ustar useruserPNG  IHDR )gAMA1_tRNSXbKGD#2>IDATxUKAd[jH-5(5(O 'W:[":EEt-jv.<3`vBwqg&W? -³[#Τ}O$CptjL:dt}Kߩz}\}|x,ryT$eѐY\D5Z$PZdOb 31z]贘G1(q tڷOr|1:S! ?C+k[;{CAE  䗿IENDB`png++-0.2.5/test/pngsuite/bgai4a16.png0000644000175000017500000000544706511716531016006 0ustar useruserPNG  IHDR ^gAMA1_ IDATxpTu?Z=IowB2O߄5f pњf4b8O5vH\ Cc7Ԯ#-+06P ЂzW+tOL2m%K,: 뻇oތ! ~>6K2m4?)u7,㍝4ueqCYcgg' i!lB4M\x2s&߆OiҮC-hDýgt<Kzz)]}?30.W\ZQKiپnp7Bn(A ;`n~"OÎ, :X@apy(b.7 9-#X1s;WhPfS!6ئrͬ’(T(o+ܟ| KWcf޶܀ fC>A y(kfPEMpx4t! ٟ%kx370%8$NA-!xzX!jl5+ .S3;-[W~u>Gtu,_WՁS7_ի:aTnZM߳0ctµvx,jq(VAyOjoBe-oA>k+?3V̮ū!xS [3O01 'wj칷d/SU槜wpx6kfi]^.#jkFS dF0,~Fef[7}^X݆@-xOC^#AQA ̋ɇ2B*Kik * \,koBZJ<w||&f(o@)Lirm^[Я.OFJ[_ye_uJȿ:)d!?eC;2zFW^'d2)d2#z3\8MoU(P̮Yӗ,Q lȞuN]s#ǯ\++rB|\H!e7n5]߷#BR r ,9gG$  ; &(\ ?k%{M+0lrow[O2Ip An;nC[0c5 {r Fچl늺fVXH] Y6_{6 Y-%B !?2uHM̋B45VL? cp>f֖ܷfEW!+7oB`30~&k74z<©̋uC_?0/MoB3 cV2|*( aHA$aAy٫.}fs]yu]uN΁Uh = =Ms>=ㅢ0%-C/ SRRaHv {a`z>C0EPs ʜGB't:p4t@IBK,# )ȏ7 _MHoFH,k*nvR3΅!nw!WIЅQ2 o? 7O0`7ȓ0eHTlͷ5 ƺ ?@w.3`>aoW phJς~ CoA&A>cQHoR): ӡ\^7_cbtƮSQr '!<PoA^r]P+a"0$L0d2&ȝ0`pttͥ4Wce_׋ȺYqa@f3dR 0\N~ UTcZ$XCϙ!C(9q>3Z_3=g@ BޛW;I`RU}]N;ծTC.(σ@3;`|ۡh thA ϙHZ7A4۞$lZHxjks# !(M@LO@ ,{022 ' }g|P\_{@MLG25 >i!'505-0e 䅜Bk)F[a"J+[4Bo+PA(x|%EqXk@G>3c٤ehu![HPSB 9!! 9uyBROH)!}B?+Bz]H6!f9z@ȱ+*!'~ $_B*T2gys >!H{I9lIENDB`png++-0.2.5/test/pngsuite/basi4a16.png0000644000175000017500000000544706511716453016025 0ustar useruserPNG  IHDR ^gAMA1_ IDATxpTu?Z=IowB2O߄5f pњf4b8O5vH\ Cc7Ԯ#-+06P ЂzW+tOL2m%K,: 뻇oތ! ~>6K2m4?)u7,㍝4ueqCYcgg' i!lB4M\x2s&߆OiҮC-hDýgt<Kzz)]}?30.W\ZQKiپnp7Bn(A ;`n~"OÎ, :X@apy(b.7 9-#X1s;WhPfS!6ئrͬ’(T(o+ܟ| KWcf޶܀ fC>A y(kfPEMpx4t! ٟ%kx370%8$NA-!xzX!jl5+ .S3;-[W~u>Gtu,_WՁS7_ի:aTnZM߳0ctµvx,jq(VAyOjoBe-oA>k+?3V̮ū!xS [3O01 'wj칷d/SU槜wpx6kfi]^.#jkFS dF0,~Fef[7}^X݆@-xOC^#AQA ̋ɇ2B*Kik * \,koBZJ<w||&f(o@)Lirm^[Я.OFJ[_ye_uJȿ:)d!?eC;2zFW^'d2)d2#z3\8MoU(P̮Yӗ,Q lȞuN]s#ǯ\++rB|\H!e7n5]߷#BR r ,9gG$  ; &(\ ?k%{M+0lrow[O2Ip An;nC[0c5 {r Fچl늺fVXH] Y6_{6 Y-%B !?2uHM̋B45VL? cp>f֖ܷfEW!+7oB`30~&k74z<©̋uC_?0/MoB3 cV2|*( aHA$aAy٫.}fs]yu]uN΁Uh = =Ms>=ㅢ0%-C/ SRRaHv {a`z>C0EPs ʜGB't:p4t@IBK,# )ȏ7 _MHoFH,k*nvR3΅!nw!WIЅQ2 o? 7O0`7ȓ0eHTlͷ5 ƺ ?@w.3`>aoW phJς~ CoA&A>cQHoR): ӡ\^7_cbtƮSQr '!<PoA^r]P+a"0$L0d2&ȝ0`pttͥ4Wce_׋ȺYqa@f3dR 0\N~ UTcZ$XCϙ!C(9q>3Z_3=g@ BޛW;I`RU}]N;ծTC.(σ@3;`|ۡh thA ϙHZ7A4۞$lZHxjks# !(M@LO@ ,{022 ' }g|P\_{@MLG25 >i!'505-0e 䅜Bk)F[a"J+[4Bo+PA(x|%EqXk@G>3c٤ehu![HPSB 9!! 9uyBROH)!}B?+Bz]H6!f9z@ȱ+*!'~ $_B*T2gys >!H{I9lIENDB`png++-0.2.5/test/pngsuite/basi3p04.png0000644000175000017500000000050706511716442016026 0ustar useruserPNG  IHDR SWQgAMA1_sBITw-PLTE""fwDDҰIIDATxcc8N%(KS,1,ľ @ _B$ ,qP=L(-]]tލ0@L1 RL1pOGh3V{7s&*WPS)ʽ{Sˀ)UR@妥a rwvh t_IENDB`png++-0.2.5/test/pngsuite/f04n0g08.png0000644000175000017500000000041506511716627015652 0ustar useruserPNG  IHDR V%(IDATxm0Lb )nK'-X B!9Dzѧي|o&C{/މsYk1#gZL B.mz#\@* // _,LPߪZQ[6@]8_fX`ⷹ=L[+/C qfS(RR| D_H/$@&L!`IENDB`png++-0.2.5/test/pngsuite/s02i3p01.png0000644000175000017500000000016206511716467015666 0ustar useruserPNG  IHDR?gAMA1_sBITwPLTE\/% IDATxc`gIENDB`png++-0.2.5/test/pngsuite/s37i3p04.png0000644000175000017500000000061106511716513015670 0ustar useruserPNG  IHDR%%@ gAMA1_sBITw'PLTEwwwwww;IDATxe;0Q NL.`h쭨hSRڥr(70̲˷`FCj} |n(`,,䜖jK)#)(8n P M$0 6!a?ؑ\Zs!*V}6nJ_Dؐ w9)/ggL x q%x \r/Rx [JsFNk-8F߮Rz'#?IENDB`png++-0.2.5/test/pngsuite/basi0g08.png0000644000175000017500000000037606511716427016025 0ustar useruserPNG  IHDR !gAMA1_IDATx] 0B{C%>x!Kܦ$]!2,$UIBH"*V$$ŏ Jl, lܲ 9:eSW}q@Şp쿣;_|?/ SͭVUgTYъ2sAw厊D|Ɏ$d:|sGW#ߘ,  PU*Ԇ͒4C=3Q86sS-C?"SWkK/:[l; ~-&g]۔Bj+SwݗTQ@id'D|_0$[]d)u]3/U'NJ&:=V!``wS W uTBWAUD|UjՒ9U>z1ulh0,9h H=0HF-_0M-R_V[[TSϪ C7dg$@~s9%@Vm֋㔷ޓKN]]35 _#igT}ޙ3c\s  {$)cng*c4&'[9X`}'p 1g>"@BlOjbc%Q4Ի`RVUuH3 eMл@,Lr%е̬i(?XQ-7z(m626 ~Pt2o@ċPgCƁy.`$Jg]q0pUzOs$ɒ%}䦿^)cdmXrSd8j -7!ܘNSו qpH@8fʹn]Ʉ*yU.O.~UZ_4ö*p2Ib늦-D/.l_YY0E%; )7eBkGD!-7KJ@&ڕI:Mi㊽FaPŀ!oyF(Qp\rs@I{5w_8*-#yfvC۫"ʒ*%&%iO:6@8-'*S,dHNn-L] 8tJo26VA8:jgM hw*OogY=|=@j>@3mq2N)@U̿)*K KGk;aR<\/| bp:C=&R2}F2\r~_Wڮێ5e:DV[:850b-{l4K uAzPY/V.yA p H%L;k*h gZ1=LlС \m$M=_/ ,50!2[s!B}n(ӽϽԡ}" RP\WzHlA+50$!8oo E3@Et6BشpdGC[ PHN> K.`C +P!ҿo!_aCA-CLnQhr ->u157"v0  a{6reDCB%[>C> }"03a8:LR ,0D=4C܆">$D@n1v]f=g3b1/BPv@͐!Xڌ.&Aö g>7jYJ} ^k @jm&+ceVUhlMTB+ o5@*ot'|զޱVL]vQP_ Z40+XhV{#I+f3*#-Y;;ɗi@^rBXbVQAD{0b_l $@ p3,n<(nPPޑ(-Z4%~eE"RR`2JY]Z1 _0ߗ(([Zc2uH.t w%@fg@fCҧE @II(ZD 흧U) E@ZBR;ijaKX,2uHtbLֻ~{ p*_|Vp; 2_:>(ux h2  R[ }d}#VL;.*>m[>:c,gL7piR )qv{.@zW3@aCVS%d6UVpޠTPuu J%z#?&|tE+QOl5jvyԑN-Cϛo7uS!9Cd2Rl{ ŵ 3`/vot.PpSGUY)UV12 P^4Т55 A8Z^۹NK4S)8Y܃rrMۖc;5vCơ R{cҳt/{VS2|WμdvdWBB\>dQ.w- k`"mm#M޷J<K9ʖ\R|+sK~ 8tqm ȫGUV)E*aeWTiRJјuJv8=g韮YtmQKa znޙh;:~+P򶎷JW=)gONzg}f%;in<9_UjCV@N¬ jYehɋ*PH$$q{/ϵP^gѽgCã_n>=Ő XUн:}Lzl4%?  J |!nI/;) ۟M\٫X+NާW4-4A,2z w 9\* KR"2@Lw+tJ()g`qb %!RϞ|O}S+ckY1 V|jT {;cޙPv W"6"!ׁCC8?u2 BcM_np5X' Qvzgn "CgqEL9j[^.V^ck;`m+ jtKOX$F@$Cp#$Ap$*!r Gb; .ਖ?0̀@ r"`s{#dGR-0# #)O&_hPT4y`}~(M C/BmPt!7C]CLksk\c{"8q쉆ppiCxCCd)w!q!6Ca kп0w4 }~C,)gi(4u-⋋=wTK\*< e7 M@x޶"&nܛ9f5|>IEtSqEUvvhƫ ^R\TjVz=XtodɎap~~ p}c ׍{3lvB}ކ|9:^TyJz5%WkFƫ%X go|h7#aL$7u)7ݬP?*>WU4^Y+/WZO?{1+^ |{ w u'0oh5HM@3~ݸ7sf7k.7e-/NK?RxZ s'@/eAY@ [?p| HQtu yfKϼQ-ѪHM@3~ݸ7sf7k.ԇ _|IV?4ħځN,'[3kXf|>o$_NY%an }MEFj0&fqo攛n\~|[~|!~ݻj%VyN&#āHFq@ ҊU;2t`@2zKoT۵3=-nj7#aL$7Vlvkeݻμ K@pR (#8grRKX4L;V݌14׍{3\67aZi.3o~`i޻ {pi 3 =)opQqdv%)3{>5XaXiH4ь̤+[h7#aL$׀fiZV!_ Cɽ?x~;w1[o zDE3ؓI~]Rl~%yZ+1S5ISZj݈VF˜H.~xVv: N]mx⁍/43}Ȉ c'ݛ l/Ib*aS1Q&1%?3j݈VD\9߭;wR'3j=K3Y ҕx{vi 1\[SΦx>lOcJF ޒ4ŨuWGjO9hn$83*}}§Rw~;@4k7syv|aE%aL>  j0&3gƫˁȽ_BAqޓ=vA&folnon4|6jd.dndoGq?e `^IENDB`png++-0.2.5/test/pngsuite/tbyn3p08.png0000644000175000017500000000215306511716553016072 0ustar useruserPNG  IHDR DgAMA1_ PLTE""ssQ DDb ffs sssoookkkgggUUUggQQQMMM88 V 333////+/++w||+'s+++o'''x ###UMMM < oo/8' UUM M  bb UU3لww<<D ||| bbb"^^^ZZZ''xxxxssooDDD@@@ff<<< UU444MM|EE<<"""<33"D''<  // ftRNS@fbKGD bIDATxc`XW_!^.aaҡ^KE],C:OWF\` T%ڭg➗#~aξNlEdDU4.-S s D-JjA*t2g#3)"gįp(0I5{8 H\ _ $a}Fc7@y1`vY/rU&K­PqL%B}?aaDL*_*h>Md'R@C r+ ³L bXZ%J!F8N7) ( .&  $v̆Kwq10i^̼0>m8 jQ9/KxvYžL8xqI+s'IENDB`png++-0.2.5/test/pngsuite/s39i3p04.png0000644000175000017500000000064406511716515015702 0ustar useruserPNG  IHDR'' |gAMA1_sBITw'PLTEwwwwww;IDATxm1r0EǓ N."pʵ;ZJnQS:TV1/{f3T` Di@QhjZjvJJ85=P*0 zS`9!T5k=- K#<͚_.ܥ?Nubo&8:/G„"L,B MǔvkNhy>xxppWpX9çe(wx:Ι4e5߹?N|.@ny 5 IENDB`png++-0.2.5/test/pngsuite/basi3p01.png0000644000175000017500000000020406511716441016014 0ustar useruserPNG  IHDR >!gAMA1_PLTE""fl&)IDATxc`P CѰ1Ù3IH6?@@!( B-vÞIENDB`png++-0.2.5/test/pngsuite/tp0n1g08.png0000644000175000017500000000126106511716543015762 0ustar useruserPNG  IHDR V%(gAMA1_hIDATx}]HqM2?rY65K]hddaQQ؅ldHPAt}t+BRUaH E-6kL9[_du{\{9Gr-_[qŃ=CX=. .Zmm9sn'%.o=?Ud^g#!{}]DЯvu1ޤGb];;0~Y4$pϐKd[/{j:Ru>Gcèۚp!]v4[>ˎξu#~ENŒ].?+FSD^RSe:^z52E$8 &*az$"a lUEy9Z*XWr=+pȶSM l;h ϫt;\rlnn 0(RVۂP%>rB-)ԙnQIHL0˧2ky݄:Ubrd,)gk;(~V٬uGU@Y޾ vK$j 8P=MIƻ9WR'uf5]K.ݣ6< ,=ۂ?)͚IENDB`png++-0.2.5/test/pngsuite/f03n0g08.png0000644000175000017500000000060506511716626015651 0ustar useruserPNG  IHDR V%(LIDATx}ұKBQDQ !EP4.A!"!H_BA 84854 Ay{wpwu2ݽã\x~qyu}S*o+׭UM ۆJnJ -4IBFv&u0 C V1ň;୑BguNJ=:'N{1qO0">1qv7/M1 i"ޡE*plCǰby% &'0B{C* T L @cg\B 9IENDB`png++-0.2.5/test/pngsuite/s32n3p04.png0000644000175000017500000000040706511716474015701 0ustar useruserPNG  IHDR TggAMA1_sBITw'PLTEwwwwww;|IDATxѽ Wq zZ6w +'a0MHR\GrvX41$TxAsŖ?hnsof]A[ $ \V~01YB6ipaHz&.IENDB`png++-0.2.5/test/pngsuite/basn3p01.png0000644000175000017500000000016011274633102016014 0ustar useruserPNG  IHDR IgAMA1_PLTE""fl&IDATc4?̃IENDB`png++-0.2.5/test/pngsuite/bgwn6a08.png0000644000175000017500000000031206511716535016032 0ustar useruserPNG  IHDR szzgAMA1_bKGDoIDATx1 0 F'dhO?U!ExRP(M(ي0^{~3uG XN5"}\TB\.y 6{@<P6@R LIENDB`png++-0.2.5/test/pngsuite/bgbn4a08.png0000644000175000017500000000021406511716524016002 0ustar useruserPNG  IHDR sgAMA1_bKGD#25IDATxch41",(,?a0T1`4GÀ*hP* }IENDB`png++-0.2.5/test/pngsuite/s03n3p01.png0000644000175000017500000000017006511716464015670 0ustar useruserPNG  IHDRl'gAMA1_sBITwPLTEw奟IDATxc``p``A91 KIENDB`png++-0.2.5/test/pngsuite/f03n2c08.png0000644000175000017500000000241306511716636015647 0ustar useruserPNG  IHDR IDATx}]TeϼggZ,(BB2B*M  zxc~PwUwMW{m "^XvabE|}893a?Qr6WŊG7٧7m/ڗ^wډ7I-]!{S{=qž~S̱u/EP2E(B ƚ%Eȃ/)¨2a&$&c-ˈZFGawK$qIJ 3<{=<{xjxJ=Z5fLP9 0U~4 ߄-|fm@+u>`eaX=`Ԃ±8G?]e _^X.wGO3wd3 gZú|'fef[Z!p&ކuh`c:oȇtri^g)X]UVZ l-5C`T$u!Z??p߅Cgj@dƱt-YY˅ae}';Ȁ~B@3 x'͌B ^SA#nr2r:QfGR`fAdv <@_"AÃևðqXZ3S:܀{Ճ< ';B 1/s,ZYߣ` `pg=U<@#뿃נ/`6,њ̀U]轏@`7&kc{ ? %:4o6JވaKGaɄ ? @= !e/sVVCpA5AhΠ.Ak%,?%!V[?hv@[/  !~Q`ZJHV@ס, \Z-tVKuVai *(a0ס  =i0Vކ.a{hQf\5 |ee8 l9QF haeXC9wnA D`6_Bh^SygLgv]~dA_ lwSR; I[VF&;5l :F$g 8h=ox yot| 'Q2 ,44c94O!1DӲͷ+3߲M:$m+?=*|~5{Wb zC`W݄辥< Cu㰈"j Q}8p|$;>.;/؏a 4/@ н[/E})x6훏m^=t)y#!ËGT/So SMO]]#7*gǏl!qXkdQa59G2 5e5$l (+畸2ۥ_$`Wb?@0 9E{Bk80/ƲVRZYxYf\ Nv{k By_@SaJcKjT𔥞cVE^>[v]7R>܉\i@)]SBBy$Ғh('eϭia;cҹ; МkX]HM%I%ŎUz]„Xj"22CO+h ɴ )oF\ܼ27 h+' wCQRY\-4-dA.Hax4,@ᜲ$o{ dJ;v,& C˧T$3ӔgVWsϓ<yhB# FP!v Vޔl X$p]y]\._s=,l7Gd){&TLK(}Z)h+V %@{gd"iiqૢ]Z^<y wPg+ЮB;  s%/ڟ gU<=DPw?({!l7d̀t:9-xIb z 4thFk2*<#~WQ\ 4eύpNf.J,OAdžN 6lf-ȌcGR3*%dE((\0){n$KJ3`38`ek+-w53&7yiIqnO&#HooaqqC8W^]z5 x8D",/fۏNp8vm~~~`d21;KF\ZXX8"۷o'''3ѹ߅<002V+Ϟ01nϟ?~Dt]O,!˸,,`2q@4Lm3ĉPa0~dt^o8xK竵3/، d˔A-W:k;tuu5b\`0(IA 7յ`hp8𡅾;`hhHzoo(WhhM C8$)y@`0xIkJ:\.i4UUX,@N cǎEўZFUр'O={ӧO;;;Gz IENDB`png++-0.2.5/test/pngsuite/bgan6a16.png0000644000175000017500000000655306511716541016015 0ustar useruserPNG  IHDR #ꦷgAMA1_ "IDATxݙ_luKrM.ZKʴRM Y.R2Z[Ɋ^qb,ZɊ (0PrB&\)(D~D4KK/9wUU4AΝ;ww|猕i |ؘ}}+M!3߀ޱ&}߯ZfF5[,@f.3rZtL017qHÿto Z?TR4٢:O~-{D`kEU4")sZHfn2@6RtXO)ޯ;voR'zֽO۴=5ߣDOqD Oc3`co47e k$9SQ aȗ~U5`:OE5CJ :u'|VMt?\3%'*JS_7W&; 42@THtZ]m'Ի6tmrwK'Z׉^щ~QCbV b^NJ^Jr宁Z S _XfxNEOfͅz-/?ջu5Dp^vGVˏGW5| %˿\5ėf%XYhNf uSSn6Ys;;:p-'AW:UGpxqB?7GsZ g`/f@%6mW#r?zf7k.{zzz _NF٪ At5Huta>4u-⋋=wTK\*< e7 M@x޶"&nܛ9f5|>IEtSqEUvvhƫ ^R\TjVz=XtodɎap~~ p}c ׍{3lvB}ކ|9:^TyJz5%WkFƫ%X go|h7#aL$7u)7ݬP?*>WU4^Y+/WZO?{1+^ |{ w u'0oh5HM@3~ݸ7sf7k.7e-/NK?RxZ s'@/eAY@ [?p| HQtu yfKϼQ-ѪHM@3~ݸ7sf7k.ԇ _|IV?4ħځN,'[3kXf|>o$_NY%an }MEFj0&fqo攛n\~|[~|!~ݻj%VyN&#āHFq@ ҊU;2t`@2zKoT۵3=-nj7#aL$7Vlvkeݻμ K@pR (#8grRKX4L;V݌14׍{3\67aZi.3o~`i޻ {pi 3 =)opQqdv%)3{>5XaXiH4ь̤+[h7#aL$׀fiZV!_ Cɽ?x~;w1[o zDE3ؓI~]Rl~%yZ+1S5ISZj݈VF˜H.~xVv: N]mx⁍/43}Ȉ c'ݛ l/Ib*aS1Q&1%?3j݈VD\9߭;wR'3j=K3Y ҕx{vi 1\[SΦx>lOcJF ޒ4ŨuWGjO9hn$83*}}§Rw~;@4k7syv|aE%aL>  j0&3gƫˁȽ_BAqޓ=vA&folnon4|6jd.dndoGq?eí۵IENDB`png++-0.2.5/test/pngsuite/f01n2c08.png0000644000175000017500000000223406511716635015645 0ustar useruserPNG  IHDR cIDATx?%UΜ34"XBc+АPF M(,hH((,10V5RB %,bܝ토x7}ost°ٙbW>y~Lk鯝U(3kAy=uesp+ȍ2:SAE7woyU~wz:`{('^TU*qVNzS)S[I[DY\O*_ ?+t|' E3ǧpդ$LTPMR54: @|6ۿ|a3Ƞ@ *TTA:0`pIvz (Ȓ"Dթhbvt;}@8}*(fDv8䨞ꨞi٫ُ3Zg { IdyW LδH Q=~w'%hr')<Gh9^zp70FR(;{ ^xڹ ,#)Q%1%j&2N? p(QT; d 5'ER E,%Δ̔G̨Zf; v:1#i%aL11oꂛctƬeQ !y{b$FR:cF^B)LRj56 1,ڠxOHLĵΗ%+XLJL@<4 CGb"5FȕRN l]B.Ot'R(60 P]~rpg߅8+G 䡲\ V.: pi!„& A뾝;:QDZc(? @&K炭&eAjҞPRd91aTI)5aXL+Fxx\7enhƸ}Lʢ62+/PDa\KAe@(8sIs qU%2Wm:!UQeD))C&5k,xs[T/&\K\{pN`Wσ1+l)LxƄQaDÝ뱭w,;{q7Mt FO|Azz:ԡ-4AԣvZlĶeǛmWfy>ohy2DR:AO+16=MlemĶ쁳EEyOlnB79D#9FW-4z6Gj6cϑpײ*3%%sp&aKpmϱ(pвݘ-gV~jv݊)&Rz!6So'ގ%4[^l;ζm:[ ,X)HlW#PTL|o-o.)8iGqь{uHGg6[m~.~?7i7iæ5d=_0?IR'iК&x[]{ r>@Btttؤf2gLX2iɔX!.y,'͑ Jqie<z<}B ,;{3:rwBnNN,' -KQXq©pzv[llĬ98;bEAQyNfV|JK'DmN~ TªcrԿC(*ۡӥWfvJ'~ TºcHV5d +Kѡۥ2Q$+^B T+*abts:9yF^VӒ1{1;-Ǧc-C>We==IENDB`png++-0.2.5/test/pngsuite/bgan6a08.png0000644000175000017500000000027006511716534016006 0ustar useruserPNG  IHDR szzgAMA1_oIDATx1 0 F'dhO?U!ExRP(M(ي0^{~3uG XN5"}\TB\.y 6{@<P6@R LIENDB`png++-0.2.5/test/pngsuite/basn6a08.png0000644000175000017500000000027011274633102016011 0ustar useruserPNG  IHDR szzgAMA1_oIDATX1 0 F'dhO?U!ExRP(M(ي0^{~3uG XN5"}\TB\.y 6{@<P6@R ֏gIENDB`png++-0.2.5/test/pngsuite/basn0g08.png0000644000175000017500000000021211274633102016005 0ustar useruserPNG  IHDR V%(gAMA1_AIDAT8cd`$ȳ )?`y00gdy\ q10edPqq $IENDB`png++-0.2.5/test/pngsuite/s06n3p02.png0000644000175000017500000000020306511716465015672 0ustar useruserPNG  IHDRgAMA1_sBITw PLTEwEhIDATxcXaj02V-9_)pIENDB`png++-0.2.5/test/pngsuite/pngsuite.doc0000644000175000017500000005004706511716353016325 0ustar useruser PNGSUITE ---------------- testset for PNG-(de)coders created by Willem van Schaik ------------------------------------ This is a collection of graphics images created to test the png applications like viewers, converters and editors. All (as far as that is possible) formats supported by the PNG standard are represented. 1. INTRODUCTION -------------------- 1.1 PNG capabilities ------------------------ Supported color-types are: - grayscale - grayscale + alpha-channel - color palettes - rgb - rgb + alpha-channel Allowed bitdepths are depending on the color-type, but are in the range of 1-bit (grayscale, which is b&w) upto 16-bits. Special features are: - interlacing (Adam-7) - gamma-support - transparency (a poor-man's alpha solution) 1.2 File naming ------------------- Where possible, the testfiles are 32x32 bits icons. This results in a still reasonable size of the suite even with a large number of tests. The name of each test-file reflects thetype in the following way: g04i2c08.png || |||+---- bit-depth || ||+----- color-type (descriptive) || |+------ color-type (numerical) || +------- interlaced or non-interlaced |+--------- parameter of test (in this case gamma-value) +---------- test feature (in this case gamma) 1.3 PNG formats ------------------- color-type: 0g - grayscale 2c - rgb color 3p - paletted 4a - grayscale + alpha channel 6a - rgb color + alpha channel bit-depth: 01 - with color-type 0, 3 02 - with color-type 0, 3 04 - with color-type 0, 3 08 - with color-type 0, 2, 3, 4, 6 16 - with color-type 0, 2, 4, 6 interlacing: n - non-interlaced i - interlaced 2. THE TESTS ----------------- 2.1 Sizes ------------- These tests are there to check if your software handles pictures well, with picture sizes that are not a multiple of 8. This is particularly important with Adam-7 type interlacing. In the same way these tests check if pictures size 1x1 and similar are ok. s01 - 1x1 pixel picture s02 - 2x2 pixel picture s03 - 3x3 pixel picture s04 - 4x4 pixel picture s05 - 5x5 pixel picture s06 - 6x6 pixel picture s07 - 7x7 pixel picture s08 - 8x8 pixel picture s09 - 9x9 pixel picture s32 - 32x32 pixel picture s33 - 33x33 pixel picture s34 - 34x34 pixel picture s35 - 35x35 pixel picture s36 - 36x36 pixel picture s37 - 37x37 pixel picture s38 - 38x38 pixel picture s39 - 39x39 pixel picture s40 - 40x40 pixel picture 2.2 Background ------------------ When the PNG file contains a background chunck, this should be used for pictures with alpha-channel or pictures with a transparency chunck. For pictures without this background-chunk, but with alpha, this testset assumes a black background. For the images in this test, the left-side should be 100% the background color, where moving to the right the color should gradually become the image pattern. bga - alpha + no background bgw - alpha + white background bgg - alpha + gray background bgb - alpha + black background bgy - alpha + yellow background 2.3 Transparency -------------------- Transparency should be used together with a background chunk. To test the combination of the two the latter 4 tests are there. How to handle pictures with transparancy, but without a background, opinions can differ. Here we use black, but especially in the case of paletted images, the normal color would maybe even be better. tp0 - not transparent for reference tp1 - transparent, but no background chunk tbw - transparent + white background tbg - transparent + gray background tbb - transparent + black background tby - transparent + yellow background 2.4 Gamma ------------- To test if your viewer handles gamma-correction, 6 testfiles are available. They contain corrected color-ramps and a corresponding gamma-chunk with the file-gamma value. These are created in such a way that when the viewer does the gamma correction right, all 6 should be displayed identical. If they are different, probably the gamma correction is omitted. In that case, have a look at the two right coloumns in the 6 pictures. The image where those two look the same (when looked from far) reflects the gamma of your system. However, because of the limited size of the image, you should do more elaborate tests to determine your display gamma. g03 - file-gamma = 0.35, for display with gamma = 2.8 g04 - file-gamma = 0.45, for display with gamma = 2.2 (PC) g05 - file-gamma = 0.55, for display with gamma = 1.8 (Mac) g07 - file-gamma = 0.70, for display with gamma = 1.4 g10 - file-gamma = 1.00, for display with gamma = 1.0 (NeXT) g25 - file-gamma = 2.50, for display with gamma = 0.4 2.5 Filtering ----------------- PNG uses file-filtering, for optimal compression. Normally the type is of filtering is adjusted to the contents of the picture, but here each file has the same picture, with a different filtering. f0 - no filtering f1 - sub filtering f2 - up filtering f3 - average filtering f4 - paeth filtering 2.6 Additional palettes --------------------------- Besides the normal use of paletted images, palette chunks can in combination with true-color (and other) images also be used to select color lookup-tables when the video system is of limited capabilities. The suggested palette chunk is specially created for this purpose. pp - normal palette chunk ps - suggested palette chunk 2.7 Ancillary chunks (under construction) ------------------------ To test the correct decoding of ancillary chunks, these test-files contain one or more examples of these chunkcs. Depending on the type of chunk, a number of typical values are selected to test. Unluckily, the testset can not contain all combinations, because that would be an endless set. The significant bits are used in files with the next higher bit-depth. They indicate howmany bits are valid. cs3 - 3 significant bits cs5 - 5 significant bits cs8 - 8 significant bits (reference) cs3 - 13 significant bits For the physical pixel dimensions, the result of each decoding should be a sqare picture. The first (cdf) image is an example of flat (horizontal) pixels, where the pHYS chunk (x is 1 per unit, y = 4 per unit) must take care of the correction. The second is just the other way round. The last example uses the unit specifier, for 1000 pixels per meter. This should result in a picture of 3.2 cm square. cdf - physical pixel dimensions, 8x32 flat pixels cdh - physical pixel dimensions, 32x8 high pixels cds - physical pixel dimensions, 8x8 square pixels cdu - physical pixel dimensions, with unit-specifier ccw - primary chromaticities and white point ch1 - histogram 15 colors ch2 - histogram 256 colors cm7 - modification time, 01-jan-1970 cm9 - modification time, 31-dec-1999 cm0 - modification time, 01-jan-2000 In the textual chunk, a number of the standard, and some non-standard text items are included. ct0 - no textual data ct1 - with textual data ctz - with compressed textual data 2.8 Chunk ordering (still under construction) ---------------------- These testfiles will test the obligatory ordering relations between various chunk types (not yet) as well as the number of data chunks used for the image. oi1 - mother image with 1 idat-chunk oi2 - image with 2 idat-chunks oi4 - image with 4 unequal sized idat-chunks oi9 - all idat-chunks of length one 2.9 Compression level ------------------------- Here you will find a set of images compressed by zlib, ranging from level 0 for no compression at maximum speed upto level 9 for maximum compression. z00 - zlib compression level 0 - none z03 - zlib compression level 3 z06 - zlib compression level 6 - default z09 - zlib compression level 9 - maximum 2.10 Corrupted files (under construction) ----------------------- All these files are illegal. When decoding they should generate appropriate error-messages. x00 - empty IDAT chunk xcr - added cr bytes xlf - added lf bytes xc0 - color type 0 xc9 - color type 9 xd0 - bit-depth 0 xd3 - bit-depth 3 xd9 - bit-depth 99 xcs - incorrect IDAT checksum 3. TEST FILES ------------------ For each of the tests listed above, one or more test-files are created. A selection is made (for each test) for the color-type and bitdepth to be used for the tests. Further for a number of tests, both a non-interlaced as well as an interlaced version is available. 3.1 Basic format test files (non-interlaced) ------------------------------------------------ basn0g01 - black & white basn0g02 - 2 bit (4 level) grayscale basn0g04 - 4 bit (16 level) grayscale basn0g08 - 8 bit (256 level) grayscale basn0g16 - 16 bit (64k level) grayscale basn2c08 - 3x8 bits rgb color basn2c16 - 3x16 bits rgb color basn3p01 - 1 bit (2 color) paletted basn3p02 - 2 bit (4 color) paletted basn3p04 - 4 bit (16 color) paletted basn3p08 - 8 bit (256 color) paletted basn4a08 - 8 bit grayscale + 8 bit alpha-channel basn4a16 - 16 bit grayscale + 16 bit alpha-channel basn6a08 - 3x8 bits rgb color + 8 bit alpha-channel basn6a16 - 3x16 bits rgb color + 16 bit alpha-channel 3.2 Basic format test files (Adam-7 interlaced) --------------------------------------------------- basi0g01 - black & white basi0g02 - 2 bit (4 level) grayscale basi0g04 - 4 bit (16 level) grayscale basi0g08 - 8 bit (256 level) grayscale basi0g16 - 16 bit (64k level) grayscale basi2c08 - 3x8 bits rgb color basi2c16 - 3x16 bits rgb color basi3p01 - 1 bit (2 color) paletted basi3p02 - 2 bit (4 color) paletted basi3p04 - 4 bit (16 color) paletted basi3p08 - 8 bit (256 color) paletted basi4a08 - 8 bit grayscale + 8 bit alpha-channel basi4a16 - 16 bit grayscale + 16 bit alpha-channel basi6a08 - 3x8 bits rgb color + 8 bit alpha-channel basi6a16 - 3x16 bits rgb color + 16 bit alpha-channel 3.3 Sizes test files ----------------------- s01n3p01 - 1x1 paletted file, no interlacing s02n3p01 - 2x2 paletted file, no interlacing s03n3p01 - 3x3 paletted file, no interlacing s04n3p01 - 4x4 paletted file, no interlacing s05n3p02 - 5x5 paletted file, no interlacing s06n3p02 - 6x6 paletted file, no interlacing s07n3p02 - 7x7 paletted file, no interlacing s08n3p02 - 8x8 paletted file, no interlacing s09n3p02 - 9x9 paletted file, no interlacing s32n3p04 - 32x32 paletted file, no interlacing s33n3p04 - 33x33 paletted file, no interlacing s34n3p04 - 34x34 paletted file, no interlacing s35n3p04 - 35x35 paletted file, no interlacing s36n3p04 - 36x36 paletted file, no interlacing s37n3p04 - 37x37 paletted file, no interlacing s38n3p04 - 38x38 paletted file, no interlacing s39n3p04 - 39x39 paletted file, no interlacing s40n3p04 - 40x40 paletted file, no interlacing s01i3p01 - 1x1 paletted file, interlaced s02i3p01 - 2x2 paletted file, interlaced s03i3p01 - 3x3 paletted file, interlaced s04i3p01 - 4x4 paletted file, interlaced s05i3p02 - 5x5 paletted file, interlaced s06i3p02 - 6x6 paletted file, interlaced s07i3p02 - 7x7 paletted file, interlaced s08i3p02 - 8x8 paletted file, interlaced s09i3p02 - 9x9 paletted file, interlaced s32i3p04 - 32x32 paletted file, interlaced s33i3p04 - 33x33 paletted file, interlaced s34i3p04 - 34x34 paletted file, interlaced s35i3p04 - 35x35 paletted file, interlaced s36i3p04 - 36x36 paletted file, interlaced s37i3p04 - 37x37 paletted file, interlaced s38i3p04 - 38x38 paletted file, interlaced s39i3p04 - 39x39 paletted file, interlaced s40i3p04 - 40x40 paletted file, interlaced 3.4 Background test files (with alpha) ------------------------------------------ bgai4a08 - 8 bit grayscale, alpha, no background chunk, interlaced bgai4a16 - 16 bit grayscale, alpha, no background chunk, interlaced bgan6a08 - 3x8 bits rgb color, alpha, no background chunk bgan6a16 - 3x16 bits rgb color, alpha, no background chunk bgbn4a08 - 8 bit grayscale, alpha, black background chunk bggn4a16 - 16 bit grayscale, alpha, gray background chunk bgwn6a08 - 3x8 bits rgb color, alpha, white background chunk bgyn6a16 - 3x16 bits rgb color, alpha, yellow background chunk 3.5 Transparency (and background) test files ------------------------------------------------ tp0n1g08 - not transparent for reference (logo on gray) tbbn1g04 - transparent, black background chunk tbwn1g16 - transparent, white background chunk tp0n2c08 - not transparent for reference (logo on gray) tbrn2c08 - transparent, red background chunk tbgn2c16 - transparent, green background chunk tbbn2c16 - transparent, blue background chunk tp0n3p08 - not transparent for reference (logo on gray) tp1n3p08 - transparent, but no background chunk tbbn3p08 - transparent, black background chunk tbgn3p08 - transparent, light-gray background chunk tbwn3p08 - transparent, white background chunk tbyn3p08 - transparent, yellow background chunk 3.6 Gamma test files ------------------------ g03n0g16 - grayscale, file-gamma = 0.35 g04n0g16 - grayscale, file-gamma = 0.45 g05n0g16 - grayscale, file-gamma = 0.55 g07n0g16 - grayscale, file-gamma = 0.70 g10n0g16 - grayscale, file-gamma = 1.00 g25n0g16 - grayscale, file-gamma = 2.50 g03n2c08 - color, file-gamma = 0.35 g04n2c08 - color, file-gamma = 0.45 g05n2c08 - color, file-gamma = 0.55 g07n2c08 - color, file-gamma = 0.70 g10n2c08 - color, file-gamma = 1.00 g25n2c08 - color, file-gamma = 2.50 g03n3p04 - paletted, file-gamma = 0.35 g04n3p04 - paletted, file-gamma = 0.45 g05n3p04 - paletted, file-gamma = 0.55 g07n3p04 - paletted, file-gamma = 0.70 g10n3p04 - paletted, file-gamma = 1.00 g25n3p04 - paletted, file-gamma = 2.50 3.7 Filtering test files ---------------------------- f00n0g08 - grayscale, no interlacing, filter-type 0 f01n0g08 - grayscale, no interlacing, filter-type 1 f02n0g08 - grayscale, no interlacing, filter-type 2 f03n0g08 - grayscale, no interlacing, filter-type 3 f04n0g08 - grayscale, no interlacing, filter-type 4 f00n2c08 - color, no interlacing, filter-type 0 f01n2c08 - color, no interlacing, filter-type 1 f02n2c08 - color, no interlacing, filter-type 2 f03n2c08 - color, no interlacing, filter-type 3 f04n2c08 - color, no interlacing, filter-type 4 3.8 Additional palette chunk test files ------------------------------------------- pp0n2c16 - six-cube palette-chunk in true-color image pp0n6a08 - six-cube palette-chunk in true-color+alpha image ps1n0g08 - six-cube suggested palette (1 byte) in grayscale image ps1n2c16 - six-cube suggested palette (1 byte) in true-color image ps2n0g08 - six-cube suggested palette (2 bytes) in grayscale image ps2n2c16 - six-cube suggested palette (2 bytes) in true-color image 3.9 Ancillary chunks test files ----------------------------------- cs5n2c08 - color, 5 significant bits cs8n2c08 - color, 8 significant bits (reference) cs3n2c16 - color, 13 significant bits cs3n3p08 - paletted, 3 significant bits cs5n3p08 - paletted, 5 significant bits cs8n3p08 - paletted, 8 significant bits (reference) cdfn2c08 - physical pixel dimensions, 8x32 flat pixels cdhn2c08 - physical pixel dimensions, 32x8 high pixels cdsn2c08 - physical pixel dimensions, 8x8 square pixels cdun2c08 - physical pixel dimensions, 1000 pixels per 1 meter ccwn2c08 - chroma chunk w:0.3127,0.3290 r:0.64,0.33 g:0.30,0.60 b:0.15,0.06 ccwn3p08 - chroma chunk w:0.3127,0.3290 r:0.64,0.33 g:0.30,0.60 b:0.15,0.06 ch1n3p04 - histogram 15 colors ch2n3p08 - histogram 256 colors cm7n0g04 - modification time, 01-jan-1970 00:00:00 cm9n0g04 - modification time, 31-dec-1999 23:59:59 cm0n0g04 - modification time, 01-jan-2000 12:34:56 ct0n0g04 - no textual data ct1n0g04 - with textual data ctzn0g04 - with compressed textual data 3.10 Chunk ordering ---------------------- oi1n0g16 - grayscale mother image with 1 idat-chunk oi2n0g16 - grayscale image with 2 idat-chunks oi4n0g16 - grayscale image with 4 unequal sized idat-chunks oi9n0g16 - grayscale image with all idat-chunks length one oi1n2c16 - color mother image with 1 idat-chunk oi2n2c16 - color image with 2 idat-chunks oi4n2c16 - color image with 4 unequal sized idat-chunks oi9n2c16 - color image with all idat-chunks length one 3.11 Compression level ------------------------- z00n2c08 - color, no interlacing, compression level 0 (none) z03n2c08 - color, no interlacing, compression level 3 z06n2c08 - color, no interlacing, compression level 6 (default) z09n2c08 - color, no interlacing, compression level 9 (maximum) 3.12 Currupted files ----------------------- x00n0g01 - empty 0x0 grayscale file xcrn0g04 - added cr bytes xlfn0g04 - added lf bytes xc0n0c08 - color type 0 xc9n0c08 - color type 9 xd0n2c00 - bit-depth 0 xd3n2c03 - bit-depth 3 xd9n2c99 - bit-depth 99 xcsn2c08 - incorrect IDAT checksum -------- (c) Willem van Schaik willem@schaik.com Singapore, October 1996 png++-0.2.5/test/pngsuite/s32i3p04.png0000644000175000017500000000054306511716505015670 0ustar useruserPNG  IHDR SWQgAMA1_sBITw'PLTEwwwwww;IDATx}0F?E~S׆$F:5q,섁3$XV)16͗ù6H^|GO6vjPhq SXL!0Z(-`FUʂ $Lz*>=& r%@=E"t6;s2 q2wzE¥0l%=!޲Z;7R҄#IENDB`png++-0.2.5/test/pngsuite/basi3p02.png0000644000175000017500000000030106511716442016014 0ustar useruserPNG  IHDR ygAMA1_sBIT|.w PLTEe?+QIDATxcxǰ]̌!9J޸b.??dCH dJHR?t#B,*9Z}uIENDB`png++-0.2.5/test/pngsuite/basi2c08.png0000644000175000017500000000047306511716435016020 0ustar useruserPNG  IHDR 5gAMA1_IDATxՓA! D{x=Ys3hhf gZYd1b|V%}֠Ɯ7~gv>^/-Jcm smXTmcm @WF\` T%ڭg➗#~aξNlEdDU4.-S s D-JjA*t2g#3)"gįp(0I5{8 H\ _ $a}Fc7@y1`vY/rU&K­PqL%B}?aaDL*_*h>Md'R@C r+ ³L bXZ%J!F8N7) ( .&  $v̆Kwq10i^̼0>m8 jQ9/KxvYžL8xqI+s'IENDB`png++-0.2.5/test/pngsuite/basi4a08.png0000644000175000017500000000032606511716450016012 0ustar useruserPNG  IHDR tgAMA1_IDATx 0 ֽA((sOAVG":ݙbH$ @ɾzM2x<7U[0t<n!Y~.,>RfqXAh٪wϤ50o0N N6 O= YU]IENDB`png++-0.2.5/test/pngsuite/basi6a08.png0000644000175000017500000000055106511716457016023 0ustar useruserPNG  IHDR }JbgAMA1_ IDATxŕAN0EAfAME*q *e@ՔAHɊ|?'dG` 9c:1Ⓣ{=k ֵS˰gc. 3{_m /N @-~'.lM1! jѠ D h=F`u@]`^-^%x zRhb!9:XF/h.䋱 lY PtP΀W(3mYm πu(ש P:JSiNsBIENDB`png++-0.2.5/test/pngsuite/s04i3p01.png0000644000175000017500000000017606511716467015675 0ustar useruserPNG  IHDR8<gAMA1_sBITwPLTEwCIDATxch`  >7IENDB`png++-0.2.5/test/pngsuite/s03i3p01.png0000644000175000017500000000016606511716467015673 0ustar useruserPNG  IHDRjgAMA1_sBITwPLTEw奟 IDATxc`LAIENDB`png++-0.2.5/test/pngsuite/basn3p02.png0000644000175000017500000000022211274633102016014 0ustar useruserPNG  IHDR ggAMA1_sBIT|.w PLTEe?+"IDATc0,| =Im*IENDB`png++-0.2.5/test/pngsuite/s09n3p02.png0000644000175000017500000000021706511716466015703 0ustar useruserPNG  IHDR gAMA1_sBITw PLTEwwVdIDATxc` V,XB q iejC#IENDB`png++-0.2.5/test/pngsuite/s08n3p02.png0000644000175000017500000000021306511716466015676 0ustar useruserPNG  IHDRaVgAMA1_sBITw PLTEwwYIDATxc```ZA =V=LIENDB`png++-0.2.5/test/pngsuite/basn4a08.png0000644000175000017500000000017611274633102016014 0ustar useruserPNG  IHDR sgAMA1_5IDATHch41",(,?a0T1`4GÀ*hP* }qXIENDB`png++-0.2.5/test/pngsuite/basi0g04.png0000644000175000017500000000036706511716427016021 0ustar useruserPNG  IHDR gAMA1_IDATxeQ0D:(u AAAAA$TI~ò¶EuEĺCsGjw<# ^bs8Al.iGZ'(CYd:"k@i2Gpr:1(Kkce s {ig 826N'MIENDB`png++-0.2.5/test/pngsuite/f00n2c08.png0000644000175000017500000000465306511716633015651 0ustar useruserPNG  IHDR  rIDATxuopTƟM6Ɇ ,I hE@v Fؖb k"d; MHCaVe(RzCH/||L(8ڞOwD2h\:9j<-B>YY󸠄X@WWs]-7sK#lfi<<p_hNKzNsL,sɧwKsi\U5󸾄n`cߪZg[#ۛxRϮvw|/eEiywn!>Ǥ-L%QI4be.WsxpC!7y|M wVpw[yi̓x?]9//[סFʤ16X-lql*BS=sV} XCS5߯Z ɛgx" :1è&v&QM,eW>O."%b/U=m&5hꝼ}w !iP㇍17QKbOd7Wym,`_!7~Sg5Zުwm k;}'D8,G"r4*bU5M3꺑4d&3҉<$א/udE r]Dߎ#qqxN7t)?7&+uŗo6p-[ca!I#’3"ccUyt4g9OWsN Xsvwf7؀d0D_ T% RRFD2cR?([stw2^qz},bpFf_MA!DRRRR>Q?z vqN|Y\P|q%A:m'Ix,)B E0U It)2Gw"9{nΚӹDzbV\D O*V M(Y"`l?KIV a?%cX:K= L*snXͿb#L w</[B!"8F?ǞԙR|-E \=k' ӹ׊6-Ng\p'<<4>Ẉ {C̆+n'<.x'7iPBkA)T'k4OMv{yv6TG6yp=7φ%B;&D-=x:&KX,Zan.nx pOhF)VXl1؁,']p1҃^LaS aQJˣXK*^#-]C¡{/! { 3L$[bNd`w#ǃ^8}O&XB/Q,XZ!72}yo]@ adE f;:Յ 72=E/a xDA~ &cJODaqkxNOHr9_ FLv$;`vb 7R=H& 6?(#a8#&p -a |4/ '.H$ fR@jȈ`p1 Qa' 9:o&Z$IENDB`png++-0.2.5/test/pngsuite/s40i3p04.png0000644000175000017500000000054506511716516015673 0ustar useruserPNG  IHDR(( וgAMA1_sBITw'PLTEwwwwww;IDATx 0EZk]dRPN7upqg'B YP1BCᐼ<DZrQeA|$`O sc#WLYDOLILȾ{aWvD( cNٮaXDCapl5pQDV @"$֓I#U&!AHt xnR=͈ki^ jNp{xIENDB`png++-0.2.5/test/pngsuite/tp1n3p08.png0000644000175000017500000000213306511716551015774 0ustar useruserPNG  IHDR DgAMA1_PLTE""ssQ DDb ffs sssoookkkgggUUUggQQQMMM88 V 333////+/++w||+'s+++o'''x ###UMMM < oo/8' UUM M  bb UU3لww<<D ||| bbb"^^^ZZZ''xxxxssooDDD@@@ff<<< UU444MM|EE<<"""<33"D''<  // m4#tRNS@fIDATxc`XW_!^.aaҡ^KE],C:OWF\` T%ڭg➗#~aξNlEdDU4.-S s D-JjA*t2g#3)"gįp(0I5{8 H\ _ $a}Fc7@y1`vY/rU&K­PqL%B}?aaDL*_*h>Md'R@C r+ ³L bXZ%J!F8N7) ( .&  $v̆Kwq10i^̼0>m8 jQ9/KxvYžL8xqI+s'IENDB`png++-0.2.5/test/pngsuite/s07i3p02.png0000644000175000017500000000022506511716470015666 0ustar useruserPNG  IHDR;gAMA1_sBITw PLTEwwC%IDATxc8p 3aH? Wcn UIENDB`png++-0.2.5/test/pngsuite/s39n3p04.png0000644000175000017500000000054006511716503015677 0ustar useruserPNG  IHDR''~LgAMA1_sBITw'PLTEwwwwww;IDATxm!@GHzp 8,šW1CufICgf`2(6 'Zж =E'̪ 'QuEyJڟd0`7~mdUg/C>d(U>ѱb'LWtec+`:4nh7zob/ Ǫ O/5+IENDB`png++-0.2.5/test/pngsuite/basn2c08.png0000644000175000017500000000022111274633102016003 0ustar useruserPNG  IHDR gAMA1_HIDATH 0 @r;D++ ; }Lx@J„(t8#@pw^>דIENDB`png++-0.2.5/test/pngsuite/basn0g01.png0000644000175000017500000000024411274633102016003 0ustar useruserPNG  IHDR [GYgAMA1_[IDAT-̱ 0 J z4o< aEQ/ҤlΩ%SS4W!K&=Bs%%^ڲoj0i.)ano0eI/x[IENDB`png++-0.2.5/test/pngsuite/bgai4a08.png0000644000175000017500000000032606511716523015777 0ustar useruserPNG  IHDR tgAMA1_IDATx 0 ֽA((sOAVG":ݙbH$ @ɾzM2x<7U[0t<n!Y~.,>RfqXAh٪wϤ50o0N N6 O= YU]IENDB`png++-0.2.5/test/pngsuite/s07n3p02.png0000644000175000017500000000021206511716465015673 0ustar useruserPNG  IHDR<@gAMA1_sBITw PLTEwwCIDATxcj í9 7H qy ]mIENDB`png++-0.2.5/test/pngsuite/s05i3p02.png0000644000175000017500000000020606511716470015663 0ustar useruserPNG  IHDRgAMA1_sBITw PLTEwAsIDATxch`h`X";tOm"Mp$FEIENDB`png++-0.2.5/test/pngsuite/s35i3p04.png0000644000175000017500000000061706511716510015671 0ustar useruserPNG  IHDR##gAMA1_sBITw'PLTEwwwwww;IDATxe=PQv@Xـ  zs;&}!rBї 8ycec:1 4;0'9]L(PFڄ唪*1j1-FtH?׹HD"nƮMM;-ww+T0q=މ^fBu/ep cA%q)uMa8VFL`?Ha; L[ΉqЊiIENDB`png++-0.2.5/test/pngsuite/s34i3p04.png0000644000175000017500000000053506511716507015675 0ustar useruserPNG  IHDR""n&ggAMA1_sBITw'PLTEwwwwww;IDATx} 0Fj[tdAk[]:8;9 jD{- q>oĻ$`*1sPxKE= "aXIDo-MBC:e֖)Zir450NRk[]IldnaȕGR[_{Q_E6bp&],P]I4?t3P]jP33/2Z߈)IENDB`png++-0.2.5/test/pngsuite/f04n2c08.png0000644000175000017500000000173106511716637015653 0ustar useruserPNG  IHDR IDATx͎E[Uv۔("  ${Y[g*BQ,<3c/n=c ZG֭v[N+:ۭv=WoTQa8`HB[ n zeH4;؂->VJP_Ӻrό9q'JB i9 "Ok-E4Ҹ2mr n:(UB 칻ZLwW)40)t\+ T_?G٪{wGN)t йj^0~_j 4hL| sIE@ ͐mʢv;̣8R^j" RC6>|+WAp )O'-a_[>w(e5H5:϶yz8㖫$CykU樏G.% )xr|Ok5 }MR9?Hұ5`_€Q .i P7|Hrel$Л\$XT)3T%?qoٿ*V%J(Kq Oq/nB]g_`GR|%mʹbZ2w̛@{?X&^~ MTPIF$->Ү|#0M&ؑd'Q($4 0Scs:yꆼU]Mj 0WGɱ٦o l` k;4 Xͽ {vG!@,'$iKqOaHOv}8Xg DBs96)j2"4~, *ڧ30ClZ(cՂU@ \Ҍivݙ!)̓r+LV71 jIENDB`png++-0.2.5/test/pngsuite/basn0g02.png0000644000175000017500000000015011274633102016000 0ustar useruserPNG  IHDR =gAMA1_IDATc`]0PS3 cIPIENDB`png++-0.2.5/test/pngsuite/s35n3p04.png0000644000175000017500000000052206511716477015705 0ustar useruserPNG  IHDR##jgAMA1_sBITw'PLTEwwwwww;IDATxe!@״p иJ,{>a3Fު`Y\Ռ:T4b2(h%sn݆oEd=d2ܙBcF5μWhQd *F&Ny7zAwe\/x7rL#"ckLiq6>G΢HIENDB`png++-0.2.5/test/convert_color_space.cpp0000644000175000017500000000720211461476005016667 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include void print_usage() { std::cerr << "usage: convert_color_space RGB|RGBA|GRAY|GA 8|16" << " INFILE OUTFILE" << std::endl; } int main(int argc, char* argv[]) try { if (argc != 5) { print_usage(); return EXIT_FAILURE; } char const* space = argv[1]; int bits = atoi(argv[2]); char const* infile = argv[3]; char const* outfile = argv[4]; if (bits != 8 && bits != 16) { print_usage(); return EXIT_FAILURE; } if (strcmp(space, "RGB") == 0) { if (bits == 16) { png::image< png::rgb_pixel_16 > image(infile); image.write(outfile); } else { png::image< png::rgb_pixel > image(infile); image.write(outfile); } } else if (strcmp(space, "RGBA") == 0) { if (bits == 16) { png::image< png::rgba_pixel_16 > image(infile); image.write(outfile); } else { png::image< png::rgba_pixel > image(infile); image.write(outfile); } } else if (strcmp(space, "GRAY") == 0) { if (bits == 16) { png::image< png::gray_pixel_16 > image(infile); image.write(outfile); } else { png::image< png::gray_pixel > image(infile); image.write(outfile); } } else if (strcmp(space, "GA") == 0) { if (bits == 16) { png::ga_pixel_16 ga(1); // test alpha_pixel_traits png::image< png::ga_pixel_16 > image(infile); image.write(outfile); } else { png::ga_pixel ga(1); // test alpha_pixel_traits png::image< png::ga_pixel > image(infile); image.write(outfile); } } else { print_usage(); return EXIT_FAILURE; } } catch (std::exception const& error) { std::cerr << "convert_color_space: " << error.what() << std::endl; return EXIT_FAILURE; } png++-0.2.5/ga_pixel.hpp0000644000175000017500000000543511461476005013462 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_GA_PIXEL_HPP_INCLUDED #define PNGPP_GA_PIXEL_HPP_INCLUDED #include #include "types.hpp" #include "pixel_traits.hpp" namespace png { /** * \brief Basic Gray+Alpha pixel type. */ template< typename T > struct basic_ga_pixel { typedef pixel_traits< basic_ga_pixel< T > > traits; /** * \brief Constructs basic_ga_pixel object from \a value and * \a alpha components passed as parameters. Alpha defaults * to full opacity. */ basic_ga_pixel(T value = 0, T alpha = traits::get_alpha_filler()) : value(value), alpha(alpha) { } T value; T alpha; }; /** * \brief The 8-bit Gray+Alpha pixel type. */ typedef basic_ga_pixel< byte > ga_pixel; /** * \brief The 16-bit Gray+Alpha pixel type. */ typedef basic_ga_pixel< uint_16 > ga_pixel_16; /** * \brief Pixel traits specialization for basic_ga_pixel. */ template< typename T > struct pixel_traits< basic_ga_pixel< T > > : basic_pixel_traits< basic_ga_pixel< T >, T, color_type_ga >, basic_alpha_pixel_traits< T > { }; } // namespace png #endif // PNGPP_GA_PIXEL_HPP_INCLUDED png++-0.2.5/info_base.hpp0000644000175000017500000000463011461476005013613 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_INFO_BASE_HPP_INCLUDED #define PNGPP_INFO_BASE_HPP_INCLUDED #include #include "error.hpp" #include "types.hpp" namespace png { class io_base; /** * \brief Internal class to hold PNG info or end_info. */ class info_base { info_base(info_base const&); info_base& operator=(info_base const&); public: info_base(io_base& io, png_struct* png) : m_io(io), m_png(png), m_info(png_create_info_struct(m_png)) { } png_info* get_png_info() const { return m_info; } png_info** get_png_info_ptr() { return & m_info; } protected: io_base& m_io; png_struct* m_png; png_info* m_info; }; } // namespace png #endif // PNGPP_INFO_BASE_HPP_INCLUDED png++-0.2.5/example/0000755000175000017500000000000011461476005012605 5ustar useruserpng++-0.2.5/example/pixel_generator.cpp0000644000175000017500000000542211461476005016503 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include class pixel_generator : public png::generator< png::gray_pixel_1, pixel_generator > { public: pixel_generator(size_t width, size_t height) : png::generator< png::gray_pixel_1, pixel_generator >(width, height), m_row(width) { for (size_t i = 0; i < m_row.size(); ++i) { m_row[i] = i > m_row.size() / 2 ? 1 : 0; } } png::byte* get_next_row(size_t /*pos*/) { size_t i = std::rand() % m_row.size(); size_t j = std::rand() % m_row.size(); png::gray_pixel_1 t = m_row[i]; m_row[i] = m_row[j]; m_row[j] = t; return reinterpret_cast< png::byte* >(row_traits::get_data(m_row)); } private: typedef png::packed_pixel_row< png::gray_pixel_1 > row; typedef png::row_traits< row > row_traits; row m_row; }; int main() try { size_t const width = 32; size_t const height = 512; std::ofstream file("generated.png", std::ios::binary); pixel_generator generator(width, height); generator.write(file); } catch (std::exception const& error) { std::cerr << "pixel_generator: " << error.what() << std::endl; return EXIT_FAILURE; } png++-0.2.5/example/Makefile0000644000175000017500000000472611461476005014256 0ustar useruser# # Copyright (C) 2007,2008 Alex Shulgin # # This file is part of png++ the C++ wrapper for libpng. PNG++ is free # software; the exact copying conditions are as follows: # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ifndef PREFIX PREFIX := /usr/local endif ifndef PNGPP PNGPP := .. endif make_cflags := -Wall $(CFLAGS) -I$(PREFIX)/include -I$(PNGPP) make_ldflags := $(LDFLAGS) -L$(PREFIX)/lib ifndef NDEBUG make_cflags := $(make_cflags) -g make_ldflags := $(make_ldflags) -g endif ifndef LIBPNG_CONFIG LIBPNG_CONFIG := libpng-config endif sources := pixel_generator.cpp deps := $(sources:.cpp=.dep) objects := $(sources:.cpp=.o) targets := $(sources:.cpp=$(bin_suffix)) all: $(deps) $(targets) dist-copy-files: mkdir $(dist_dir)/example cp $(sources) Makefile $(dist_dir)/example clean: clean-deps rm -f $(targets) $(objects) .PHONY: all dist-copy-files clean clean-deps %$(bin_suffix): %.o g++ -o $@ $< $(make_ldflags) `$(LIBPNG_CONFIG) --ldflags` %.o: %.cpp g++ -c -o $@ $< $(make_cflags) `$(LIBPNG_CONFIG) --cflags` %.dep: %.cpp g++ -M $(CPPFLAGS) $(make_cflags) $< -o- | \ sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@ clean-deps: rm -f $(deps) include $(deps) png++-0.2.5/README0000644000175000017500000000400011461476005012024 0ustar useruserThis is png++ the C++ wrapper for libpng. Version 0.2 General ======= PNG++ aims to provide simple yet powerful C++ interface to libpng, the PNG reference implementation library. PNG++ is free software distributed under a modified variant of BSD license. For more details please refer to file COPYING in this directory. Using raw libpng in C++ may impose serious challenge since lots of precautions must be taken to handle initialization/deinitialization of control structures as well as handling errors correctly. With png++ you can read or write PNG images just in a single line of C++ code: png::image< png::rgb_pixel > image("input.png"); image.write("output.png"); The code reads an image from the file named "input.png", then writes the image to a file named "output.png". In this example png++ does all the transformations needed to create adequate in-memory RGB representation of the image (well, in most cases it simply instructs libpng to do so). The image in "input.png" can be RGB image, or it might be grayscale or even indexed image with a palette--png++ will just convert any input to RGB format. However, for technical reasons such automatic transformation is supported for RGB and Grayscale color types only. Optionally there may be an alpha channel in the target color space (RGBA and Gray+Alpha respectively). Download ======== The project is hosted at Savannah: http://savannah.nongnu.org/projects/pngpp/ Released source packages can be found here: http://download.savannah.nongnu.org/releases/pngpp/ Also, you can check out sources directly from SVN repository: svn://svn.sv.nongnu.org/pngpp/trunk/ or, for people w/o outgoing svn: http://svn.sv.nongnu.org/pngpp/trunk/ Online documentation can be found here: http://www.nongnu.org/pngpp/doc/html/index.html Help ==== There is a mailing list for developers: http://lists.nongnu.org/mailman/listinfo/pngpp-devel You can also contact me by dropping a mail to . Happy hacking! -- Alex Shulgin png++-0.2.5/convert_color_space.hpp0000644000175000017500000002562311461476005015724 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_CONVERT_COLOR_SPACE_HPP_INCLUDED #define PNGPP_CONVERT_COLOR_SPACE_HPP_INCLUDED #include "error.hpp" #include "rgb_pixel.hpp" #include "rgba_pixel.hpp" #include "gray_pixel.hpp" #include "ga_pixel.hpp" #include "index_pixel.hpp" #include "reader.hpp" #include "writer.hpp" namespace png { namespace detail { /** * \brief IO transformation class template. Converts %image %color * space. */ template< typename pixel > struct convert_color_space_impl { typedef pixel_traits< pixel > traits; typedef typename traits::component_type component_type; typedef basic_alpha_pixel_traits< component_type > alpha_traits; template< class reader > void operator()(reader& io) const { handle_16(io); handle_alpha(io, alpha_traits::get_alpha_filler()); handle_palette(io); handle_rgb(io); handle_gray(io); io.set_color_type(traits::get_color_type()); io.set_bit_depth(traits::get_bit_depth()); } protected: static void expand_8_to_16(png_struct*, png_row_info* row_info, byte* row) { #ifdef DEBUG_EXPAND_8_16 printf("row: width=%d, bytes=%d, channels=%d\n", row_info->width, row_info->rowbytes, row_info->channels); printf("<= "); dump_row(row, row_info->rowbytes); #endif for (size_t i = row_info->rowbytes; i-- > 0; ) { row[2*i + 1] = row[i]; row[2*i + 0] = 0; } #ifdef DEBUG_EXPAND_8_16 printf("=> "); dump_row(row, 2*row_info->rowbytes); #endif } #ifdef DEBUG_EXPAND_8_16 static void dump_row(byte const* row, size_t width) { printf("{"); for (size_t i = 0; i < width; ++i) { printf(" %02x,", row[i]); } printf(" }\n"); } #endif template< class reader > static void handle_16(reader& io) { if (io.get_bit_depth() == 16 && traits::get_bit_depth() == 8) { #ifdef PNG_READ_16_TO_8_SUPPORTED io.set_strip_16(); #else throw error("expected 8-bit data but found 16-bit;" " recompile with PNG_READ_16_TO_8_SUPPORTED"); #endif } if (io.get_bit_depth() != 16 && traits::get_bit_depth() == 16) { #ifdef PNG_READ_USER_TRANSFORM_SUPPORTED io.set_read_user_transform(expand_8_to_16); io.set_user_transform_info(NULL, 16, traits::get_channels()); #else throw error("expected 16-bit data but found 8-bit;" " recompile with" " PNG_READ_USER_TRANSFORM_SUPPORTED"); #endif } } template< class reader > static void handle_alpha(reader& io, uint_32 filler) { bool src_alpha = (io.get_color_type() & color_mask_alpha); bool src_tRNS = io.has_chunk(chunk_tRNS); bool dst_alpha = traits::get_color_type() & color_mask_alpha; if ((src_alpha || src_tRNS) && !dst_alpha) { #ifdef PNG_READ_STRIP_ALPHA_SUPPORTED io.set_strip_alpha(); #else throw error("alpha channel unexpected;" " recompile with" " PNG_READ_STRIP_ALPHA_SUPPORTED"); #endif } if (!src_alpha && dst_alpha) { #if defined(PNG_tRNS_SUPPORTED) && defined(PNG_READ_EXPAND_SUPPORTED) if (src_tRNS) { io.set_tRNS_to_alpha(); return; } #endif #if defined(PNG_READ_FILLER_SUPPORTED) && !defined(PNG_1_0_X) io.set_add_alpha(filler, filler_after); #else throw error("expected alpha channel but none found;" " recompile with PNG_READ_FILLER_SUPPORTED" " and be sure to use libpng > 1.0.x"); #endif } } template< class reader > static void handle_palette(reader& io) { if (io.get_color_type() == color_type_palette) { #ifdef PNG_READ_EXPAND_SUPPORTED io.set_palette_to_rgb(); if (traits::get_color_type() != color_type_palette) { io.get_info().drop_palette(); } #else throw error("indexed colors unexpected;" " recompile with PNG_READ_EXPAND_SUPPORTED"); #endif } } template< class reader > static void handle_rgb(reader& io) { bool src_rgb = io.get_color_type() & (color_mask_rgb | color_mask_palette); bool dst_rgb = traits::get_color_type() & color_mask_rgb; if (src_rgb && !dst_rgb) { #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED io.set_rgb_to_gray(/*rgb_to_gray_error*/); #else throw error("grayscale data expected;" " recompile with" " PNG_READ_RGB_TO_GRAY_SUPPORTED"); #endif } if (!src_rgb && dst_rgb) { #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED io.set_gray_to_rgb(); #else throw error("expected RGB data;" " recompile with" " PNG_READ_GRAY_TO_RGB_SUPPORTED"); #endif } } template< class reader > static void handle_gray(reader& io) { if ((io.get_color_type() & ~color_mask_alpha) == color_type_gray) { if (io.get_bit_depth() < 8 && traits::get_bit_depth() >= 8) { #ifdef PNG_READ_EXPAND_SUPPORTED io.set_gray_1_2_4_to_8(); #else throw error("convert_color_space: expected 8-bit data;" " recompile with" " PNG_READ_EXPAND_SUPPORTED"); #endif } } } }; } // namespace detal /** * \brief IO transformation class template. Converts %image %color * space. * * This IO transformation class template is used to convert %color * space of the source %image to the %color space of the target * %image. An error with human-readable description is thrown * when the %color space could not be converted. Often, this * means that you have to recompile libpng with some more * conversion options turned on. * * Not implemented--see specializations. * * \see image, image::read */ template< typename pixel > struct convert_color_space { }; /** * \brief Converts %image %color space. A specialization for * rgb_pixel type. */ template<> struct convert_color_space< rgb_pixel > : detail::convert_color_space_impl< rgb_pixel > { }; /** * \brief Converts %image %color space. A specialization for * rgb_pixel_16 type. */ template<> struct convert_color_space< rgb_pixel_16 > : detail::convert_color_space_impl< rgb_pixel_16 > { }; /** * \brief Converts %image %color space. A specialization for * rgba_pixel type. */ template<> struct convert_color_space< rgba_pixel > : detail::convert_color_space_impl< rgba_pixel > { }; /** * \brief Converts %image %color space. A specialization for * rgba_pixel_16 type. */ template<> struct convert_color_space< rgba_pixel_16 > : detail::convert_color_space_impl< rgba_pixel_16 > { }; /** * \brief Converts %image %color space. A specialization for * gray_pixel type. */ template<> struct convert_color_space< gray_pixel > : detail::convert_color_space_impl< gray_pixel > { }; /** * \brief Converts %image %color space. A specialization for * gray_pixel_16 type. */ template<> struct convert_color_space< gray_pixel_16 > : detail::convert_color_space_impl< gray_pixel_16 > { }; /** * \brief Converts %image %color space. A specialization for * ga_pixel type. */ template<> struct convert_color_space< ga_pixel > : detail::convert_color_space_impl< ga_pixel > { }; /** * \brief Converts %image %color space. A specialization for * ga_pixel_16 type. */ template<> struct convert_color_space< ga_pixel_16 > : detail::convert_color_space_impl< ga_pixel_16 > { }; } // namespace png #endif // PNGPP_CONVERT_COLOR_SPACE_HPP_INCLUDED png++-0.2.5/generator.hpp0000644000175000017500000001645711461476005013666 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_GENERATOR_HPP_INCLUDED #define PNGPP_GENERATOR_HPP_INCLUDED #include #include #include #include #include "config.hpp" #include "error.hpp" #include "streaming_base.hpp" #include "writer.hpp" namespace png { /** * \brief Pixel generator class template. * * Used as a base class for custom pixel generator classes as well * as inside image class implementation to write pixels from the * pixel buffer. * * A usage example can be found in \c example/pixel_generator.cpp. * * Encapsulates PNG %image writing procedure. In order to create * a custom pixel %generator use CRTP trick: * * \code * class pixel_generator * : public png::generator< pixel, pixel_generator > * { * ... * }; * \endcode * * Your pixel %generator class should implement \c get_next_row() * method and \c reset() method (optional). Their signatures are * as follows: * * \code * png::byte* get_next_row(size_t pos); * void reset(size_t pass); * \endcode * * The \c get_next_row() method is called every time a new row of * %image data is needed by the writer. The position of the row * being written is passed as \c pos parameter. The \c pos takes * values from \c 0 to \c -1 inclusively. The * method should return the starting address of a row buffer * storing an appropriate amount of pixels (i.e. the width of the * %image being written). The address should be casted to * png::byte* pointer type using \c reinterpret_cast<> or a * C-style cast. * * The optional \c reset() method is called every time the new * pass of interlaced %image processing starts. The number of * interlace pass is avaiable as the only parameter of the method. * For non-interlaced images the method is called once prior to * any calls to \c get_next_row(). The value of \c 0 is passed * for the \c pass number. You do not have to implement this * method unless you are going to support interlaced %image * generation. * * An optional template parameter \c info_holder encapsulated * image_info storage policy. Please refer to consumer class * documentation for the detailed description of this parameter. * * An optional \c bool template parameter \c interlacing_supported * specifies whether writing interlacing images is supported by * your %generator class. It defaults to \c false. An attempt to * write an interlaced %image will result in throwing * \c std::logic_error. * * In order to fully support interlacing specify \c true for \c * interlacing_supported parameter and implement \c reset() * method. You _must_ generate the same pixels for every pass to * get the correct PNG %image output. * * \see image, consumer */ template< typename pixel, class pixgen, class info_holder = def_image_info_holder, bool interlacing_supported = false > class generator : public streaming_base< pixel, info_holder > { public: /** * \brief Writes an image to the stream. * * Essentially, this method constructs a writer object and * instructs it to write the image to the stream. It handles * writing interlaced images as long as your generator class * supports this. */ template< typename ostream > void write(ostream& stream) { writer< ostream > wr(stream); wr.set_image_info(this->get_info()); wr.write_info(); #if __BYTE_ORDER == __LITTLE_ENDIAN if (pixel_traits< pixel >::get_bit_depth() == 16) { #ifdef PNG_WRITE_SWAP_SUPPORTED wr.set_swap(); #else throw error("Cannot write 16-bit image:" " recompile with PNG_WRITE_SWAP_SUPPORTED."); #endif } #endif size_t pass_count; if (this->get_info().get_interlace_type() != interlace_none) { #ifdef PNG_WRITE_INTERLACING_SUPPORTED if (interlacing_supported) { pass_count = wr.set_interlace_handling(); } else { throw std::logic_error("Cannot write interlaced image:" " generator does not support it."); } #else throw error("Cannot write interlaced image:" " interlace handling disabled."); #endif } else { pass_count = 1; } pixgen* pixel_gen = static_cast< pixgen* >(this); for (size_t pass = 0; pass < pass_count; ++pass) { pixel_gen->reset(pass); for (size_t pos = 0; pos < this->get_info().get_height(); ++pos) { wr.write_row(pixel_gen->get_next_row(pos)); } } wr.write_end_info(); } protected: typedef streaming_base< pixel, info_holder > base; /** * \brief Constructs a generator object using passed image_info * object to store image information. */ explicit generator(image_info& info) : base(info) { } /** * \brief Constructs a generator object prepared to generate * an image of specified width and height. */ generator(size_t width, size_t height) : base(width, height) { } }; } // namespace png #endif // PNGPP_GENERATOR_HPP_INCLUDED png++-0.2.5/streaming_base.hpp0000644000175000017500000000713411461476005014653 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_STREAMING_BASE_HPP_INCLUDED #define PNGPP_STREAMING_BASE_HPP_INCLUDED #include #include "image_info.hpp" #include "pixel_traits.hpp" namespace png { /** * \brief The default image_info holder class. Stores image_info * member object. */ class def_image_info_holder { public: def_image_info_holder(image_info const& info) : m_info(info) { } image_info& get_info() { return m_info; } private: image_info m_info; }; /** * \brief An image_info holder class. Stores a reference to the * image_info object. The image_info object itself should be * stored elsewhere. */ class image_info_ref_holder { public: image_info_ref_holder(image_info& info) : m_info(info) { } image_info& get_info() { return m_info; } private: image_info& m_info; }; /** * \brief A base class template for consumer and generator * classes. Provides default \c reset() method implementation as * well as \c info_holder policy. */ template< typename pixel, class info_holder > class streaming_base { public: typedef pixel_traits< pixel > traits; explicit streaming_base(image_info& info) : m_info_holder(info) { } streaming_base(size_t width, size_t height) : m_info_holder(make_image_info< pixel >()) { get_info().set_width(width); get_info().set_height(height); } image_info const& get_info() const { return m_info_holder.get_info(); } protected: void reset(size_t /*pass*/) { // nothing to do in the most general case } image_info& get_info() { return m_info_holder.get_info(); } info_holder m_info_holder; }; } // namespace png #endif // PNGPP_STREAMING_BASE_HPP_INCLUDED png++-0.2.5/palette.hpp0000644000175000017500000000357611461476005013334 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_PALETTE_HPP_INCLUDED #define PNGPP_PALETTE_HPP_INCLUDED #include #include "color.hpp" namespace png { /** * \brief The palette type. Currently implemented as \c std::vector * of png::color. */ typedef std::vector< color > palette; } // namespace png #endif // PNGPP_PALETTE_HPP_INCLUDED png++-0.2.5/NEWS0000644000175000017500000000205211461476005011650 0ustar useruserVersion 0.2.5: - Fixed compatibility with newer libpng versions (>= 1.4) - Fixed compilation on FreeBSD. - Fixed tRNS handling with transformations. - Added IO transformation debugging facility. - Better organized test suite. Version 0.2.3: - Fixed numerous `already defined' errors due to require_color_space implementation. - Added `config.hpp'. - Fixed `strerror' usage. - Minor docs fixes. Version 0.2.1: - Added support for tRNS chunk. - Added non-std IO streams support. - Fixed 16-bit endianness problems. - Improved test script. Version 0.2.0: - Added support for 16-bit data (RGB, RGBA, Grayscale and Gray+Alpha color types) - Added support for packed 1-, 2- or 4-bit pixels (Grayscale and Indexed colors) - Fixed interlace handling code which was severely broken - Added possibility to process images without reading the entire image into memory - Internals are refactored while the client interface is mostly unchanged - Added intensive test suite - Added documentation png++-0.2.5/types.hpp0000644000175000017500000000765211461476005013041 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_TYPES_HPP_INCLUDED #define PNGPP_TYPES_HPP_INCLUDED #include namespace png { typedef png_byte byte; typedef png_uint_16 uint_16; typedef png_uint_32 uint_32; typedef png_fixed_point fixed_point; typedef png_color_8 color_info; typedef png_color_16 color_info_16; enum color_type { color_type_none = -1, color_type_gray = PNG_COLOR_TYPE_GRAY, color_type_palette = PNG_COLOR_TYPE_PALETTE, color_type_rgb = PNG_COLOR_TYPE_RGB, color_type_rgb_alpha = PNG_COLOR_TYPE_RGB_ALPHA, color_type_gray_alpha = PNG_COLOR_TYPE_GRAY_ALPHA, color_type_rgba = PNG_COLOR_TYPE_RGBA, color_type_ga = PNG_COLOR_TYPE_GA }; enum color_mask { color_mask_palette = PNG_COLOR_MASK_PALETTE, color_mask_color = PNG_COLOR_MASK_COLOR, color_mask_rgb = color_mask_color, color_mask_alpha = PNG_COLOR_MASK_ALPHA }; enum filler_type { filler_before = PNG_FILLER_BEFORE, filler_after = PNG_FILLER_AFTER }; enum rgb_to_gray_error_action { rgb_to_gray_silent = 1, rgb_to_gray_warning = 2, rgb_to_gray_error = 3 }; enum interlace_type { interlace_none = PNG_INTERLACE_NONE, interlace_adam7 = PNG_INTERLACE_ADAM7 }; enum compression_type { compression_type_base = PNG_COMPRESSION_TYPE_BASE, compression_type_default = PNG_COMPRESSION_TYPE_DEFAULT }; enum filter_type { filter_type_base = PNG_FILTER_TYPE_BASE, intrapixel_differencing = PNG_INTRAPIXEL_DIFFERENCING, filter_type_default = PNG_FILTER_TYPE_DEFAULT }; enum chunk { chunk_gAMA = PNG_INFO_gAMA, chunk_sBIT = PNG_INFO_sBIT, chunk_cHRM = PNG_INFO_cHRM, chunk_PLTE = PNG_INFO_PLTE, chunk_tRNS = PNG_INFO_tRNS, chunk_bKGD = PNG_INFO_bKGD, chunk_hIST = PNG_INFO_hIST, chunk_pHYs = PNG_INFO_pHYs, chunk_oFFs = PNG_INFO_oFFs, chunk_tIME = PNG_INFO_tIME, chunk_pCAL = PNG_INFO_pCAL, chunk_sRGB = PNG_INFO_sRGB, chunk_iCCP = PNG_INFO_iCCP, chunk_sPLT = PNG_INFO_sPLT, chunk_sCAL = PNG_INFO_sCAL, chunk_IDAT = PNG_INFO_IDAT }; } // namespace png #endif // PNGPP_TYPES_HPP_INCLUDED png++-0.2.5/reader.hpp0000644000175000017500000001300611461476005013125 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_READER_HPP_INCLUDED #define PNGPP_READER_HPP_INCLUDED #include #include "io_base.hpp" namespace png { /** * \brief The PNG reader class template. This is the low-level * reading interface--use image class or consumer class to * actually read images. * * The \c istream template parameter specifies the type of input * stream to work with. The \c istream class should implement the * minimum of the following interface: * * \code * class my_istream * { * public: * void read(char*, size_t); * bool good(); * }; * \endcode * * With the semantics similar to the \c std::istream. Naturally, * \c std::istream fits this requirement and can be used with the * reader class as is. * * \see image, consumer, writer, io_base */ template< class istream > class reader : public io_base { public: /** * \brief Constructs a reader prepared to read PNG image from * a \a stream. */ explicit reader(istream& stream) : io_base(png_create_read_struct(PNG_LIBPNG_VER_STRING, static_cast< io_base* >(this), raise_error, 0)) { png_set_read_fn(m_png, & stream, read_data); } ~reader() { png_destroy_read_struct(& m_png, m_info.get_png_info_ptr(), m_end_info.get_png_info_ptr()); } /** * \brief Reads the whole PNG data stream into memory. Not * particularly useful. */ void read_png() { if (setjmp(png_jmpbuf(m_png))) { throw error(m_error); } png_read_png(m_png, m_info.get_png_info(), /* transforms = */ 0, /* params = */ 0); } /** * \brief Reads info about PNG image. */ void read_info() { if (setjmp(png_jmpbuf(m_png))) { throw error(m_error); } m_info.read(); } /** * \brief Reads a row of image data at a time. */ void read_row(byte* bytes) { if (setjmp(png_jmpbuf(m_png))) { throw error(m_error); } png_read_row(m_png, bytes, 0); } /** * \brief Reads ending info about PNG image. */ void read_end_info() { if (setjmp(png_jmpbuf(m_png))) { throw error(m_error); } m_end_info.read(); } void update_info() { m_info.update(); } private: static void read_data(png_struct* png, byte* data, size_t length) { io_base* io = static_cast< io_base* >(png_get_error_ptr(png)); reader* rd = static_cast< reader* >(io); rd->reset_error(); istream* stream = reinterpret_cast< istream* >(png_get_io_ptr(png)); try { stream->read(reinterpret_cast< char* >(data), length); if (!stream->good()) { rd->set_error("istream::read() failed"); } } catch (std::exception const& error) { rd->set_error(error.what()); } catch (...) { assert(!"read_data: caught something wrong"); rd->set_error("read_data: caught something wrong"); } if (rd->is_error()) { rd->raise_error(); } } }; } // namespace png #endif // PNGPP_READER_HPP_INCLUDED png++-0.2.5/require_color_space.hpp0000644000175000017500000001234611461476005015716 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_REQUIRE_COLOR_SPACE_HPP_INCLUDED #define PNGPP_REQUIRE_COLOR_SPACE_HPP_INCLUDED #include "error.hpp" #include "rgb_pixel.hpp" #include "rgba_pixel.hpp" #include "gray_pixel.hpp" #include "ga_pixel.hpp" #include "index_pixel.hpp" #include "io_base.hpp" namespace png { namespace detail { template< typename pixel > struct wrong_color_space { inline static char const* error_msg(); }; template<> inline char const* wrong_color_space< rgb_pixel >::error_msg() { return "8-bit RGB color space required"; } template<> inline char const* wrong_color_space< rgb_pixel_16 >::error_msg() { return "16-bit RGB color space required"; } template<> inline char const* wrong_color_space< rgba_pixel >::error_msg() { return "8-bit RGBA color space required"; } template<> inline char const* wrong_color_space< rgba_pixel_16 >::error_msg() { return "16-bit RGBA color space required"; } template<> inline char const* wrong_color_space< gray_pixel >::error_msg() { return "8-bit Grayscale color space required"; } template<> inline char const* wrong_color_space< gray_pixel_1 >::error_msg() { return "1-bit Grayscale color space required"; } template<> inline char const* wrong_color_space< gray_pixel_2 >::error_msg() { return "2-bit Grayscale color space required"; } template<> inline char const* wrong_color_space< gray_pixel_4 >::error_msg() { return "4-bit Grayscale color space required"; } template<> inline char const* wrong_color_space< gray_pixel_16 >::error_msg() { return "16-bit Grayscale color space required"; } template<> inline char const* wrong_color_space< ga_pixel >::error_msg() { return "8-bit Gray+Alpha color space required"; } template<> inline char const* wrong_color_space< ga_pixel_16 >::error_msg() { return "16-bit Gray+Alpha color space required"; } template<> inline char const* wrong_color_space< index_pixel >::error_msg() { return "8-bit Colormap color space required"; } template<> inline char const* wrong_color_space< index_pixel_1 >::error_msg() { return "1-bit Colormap color space required"; } template<> inline char const* wrong_color_space< index_pixel_2 >::error_msg() { return "2-bit Colormap color space required"; } template<> inline char const* wrong_color_space< index_pixel_4 >::error_msg() { return "4-bit Colormap color space required"; } } // namespace detail /** * \brief IO transformation class template. Enforces image color space. * * This IO transformation class template used to enforce source image * color space. * * \see image, image::read */ template< typename pixel > struct require_color_space { typedef pixel_traits< pixel > traits; void operator()(io_base& io) const { if (io.get_color_type() != traits::get_color_type() || io.get_bit_depth() != traits::get_bit_depth()) { throw error(detail::wrong_color_space< pixel >::error_msg()); } } }; } // namespace png #endif // PNGPP_REQUIRE_COLOR_SPACE_HPP_INCLUDED png++-0.2.5/consumer.hpp0000644000175000017500000002171611461476005013525 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_CONSUMER_HPP_INCLUDED #define PNGPP_CONSUMER_HPP_INCLUDED #include #include #include #include #include "config.hpp" #include "error.hpp" #include "streaming_base.hpp" #include "reader.hpp" #include "pixel_buffer.hpp" namespace png { /** * \brief Pixel consumer class template. * * Used as a base class for custom pixel consumer classes as well * as inside image class implementation to read pixels into the * pixel buffer. * * Encapsulates PNG %image reading procedure. In order to create * a custom pixel %consumer use CRTP trick: * * \code * class pixel_consumer * : public png::consumer< pixel, pixel_consumer > * { * ... * }; * \endcode * * Your pixel %consumer class should implement \c get_next_row() * method and \c reset() method (optional). Their signatures are * as follows: * * \code * png::byte* get_next_row(size_t pos); * void reset(size_t pass); * \endcode * * The \c get_next_row() method is called every time a new row of * %image data is available to the reader. The position of the row * being read is passed as \c pos parameter. The \c pos takes * values from \c 0 to \c -1 inclusively. The * method should return the starting address of a row buffer * capable of storing appropriate amount of pixels (i.e. the width * of the %image being read). The address should be casted to * png::byte* pointer type using \c reinterpret_cast<> or a * C-style cast. * * The optional \c reset() method is called every time the new * pass of interlaced %image processing starts. The number of * interlace pass is avaiable as the only parameter of the method. * For non-interlaced images the method is called once prior to * any calls to \c get_next_row(). The value of \c 0 is passed * for the \c pass number. * * An optional template parameter \c info_holder encapsulates * image_info storage policy. Using def_image_info_holder results * in image_info object stored as a sub-object of the consumer * class. You may specify image_info_ref_holder in order to use a * reference to the externally stored image_info object. This way * you will have to construct the consumer object passing the * reference to image_info object. * * Also, you might want implement an %info holder object yourself * to fine-tune your code. In any case, you can access the * image_info object from your %consumer class methods using the * following code: * * \code * png::image_info& info = m_info_holder.get_info(); * \endcode * * An optional \c bool template parameter \c interlacing_supported * specifies whether reading interlacing images is supported by * your %consumer class. It defaults to \c false. An attempt to * read an interlaced %image will result in discarding pixels * obtained at all the interlacing passes except the last one. * * In order to fully support interlacing specify \c true for \c * interlacing_supported parameter and implement \c reset() * method. * * \see image, generator */ template< typename pixel, class pixcon, class info_holder = def_image_info_holder, bool interlacing_supported = false > class consumer : public streaming_base< pixel, info_holder > { public: typedef pixel_traits< pixel > traits; /** * \brief The default io transformation: does nothing. */ struct transform_identity { void operator()(io_base&) const {} }; /** * \brief Reads an image from the stream using default io * transformation. */ template< typename istream > void read(istream& stream) { read(stream, transform_identity()); } /** * \brief Reads an image from the stream using custom io * transformation. * * Essentially, this method constructs a reader object and * instructs it to read the image from the stream. It handles * IO transformation, as well as interlaced image reading. */ template< typename istream, class transformation > void read(istream& stream, transformation const& transform) { reader< istream > rd(stream); rd.read_info(); transform(rd); #if __BYTE_ORDER == __LITTLE_ENDIAN if (pixel_traits< pixel >::get_bit_depth() == 16) { #ifdef PNG_READ_SWAP_SUPPORTED rd.set_swap(); #else throw error("Cannot read 16-bit image:" " recompile with PNG_READ_SWAP_SUPPORTED."); #endif } #endif // interlace handling _must_ be set up prior to info update size_t pass_count; if (rd.get_interlace_type() != interlace_none) { #ifdef PNG_READ_INTERLACING_SUPPORTED pass_count = rd.set_interlace_handling(); #else throw error("Cannot read interlaced image:" " interlace handling disabled."); #endif } else { pass_count = 1; } rd.update_info(); if (rd.get_color_type() != traits::get_color_type() || rd.get_bit_depth() != traits::get_bit_depth()) { throw std::logic_error("color type and/or bit depth mismatch" " in png::consumer::read()"); } this->get_info() = rd.get_image_info(); pixcon* pixel_con = static_cast< pixcon* >(this); if (pass_count > 1 && !interlacing_supported) { skip_interlaced_rows(rd, pass_count); pass_count = 1; } read_rows(rd, pass_count, pixel_con); rd.read_end_info(); } protected: typedef streaming_base< pixel, info_holder > base; /** * \brief Constructs a consumer object using passed image_info * object to store image information. */ explicit consumer(image_info& info) : base(info) { } private: template< typename istream > void skip_interlaced_rows(reader< istream >& rd, size_t pass_count) { typedef std::vector< pixel > row; typedef row_traits< row > row_traits_type; row dummy_row(this->get_info().get_width()); for (size_t pass = 1; pass < pass_count; ++pass) { rd.read_row(reinterpret_cast< byte* > (row_traits_type::get_data(dummy_row))); } } template< typename istream > void read_rows(reader< istream >& rd, size_t pass_count, pixcon* pixel_con) { for (size_t pass = 0; pass < pass_count; ++pass) { pixel_con->reset(pass); for (size_t pos = 0; pos < this->get_info().get_height(); ++pos) { rd.read_row(pixel_con->get_next_row(pos)); } } } }; } // namespace png #endif // PNGPP_CONSUMER_HPP_INCLUDED png++-0.2.5/rgb_pixel.hpp0000644000175000017500000000544211461476005013643 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_RGB_PIXEL_HPP_INCLUDED #define PNGPP_RGB_PIXEL_HPP_INCLUDED #include "types.hpp" #include "pixel_traits.hpp" namespace png { /** * \brief RGB pixel type. */ template< typename T > struct basic_rgb_pixel { /** * \brief Default constructor. Initializes all components * with zeros. */ basic_rgb_pixel() : red(0), green(0), blue(0) { } /** * \brief Constructs rgb_pixel object from \a red, \a green * and \a blue components passed as parameters. */ basic_rgb_pixel(T red, T green, T blue) : red(red), green(green), blue(blue) { } T red; T green; T blue; }; /** * The 8-bit RGB pixel type. */ typedef basic_rgb_pixel< byte > rgb_pixel; /** * The 16-bit RGB pixel type. */ typedef basic_rgb_pixel< uint_16 > rgb_pixel_16; /** * \brief Pixel traits specialization for basic_rgb_pixel. */ template< typename T > struct pixel_traits< basic_rgb_pixel< T > > : basic_pixel_traits< basic_rgb_pixel< T >, T, color_type_rgb > { }; } // namespace png #endif // PNGPP_RGB_PIXEL_HPP_INCLUDED png++-0.2.5/rgba_pixel.hpp0000644000175000017500000000607111461476005014003 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_RGBA_PIXEL_HPP_INCLUDED #define PNGPP_RGBA_PIXEL_HPP_INCLUDED #include "types.hpp" #include "pixel_traits.hpp" namespace png { /** * \brief RGBA pixel type. */ template< typename T > struct basic_rgba_pixel { typedef pixel_traits< basic_rgba_pixel< T > > traits; /** * \brief Default constructor. Initializes all components * with zeros. */ basic_rgba_pixel() : red(0), green(0), blue(0), alpha(0) { } /** * \brief Constructs rgba_pixel object from \a red, \a green, * \a blue and \a alpha components passed as parameters. * Alpha defaults to full opacity. */ basic_rgba_pixel(T red, T green, T blue, T alpha = traits::get_alpha_filler()) : red(red), green(green), blue(blue), alpha(alpha) { } T red; T green; T blue; T alpha; }; /** * The 8-bit RGBA pixel type. */ typedef basic_rgba_pixel< byte > rgba_pixel; /** * The 16-bit RGBA pixel type. */ typedef basic_rgba_pixel< uint_16 > rgba_pixel_16; /** * \brief Pixel traits specialization for basic_rgba_pixel. */ template< typename T > struct pixel_traits< basic_rgba_pixel< T > > : basic_pixel_traits< basic_rgba_pixel< T >, T, color_type_rgba >, basic_alpha_pixel_traits< T > { }; } // namespace png #endif // PNGPP_RGBA_PIXEL_HPP_INCLUDED png++-0.2.5/writer.hpp0000644000175000017500000001431511461476005013203 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_WRITER_HPP_INCLUDED #define PNGPP_WRITER_HPP_INCLUDED #include #include "io_base.hpp" namespace png { /** * \brief PNG writer class template. This is the low-level * writing interface--use image class or generator class to * actually write images. * * The \c ostream template parameter specifies the type of output * stream to work with. The \c ostream class should implement the * minimum of the following interface: * * \code * class my_ostream * { * public: * void write(char const*, size_t); * void flush(); * bool good(); * }; * \endcode * * With the semantics similar to the \c std::ostream. Naturally, * \c std::ostream fits this requirement and can be used with the * writer class as is. * * \see image, reader, generator, io_base */ template< class ostream > class writer : public io_base { public: /** * \brief Constructs a writer prepared to write PNG image into * a \a stream. */ explicit writer(ostream& stream) : io_base(png_create_write_struct(PNG_LIBPNG_VER_STRING, static_cast< io_base* >(this), raise_error, 0)) { png_set_write_fn(m_png, & stream, write_data, flush_data); } ~writer() { m_end_info.destroy(); png_destroy_write_struct(& m_png, m_info.get_png_info_ptr()); } void write_png() const { if (setjmp(png_jmpbuf(m_png))) { throw error(m_error); } png_write_png(m_png, m_info.get_png_info(), /* transforms = */ 0, /* params = */ 0); } /** * \brief Write info about PNG image. */ void write_info() const { if (setjmp(png_jmpbuf(m_png))) { throw error(m_error); } m_info.write(); } /** * \brief Writes a row of image data at a time. */ void write_row(byte* bytes) { if (setjmp(png_jmpbuf(m_png))) { throw error(m_error); } png_write_row(m_png, bytes); } /** * \brief Reads ending info about PNG image. */ void write_end_info() const { if (setjmp(png_jmpbuf(m_png))) { throw error(m_error); } m_end_info.write(); } private: static void write_data(png_struct* png, byte* data, size_t length) { io_base* io = static_cast< io_base* >(png_get_error_ptr(png)); writer* wr = static_cast< writer* >(io); wr->reset_error(); ostream* stream = reinterpret_cast< ostream* >(png_get_io_ptr(png)); try { stream->write(reinterpret_cast< char* >(data), length); if (!stream->good()) { wr->set_error("ostream::write() failed"); } } catch (std::exception const& error) { wr->set_error(error.what()); } catch (...) { assert(!"caught something wrong"); wr->set_error("write_data: caught something wrong"); } if (wr->is_error()) { wr->raise_error(); } } static void flush_data(png_struct* png) { io_base* io = static_cast< io_base* >(png_get_error_ptr(png)); writer* wr = static_cast< writer* >(io); wr->reset_error(); ostream* stream = reinterpret_cast< ostream* >(png_get_io_ptr(png)); try { stream->flush(); if (!stream->good()) { wr->set_error("ostream::flush() failed"); } } catch (std::exception const& error) { wr->set_error(error.what()); } catch (...) { assert(!"caught something wrong"); wr->set_error("flush_data: caught something wrong"); } if (wr->is_error()) { wr->raise_error(); } } }; } // namespace png #endif // PNGPP_WRITER_HPP_INCLUDED png++-0.2.5/error.hpp0000644000175000017500000000542611461476005013023 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_ERROR_HPP_INCLUDED #define PNGPP_ERROR_HPP_INCLUDED #include #include #include namespace png { /** * \brief Exception class to represent runtime errors related to * png++ operation. */ class error : public std::runtime_error { public: /** * \param message error description */ explicit error(std::string const& message) : std::runtime_error(message) { } }; /** * \brief Exception class to represent standard library errors * (generally IO). * * \see reader, writer */ class std_error : public std::runtime_error { public: /** * Constructs an std_error object. The \a message string is * appended with ": " and the error description as * returned by \c strerror(\a error). * * \param message error description * \param error error number */ explicit std_error(std::string const& message, int error = errno) : std::runtime_error((message + ": ") + strerror(error)) { } }; } // namespace png #endif // PNGPP_ERROR_HPP_INCLUDED png++-0.2.5/image.hpp0000644000175000017500000003574011461476005012756 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_IMAGE_HPP_INCLUDED #define PNGPP_IMAGE_HPP_INCLUDED #include #include "pixel_buffer.hpp" #include "generator.hpp" #include "consumer.hpp" #include "convert_color_space.hpp" namespace png { /** * \brief Class template to represent PNG image. * * The image consists of pixel data as well as additional %image * %info like interlace type, compression method, palette (for * colormap-based images) etc. Provides methods to read and write * images from/to a generic stream and to manipulate %image pixels. */ template< typename pixel > class image { public: /** * \brief The pixel traits type for \c pixel. */ typedef pixel_traits< pixel > traits; /** * \brief The pixel buffer type for \c pixel. */ typedef pixel_buffer< pixel > pixbuf; /** * \brief Represents a row of image pixel data. */ typedef typename pixbuf::row_type row_type; /** * \brief A transformation functor to convert any image to * appropriate color space. */ typedef convert_color_space< pixel > transform_convert; /** * \brief The default io transformation: does nothing. */ struct transform_identity { void operator()(io_base&) const {} }; /** * \brief Constructs an empty image. */ image() : m_info(make_image_info< pixel >()) { } /** * \brief Constructs an empty image of specified width and height. */ image(size_t width, size_t height) : m_info(make_image_info< pixel >()) { resize(width, height); } /** * \brief Constructs an image reading data from specified file * using default converting transform. */ explicit image(std::string const& filename) { read(filename, transform_convert()); } /** * \brief Constructs an image reading data from specified file * using custom transformaton. */ template< class transformation > image(std::string const& filename, transformation const& transform) { read(filename.c_str(), transform); } /** * \brief Constructs an image reading data from specified file * using default converting transform. */ explicit image(char const* filename) { read(filename, transform_convert()); } /** * \brief Constructs an image reading data from specified file * using custom transformaton. */ template< class transformation > image(char const* filename, transformation const& transform) { read(filename, transform); } /** * \brief Constructs an image reading data from a stream using * default converting transform. */ explicit image(std::istream& stream) { read_stream(stream, transform_convert()); } /** * \brief Constructs an image reading data from a stream using * custom transformation. */ template< class transformation > image(std::istream& stream, transformation const& transform) { read_stream(stream, transform); } /** * \brief Reads an image from specified file using default * converting transform. */ void read(std::string const& filename) { read(filename, transform_convert()); } /** * \brief Reads an image from specified file using custom * transformaton. */ template< class transformation > void read(std::string const& filename, transformation const& transform) { read(filename.c_str(), transform); } /** * \brief Reads an image from specified file using default * converting transform. */ void read(char const* filename) { read(filename, transform_convert()); } /** * \brief Reads an image from specified file using custom * transformaton. */ template< class transformation > void read(char const* filename, transformation const& transform) { std::ifstream stream(filename, std::ios::binary); if (!stream.is_open()) { throw std_error(filename); } stream.exceptions(std::ios::badbit); read_stream(stream, transform); } /** * \brief Reads an image from a stream using default * converting transform. */ void read(std::istream& stream) { read_stream(stream, transform_convert()); } /** * \brief Reads an image from a stream using custom * transformation. */ template< class transformation > void read(std::istream& stream, transformation const& transform) { read_stream(stream, transform); } /** * \brief Reads an image from a stream using default * converting transform. */ template< class istream > void read_stream(istream& stream) { read_stream(stream, transform_convert()); } /** * \brief Reads an image from a stream using custom * transformation. */ template< class istream, class transformation > void read_stream(istream& stream, transformation const& transform) { pixel_consumer pixcon(m_info, m_pixbuf); pixcon.read(stream, transform); } /** * \brief Writes an image to specified file. */ void write(std::string const& filename) { write(filename.c_str()); } /** * \brief Writes an image to specified file. */ void write(char const* filename) { std::ofstream stream(filename, std::ios::binary); if (!stream.is_open()) { throw std_error(filename); } stream.exceptions(std::ios::badbit); write_stream(stream); } /** * \brief Writes an image to a stream. */ void write_stream(std::ostream& stream) { write_stream(stream); } /** * \brief Writes an image to a stream. */ template< class ostream > void write_stream(ostream& stream) { pixel_generator pixgen(m_info, m_pixbuf); pixgen.write(stream); } /** * \brief Returns a reference to image pixel buffer. */ pixbuf& get_pixbuf() { return m_pixbuf; } /** * \brief Returns a const reference to image pixel buffer. */ pixbuf const& get_pixbuf() const { return m_pixbuf; } /** * \brief Replaces the image pixel buffer. * * \param buffer a pixel buffer object to take a copy from */ void set_pixbuf(pixbuf const& buffer) { m_pixbuf = buffer; } size_t get_width() const { return m_pixbuf.get_width(); } size_t get_height() const { return m_pixbuf.get_height(); } /** * \brief Resizes the image pixel buffer. */ void resize(size_t width, size_t height) { m_pixbuf.resize(width, height); m_info.set_width(width); m_info.set_height(height); } /** * \brief Returns a reference to the row of image data at * specified index. * * \see pixel_buffer::get_row() */ row_type& get_row(size_t index) { return m_pixbuf.get_row(index); } /** * \brief Returns a const reference to the row of image data at * specified index. * * \see pixel_buffer::get_row() */ row_type const& get_row(size_t index) const { return m_pixbuf.get_row(index); } /** * \brief The non-checking version of get_row() method. */ row_type& operator[](size_t index) { return m_pixbuf[index]; } /** * \brief The non-checking version of get_row() method. */ row_type const& operator[](size_t index) const { return m_pixbuf[index]; } /** * \brief Returns a pixel at (x,y) position. */ pixel get_pixel(size_t x, size_t y) const { return m_pixbuf.get_pixel(x, y); } /** * \brief Replaces a pixel at (x,y) position. */ void set_pixel(size_t x, size_t y, pixel p) { m_pixbuf.set_pixel(x, y, p); } interlace_type get_interlace_type() const { return m_info.get_interlace_type(); } void set_interlace_type(interlace_type interlace) { m_info.set_interlace_type(interlace); } compression_type get_compression_type() const { return m_info.get_compression_type(); } void set_compression_type(compression_type compression) { m_info.set_compression_type(compression); } filter_type get_filter_type() const { return m_info.get_filter_type(); } void set_filter_type(filter_type filter) { m_info.set_filter_type(filter); } /** * \brief Returns a reference to the image palette. */ palette& get_palette() { return m_info.get_palette(); } /** * \brief Returns a const reference to the image palette. */ palette const& get_palette() const { return m_info.get_palette(); } /** * \brief Replaces the image palette. */ void set_palette(palette const& plte) { m_info.set_palette(plte); } tRNS const& get_tRNS() const { return m_info.get_tRNS(); } tRNS& get_tRNS() { return m_info.get_tRNS(); } void set_tRNS(tRNS const& trns) { m_info.set_tRNS(trns); } protected: /** * \brief A common base class template for pixel_consumer and * pixel_generator classes. */ template< typename base_impl > class streaming_impl : public base_impl { public: streaming_impl(image_info& info, pixbuf& pixels) : base_impl(info), m_pixbuf(pixels) { } /** * \brief Returns the starting address of a \c pos-th row * in the image's pixel buffer. */ byte* get_next_row(size_t pos) { typedef typename pixbuf::row_traits row_traits; return reinterpret_cast< byte* > (row_traits::get_data(m_pixbuf.get_row(pos))); } protected: pixbuf& m_pixbuf; }; /** * \brief The pixel buffer adapter for reading pixel data. */ class pixel_consumer : public streaming_impl< consumer< pixel, pixel_consumer, image_info_ref_holder, /* interlacing = */ true > > { public: pixel_consumer(image_info& info, pixbuf& pixels) : streaming_impl< consumer< pixel, pixel_consumer, image_info_ref_holder, true > >(info, pixels) { } void reset(size_t pass) { if (pass == 0) { this->m_pixbuf.resize(this->get_info().get_width(), this->get_info().get_height()); } } }; /** * \brief The pixel buffer adapter for writing pixel data. */ class pixel_generator : public streaming_impl< generator< pixel, pixel_generator, image_info_ref_holder, /* interlacing = */ true > > { public: pixel_generator(image_info& info, pixbuf& pixels) : streaming_impl< generator< pixel, pixel_generator, image_info_ref_holder, true > >(info, pixels) { } }; image_info m_info; pixbuf m_pixbuf; }; } // namespace png #endif // PNGPP_IMAGE_HPP_INCLUDED png++-0.2.5/pixel_traits.hpp0000644000175000017500000000636711461476005014406 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_PIXEL_TRAITS_HPP_INCLUDED #define PNGPP_PIXEL_TRAITS_HPP_INCLUDED #include #include "types.hpp" namespace png { /** * \brief Pixel traits class template. * * Provides information about pixel color type and components bit depth. * Not implemented--see specializations. * * \see pixel_traits, pixel_traits */ template< typename pixel > struct pixel_traits; /** * \brief Basic pixel traits class template. * * Provides common implementation for various pixel_traits<> * specializations. */ template< typename pixel, typename component, color_type pixel_color_type, size_t channels = sizeof(pixel) / sizeof(component), size_t bit_depth = std::numeric_limits< component >::digits > struct basic_pixel_traits { typedef pixel pixel_type; typedef component component_type; static color_type get_color_type() { return pixel_color_type; } static size_t get_channels() { return channels; } static size_t get_bit_depth() { return bit_depth; } }; /** * \brief Basic pixel traits class template for pixels with alpha * channel. */ template< typename component > struct basic_alpha_pixel_traits { /** * \brief Returns the default alpha channel filler for full * opacity. */ static component get_alpha_filler() { return std::numeric_limits< component >::max(); } }; } // namespace png #endif // PNGPP_PIXEL_TRAITS_HPP_INCLUDED png++-0.2.5/AUTHORS0000644000175000017500000000024011461476005012216 0ustar useruserpng++ is written by Alexander Shulgin (alex dot shulgin at gmail dot com) Copyright (C) 2007,2008 When writing to me be sure to put png++: in the subject :-) png++-0.2.5/packed_pixel.hpp0000644000175000017500000000516411461476005014321 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_PACKED_PIXEL_HPP_INCLUDED #define PNGPP_PACKED_PIXEL_HPP_INCLUDED #include "types.hpp" namespace png { namespace detail { template< size_t bits > class allowed_bit_depth; template<> class allowed_bit_depth< 1 > {}; template<> class allowed_bit_depth< 2 > {}; template<> class allowed_bit_depth< 4 > {}; } // namespace detail /** * \brief The packed pixel class template. * * \see packed_gray_pixel, packed_index_pixel */ template< size_t bits > class packed_pixel : detail::allowed_bit_depth< bits > { public: packed_pixel(byte value = 0) : m_value(value & get_bit_mask()) { } operator byte() const { return m_value; } static size_t const get_bit_depth() { return bits; } static byte const get_bit_mask() { return (1 << bits) - 1; } private: byte m_value; }; } // namespace png #endif // PNGPP_PACKED_PIXEL_HPP_INCLUDED png++-0.2.5/color.hpp0000644000175000017500000000437011461476005013005 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_COLOR_HPP_INCLUDED #define PNGPP_COLOR_HPP_INCLUDED #include "types.hpp" namespace png { /** * \brief PNG color struct extension. Adds constructors. */ struct color : png_color { explicit color(byte r = 0, byte g = 0, byte b = 0) { this->red = r; this->green = g; this->blue = b; } /** * \brief Initializes color with a copy of png_color object. */ color(png_color const& other) { this->red = other.red; this->green = other.green; this->blue = other.blue; } }; } // namespace png #endif // PNGPP_COLOR_HPP_INCLUDED png++-0.2.5/Makefile0000644000175000017500000000753711461476005012626 0ustar useruser# # Copyright (C) 2007,2008 Alex Shulgin # # This file is part of png++ the C++ wrapper for libpng. PNG++ is free # software; the exact copying conditions are as follows: # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # don't forget to update version before releasing! version := 0.2.5 ifndef PREFIX PREFIX := /usr/local endif ifdef MINGW bin_suffix := .exe endif make_cflags := -Wall $(CFLAGS) -I$(PREFIX)/include make_ldflags := $(LDFLAGS) -L$(PREFIX)/lib ifndef NDEBUG make_cflags := $(make_cflags) -g make_ldflags := $(make_ldflags) -g endif ifndef LIBPNG_CONFIG LIBPNG_CONFIG := libpng-config endif build_files := Makefile Doxyfile doc_files := AUTHORS BUGS ChangeLog COPYING INSTALL NEWS README TODO headers := *.hpp sources := dist_dir := png++-$(version) dist_package := png++-$(version).tar.gz dist_files := $(build_files) $(doc_files) \ $(headers) $(sources) dist_subdirs := example test all: examples install: install-headers install-docs uninstall: uninstall-headers uninstall-docs install-headers: mkdir -p $(PREFIX)/include/png++ cp *.hpp $(PREFIX)/include/png++ uninstall-headers: rm -rf $(PREFIX)/include/png++ dist: dist-mkdir dist-copy-files dist-package dist-mkdir: rm -rf $(dist_dir) mkdir $(dist_dir) dist-copy-files: cp $(dist_files) $(dist_dir) for i in $(dist_subdirs); do \ $(MAKE) dist-copy-files -C $$i $(MAKEFLAGS) \ dist_dir=`pwd`/$(dist_dir); \ done dist-package: rm -f $(dist_package) tar -zcf $(dist_package) $(dist_dir) --exclude=.svn --exclude='*~' rm -rf $(dist_dir) clean: test-clean examples-clean # rm -f $(targets) thorough-clean: clean docs-clean check: test test: $(MAKE) test -C test $(MAKEFLAGS) PNGPP=`pwd` test-clean: $(MAKE) clean -C test $(MAKEFLAGS) test-compile-headers: *.hpp for i in *.hpp; do \ echo '#include "'$$i'"' >$$i.cpp \ && g++ -c $$i.cpp $(make_cflags) `$(LIBPNG_CONFIG) --cflags`; \ done rm -f *.hpp.o *.hpp.cpp docs: doxygen docs-clean: rm -rf doc install-docs: if [ -d doc ]; then \ dir=$(PREFIX)/share/doc/$(dist_dir); \ rm -rf $$dir; \ mkdir -p $$dir \ && cp -r $(doc_files) doc/html $$dir; \ cd $(PREFIX)/share/doc; \ [ -L png++ ] && rm png++; \ [ -d png++ ] || ln -s $(dist_dir) png++; \ fi uninstall-docs: rm -rf $(PREFIX)/share/doc/$(dist_dir) $(PREFIX)/share/doc/png++ examples: $(MAKE) -C example $(MAKEFLAGS) examples-clean: $(MAKE) clean -C example $(MAKEFLAGS) .PHONY: all install \ dist dist-mkdir dist-copy-files dist-package \ clean thorough-clean \ check test test-clean test-compile-headers \ docs docs-clean \ examples examples-clean png++-0.2.5/end_info.hpp0000644000175000017500000000454011461476005013447 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_END_INFO_HPP_INCLUDED #define PNGPP_END_INFO_HPP_INCLUDED #include "info_base.hpp" namespace png { /** * \brief Internal class to hold PNG ending %info. * * \see info, info_base */ class end_info : public info_base { public: end_info(io_base& io, png_struct* png) : info_base(io, png) { } void destroy() { assert(m_info); png_destroy_info_struct(m_png, & m_info); } void read() { png_read_end(m_png, m_info); } void write() const { png_write_end(m_png, m_info); } // TODO: add methods to read/write text comments etc. }; } // namespace png #endif // PNGPP_END_INFO_HPP_INCLUDED png++-0.2.5/image_info.hpp0000644000175000017500000001231111461476005013756 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_IMAGE_INFO_HPP_INCLUDED #define PNGPP_IMAGE_INFO_HPP_INCLUDED #include "types.hpp" #include "palette.hpp" #include "tRNS.hpp" #include "pixel_traits.hpp" namespace png { /** * \brief Holds information about PNG image. * * \see image, generator, consumer */ class image_info { public: /** * \brief Constructs the image_info object with default values * for color_type, interlace_type, compression_method and * filter_type. */ image_info() : m_width(0), m_height(0), m_bit_depth(0), m_color_type(color_type_none), m_interlace_type(interlace_none), m_compression_type(compression_type_default), m_filter_type(filter_type_default) { } size_t get_width() const { return m_width; } void set_width(size_t width) { m_width = width; } size_t get_height() const { return m_height; } void set_height(size_t height) { m_height = height; } color_type get_color_type() const { return m_color_type; } void set_color_type(color_type color_space) { m_color_type = color_space; } size_t get_bit_depth() const { return m_bit_depth; } void set_bit_depth(size_t bit_depth) { m_bit_depth = bit_depth; } interlace_type get_interlace_type() const { return m_interlace_type; } void set_interlace_type(interlace_type interlace) { m_interlace_type = interlace; } compression_type get_compression_type() const { return m_compression_type; } void set_compression_type(compression_type compression) { m_compression_type = compression; } filter_type get_filter_type() const { return m_filter_type; } void set_filter_type(filter_type filter) { m_filter_type = filter; } palette const& get_palette() const { return m_palette; } palette& get_palette() { return m_palette; } void set_palette(palette const& plte) { m_palette = plte; } /** * \brief Removes all entries from the palette. */ void drop_palette() { m_palette.clear(); } tRNS const& get_tRNS() const { return m_tRNS; } tRNS& get_tRNS() { return m_tRNS; } void set_tRNS(tRNS const& trns) { m_tRNS = trns; } protected: uint_32 m_width; uint_32 m_height; size_t m_bit_depth; color_type m_color_type; interlace_type m_interlace_type; compression_type m_compression_type; filter_type m_filter_type; palette m_palette; tRNS m_tRNS; }; /** * \brief Returns an image_info object with color_type and * bit_depth fields setup appropriate for the \c pixel type. */ template< typename pixel > image_info make_image_info() { typedef pixel_traits< pixel > traits; image_info info; info.set_color_type(traits::get_color_type()); info.set_bit_depth(traits::get_bit_depth()); return info; } } // namespace png #endif // PNGPP_IMAGE_INFO_HPP_INCLUDED png++-0.2.5/BUGS0000644000175000017500000000053711461476005011642 0ustar useruserThis file lists known bugs and limitations in png++: - Lacks support for output transformations - Lacks support for optional/unknown chunks in PNG data stream - Documentation sucks To report bugs, please use Savannah bug tracker: http://savannah.nongnu.org/bugs/?group=pngpp&func=additem Do not forget to check if the bug was already filed. :-) png++-0.2.5/info.hpp0000644000175000017500000001177511461476005012631 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_INFO_HPP_INCLUDED #define PNGPP_INFO_HPP_INCLUDED #include #include "info_base.hpp" #include "image_info.hpp" namespace png { /** * \brief Holds information about PNG image. Adapter class for IO * image operations. */ class info : public info_base, public image_info { public: info(io_base& io, png_struct* png) : info_base(io, png) { } void read() { assert(m_png); assert(m_info); png_read_info(m_png, m_info); png_get_IHDR(m_png, m_info, & m_width, & m_height, reinterpret_cast< int* >(& m_bit_depth), reinterpret_cast< int* >(& m_color_type), reinterpret_cast< int* >(& m_interlace_type), reinterpret_cast< int* >(& m_compression_type), reinterpret_cast< int* >(& m_filter_type)); if (png_get_valid(m_png, m_info, chunk_PLTE) == chunk_PLTE) { png_color* colors = 0; int count = 0; png_get_PLTE(m_png, m_info, & colors, & count); m_palette.assign(colors, colors + count); } #ifdef PNG_tRNS_SUPPORTED if (png_get_valid(m_png, m_info, chunk_tRNS) == chunk_tRNS) { if (m_color_type == color_type_palette) { int count; byte* values; if (png_get_tRNS(m_png, m_info, & values, & count, NULL) != PNG_INFO_tRNS) { throw error("png_get_tRNS() failed"); } m_tRNS.assign(values, values + count); } } #endif } void write() const { assert(m_png); assert(m_info); sync_ihdr(); if (m_color_type == color_type_palette) { if (! m_palette.empty()) { png_set_PLTE(m_png, m_info, const_cast< color* >(& m_palette[0]), m_palette.size()); } if (! m_tRNS.empty()) { #ifdef PNG_tRNS_SUPPORTED png_set_tRNS(m_png, m_info, const_cast< byte* >(& m_tRNS[0]), m_tRNS.size(), NULL); #else throw error("attempted to write tRNS chunk;" " recompile with PNG_tRNS_SUPPORTED"); #endif } } png_write_info(m_png, m_info); } void update() { assert(m_png); assert(m_info); sync_ihdr(); png_read_update_info(m_png, m_info); } protected: void sync_ihdr(void) const { png_set_IHDR(m_png, m_info, m_width, m_height, m_bit_depth, m_color_type, m_interlace_type, m_compression_type, m_filter_type); } }; } // namespace png #endif // PNGPP_INFO_HPP_INCLUDED png++-0.2.5/ChangeLog0000644000175000017500000000136011461476005012724 0ustar useruser2009-06-21 Alex Shulgin * config.hpp: Added support for FreeBSD (detect endianness). Patch by . png++-0.2.3 19 Oct 2008 Fixed numerous `already defined' errors due to require_color_space implementation. Added `config.hpp'. Fixed `strerror' usage. Minor docs fixes. png++-0.2.1 08 Dec 2007 Added support for tRNS chunk. Added non-std IO streams support. Fixed 16-bit endianness problems. Improved test script. png++-0.2.0 08 Jul 2007 Major internal code refactoring. Added support for non-8-bit data, row-by-row IO, added docs, test suite and more. Fixed some bugs including interlace handling. png++-0.1.1 07 Apr 2007 Added appropriate copyright notices. png++-0.1.0 04 Feb 2007 Initial release. png++-0.2.5/Doxyfile0000644000175000017500000014224311461476005012666 0ustar useruser# Doxyfile 1.5.2 # This file describes the settings to be used by the documentation # system doxygen (www.doxygen.org) for a project All text after a hash # (#) is considered a comment and will be ignored The format is: TAG = # value [value, ...] For lists items can also be appended using: TAG # += value [value, ...] Values that contain spaces should be placed # between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the # config file that follow. The default is UTF-8 which is also the # encoding used for all text before the first occurrence of this # tag. Doxygen uses libiconv (or the iconv built into libc) for the # transcoding. See http://www.gnu.org/software/libiconv for the list # of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words # surrounded by quotes) that should identify the project. PROJECT_NAME = png++ # The PROJECT_NUMBER tag can be used to enter a project or revision # number. This could be handy for archiving the generated # documentation or if some version control system is used. PROJECT_NUMBER = 0.2.1 # The OUTPUT_DIRECTORY tag is used to specify the (relative or # absolute) base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will # be used. OUTPUT_DIRECTORY = doc # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of # each output format and will distribute the generated files over # these directories. Enabling this option can be useful when feeding # doxygen a huge amount of source files, where putting all generated # files in the same directory would otherwise cause performance # problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, # Hungarian, Italian, Japanese, Japanese-en (Japanese with English # messages), Korean, Korean-en, Lithuanian, Norwegian, Polish, # Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, # Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen # will include brief member descriptions after the members that are # listed in the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will # prepend the brief description of a member or function before the # detailed description. Note: if both HIDE_UNDOC_MEMBERS and # BRIEF_MEMBER_DESC are set to NO, the brief descriptions will be # completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description # abbreviator that is used to form the text in various listings. Each # string in this list, if found as the leading text of the brief # description, will be stripped from the text and the result after # processing the whole list, is used as the annotated text. Otherwise, # the brief description is used as-is. If left blank, the following # values are used ("$name" is automatically replaced with the name of # the entity): "The $name class" "The $name widget" "The $name file" # "is" "provides" "specifies" "contains" "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES # then Doxygen will generate a detailed section even if there is only # a brief description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show # all inherited members of a class in the documentation of that class # as if those members were ordinary class members. Constructors, # destructors and assignment operators of the base classes will not be # shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend # the full path before files name in the file list and in the header # files. If set to NO the shortest path that makes the file name # unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH # tag can be used to strip a user-defined part of the path. Stripping # is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the # file list. If left blank the directory from which doxygen is run is # used as the path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part # of the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. If # left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths # that are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much # shorter (but less readable) file names. This can be useful is your # file systems doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc comments # will behave just like the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or # /// comments) as a brief description. This used to be the default # behaviour. The new default is to treat a multi-line C++ comment # block as a detailed description. Set this tag to YES if you prefer # the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen will output the # detailed description near the top, like JavaDoc. If set to NO, the # detailed description appears after the member documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an # undocumented member inherits the documentation from any documented # member that it re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will # produce a new page for each member. If set to NO, the documentation # of a member will be part of the file/class/namespace that contains # it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts as # commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you # to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with # heading "Side Effects:". You can put \n's in the value part of an # alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of # C sources only. Doxygen will then generate output that is more # tailored for C. For instance, some of the names that are used will # be different. The list of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of # Java sources only. Doxygen will then generate output that is more # tailored for Java. For instance, namespaces will be presented as # packages, qualified scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # If you use STL classes (i.e. std::string, std::vector, etc.) but do # not want to include (a tag file for) the STL sources as input, then # you should set this tag to YES in order to let doxygen match # functions declarations and definitions whose arguments contain STL # classes (e.g. func(std::string); v.s. func(std::string) {}). This # also make the inheritance and collaboration diagrams that involve # STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option # to YES to enable parsing support. CPP_CLI_SUPPORT = NO # If member grouping is used in the documentation and the # DISTRIBUTE_GROUP_DOC tag is set to YES, then doxygen will reuse the # documentation of the first member in the group (if any) for the # other members of the group. By default all members of a group must # be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member # groups of the same type (for instance a group of public functions) # to be put as a subgroup of that type (e.g. under the Public # Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all # entities in documentation are documented, even if no documentation # was available. Private class members and static file members will # be hidden unless the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set # to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a # class will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the # documentation. If set to NO only classes defined in header files # are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. If set to NO (the # default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. If # set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. This # option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class # hierarchy. If set to NO (the default) these classes will be # included in the various overviews. This option has no effect if # EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide # all friend (class|struct|union) declarations. If set to NO (the # default) these declarations will be included in the documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. If set to # NO (the default) these blocks will be appended to the function's # detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation that is typed # after a \internal command is included. If the tag is set to NO (the # default) then the documentation will be excluded. Set it to YES to # include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only # generate file names in lower-case letters. If set to YES upper-case # letters are also allowed. This is useful if you have classes or # files whose names only differ in case and if your file system # supports case sensitive file names. Windows and Mac users are # advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then # Doxygen will put a list of the files that are included by a file in # the documentation of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag # [inline] is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear # in declaration order. SORT_MEMBER_DOCS = NO # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members # alphabetically by member name. If set to NO (the default) the # members will appear in declaration order. SORT_BRIEF_DOCS = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to NO # (the default), the class list will be sorted only by class name, not # including the namespace part. Note: This option is not very useful # if HIDE_SCOPE_NAMES is set to YES. Note: This option applies only # to the class list, not to the alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or disable # (NO) the todo list. This list is created by putting \todo commands # in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or disable # (NO) the test list. This list is created by putting \test commands # in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) # the bug list. This list is created by putting \bug commands in the # documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST = YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to # appear in the documentation. If the initializer consists of more # lines than specified here it will be hidden. Use a value of 0 to # hide initializers completely. The appearance of the initializer of # individual variables and defines in the documentation can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files # generated at the bottom of the documentation of classes and # structs. If set to YES the list will mention the files that were # used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple # directories then setting the SHOW_DIRECTORIES tag to YES will show # the directory hierarchy in the documentation. The default is NO. SHOW_DIRECTORIES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or # script that doxygen should invoke to get the current version for # each file (typically from the version control system). Doxygen will # invoke the program by executing (via popen()) the command # , where is the value of the # FILE_VERSION_FILTER tag, and is the name of an input # file provided by doxygen. Whatever the program writes to standard # output is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages # that are generated by doxygen. Possible values are YES and NO. If # left blank NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then # this flag will automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings # for potential errors in the documentation, such as not documenting # some parameters in a documented function, or documenting parameters # that don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their # parameters or return value. If set to NO (the default) doxygen will # only warn about wrong or incomplete parameter documentation, but not # about the absence of documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages # that doxygen can produce. The string should contain the $file, # $line, and $text tags, which will be replaced by the file and line # number from which the warning originated and the warning # text. Optionally the format may contain $version, which will be # replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is # written to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories # that contain documented source files. You may enter file names like # "myfile.cpp" or directories like "/usr/src/myproject". Separate the # files or directories with spaces. INPUT = # This tag can be used to specify the character encoding of the source # files that doxygen parses. Internally doxygen uses the UTF-8 # encoding, which is also the default input encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible # encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like # *.cpp and *.h) to filter out the source-files in the directories. If # left blank the following patterns are tested: *.c *.cc *.cxx *.cpp # *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp *.h++ # *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not # subdirectories should be searched for input files as well. Possible # values are YES and NO. If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that # should excluded from the INPUT source files. This way you can easily # exclude a subdirectory from a directory tree whose root is specified # with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are # excluded from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to # exclude certain files from those directories. Note that the # wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol # names (namespaces, classes, functions, etc.) that should be excluded # from the output. The symbol name can be a fully qualified name, a # word, or if the wildcard * is used, a substring. Examples: # ANamespace, AClass, AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included # (see the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can # use the EXAMPLE_PATTERNS tag to specify one or more wildcard pattern # (like *.cpp and *.h) to filter out the source-files in the # directories. If left blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will # be searched for input files to be used with the \include or # \dontinclude commands irrespective of the value of the RECURSIVE # tag. Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the # documentation (see the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen # should invoke to filter for each input file. Doxygen will invoke the # filter program by executing (via popen()) the command # , where is the value of the INPUT_FILTER tag, # and is the name of an input file. Doxygen will then use # the output that the filter program writes to standard output. If # FILTER_PATTERNS is specified, this tag will be ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file # pattern basis. Doxygen will compare the file name with each pattern # and apply the filter if there is a match. The filters are a list of # the form: pattern=filter (like *.cpp=my_cpp_filter). See # INPUT_FILTER for further info on how filters are used. If # FILTER_PATTERNS is empty, INPUT_FILTER is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if # set using INPUT_FILTER) will be used to filter the input files when # producing source files to browse (i.e. when SOURCE_BROWSER is set to # YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files # will be generated. Documented entities will be cross-referenced with # these sources. Note: To get rid of all source code in the generated # output, make sure also VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body of # functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will # instruct doxygen to hide any special comment blocks from generated # source code fragments. Normal C and C++ comments will always remain # visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) then # for each documented function all documented functions referencing it # will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) then for # each documented function all documented entities called/used by that # function will be listed. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) and # SOURCE_BROWSER tag is set to YES, then the hyperlinks from functions # in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will link to # the source code. Otherwise they will link to the documentstion. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source # code will point to the HTML generated by the htags(1) tool instead # of doxygen built-in source browser. The htags tool is part of GNU's # global source tagging system (see # http://www.gnu.org/software/global/global.html). You will need # version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of # columns in which this list will be split (can be a number in the # range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes # that should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be # put. If a relative path is entered the value of OUTPUT_DIRECTORY # will be put in front of it. If left blank `html' will be used as the # default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file # extension for each generated HTML page (for example: # .htm,.php,.asp). If it is left blank doxygen will generate files # with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header # for each generated HTML page. If it is left blank doxygen will # generate a standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer # for each generated HTML page. If it is left blank doxygen will # generate a standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined # cascading style sheet that is used by each HTML page. It can be used # to fine-tune the look of the HTML output. If the tag is left blank # doxygen will generate a default style sheet. Note that doxygen will # try to copy the style sheet file to the HTML output directory, so # don't put your own stylesheet in the HTML output directory as well, # or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file # (.chm) of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can be # used to specify the file name of the resulting .chm file. You can # add a path in front of the file if the result should not be written # to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) # of the HTML help compiler (hhc.exe). If non-empty doxygen will try # to run the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that it # should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group # members to the contents of the HTML help documentation and to the # tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index # at top of each HTML page. The value NO (the default) enables the # index and the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range # [1..20]) that doxygen will group on one line in the generated HTML # documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one # that is generated for HTML Help). For this to work a browser that # supports JavaScript, DHTML, CSS and frames is required (for instance # Mozilla 1.0+, Netscape 6.0+, Internet explorer 5.0+, or # Konqueror). Windows users are probably better off using the HTML # help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can # be used to set the initial width (in pixels) of the frame in which # the tree is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be # put. If a relative path is entered the value of OUTPUT_DIRECTORY # will be put in front of it. If left blank `latex' will be used as # the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name # to be invoked. If left blank `latex' will be used as the default # command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name # to generate index for LaTeX. If left blank `makeindex' will be used # as the default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more # compact LaTeX documents. This may be useful for small projects and # may help to save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used by # the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header # for the generated latex document. The header should contain # everything until the first chapter. If it is left blank doxygen will # generate a standard header. Notice: only use this tag if you know # what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf # viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead # of plain latex in the generated Makefile. Set this option to YES to # get a higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the # \\batchmode. command to the generated LaTeX files. This will # instruct LaTeX to keep running if errors occur, instead of asking # the user for help. This option is also used when generating # formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not include # the index chapters (such as File Index, Compound Index, etc.) in # the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF # output The RTF output is optimized for Word 97 and may not look very # pretty with other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be # put. If a relative path is entered the value of OUTPUT_DIRECTORY # will be put in front of it. If left blank `rtf' will be used as the # default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will contain links (just # like the HTML output) instead of page references. This makes the # output suitable for online browsing using WORD or other programs # which support those fields. Note: wordpad (write) and others do not # support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to # doxygen's config file, i.e. a series of assignments. You only have # to provide replacements, missing definitions are set to their # default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be # put. If a relative path is entered the value of OUTPUT_DIRECTORY # will be put in front of it. If left blank `man' will be used as the # default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to the # generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files only # source the real man page, but without them the man command would be # unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will generate an XML # file that captures the structure of the code including all # documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be # put. If a relative path is entered the value of OUTPUT_DIRECTORY # will be put in front of it. If left blank `xml' will be used as the # default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, which can # be used by a validating XML parser to check the syntax of the XML # files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, which can be used # by a validating XML parser to check the syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will dump the # program listings (including syntax highlighting and # cross-referencing information) to the XML output. Note that enabling # this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will generate # an AutoGen Definitions (see autogen.sf.net) file that captures the # structure of the code including all documentation. Note that this # feature is still experimental and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will generate a # Perl module file that captures the structure of the code including # all documentation. Note that this feature is still experimental and # incomplete at the moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate the # necessary Makefile rules, Perl scripts and LaTeX code to be able to # generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will # be nicely formatted so it can be parsed by a human reader. This is # useful if you want to understand what is going on. On the other # hand, if this tag is set to NO the size of the Perl module output # will be much smaller and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the # same Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen # will evaluate all C-preprocessor directives found in the sources and # include files. ENABLE_PREPROCESSING = NO # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all # macro names in the source code. If set to NO (the default) only # conditional compilation will be performed. Macro expansion can be # done in a controlled way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to # YES then the macro expansion is limited to the macros specified with # the PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes # files in the INCLUDE_PATH (see below) will be search if a #include # is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories # that contain include files that are not input files but should be # processed by the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more # wildcard patterns (like *.h and *.hpp) to filter out the # header-files in the directories. If left blank, the patterns # specified with FILE_PATTERNS will be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names # that are defined before the preprocessor is started (similar to the # -D option of gcc). The argument of the tag is a list of macros of # the form: name or name=definition (no spaces). If the definition and # the = are omitted =1 is assumed. To prevent a macro definition from # being undefined via #undef or recursively expanded use the := # operator instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES # then this tag can be used to specify a list of macro names that # should be expanded. The macro definition that is found in the # sources will be used. Use the PREDEFINED tag if you want to use a # different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are # alone on a line, have an all uppercase name, and do not end with a # semicolon. Such function macros are typically used for boiler-plate # code, and will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation can be # added for each tagfile. The format of a tag file without this # location is as follows: TAGFILES = file1 file2 ... Adding location # for the tag files is done as follows: TAGFILES = file1=loc1 "file2 = # loc2" ... where "loc1" and "loc2" can be relative or absolute paths # or URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. Note that each tag # file must have a unique name (where the name does NOT include the # path) If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will # create a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be # listed in the class index. If set to NO only the inherited external # classes will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be # listed in the modules index. If set to NO, only the current # project's groups will be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl # script interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes # with base or super classes. Setting the tag to NO turns the diagrams # off. Note that this option is superseded by the HAVE_DOT option # below. This is only a fallback. It is recommended to install and use # dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using # the \msc command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert # it in the documentation. The MSCGEN_PATH tag allows you to specify # the directory where the mscgen tool resides. If left empty the tool # is assumed to be found in the default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented or is # not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot # tool is available from the path. This tool is part of Graphviz, a # graph visualization toolkit from AT&T and Lucent Bell Labs. The # other options in this section have no effect if this option is set # to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct # and indirect inheritance relations. Setting this tag to YES will # force the the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a graph for each documented class showing the # direct and indirect implementation dependencies (inheritance, # containment, and class references variables) of the class with other # documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups # dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance # and collaboration diagrams in a style similar to the OMG's Unified # Modeling Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show # the relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for # each documented file showing the direct and indirect include # dependencies of the file with other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for # each documented header file showing the documented files that # directly or indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class # method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable # call graphs for selected functions only using the \callgraph # command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a caller dependency graph for every global function or # class method. Note that enabling this option will significantly # increase the time of a run. So in most cases it will be better to # enable caller graphs for selected functions only using the # \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then # doxygen will graphical hierarchy of all classes instead of a textual # one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set # to YES then doxygen will show the dependencies a directory has on # other directories in a graphical way. The dependency relations are # determined by the #include relations between the files in the # directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the # images generated by dot. Possible values are png, jpg, or gif If # left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool # can be found. If left blank, it is assumed the dot tool can be found # in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories # that contain dot files that are included in the documentation (see # the \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum # number of nodes that will be shown in the graph. If the number of # nodes in a graph becomes larger than this value, doxygen will # truncate the graph, which is visualized by representing a node as a # red box. Note that doxygen will always show the root nodes and its # direct children regardless of this setting. DOT_GRAPH_MAX_NODES = 50 # Set the DOT_TRANSPARENT tag to YES to generate images with a # transparent background. This is disabled by default, which results # in a white background. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the # edges of a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple # output files in one run (i.e. multiple -o and -T options on the # command line). This makes dot run faster, but since only newer # versions of dot (>1.8.10) support this, this feature is disabled by # default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes # and arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate the # various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should # be used. If set to NO the values of all tags below this one will be # ignored. SEARCHENGINE = NO png++-0.2.5/png.hpp0000644000175000017500000002457311461476005012462 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_PNG_HPP_INCLUDED #define PNGPP_PNG_HPP_INCLUDED #include #include "config.hpp" #include "types.hpp" #include "error.hpp" #include "color.hpp" #include "palette.hpp" #include "tRNS.hpp" #include "packed_pixel.hpp" #include "rgb_pixel.hpp" #include "rgba_pixel.hpp" #include "gray_pixel.hpp" #include "ga_pixel.hpp" #include "index_pixel.hpp" #include "info_base.hpp" #include "info.hpp" #include "end_info.hpp" #include "io_base.hpp" #include "reader.hpp" #include "writer.hpp" #include "generator.hpp" #include "consumer.hpp" #include "pixel_buffer.hpp" #include "require_color_space.hpp" #include "convert_color_space.hpp" #include "image.hpp" /** * \mainpage * * \section sec_intro Introduction * * This is the documentation for png++ the C++ wrapper for libpng. * This page documents png++ version 0.2. * * PNG++ aims to provide simple yet powerful C++ interface to libpng, * the PNG reference implementation library. PNG++ is free software * distributed under a modified variant of BSD license. * * \section sec_news News * * - Added support for tRNS chunk. * - Added non-std IO streams support. * - Fixed 16-bit endianness problems. * - Improved test script. * * \section sec_getting_started Getting started * * The following code demonstrates how to read and write PNG images * using png++: * * \code * png::image< png::rgb_pixel > image("input.png"); * image.write("output.png"); * \endcode * * The code reads an image from the file named \c input.png, then * writes the image to a file named \c output.png. The image class * template allows you to specify the desired pixel type for the image * data. The available pixel types include: RGB, Grayscale and * Indexed pixels. Some of the pixel types can have an alpha channel. * * The png++ naturally supports reading PNG images of any %color type * into RGB or Grayscale pixel buffers (with optional alpha channel). * This is particularly useful for an image viewer if it needs to * display the PNG image on, for example, RGB device regardless of the * image %color type. * * On the other hand one might want to read only images of particular * type. With png++ you can specify it this way: * * \code * png::image< png::rgb_pixel > image("rgb.png", png::require_color_space< png::rgb_pixel >()); * \endcode * * \section sec_installing Installing * * PNG++ comes as a set of header files and does not require * compilation to be installed. For the same reason there are no * binary packages for png++. * * \subsection subs_prerequisites Prerequisites * * - png++ works with libpng-1.2.x. * - png++ compiles with g++-4.1 and g++-4.2. Other version should * work well too. * - png++ relies on GNU make for compiling tests and examples; in * particular it uses "remaking makefiles" feature * - Documentation is produced using doxygen. See the bottom of * this page for doxygen version used to compile these docs. * * \subsection subs_installing_pngpp Installing png++ * * Follow these instructions in order to install png++: * * -# Unpack source package: * \verbatim $ tar -zxf png++-0.2.x.tar.gz -C ~/src \endverbatim * -# Go to your brand new png++ sources directory: * \verbatim $ cd ~/src/png++-0.2.x \endverbatim * -# Issue \c make to test how it's doing: * \verbatim $ make \endverbatim * This will compile examples in the \c example directory. If everything * goes well, try \verbatim $ make test \endverbatim (or \c make \c * check which is the same as above) to run the test suite. If tests * do not produce error messages then probably all is OK. * -# Now you can create documentation (optional). Use * \verbatim $ make docs \endverbatim * to run \c doxygen in the sources directory. * -# Now it is time to become \c root and install png++ into your * system. It's OK to issue \c make \c install under ordinary user * permissions if you want to install png++ into your home * directory. Run the following command: * \verbatim $ make install PREFIX=$HOME \endverbatim * to copy png++ header files to \c ~/include/png++ and documentation * files to ~/share/doc/png++-0.2.x. Without a \c PREFIX png++ * installs to \c /usr/local. * * \section sec_working_with_images Working with images * * In png++ you can create new images like this: * * \code * #include * //... * png::image< png::rgb_pixel > image(128, 128); * for (size_t y = 0; y < image.get_height(); ++y) * { * for (size_t x = 0; x < image.get_width(); ++x) * { * image[y][x] = png::rgb_pixel(x, y, x + y); * // non-checking equivalent of image.set_pixel(x, y, ...); * } * } * image.write("rgb.png"); * \endcode * * Optionally, you may specify * \code * image.set_interlace_type(png::interlace_adam7) * \endcode * to produce an interlaced image. * * If you are writing an indexed colors image, you should provide a * palette (colormap). One of the ways to do this is the following: * * \code * #include * //... * png::image< png::index_pixel > image; * png::palette pal(256); * for (size_t i = 0; i < pal.size(); ++i) * { * pal[i] = png::color(i, 255 - i, i); * } * image.set_palette(pal); * ... * image.write("palette.png"); * \endcode * * It is not absolutely necessary to have the whole image data in * memory in order to write a PNG file. You can use generator class * template to write the image row-by-row. An example of this is * provided in \c example/pixel_generator.cpp bundled with the sources * package. * * The same holds for reading images too. You can use consumer class * template in order to read the image data row-by-row. This might * help in applications which have to deal with large PNG images but * do not want to read the entire image into memory. * * You can read or write images from/to generic IO stream, not only * file on disk. Check out \c image::read(std::istream&), * \c image::write(std::ostream&) overloads in the reference manual. * * \section sec_compiling_user Compiling your programs * * Use the following command to compile your program: * * \verbatim $ g++ -c example.cpp `libpng-config --cflags` \endverbatim * * and the following to link it: * * \verbatim $ g++ -o example example.o `libpng-config --ldflags` \endverbatim * * When compiling you should add \c -I \c $PREFIX/include if you have * installed png++ to non-standard location, like your home directory. * * In your program, the line * * \code * #include * \endcode * * brings in all the header files in png++ which should be suitable * for the most of the applications. You may include only the headers * you really use, for example: * * \code * #include * #include * \endcode * * If do not want to install png++ headers you still can compile your * programs. Just create a subdirectory named \c png++ somewhere in * your project tree and copy all of the \c .hpp files in png++ * distribution there. Then use appropriate compiler options to add * this directory into the header search path. * * \section sec_further Further reading * * - To get information about specific features, use reference (can be * reached from the top of this page). * - If you are looking for more example code, please go to the \c * example/ directory of the source distribution. You may also find * sources in the \c test/ directory insightful (well, somewhat). * - Have a question? Check out \ref sec_help section below. * - Of course, your ultimate source for learning is the source * code. :-) * * \section sec_download Download * * The project is hosted at Savannah: * http://savannah.nongnu.org/projects/pngpp/ * * Released source packages can be found here: * http://download.savannah.nongnu.org/releases/pngpp/ * * Also, you can check out sources directly from SVN repository: * svn://svn.sv.nongnu.org/pngpp/trunk/ or * http://svn.sv.nongnu.org/pngpp/trunk/ (for people w/o outgoing svn). * * Online version of this documentation can be found here: * http://www.nongnu.org/pngpp/doc/0.2.3/index.html * * \section sec_bugs Bugs * * The following is a list of known bugs and limitations: * * - Lacks support for output transformations * - Lacks support for optional/unknown chunks in PNG data stream * - Documentation sucks ;-) * * To report bugs, please use Savannah bug tracker: * http://savannah.nongnu.org/bugs/?group=pngpp&func=additem * * Do not forget to check if the bug was already filed. :-) * * \section sec_help Getting help * * There is a mailing list for developers: * http://lists.nongnu.org/mailman/listinfo/pngpp-devel * * You can also contact me by dropping a mail to . * * Happy hacking! * * Alex Shulgin */ #endif // PNGPP_PNG_HPP_INCLUDED png++-0.2.5/pixel_buffer.hpp0000644000175000017500000003301211461476005014334 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_PIXEL_BUFFER_HPP_INCLUDED #define PNGPP_PIXEL_BUFFER_HPP_INCLUDED #include #include #include #include #include "packed_pixel.hpp" #include "gray_pixel.hpp" #include "index_pixel.hpp" namespace png { /** * \brief The pixel row traits class template. Provides a common * way to get starting address of the row for packed and unpacked * row types. * * Not implemented--see specializations. */ template< typename row > class row_traits; /** * \brief The basic class template to represent image pixel data. */ template< typename pixel, typename row, class traits = row_traits< row > > class basic_pixel_buffer { public: /** * \brief A row of pixel data. */ typedef row row_type; typedef traits row_traits; /** * \brief Constructs an empty 0x0 pixel buffer object. */ basic_pixel_buffer() : m_width(0), m_height(0) { } /** * \brief Constructs an empty pixel buffer object. */ basic_pixel_buffer(size_t width, size_t height) : m_width(0), m_height(0) { resize(width, height); } size_t get_width() const { return m_width; } size_t get_height() const { return m_height; } /** * \brief Resizes the pixel buffer. * * If new width or height is greater than the original, * expanded pixels are filled with value of \a pixel(). */ void resize(size_t width, size_t height) { m_width = width; m_height = height; m_rows.resize(height); for (typename row_vec::iterator r = m_rows.begin(); r != m_rows.end(); ++r) { r->resize(width); } } /** * \brief Returns a reference to the row of image data at * specified index. * * Checks the index before returning a row: an instance of * std::out_of_range is thrown if \c index is greater than \c * height. */ row_type& get_row(size_t index) { return m_rows.at(index); } /** * \brief Returns a const reference to the row of image data at * specified index. * * The checking version. */ row_type const& get_row(size_t index) const { return m_rows.at(index); } /** * \brief The non-checking version of get_row() method. */ row_type& operator[](size_t index) { return m_rows[index]; } /** * \brief The non-checking version of get_row() method. */ row_type const& operator[](size_t index) const { return m_rows[index]; } /** * \brief Replaces the row at specified index. */ void put_row(size_t index, row_type const& r) { assert(r.size() == m_width); m_rows.at(index) = r; } /** * \brief Returns a pixel at (x,y) position. */ pixel get_pixel(size_t x, size_t y) const { return get_row(y).at(x); } /** * \brief Replaces a pixel at (x,y) position. */ void set_pixel(size_t x, size_t y, pixel p) { get_row(y).at(x) = p; } protected: size_t m_width; size_t m_height; typedef std::vector< row_type > row_vec; row_vec m_rows; }; /** * \brief The row_traits specialization for unpacked pixel rows. */ template< typename pixel > class row_traits< std::vector< pixel > > { public: /** * \brief Returns the starting address of the row. */ static pixel* get_data(std::vector< pixel >& vec) { assert(vec.size()); return & vec[0]; } }; /** * The pixel_buffer specialization for unpacked pixels. */ template< typename pixel > class pixel_buffer : public basic_pixel_buffer< pixel, std::vector< pixel > > { public: pixel_buffer() { } pixel_buffer(size_t width, size_t height) : basic_pixel_buffer< pixel, std::vector< pixel > >(width, height) { } }; namespace detail { template< class pixel, typename reference > class basic_packed_pixel_proxy { public: explicit basic_packed_pixel_proxy(reference ref) : m_ref(ref), m_shift(0) { } basic_packed_pixel_proxy(reference ref, size_t index) : m_ref(ref), m_shift(get_shift(index)) { } operator pixel() const { return pixel((m_ref >> m_shift) & pixel::get_bit_mask()); } protected: /* * bits: . . . * 1: 7 6 5 4 3 2 1 0 * 2: 6 4 2 0 * 4: 4 0 */ static size_t get_shift(size_t index) { size_t const bits = pixel::get_bit_depth(); return (8 - bits) - (index % get_pixels_per_byte()) * bits; } static size_t get_pixels_per_byte() { return 8 / pixel::get_bit_depth(); } reference m_ref; size_t m_shift; }; template< class pixel > class const_packed_pixel_proxy : public basic_packed_pixel_proxy< pixel, byte const& > { public: const_packed_pixel_proxy(byte const& ref, size_t index) : basic_packed_pixel_proxy< pixel, byte const& >(ref, index) { } }; template< class pixel > class packed_pixel_proxy : public basic_packed_pixel_proxy< pixel, byte& > { public: typedef basic_packed_pixel_proxy< pixel, byte& > basic_proxy; packed_pixel_proxy(byte& ref, size_t index) : basic_proxy(ref, index) { } packed_pixel_proxy(packed_pixel_proxy const& other) : basic_proxy(other.m_ref) { this->m_shift = other.m_shift; } packed_pixel_proxy& operator=(packed_pixel_proxy const& other) { return *this = static_cast< pixel >(other); } template< typename reference > packed_pixel_proxy& operator=(basic_packed_pixel_proxy< pixel, reference > const& other) { return *this = static_cast< pixel >(other); } packed_pixel_proxy& operator=(pixel p) { this->m_ref = (this->m_ref & ~(pixel::get_bit_mask() << this->m_shift)) | (p << this->m_shift); return *this; } }; } // namespace detail /** * \brief The packed pixel row class template. * * Stores the pixel row as a std::vector of byte-s, providing * access to individual packed pixels via proxy objects. */ template< class pixel > class packed_pixel_row { public: /** * \brief Constructs a pixel row object for \c size packed pixels. */ explicit packed_pixel_row(size_t size = 0) { resize(size); } size_t size() const { return m_size; } /** * \brief Resizes the pixel row to hold up to \c size packed pixels. */ void resize(size_t size) { m_vec.resize(size / get_pixels_per_byte() + (size % get_pixels_per_byte() ? 1 : 0)); m_size = size; } /** * \brief The immutable packed pixel proxy type. */ typedef detail::const_packed_pixel_proxy< pixel > const_pixel_proxy; /** * \brief The mutable packed pixel proxy type. */ typedef detail::packed_pixel_proxy< pixel > pixel_proxy; /** * \brief Returns an immutable proxy the to the pixel at \c * index. */ const_pixel_proxy at(size_t index) const { return const_pixel_proxy(m_vec.at(index / get_pixels_per_byte()), index); } /** * \brief Returns a mutable proxy the to the pixel at \c * index. */ pixel_proxy at(size_t index) { return pixel_proxy(m_vec.at(index / get_pixels_per_byte()), index); } /** * \brief Returns an immutable proxy the to the pixel at \c * index. The non-checking version. */ const_pixel_proxy operator[](size_t index) const { return const_pixel_proxy(m_vec[index / get_pixels_per_byte()], index); } /** * \brief Returns n mutable proxy the to the pixel at \c * index. The non-checking version. */ pixel_proxy operator[](size_t index) { return pixel_proxy(m_vec[index / get_pixels_per_byte()], index); } /** * \brief Returns the starting address of the row. */ byte* get_data() { assert(m_vec.size()); return & m_vec[0]; } private: static size_t get_pixels_per_byte() { return 8 / pixel::get_bit_depth(); } std::vector< byte > m_vec; size_t m_size; }; /** * \brief The row_traits class template specialization for packed * pixel row type. */ template< typename pixel > class row_traits< packed_pixel_row< pixel > > { public: /** * \brief Returns the starting address of the row. */ static byte* get_data(packed_pixel_row< pixel >& row) { return row.get_data(); } }; /** * \brief The pixel buffer class template specialization for the * packed_gray_pixel type. */ template< size_t bits > class pixel_buffer< packed_gray_pixel< bits > > : public basic_pixel_buffer< packed_gray_pixel< bits >, packed_pixel_row< packed_gray_pixel < bits > > > { public: typedef packed_gray_pixel< bits > pixel_type; typedef packed_pixel_row< pixel_type > pixel_row_type; pixel_buffer() { } pixel_buffer(size_t width, size_t height) : basic_pixel_buffer< pixel_type, pixel_row_type >(width, height) { } }; /** * \brief The pixel buffer class template specialization for the * packed_index_pixel type. */ template< size_t bits > class pixel_buffer< packed_index_pixel< bits > > : public basic_pixel_buffer< packed_index_pixel< bits >, packed_pixel_row< packed_index_pixel < bits > > > { public: typedef packed_index_pixel< bits > pixel_type; typedef packed_pixel_row< pixel_type > pixel_row_type; pixel_buffer() { } pixel_buffer(size_t width, size_t height) : basic_pixel_buffer< pixel_type, pixel_row_type >(width, height) { } }; } // namespace png #endif // PNGPP_PIXEL_BUFFER_HPP_INCLUDED png++-0.2.5/config.hpp0000644000175000017500000000403611461476005013133 0ustar useruser/* * Copyright (C) 2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_CONFIG_HPP_INCLUDED #define PNGPP_CONFIG_HPP_INCLUDED // Endianness test #if defined(__GLIBC__) #include #elif defined(__WIN32) #define __LITTLE_ENDIAN 1234 #define __BIG_ENDIAN 4321 #define __BYTE_ORDER __LITTLE_ENDIAN #elif defined(__APPLE__) #include #include #elif defined(__FreeBSD__) #include #include #else #error Byte-order could not be detected. #endif #endif // PNGPP_CONFIG_HPP_INCLUDED png++-0.2.5/TODO0000644000175000017500000000142311461476005011642 0ustar useruser? add output transformations + support for non-8bit data + stream exceptions: badbit only + adjust png::image for non-memory back end buffer + row-by-row io + use doxygen - add optional and unknown chunks handling + change bit_depth to size_t + move tests sources to test/, examples to examples/ + extract common code from generator/consumer + update pixel traits to detect channels count + unify template parameters naming + make sure all headers compile on their own + add compilation dependency detection + add pixel_buffer/image::operator[] + improve docs and README ? endianness in expand_8_to_16() - unify error messages (capitalization, etc.) + move stream template parameter from class to function level in generator and consumer + make all tests run even if any of them fails png++-0.2.5/tRNS.hpp0000644000175000017500000000360111461476005012511 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_TRNS_HPP_INCLUDED #define PNGPP_TRNS_HPP_INCLUDED #include #include "color.hpp" namespace png { /** * \brief The palette transparency map type. Currently * implemented as \c std::vector of png::byte. */ typedef std::vector< byte > tRNS; } // namespace png #endif // PNGPP_TRNS_HPP_INCLUDED png++-0.2.5/index_pixel.hpp0000644000175000017500000000645111461476005014201 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_INDEX_PIXEL_HPP_INCLUDED #define PNGPP_INDEX_PIXEL_HPP_INCLUDED #include "types.hpp" #include "packed_pixel.hpp" #include "pixel_traits.hpp" namespace png { /** * \brief The 8-bit Indexed (colormap) pixel type. */ class index_pixel { public: index_pixel(byte index = 0) : m_index(index) { } operator byte() const { return m_index; } private: byte m_index; }; /** * \brief The packed indexed pixel class template. The available * specializations are for 1-, 2- and 4-bit pixels. */ template< size_t bits > class packed_index_pixel : public packed_pixel< bits > { public: packed_index_pixel(byte value = 0) : packed_pixel< bits >(value) { } }; /** * \brief The 1-bit Indexed pixel type. */ typedef packed_index_pixel< 1 > index_pixel_1; /** * \brief The 1-bit Indexed pixel type. */ typedef packed_index_pixel< 2 > index_pixel_2; /** * \brief The 1-bit Indexed pixel type. */ typedef packed_index_pixel< 4 > index_pixel_4; /** * \brief Pixel traits specialization for index_pixel. */ template<> struct pixel_traits< index_pixel > : basic_pixel_traits< index_pixel, byte, color_type_palette > { }; /** * \brief Pixel traits specialization for packed_index_pixel. */ template< size_t bits > struct pixel_traits< packed_index_pixel< bits > > : basic_pixel_traits< packed_index_pixel< bits >, byte, color_type_palette, /* channels = */ 1, bits > { }; } // namespace png #endif // PNGPP_INDEX_PIXEL_HPP_INCLUDED png++-0.2.5/INSTALL0000644000175000017500000000357711461476005012217 0ustar useruserGeneral ======= PNG++ comes as a set of header files and does not require compilation to be installed. For the same reason there are no binary packages for png++. Prerequisites ============= - png++ is known to work with libpng-1.2.x (probably, the 1.4.x flavour will work too) - png++ compiles with g++-4.1. Other version should work well too, but I have not tested. - png++ relies on GNU make for compiling tests and examples; in particular it uses "remaking makefiles" feature. - Documentation is produced using doxygen (http://www.doxygen.org/). Installation ============ Follow these instructions in order to install png++: - Unpack source package: $ tar -zxf png++-0.2.x.tar.gz -C ~/src - Go to your brand new png++ sources directory: $ cd ~/src/png++-0.2.x - Issue make to test how it's doing: $ make This will compile examples in the example/ directory. As always, CFLAGS and LDFLAGS could be used to adjust compilation. In addition, you might want to specify custom libpng-config. Use LIBPNG_CONFIG variable for that purpose, like this: $ make LIBPNG_CONFIG=~/bin/libpng-config If everything goes well, try: $ make test (or "make check" which is the same as above). This will run the test suite. If tests do not produce error messages then probably all is OK. - Now you can create documentation (optional). Use $ make docs to run doxygen in the sources directory. - Now it is time to become root and install png++ into your system: # make install It's OK to issue "make install" under ordinary user permissions if you want to install png++ into your home directory. Run the following command: $ make install PREFIX=$HOME This will copy png++ header files to ~/include/png++ and documentation files to ~/share/doc/png++-0.2.x (if the docs were built). Without a PREFIX png++ installs to /usr/local Happy hacking! -- Alex Shulgin png++-0.2.5/io_base.hpp0000644000175000017500000003255011461476005013271 0ustar useruser/* * Copyright (C) 2007,2008 Alex Shulgin * * This file is part of png++ the C++ wrapper for libpng. PNG++ is free * software; the exact copying conditions are as follows: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PNGPP_IO_BASE_HPP_INCLUDED #define PNGPP_IO_BASE_HPP_INCLUDED #include #include #include #include "error.hpp" #include "info.hpp" #include "end_info.hpp" static void trace_io_transform(char const* fmt, ...) { #ifdef DEBUG_IO_TRANSFORM va_list va; va_start(va, fmt); fprintf(stderr, "TRANSFORM_IO: "); vfprintf(stderr, fmt, va); va_end(va); #endif } #define TRACE_IO_TRANSFORM trace_io_transform namespace png { /** * \brief Base class for PNG reader/writer classes. * * \see reader, writer */ class io_base { io_base(io_base const&); io_base& operator=(io_base const&); public: explicit io_base(png_struct* png) : m_png(png), m_info(*this, m_png), m_end_info(*this, m_png) { } ~io_base() { assert(! m_png); assert(! m_info.get_png_info()); assert(! m_end_info.get_png_info()); } png_struct* get_png_struct() const { return m_png; } info& get_info() { return m_info; } info const& get_info() const { return m_info; } image_info const& get_image_info() const { return m_info; } void set_image_info(image_info const& info) { static_cast< image_info& >(m_info) = info; // slice it } end_info& get_end_info() { return m_end_info; } end_info const& get_end_info() const { return m_end_info; } ////////////////////////////////////////////////////////////////////// // info accessors // size_t get_width() const { return m_info.get_width(); } void set_width(size_t width) { m_info.set_width(width); } size_t get_height() const { return m_info.get_height(); } void set_height(size_t height) { m_info.set_height(height); } color_type get_color_type() const { return m_info.get_color_type(); } void set_color_type(color_type color_space) { m_info.set_color_type(color_space); } size_t get_bit_depth() const { return m_info.get_bit_depth(); } void set_bit_depth(size_t bit_depth) { m_info.set_bit_depth(bit_depth); } interlace_type get_interlace_type() const { return m_info.get_interlace_type(); } void set_interlace_type(interlace_type interlace) { m_info.set_interlace_type(interlace); } compression_type get_compression_type() const { return m_info.get_compression_type(); } void set_compression_type(compression_type compression) { m_info.set_compression_type(compression); } filter_type get_filter_type() const { return m_info.get_filter_type(); } void set_filter_type(filter_type filter) { m_info.set_filter_type(filter); } ////////////////////////////////////////////////////////////////////// bool has_chunk(chunk id) { return png_get_valid(m_png, m_info.get_png_info(), uint_32(id)) == uint_32(id); } #if defined(PNG_READ_EXPAND_SUPPORTED) void set_gray_1_2_4_to_8() const { TRACE_IO_TRANSFORM("png_set_expand_gray_1_2_4_to_8\n"); png_set_expand_gray_1_2_4_to_8(m_png); } void set_palette_to_rgb() const { TRACE_IO_TRANSFORM("png_set_palette_to_rgb\n"); png_set_palette_to_rgb(m_png); } void set_tRNS_to_alpha() const { TRACE_IO_TRANSFORM("png_set_tRNS_to_alpha\n"); png_set_tRNS_to_alpha(m_png); } #endif // defined(PNG_READ_EXPAND_SUPPORTED) #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) void set_bgr() const { TRACE_IO_TRANSFORM("png_set_bgr\n"); png_set_bgr(m_png); } #endif #if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) void set_gray_to_rgb() const { TRACE_IO_TRANSFORM("png_set_gray_to_rgb\n"); png_set_gray_to_rgb(m_png); } #endif #ifdef PNG_FLOATING_POINT_SUPPORTED void set_rgb_to_gray(rgb_to_gray_error_action error_action = rgb_to_gray_silent, double red_weight = -1.0, double green_weight = -1.0) const { TRACE_IO_TRANSFORM("png_set_rgb_to_gray: error_action=%d," " red_weight=%lf, green_weight=%lf\n", error_action, red_weight, green_weight); png_set_rgb_to_gray(m_png, error_action, red_weight, green_weight); } #else void set_rgb_to_gray(rgb_to_gray_error_action error_action = rgb_to_gray_silent, fixed_point red_weight = -1, fixed_point green_weight = -1) const { TRACE_IO_TRANSFORM("png_set_rgb_to_gray_fixed: error_action=%d," " red_weight=%d, green_weight=%d\n", error_action, red_weight, green_weight); png_set_rgb_to_gray_fixed(m_png, error_action, red_weight, green_weight); } #endif // PNG_FLOATING_POINT_SUPPORTED ////////////////////////////////////////////////////////////////////// // alpha channel transformations // #if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) void set_strip_alpha() const { TRACE_IO_TRANSFORM("png_set_strip_alpha\n"); png_set_strip_alpha(m_png); } #endif #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) \ || defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) void set_swap_alpha() const { TRACE_IO_TRANSFORM("png_set_swap_alpha\n"); png_set_swap_alpha(m_png); } #endif #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) \ || defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) void set_invert_alpha() const { TRACE_IO_TRANSFORM("png_set_invert_alpha\n"); png_set_invert_alpha(m_png); } #endif #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) void set_filler(uint_32 filler, filler_type type) const { TRACE_IO_TRANSFORM("png_set_filler: filler=%08x, type=%d\n", filler, type); png_set_filler(m_png, filler, type); } #if !defined(PNG_1_0_X) void set_add_alpha(uint_32 filler, filler_type type) const { TRACE_IO_TRANSFORM("png_set_add_alpha: filler=%08x, type=%d\n", filler, type); png_set_add_alpha(m_png, filler, type); } #endif #endif // PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) void set_swap() const { TRACE_IO_TRANSFORM("png_set_swap\n"); png_set_swap(m_png); } #endif #if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) void set_packing() const { TRACE_IO_TRANSFORM("png_set_packing\n"); png_set_packing(m_png); } #endif #if defined(PNG_READ_PACKSWAP_SUPPORTED) \ || defined(PNG_WRITE_PACKSWAP_SUPPORTED) void set_packswap() const { TRACE_IO_TRANSFORM("png_set_packswap\n"); png_set_packswap(m_png); } #endif #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) void set_shift(byte red_bits, byte green_bits, byte blue_bits, byte alpha_bits = 0) const { TRACE_IO_TRANSFORM("png_set_shift: red_bits=%d, green_bits=%d," " blue_bits=%d, alpha_bits=%d\n", red_bits, green_bits, blue_bits, alpha_bits); if (get_color_type() != color_type_rgb || get_color_type() != color_type_rgb_alpha) { throw error("set_shift: expected RGB or RGBA color type"); } color_info bits; bits.red = red_bits; bits.green = green_bits; bits.blue = blue_bits; bits.alpha = alpha_bits; png_set_shift(m_png, & bits); } void set_shift(byte gray_bits, byte alpha_bits = 0) const { TRACE_IO_TRANSFORM("png_set_shift: gray_bits=%d, alpha_bits=%d\n", gray_bits, alpha_bits); if (get_color_type() != color_type_gray || get_color_type() != color_type_gray_alpha) { throw error("set_shift: expected Gray or Gray+Alpha" " color type"); } color_info bits; bits.gray = gray_bits; bits.alpha = alpha_bits; png_set_shift(m_png, & bits); } #endif // PNG_READ_SHIFT_SUPPORTED || PNG_WRITE_SHIFT_SUPPORTED #if defined(PNG_READ_INTERLACING_SUPPORTED) \ || defined(PNG_WRITE_INTERLACING_SUPPORTED) int set_interlace_handling() const { TRACE_IO_TRANSFORM("png_set_interlace_handling\n"); return png_set_interlace_handling(m_png); } #endif #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) void set_invert_mono() const { TRACE_IO_TRANSFORM("png_set_invert_mono\n"); png_set_invert_mono(m_png); } #endif #if defined(PNG_READ_16_TO_8_SUPPORTED) void set_strip_16() const { TRACE_IO_TRANSFORM("png_set_strip_16\n"); png_set_strip_16(m_png); } #endif #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) void set_read_user_transform(png_user_transform_ptr transform_fn) { TRACE_IO_TRANSFORM("png_set_read_user_transform_fn\n"); png_set_read_user_transform_fn(m_png, transform_fn); } #endif #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) \ || defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) void set_user_transform_info(void* info, int bit_depth, int channels) { TRACE_IO_TRANSFORM("png_set_user_transform_info: bit_depth=%d," " channels=%d\n", bit_depth, channels); png_set_user_transform_info(m_png, info, bit_depth, channels); } #endif protected: void* get_io_ptr() const { return png_get_io_ptr(m_png); } void set_error(char const* message) { assert(message); m_error = message; } void reset_error() { m_error.clear(); } /* std::string const& get_error() const { return m_error; } */ bool is_error() const { return !m_error.empty(); } void raise_error() { longjmp(png_jmpbuf(m_png), -1); } static void raise_error(png_struct* png, char const* message) { io_base* io = static_cast< io_base* >(png_get_error_ptr(png)); io->set_error(message); io->raise_error(); } png_struct* m_png; info m_info; end_info m_end_info; std::string m_error; }; } // namespace png #endif // PNGPP_IO_BASE_HPP_INCLUDED png++-0.2.5/COPYING0000644000175000017500000000260511461476005012210 0ustar useruserCopying png++ is subject to the following license: Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.