One of these days Crawl will win the Cleanest Code Championship, just you wait… :p
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4242 c06c8d41-db1a-0410-9941-cceddc491573
5B5DP5S6A6LQMKZYVLQAEMHQZWFWYDHPCKQGRNSCNNYIBQYZ6BIQC U53UEZG7W3V52N6JWL3X6T3LQUBWQ4FZW3US4WZLKAKLCF7MHMPAC HAI4YDKI72OBDT5KMMVCO3DOU765OPWCU7GTRKTALFNSDOI4R2LAC NA7MDJEHYJHBGQXPXGPIHQG2PX4L7YYJH3CDUEJ2EUPOZBF2LFXQC BLZC4APKXT76IVDHJ7UHBZQJJVW4FOLLDEDAKAGNLF6LZYMWOWOAC BJXME6SZTKO7R7CAQCD6PKDTNVTU7WQQ54GS5MFB6SB7YFRYRYBQC LOAHVKQFG57THOYHK6ONP5YUUO2WATATFTW3IETBPJZ5NYO3KZ5AC 32TNF7QPH765BC6VP4KVA4R2REGP6VI7CJ7QW2OOGP66Y7CUNQWQC YFACWAHJI6DAZDNCI7C4NSSPYFRAKORZTXUFX6PRM6JQ7GCQKHGAC CRUW4EVU3UDWNKXBCPWWHWXXGE7EMEHKK3PLLUD7NWPYY4K2R3YAC JJULXW764V5C2HJKZNWQAEWB6QM5YZADD7ZCE35LYTBFEM6PMYCAC U6OTXM3JN7SGPVIGQ5F6NR2I7J5V7KOWFQ7AVNNRQQDNLBEDMYFQC AXAM3TX4CUCIPL6ILEJLGJ4D4SMCJYDXGLIB256PBQXXKBIKZ4QAC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC L3DRKFURVDCV3EJKGG6GVVQX3D5MZPICTVOKNOD3LGM2PECBA7PQC JXAB5WYRDGBLKOBEQJLZKIE7YHQ2ZI6LKWEFSNF2TGAHPNUI3SBQC LP5EK64IEM7AHNYQID4GGKOQJQNZLKY4DCCZN47SIUZ6IXAXH5UAC 5FA5IEAXTMXYS2VUBVDKBKHPKAIOY4GN5SXYJORBYWQIGHVW3FFQC HBHQQDULNVWISJ75XIL6R6BFEDYRNY22NX3ZTFVNP5ZWJGJSKOEQC CSRWDG2SUGS4YR4PAFI574EGEXW65P6JDT4ZHWDICS2G2GZIGEUQC U6ILMKBXTQZYT62IGD2CALYNU4VQGRSTHN6QBFBU7BVUBHWYOEQQC ND3T5LCZATC63EVQ6SLI7XXMSUL7XICJDNLH3UCYUDEFWTA3N5MQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC PVLLIAYFIAU4TQFBIP7B4ARIBUX2CVTSBQECEU6VTONJV4ANHVFAC DH3YTI6VVI727SQXO4CXSDCSBG2UN3UAWLFULBGRLBVH22ACRXIAC 2TECJQA3PK7OYSSTOWZSQFWMTATJRHHA6JV3IGRHFGS3R7U27RZAC LBOWQK6P35RBX6CTIW5RFQVGRYNJ6XP3TVAAQCQ5ABBCEQAXIMXQC QSJECU2LZOQ5K5QUQDQOPQ4J3GAZEE5ZWIIM4DVBXYLVVX5DYLWQC TM35IHKZZNBCMR3ERBS4EYHGUK5IVCPUT2JUITMT74AYAIUZSYFQC 6PNVX6Q45HH733TZDXYBA6BYPJKDMND5BA4N2MP6HA3QVNCEPN2QC 3VWSZUGYL36SO5AOZRASGK3VHFCFZUGGCGRT3R7BZB36IZPN7OSQC CZCG4FOXPQXXUCGKK4W2IHUJK2PXUZJ22IAA6UIZ2EU7WX7VLOBQC NO2HRD7RZS42S55UG4FQ5EFQDY6WYWKGIXHUKYLWF36HHE3VZ7WAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC 7PRZJ6KZLG26YVTAMXT7YOTQLWZHGWGRTKXZZ52P4XYCQD4GT5WQC 43ZTEB57FU7KE5EVMYWZONNVJBZCGF3JEAJZIY25LC4LGE65PG5QC TUKBRR44ONNRAUYHTQTQIYIQPFK752EGWEZ5A5PULTTQDEDD7DRAC HYS3HXTXATFPN7GLN3WBGDCP22UT2D3JBVUS7SP5FE7L54TDCJRQC 7NDXS36TE7QVXTXJWMYSVG5UHCCLPIO4VL6NXFGTDK3ZNKE3A2IAC HL47H6Q4SA2KSPHWZSOCGHHCDB6JGC4LLHPA4JUHNCCPF2ZGQNTAC TRCCLE5RJ4VJULBOWOI2WC3RJU7WTEGS7RRQTDQL6W5UU246LKTQC JR2RAQ523LOWNDYJNK6AZVKI6WVMI622PIV72XWOVZYPXPUKSQWAC BRGAZR5AXWC2IALBVXO5SB354IRQEIRHSK55RZPGFI4AGIOD4LUQC LIBWXPN6HLJAIGEFJYLOL4HLIUD236U3WM5QPHIZ3DSB4CCUJERAC T5XERKCC6UL2UI2HKE34BTKNINTOXOSDCBYGC3A3JY7XMKIQW4GQC IE3INS4WUXZOBVXB5VWRBYPVPXADD2U2W5H3TBTOYNWJ3EGRSGQQC WDEFQ6YABDQIGJXW5KT3OGR3EO6FZHXZELIRVIXQ4XDYTVOV5V6AC F7Q5PX44SLPANIZXCY67TG2W5JTRVJMHGQW54VJLGB4XRH7R6JBQC CG4TL4AKSN4J7CMATZFJ5N7PSDCQXLS3QYX7PZ3K67KMMBT675OQC RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC Y2VKZYSQXLYYQNB6OSQP44IYLT2M56SE2ZW2MHOAZUODKCVDHEAQC BXXOYFMWNQY4TLLJBFYROSH43KO5F4JQTATU3ZEJNKGIJGOIQN4AC FCZSQBKDNMJZRJS2LWQQWLUFGOXSKXDJZQIHC7L5S7HXCXQPOMMAC WCK6TM2ZD56WSOK6SMMKBYAYGG4OUCTILLMVVLMB4QO5I5S2IVNAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 6KCWO7XCDBGOYSUWVEXC74XC6RZ7ZJQLLSES5IIPCTILTECYMFZAC BW3XFNOS6LDAQLHOZ6RXARCMKCY5JVLVDSXDSSAX4DSYM3FANQBAC EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC 2B4AQJIATJ4E7RFN6OTQITZNDBAPQ2VWWXLBCVYSORAFG2GIIDNQC ID2OZJTHFXL74RVUCS3JCMDQEUHAXCQFZU7235VU6IEVAAUWD2FAC BFZZ7DFLZM4WNHQOKWDJENZOLMXH3UPHZ437BMISYJ3VSO2Y57WQC 6HQB2N6N75R2RGKJFWRUN7WAC2PNGWQFXTII5DTRLTHZ2BOTMTVAC GL6SGPBZQPJBVGPOASYVCTAFXS7RNARR6Y5WZMIO5YCTB7ZJY4KAC XX62GOJVDP352L4BH7MELNYXHMZNA6VAGF7B6RWWOSULX7VJR5YAC EBKAEAW4GZ3VQNWXMW7AISS3ZUHOBZ56FSWJ6H57I43MTT4Y6XXQC EWJXUTTGMQTA6Q7ITOYVBPIWMZ55LBHXTLYCEV4YCFPS7DRCJ7GQC QXQE7C5XDYNF4JSHGDAVMS7HYLOC6YEZFOVFJ3RD7RB6U4AJSFIQC GSQ72ULBSL6WBJZUB3GJKAPQDXZIQV7B2TDBA5OP2WVGHVJMCQFQC JYCMD6WMNHXA53K4LLKVTNX6PLRLU25F6J2TYMPQXM2ENAE66NIAC JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC NEECVIIAOBP72T6O44DWAA6HFSDY3KSWYCFMKAEMDMVOI7XASD7QC UB73UGG2GEG6AL4T76UILFLTELH4Z5WN54UROLJD6RDR3JG77CXAC XNYPQTF74HLRSKTEVLTNCDB43YHWOFTQL5TVSNO6WWPAJGZSCYKQC NQIXUYGUIQTKZUB2IQDII7BBDMZ4VN4NUUTGT2ARQBZTDJUMPKRQC O6ZMFKDI3XO2SWPNEYHIPYFDWJR4TVDP5BAATK6LVCVETQID6E7AC TJISAZK5RWKXIIC5UTQNY4KT3UX3ASGBUQQNWZ7ZDULPRYFRZXQQC IHOKNI4O7EEW4UBMKHP6XOZNEIQSW4AYOT4O3JXUIXNNR553IQAQC M5JRISNFA35UTUE6EZKABYLNFLD5Y2CM3CEASFEWM4QRNYC3UK3QC C4WXQRJTDW53PYFWQ4LOINSCI2IWMIQTH5WDSI7QUP72PKDBYHZAC MZLB3Q7G4EC2BR3OFMG55WPHXPFJGQSLWAIHHFJEAEATPUTYR7EAC T4IH76FA5TWHFOZUJFHLQXQJENJHWTUZZP4EGNA7D4GTZY7D4ZKAC TW7QOMTSLYPGUUWHGHLY5G5LV6QQRQIKK4BSE64RY7RDGKVDHCEAC HNXKX6ZDQJV33E7UKZOLBYWJMRZ4QLEMXVXJZNRCTOIG2KVRTIEAC RC6L3CIBLJEH4GWRFD7UQNGI6PZT74FRUVOYHSAN2XCC74NZUASQC NCDWWDJQLAU5ORSAQGZKJJ5E22VTDGGPJMVVBWQFHQ2B3U3UFHDQC 2NCKGJDDPPGP2NXYYPEPVRJIIWEP6M7HE6WYMQN3UNNN3C2JIRFQC 52J7CYVAW3QCUEWA5OKWPDGOP6JZR5NJSE3JDLZFBCR7B6LH5ASAC SW3RLYFNRT3IJBK6LYKHKP2J2YDU7SXQWAJZX7U6S7ICYW43OMNQC 45EMD3KLQPMERNMIKU5G76H6556XOMIW352TSBP7VLWJX2YYGS7AC GTPAKUU3R5AS3LQNCCZIP3BWV473RM4EB2AIS4FXAJRXHEOVH2PAC 2WRXQTGYDBLV46WRNVIUKGNA5QS563XZNNW3N2L6PVOCHIP2YGHQC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC XYBPIU6AQ77EID4VNOMI7KQZULZI4VBZHHIGBRYO7QRJVCODEKYAC ZJLJGSB2XSBQU42OFQMXL3EG4CXAQGOYAU6YTV2SAWZEJIPFH2CAC TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC YRY2TC3VHOYE47M23UJGUWDGF7H7WGU7WLWI4SUNM4EDNTGUPHGAC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC 7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC T6TL6NTIOBYNUIONGK3JFZJ5ONWV6S4CTIRDC5JMKMCBGG5IY3EAC ESWIM76FGJL4QFLSHU6AC4D74PT7OPLQ7ZCJYWLZS5UCBAJDXYHAC BWAQ3FHBBM6G3K3KYP75CRTR343RDQZJRYX5ZGYUEXYBAC3APDLAC LUNOTEIMYZJ7JL5P55GEHUVSDEZMYX3TWYUB2ABRHAYJEWQSSXIAC WXSNNK2RXP3DQFAEQGQUZJHFWXJC7ZKG2WURZGL566UDM4YXFSWQC XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC 5K2ANIEXD3CPJM4XNKNPZINP2G4NT7SJBKRN62WNBUKJXFERTILQC M47QBURKKRV2JFK6U7GQNVWK7RUTBVPBJ5FHURC55SKQSXAUFSBAC CE6FLTWU5PYFBSGVTIJXQXRMHOIHQ3VJCKHQVIMUUAIFHQ73X7NAC HSRRNAU5UAYC6B6IQWGJPFROMZBTJICPCH6DJVZDHDTAGOQ6IOYAC LAMIVDKY7LO5ONX5Z273ZCCEA5UBENOJD5VWNE4AK2EXGFED6BFQC 7NFVYCNQ54IN77PF334ADAF4YQT6LEABMAIZF4Y4BH5C3CYXYQGQC W2KRIXSCRJPS6WDIYTHVF5IRMF3V5DWECRAWUPVTB7VZ6A2BLD4QC NXVPOFYKJFWQWKVPQUMWH2Y2KJEZX44BUOBFJ4JD4KFGPEGYHG4QC HXCUOTXRRUHNEBWC54HLSOKI5PGFQTAQU67ODHQ5HKG5FHIPOHFQC ZIFFVCQ72K35WGIUMZYN3KOXIUXF2CNXWKG6ZWEZ6LT3NSF3XOQAC GOPBXMJ7EKKPDSDXCANWW6ARWGNLOQ5DK7WI4UPD7K2GCDSK2HXAC YH23OR26YDA6C5K74QRWHROMTPGRNZHTHE4HJGPC3JVNAJ62CHGAC 65CM2EZCAFFBWLAYZ7ALBV3BQKNZCYOHYIFY46KU7BZL3LHV36JAC DBGS3HXMW24VO5GBITT3UI2ZNIISUXUHAEAYUI52QPUT7IO46ITQC KQNIGKATHT4YSPJFPJGIGPD6VNR5B753SE2JN2LCXZZJNHCGY3DQC // The a == 0 test is legacy code that I don't dare to remove. I// have a vague recollection of it being a kludge for conio support.
// The a == 0 test is legacy code that I don't dare to remove. I// have a vague recollection of it being a kludge for conio support.
/** Replacement for getch(). Returns keys from the key buffer if available.* If not, adds some content to the buffer, and returns some of it.
/** Replacement for getch(). Returns keys from the key buffer if available.* If not, adds some content to the buffer, and returns some of it.
/** Replacement for getch(). Returns keys from the key buffer if available.* If not, adds some content to the buffer, and returns some of it.
/** Replacement for getch(). Returns keys from the key buffer if available.* If not, adds some content to the buffer, and returns some of it.
ASSERT(sx>=0);ASSERT(sy>=0);ASSERT(sx+wx<=(src->width));ASSERT(sy+wy<=(src->height));ASSERT(dx>=0);ASSERT(dy>=0);ASSERT(dx+wx<=(dest->width));ASSERT(dy+wy<=(dest->height));
ASSERT(sx >= 0);ASSERT(sy >= 0);ASSERT(sx + wx <= src->width);ASSERT(sy + wy <= src->height);ASSERT(dx >= 0);ASSERT(dy >= 0);ASSERT(dx + wx <= dest->width);ASSERT(dy + wy <= dest->height);
ASSERT(sx>=0);ASSERT(sy>=0);ASSERT(sx+wx<=(src->width));ASSERT(sy+wy<=(src->height));ASSERT(dx>=0);ASSERT(dy>=0);ASSERT(dx+wx<=(dest->width));ASSERT(dy+wy<=(dest->height));
ASSERT(sx >= 0);ASSERT(sy >= 0);ASSERT(sx + wx <= src->width);ASSERT(sy + wy <= src->height);ASSERT(dx >= 0);ASSERT(dy >= 0);ASSERT(dx + wx <= dest->width);ASSERT(dy + wy <= dest->height);
ASSERT(sx>=0);ASSERT(sy>=0);ASSERT(sx+wx<=(src->width));ASSERT(sy+wy<=(src->height));ASSERT(dx>=0);ASSERT(dy>=0);ASSERT(dx+wx<=(dest->width));ASSERT(dy+wy<=(dest->height));
ASSERT(sx >= 0);ASSERT(sy >= 0);ASSERT(sx + wx <= src->width);ASSERT(sy + wy <= src->height);ASSERT(dx >= 0);ASSERT(dy >= 0);ASSERT(dx + wx <= dest->width);ASSERT(dy + wy <= dest->height);
ASSERT(sx>=0);ASSERT(sy>=0);ASSERT(sx+wx<=(src->width));ASSERT(sy+wy<=(src->height));ASSERT(dx>=0);ASSERT(dy>=0);ASSERT(dx+wx<=(dest->width));ASSERT(dy+wy<=(dest->height));
ASSERT(sx >= 0);ASSERT(sy >= 0);ASSERT(sx + wx <= src->width);ASSERT(sy + wy <= src->height);ASSERT(dx >= 0);ASSERT(dy >= 0);ASSERT(dx + wx <= dest->width);ASSERT(dy + wy <= dest->height);
char sig_buf [SIG_CHECK_SIZE];png_struct *png_ptr;png_info *info_ptr;png_byte **png_image;png_byte *png_pixel;unsigned int x, y;int linesize;png_uint_16 c;unsigned int i;
char sig_buf [SIG_CHECK_SIZE];png_struct *png_ptr;png_info *info_ptr;png_byte **png_image;png_byte *png_pixel;unsigned int x, y;int linesize;png_uint_16 c;unsigned int i;
if(!ifp) { fprintf(stderr, "File not found: %s", fname); return NULL; }
if (fread (sig_buf, 1, SIG_CHECK_SIZE, ifp) != SIG_CHECK_SIZE)pm_error ("input file empty or too short");if (png_sig_cmp ((unsigned char *)sig_buf, (png_size_t) 0,(png_size_t) SIG_CHECK_SIZE) != 0){pm_error ("input file not a PNG file");}
if (fread (sig_buf, 1, SIG_CHECK_SIZE, ifp) != SIG_CHECK_SIZE)pm_error ("input file empty or too short");if (png_sig_cmp ((unsigned char *)sig_buf, (png_size_t) 0, (png_size_t) SIG_CHECK_SIZE) != 0)pm_error ("input file not a PNG file");
png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);if (png_ptr == NULL)pm_error ("cannot allocate LIBPNG structure");
png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);if (png_ptr == NULL) {pm_error ("cannot allocate LIBPNG structure");}info_ptr = png_create_info_struct (png_ptr);if (info_ptr == NULL) {png_destroy_read_struct (&png_ptr, (png_infopp)NULL, (png_infopp)NULL);pm_error ("cannot allocate LIBPNG structures");}
info_ptr = png_create_info_struct (png_ptr);if (info_ptr == NULL){png_destroy_read_struct (&png_ptr, (png_infopp)NULL, (png_infopp)NULL);pm_error ("cannot allocate LIBPNG structures");}
if (setjmp (png_ptr->jmpbuf)) {png_destroy_read_struct (&png_ptr, (png_infopp)NULL, (png_infopp)NULL);free (png_ptr);free (info_ptr);pm_error ("setjmp returns error condition");}
if (setjmp (png_ptr->jmpbuf)){png_destroy_read_struct (&png_ptr, (png_infopp)NULL, (png_infopp)NULL);free (png_ptr);free (info_ptr);pm_error ("setjmp returns error condition");}
png_image = (png_byte **)malloc (info_ptr->height * sizeof (png_byte*));if (png_image == NULL) {free (png_ptr);free (info_ptr);pm_error ("couldn't alloc space for image");}
if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)linesize *= 2;else if (info_ptr->color_type == PNG_COLOR_TYPE_RGB)linesize *= 3;else if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)linesize *= 4;
if (info_ptr->bit_depth == 16)linesize = 2 * info_ptr->width;elselinesize = info_ptr->width;
for (y = 0 ; y < info_ptr->height ; y++){png_image[y] = (png_byte *)malloc (linesize);if (png_image[y] == NULL){for (x = 0; x < y; x++)free (png_image[x]);
if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)linesize *= 2;elseif (info_ptr->color_type == PNG_COLOR_TYPE_RGB)linesize *= 3;elseif (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)linesize *= 4;for (y = 0 ; y < info_ptr->height ; y++) {png_image[y] = (png_byte *)malloc (linesize);if (png_image[y] == NULL) {for (x = 0 ; x < y ; x++)free (png_image[x]);free (png_image);free (png_ptr);free (info_ptr);pm_error ("couldn't alloc space for image");
free (png_image);free (png_ptr);free (info_ptr);pm_error ("couldn't alloc space for image");}
info_ptr->sig_bit.red != info_ptr->sig_bit.blue) ) {pm_message ("different bit depths for color channels not supported");pm_message ("writing file with %d bit resolution", info_ptr->bit_depth);} elseif ((info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) &&(info_ptr->sig_bit.red < 255)) {for (i = 0 ; i < info_ptr->num_palette ; i++) {info_ptr->palette[i].red >>= (8 - info_ptr->sig_bit.red);info_ptr->palette[i].green >>= (8 - info_ptr->sig_bit.green);info_ptr->palette[i].blue >>= (8 - info_ptr->sig_bit.blue);}
info_ptr->sig_bit.red != info_ptr->sig_bit.blue) ){pm_message ("different bit depths for color channels not ""supported");pm_message ("writing file with %d bit resolution",info_ptr->bit_depth);}else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE&& info_ptr->sig_bit.red < 255){for (i = 0 ; i < info_ptr->num_palette ; i++){info_ptr->palette[i].red >>= (8 - info_ptr->sig_bit.red);info_ptr->palette[i].green >>= (8 - info_ptr->sig_bit.green);info_ptr->palette[i].blue >>= (8 - info_ptr->sig_bit.blue);}}else if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY|| info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)&& info_ptr->sig_bit.gray < info_ptr->bit_depth){png_set_shift (png_ptr, &(info_ptr->sig_bit));}}
} elseif ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) &&(info_ptr->sig_bit.gray < info_ptr->bit_depth)) {png_set_shift (png_ptr, &(info_ptr->sig_bit));}
if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE){//X11for (i = 0 ; i < info_ptr->num_palette ; i++)pix_table[i] = create_pixel(info_ptr->palette[i].red,
}if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE){//X11for (i = 0 ; i < info_ptr->num_palette ; i++)pix_table[i] = create_pixel(info_ptr->palette[i].red,info_ptr->palette[i].green, info_ptr->palette[i].blue);}elseif (info_ptr->color_type == PNG_COLOR_TYPE_GRAY){
info_ptr->palette[i].green, info_ptr->palette[i].blue);}else if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY){//X11
for (y = 0 ; y < info_ptr->height ; y++) {png_pixel = png_image[y];for (x = 0 ; x < info_ptr->width ; x++) {c = *png_pixel;png_pixel++;XPutPixel(res, x, y, pix_table[c]);
for (y = 0; y < info_ptr->height; y++){png_pixel = png_image[y];for (x = 0; x < info_ptr->width; x++){c = *png_pixel;png_pixel++;XPutPixel(res, x, y, pix_table[c]);}
std_palette[i].rgbRed = pPal[i].rgbRed ;std_palette[i].rgbGreen = pPal[i].rgbGreen;std_palette[i].rgbBlue = pPal[i].rgbBlue ;
std_palette[i].rgbRed = pPal[i].rgbRed ;std_palette[i].rgbGreen = pPal[i].rgbGreen;std_palette[i].rgbBlue = pPal[i].rgbBlue ;
backbuf->pDib->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);backbuf->pDib->bmiHeader.biPlanes = 1;backbuf->pDib->bmiHeader.biBitCount = 8;backbuf->pDib->bmiHeader.biCompression=BI_RGB;backbuf->pDib->bmiHeader.biSizeImage=0;backbuf->pDib->bmiHeader.biXPelsPerMeter=0;backbuf->pDib->bmiHeader.biYPelsPerMeter=0;backbuf->pDib->bmiHeader.biClrUsed=0;backbuf->pDib->bmiHeader.biClrImportant=0;
backbuf->pDib->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);backbuf->pDib->bmiHeader.biPlanes = 1;backbuf->pDib->bmiHeader.biBitCount = 8;backbuf->pDib->bmiHeader.biCompression = BI_RGB;backbuf->pDib->bmiHeader.biSizeImage = 0;backbuf->pDib->bmiHeader.biXPelsPerMeter = 0;backbuf->pDib->bmiHeader.biYPelsPerMeter = 0;backbuf->pDib->bmiHeader.biClrUsed = 0;backbuf->pDib->bmiHeader.biClrImportant = 0;
backbuf->pDib->bmiHeader.biWidth = mx*dx;backbuf->pDib->bmiHeader.biHeight = my*dy;backbuf->Width = mx * dx;backbuf->Height= my * dy;
backbuf->pDib->bmiHeader.biWidth = mx*dx;backbuf->pDib->bmiHeader.biHeight = my*dy;backbuf->Width = mx * dx;backbuf->Height = my * dy;
scol[i].rgbBlue = map_colors[i][2];scol[i].rgbGreen = map_colors[i][1];scol[i].rgbRed = map_colors[i][0];scol[i].rgbReserved = 0;
scol[i].rgbBlue = map_colors[i][2];scol[i].rgbGreen = map_colors[i][1];scol[i].rgbRed = map_colors[i][0];scol[i].rgbReserved = 0;
if ( (backbuf->pDib->bmiColors[i].rgbRed == 0)&&(backbuf->pDib->bmiColors[i].rgbGreen == 0)&&(backbuf->pDib->bmiColors[i].rgbBlue == 0) )
if (backbuf->pDib->bmiColors[i].rgbRed == 0&& backbuf->pDib->bmiColors[i].rgbGreen == 0&& backbuf->pDib->bmiColors[i].rgbBlue == 0){
(WS_OVERLAPPED | WS_SYSMENU |WS_MINIMIZEBOX | WS_CAPTION |WS_VISIBLE),ox, oy, //posrc.right - rc.left, rc.bottom - rc.top, //sizeHWND_DESKTOP, NULL, hInst, NULL);
(WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX| WS_CAPTION | WS_VISIBLE),ox, oy, //posrc.right - rc.left, rc.bottom - rc.top, //sizeHWND_DESKTOP, NULL, hInst, NULL);
fh=CreateFile(name, GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);if (fh == INVALID_HANDLE_VALUE) return NULL;
fh = CreateFile(name, GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);if (fh == INVALID_HANDLE_VALUE)return NULL;
for(x=0;x<wx;x++){for(y=0;y<wy;y++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;}}
for (x = 0; x < wx; x++)for (y = 0; y < wy; y++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;}
for(x=0;x<wx;x++){for(y=0;y<wy;y++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );if(pix!=pix_transparent)*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;}}
for (x = 0; x < wx; x++)for (y = 0; y < wy; y++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );if (pix!=pix_transparent)*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;}
for(x=0;x<wx;x++){for(y=0;y<wy;y++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );if (pix == pix_rimcolor) pix = pix_magenta;*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;}}
for (x = 0; x < wx; x++)for (y = 0; y < wy; y++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );if (pix == pix_rimcolor) pix = pix_magenta;*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;}
for(x=0;x<wx;x++){for(y=0;y<wy;y++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );if (pix == pix_rimcolor) pix = pix_magenta;if(pix!=pix_transparent) *( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;}}
for (x = 0; x < wx; x++)for (y = 0; y < wy; y++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );if (pix == pix_rimcolor)pix = pix_magenta;if (pix != pix_transparent)*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;}
for(y=0;y<wy;y++){for(x=0;x<wx;x++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );if (mask[count]==0 && pix != pix_transparent)*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;count++;}}
for (y = 0; y < wy; y++)for (x = 0; x < wx; x++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );if (mask[count]==0 && pix != pix_transparent)*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;count++;}
for(y=0;y<wy;y++){for(x=0;x<wx;x++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );if (pix == pix_rimcolor) pix = pix_magenta;if (mask[count]==0 && pix != pix_transparent)*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;count++;}}
for (y = 0; y < wy; y++)for (x = 0; x < wx; x++){pix = *( dib_ref_pixel(src, sx+x, sy+y) );if (pix == pix_rimcolor)pix = pix_magenta;if (mask[count]==0 && pix != pix_transparent)*( dib_ref_pixel(dest, dx+x, dy+y) ) = pix;count++;}
do {if (find_description(again, error))if ( getch() == 0 )getch();
do{// resets 'again'if (find_description(again, error) && getch() == 0 )getch();