亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pngwrite.c

?? qtopia-phone-2.2.0下png工具庫源代碼實現。
?? C
?? 第 1 頁 / 共 3 頁
字號:
#else   if (setjmp(png_ptr->jmpbuf))#endif   {      png_free(png_ptr, png_ptr->zbuf);      png_ptr->zbuf=NULL;      png_destroy_struct(png_ptr);      return ((png_structp)NULL);   }#ifdef USE_FAR_KEYWORD   png_memcpy(png_ptr->jmpbuf,jmpbuf,sizeof(jmp_buf));#endif#endif#ifdef PNG_USER_MEM_SUPPORTED   png_set_mem_fn(png_ptr, mem_ptr, malloc_fn, free_fn);#endif /* PNG_USER_MEM_SUPPORTED */   png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);   i=0;   do   {     if(user_png_ver[i] != png_libpng_ver[i])        png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;   } while (png_libpng_ver[i++]);   if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)   {     /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so      * we must recompile any applications that use any older library version.      * For versions after libpng 1.0, we will be compatible, so we need      * only check the first digit.      */     if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||         (user_png_ver[0] == '0' && user_png_ver[2] < '9'))     {        png_error(png_ptr,           "Incompatible libpng version in application and library");     }     /* Libpng 1.0.6 was not binary compatible, due to insertion of the        info_ptr->free_me member.  Note to maintainer: this test can be        removed from version 2.0.0 and beyond because the previous test        would have already rejected it. */     if (user_png_ver[4] == '6' && user_png_ver[2] == '0' &&         user_png_ver[0] == '1' && user_png_ver[5] == '\0')     {        png_error(png_ptr,           "Application must be recompiled; version 1.0.6 was incompatible");     }   }   /* initialize zbuf - compression buffer */   png_ptr->zbuf_size = PNG_ZBUF_SIZE;   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,      (png_uint_32)png_ptr->zbuf_size);   png_set_write_fn(png_ptr, NULL, NULL, NULL);#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)   png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT,      1, NULL, NULL);#endif   return ((png_structp)png_ptr);}/* Initialize png_ptr structure, and allocate any memory needed */#undef png_write_initvoid PNGAPIpng_write_init(png_structp png_ptr){   /* We only come here via pre-1.0.7-compiled applications */   png_write_init_2(png_ptr, "1.0.0", 10000, 10000);}void PNGAPIpng_write_init_2(png_structp png_ptr, png_const_charp user_png_ver,   png_size_t png_struct_size, png_size_t png_info_size){#ifdef PNG_SETJMP_SUPPORTED   jmp_buf tmp_jmp; /* to save current jump buffer */#endif   int i = 0;   do   {     if (user_png_ver[i] != png_libpng_ver[i])     {#ifdef PNG_LEGACY_SUPPORTED       png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;#else       png_ptr->error_fn=(png_error_ptr)NULL;       png_error(png_ptr,       "Application uses deprecated png_write_init() and must be recompiled.");#endif     }   } while (png_libpng_ver[i++]);   if (sizeof(png_struct) > png_struct_size ||      sizeof(png_info) > png_info_size)     {       png_ptr->error_fn=(png_error_ptr)NULL;       png_error(png_ptr,      "Application and library have different sized structs. Please recompile.");     }   png_debug(1, "in png_write_init_2\n");#ifdef PNG_SETJMP_SUPPORTED   /* save jump buffer and error functions */   png_memcpy(tmp_jmp, png_ptr->jmpbuf, sizeof (jmp_buf));#endif   /* reset all variables to 0 */   png_memset(png_ptr, 0, sizeof (png_struct));#ifdef PNG_SETJMP_SUPPORTED   /* restore jump buffer */   png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof (jmp_buf));#endif   /* initialize zbuf - compression buffer */   png_ptr->zbuf_size = PNG_ZBUF_SIZE;   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,      (png_uint_32)png_ptr->zbuf_size);   png_set_write_fn(png_ptr, NULL, NULL, NULL);#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)   png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT,      1, NULL, NULL);#endif}/* Write a few rows of image data.  If the image is interlaced, * either you will have to write the 7 sub images, or, if you * have called png_set_interlace_handling(), you will have to * "write" the image seven times. */void PNGAPIpng_write_rows(png_structp png_ptr, png_bytepp row,   png_uint_32 num_rows){   png_uint_32 i; /* row counter */   png_bytepp rp; /* row pointer */   png_debug(1, "in png_write_rows\n");   /* loop through the rows */   for (i = 0, rp = row; i < num_rows; i++, rp++)   {      png_write_row(png_ptr, *rp);   }}/* Write the image.  You only need to call this function once, even * if you are writing an interlaced image. */void PNGAPIpng_write_image(png_structp png_ptr, png_bytepp image){   png_uint_32 i; /* row index */   int pass, num_pass; /* pass variables */   png_bytepp rp; /* points to current row */   png_debug(1, "in png_write_image\n");#if defined(PNG_WRITE_INTERLACING_SUPPORTED)   /* intialize interlace handling.  If image is not interlaced,      this will set pass to 1 */   num_pass = png_set_interlace_handling(png_ptr);#else   num_pass = 1;#endif   /* loop through passes */   for (pass = 0; pass < num_pass; pass++)   {      /* loop through image */      for (i = 0, rp = image; i < png_ptr->height; i++, rp++)      {         png_write_row(png_ptr, *rp);      }   }}/* called by user to write a row of image data */void PNGAPIpng_write_row(png_structp png_ptr, png_bytep row){   png_debug2(1, "in png_write_row (row %ld, pass %d)\n",      png_ptr->row_number, png_ptr->pass);   /* initialize transformations and other stuff if first time */   if (png_ptr->row_number == 0 && png_ptr->pass == 0)   {   /* check for transforms that have been set but were defined out */#if !defined(PNG_WRITE_INVERT_SUPPORTED) && defined(PNG_READ_INVERT_SUPPORTED)   if (png_ptr->transformations & PNG_INVERT_MONO)      png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined.");#endif#if !defined(PNG_WRITE_FILLER_SUPPORTED) && defined(PNG_READ_FILLER_SUPPORTED)   if (png_ptr->transformations & PNG_FILLER)      png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined.");#endif#if !defined(PNG_WRITE_PACKSWAP_SUPPORTED) && defined(PNG_READ_PACKSWAP_SUPPORTED)   if (png_ptr->transformations & PNG_PACKSWAP)      png_warning(png_ptr, "PNG_WRITE_PACKSWAP_SUPPORTED is not defined.");#endif#if !defined(PNG_WRITE_PACK_SUPPORTED) && defined(PNG_READ_PACK_SUPPORTED)   if (png_ptr->transformations & PNG_PACK)      png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined.");#endif#if !defined(PNG_WRITE_SHIFT_SUPPORTED) && defined(PNG_READ_SHIFT_SUPPORTED)   if (png_ptr->transformations & PNG_SHIFT)      png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined.");#endif#if !defined(PNG_WRITE_BGR_SUPPORTED) && defined(PNG_READ_BGR_SUPPORTED)   if (png_ptr->transformations & PNG_BGR)      png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined.");#endif#if !defined(PNG_WRITE_SWAP_SUPPORTED) && defined(PNG_READ_SWAP_SUPPORTED)   if (png_ptr->transformations & PNG_SWAP_BYTES)      png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined.");#endif      png_write_start_row(png_ptr);   }#if defined(PNG_WRITE_INTERLACING_SUPPORTED)   /* if interlaced and not interested in row, return */   if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))   {      switch (png_ptr->pass)      {         case 0:            if (png_ptr->row_number & 0x07)            {               png_write_finish_row(png_ptr);               return;            }            break;         case 1:            if ((png_ptr->row_number & 0x07) || png_ptr->width < 5)            {               png_write_finish_row(png_ptr);               return;            }            break;         case 2:            if ((png_ptr->row_number & 0x07) != 4)            {               png_write_finish_row(png_ptr);               return;            }            break;         case 3:            if ((png_ptr->row_number & 0x03) || png_ptr->width < 3)            {               png_write_finish_row(png_ptr);               return;            }            break;         case 4:            if ((png_ptr->row_number & 0x03) != 2)            {               png_write_finish_row(png_ptr);               return;            }            break;         case 5:            if ((png_ptr->row_number & 0x01) || png_ptr->width < 2)            {               png_write_finish_row(png_ptr);               return;            }            break;         case 6:            if (!(png_ptr->row_number & 0x01))            {               png_write_finish_row(png_ptr);               return;            }            break;      }   }#endif   /* set up row info for transformations */   png_ptr->row_info.color_type = png_ptr->color_type;   png_ptr->row_info.width = png_ptr->usr_width;   png_ptr->row_info.channels = png_ptr->usr_channels;   png_ptr->row_info.bit_depth = png_ptr->usr_bit_depth;   png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth *      png_ptr->row_info.channels);   png_ptr->row_info.rowbytes = ((png_ptr->row_info.width *      (png_uint_32)png_ptr->row_info.pixel_depth + 7) >> 3);   png_debug1(3, "row_info->color_type = %d\n", png_ptr->row_info.color_type);   png_debug1(3, "row_info->width = %lu\n", png_ptr->row_info.width);   png_debug1(3, "row_info->channels = %d\n", png_ptr->row_info.channels);   png_debug1(3, "row_info->bit_depth = %d\n", png_ptr->row_info.bit_depth);   png_debug1(3, "row_info->pixel_depth = %d\n", png_ptr->row_info.pixel_depth);   png_debug1(3, "row_info->rowbytes = %lu\n", png_ptr->row_info.rowbytes);   /* Copy user's row into buffer, leaving room for filter byte. */   png_memcpy_check(png_ptr, png_ptr->row_buf + 1, row,      png_ptr->row_info.rowbytes);#if defined(PNG_WRITE_INTERLACING_SUPPORTED)   /* handle interlacing */   if (png_ptr->interlaced && png_ptr->pass < 6 &&      (png_ptr->transformations & PNG_INTERLACE))   {      png_do_write_interlace(&(png_ptr->row_info),         png_ptr->row_buf + 1, png_ptr->pass);      /* this should always get caught above, but still ... */      if (!(png_ptr->row_info.width))      {         png_write_finish_row(png_ptr);         return;      }   }#endif   /* handle other transformations */   if (png_ptr->transformations)      png_do_write_transformations(png_ptr);#if defined(PNG_MNG_FEATURES_SUPPORTED)   /* Write filter_method 64 (intrapixel differencing) only if    * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and    * 2. Libpng did not write a PNG signature (this filter_method is only    *    used in PNG datastreams that are embedded in MNG datastreams) and    * 3. The application called png_permit_mng_features with a mask that    *    included PNG_FLAG_MNG_FILTER_64 and    * 4. The filter_method is 64 and    * 5. The color_type is RGB or RGBA    */   if((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&      (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))   {      /* Intrapixel differencing */      png_do_write_intrapixel(&(png_ptr->row_info), png_ptr->row_buf + 1);   }#endif   /* Find a filter if necessary, filter the row and write it out. */   png_write_find_filter(png_ptr, &(png_ptr->row_info));   if (png_ptr->write_row_fn != NULL)      (*(png_ptr->write_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);}#if defined(PNG_WRITE_FLUSH_SUPPORTED)/* Set the automatic flush interval or 0 to turn flushing off */void PNGAPIpng_set_flush(png_structp png_ptr, int nrows){   png_debug(1, "in png_set_flush\n");   png_ptr->flush_dist = (nrows < 0 ? 0 : nrows);}/* flush the current output buffers now */void PNGAPIpng_write_flush(png_structp png_ptr){   int wrote_IDAT;   png_debug(1, "in png_write_flush\n");   /* We have already written out all of the data */   if (png_ptr->row_number >= png_ptr->num_rows)     return;   do   {      int ret;      /* compress the data */      ret = deflate(&png_ptr->zstream, Z_SYNC_FLUSH);      wrote_IDAT = 0;      /* check for compression errors */      if (ret != Z_OK)      {         if (png_ptr->zstream.msg != NULL)            png_error(png_ptr, png_ptr->zstream.msg);         else            png_error(png_ptr, "zlib error");      }      if (!(png_ptr->zstream.avail_out))      {         /* write the IDAT and reset the zlib output buffer */         png_write_IDAT(png_ptr, png_ptr->zbuf,                        png_ptr->zbuf_size);         png_ptr->zstream.next_out = png_ptr->zbuf;         png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;         wrote_IDAT = 1;      }   } while(wrote_IDAT == 1);   /* If there is any data left to be output, write it into a new IDAT */   if (png_ptr->zbuf_size != png_ptr->zstream.avail_out)   {      /* write the IDAT and reset the zlib output buffer */      png_write_IDAT(png_ptr, png_ptr->zbuf,                     png_ptr->zbuf_size - png_ptr->zstream.avail_out);      png_ptr->zstream.next_out = png_ptr->zbuf;      png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;   }   png_ptr->flush_rows = 0;   png_flush(png_ptr);}#endif /* PNG_WRITE_FLUSH_SUPPORTED *//* free all memory used by the write */void PNGAPIpng_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr){   png_structp png_ptr = NULL;   png_infop info_ptr = NULL;#ifdef PNG_USER_MEM_SUPPORTED   png_free_ptr free_fn = NULL;#endif   png_debug(1, "in png_destroy_write_struct\n");   if (png_ptr_ptr != NULL)   {      png_ptr = *png_ptr_ptr;#ifdef PNG_USER_MEM_SUPPORTED      free_fn = png_ptr->free_fn;#endif   }   if (info_ptr_ptr != NULL)      info_ptr = *info_ptr_ptr;   if (info_ptr != NULL)   {      png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1);#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)      if (png_ptr->num_chunk_list)      {         png_free(png_ptr, png_ptr->chunk_list);         png_ptr->chunk_list=NULL;         png_ptr->num_chunk_list=0;      }#endif#ifdef PNG_USER_MEM_SUPPORTED      png_destroy_struct_2((png_voidp)info_ptr, free_fn);#else      png_destroy_struct((png_voidp)info_ptr);#endif      *info_ptr_ptr = (png_infop)NULL;   }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲18影院在线观看| 欧美电影免费提供在线观看| 欧美在线啊v一区| 欧美日韩在线观看一区二区| 欧美va亚洲va| 18涩涩午夜精品.www| 亚洲国产一区二区三区| 精品中文av资源站在线观看| 成人a免费在线看| 欧美无砖专区一中文字| 日韩美女视频一区二区在线观看| 国产日产欧美一区二区视频| 一区二区三区自拍| 精品一区二区三区久久久| av激情亚洲男人天堂| 在线不卡免费av| 国产欧美一区二区精品忘忧草 | 奇米影视一区二区三区小说| 国产一区二区不卡在线| 91高清在线观看| 久久蜜桃香蕉精品一区二区三区| 亚洲欧美成人一区二区三区| 久久99最新地址| 日本久久电影网| 久久人人爽人人爽| 亚洲国产欧美另类丝袜| 国产精华液一区二区三区| 欧美亚洲一区二区在线| 国产欧美日韩三级| 日韩精品每日更新| 97精品久久久久中文字幕 | 天堂久久久久va久久久久| 国产成都精品91一区二区三| 538prom精品视频线放| 亚洲欧美一区二区在线观看| 蓝色福利精品导航| 欧美午夜精品一区二区三区 | 懂色av一区二区夜夜嗨| 欧美日韩国产一级二级| 国产精品久久久久桃色tv| 美女网站色91| 欧美日韩国产色站一区二区三区| 日本一区二区三区在线观看| 日韩精品三区四区| 日本韩国精品在线| 国产精品免费视频网站| 激情久久久久久久久久久久久久久久| 色拍拍在线精品视频8848| 欧美高清在线精品一区| 蜜臀国产一区二区三区在线播放| 91久久奴性调教| 中文字幕一区二区三区蜜月| 国产成人在线网站| 亚洲精品一区在线观看| 欧美bbbbb| 欧美日韩国产一级片| 依依成人综合视频| 91麻豆免费视频| 欧美激情一区二区三区蜜桃视频| 久草精品在线观看| 欧美一区二区福利在线| 午夜欧美视频在线观看| 欧美优质美女网站| 亚洲精品免费一二三区| 成人av手机在线观看| 中文字幕不卡在线观看| 国产在线不卡一区| 欧美精品一区二区高清在线观看| 日韩精品1区2区3区| 欧美福利视频导航| 午夜精品久久久久久不卡8050| 91看片淫黄大片一级| 亚洲欧美日韩国产一区二区三区| a4yy欧美一区二区三区| 日韩美女视频一区二区| 成人黄色综合网站| 日韩美女啊v在线免费观看| 99视频精品全部免费在线| 一区在线观看视频| 97se亚洲国产综合在线| 综合激情网...| 91在线一区二区| 亚洲女人****多毛耸耸8| 日本精品一区二区三区四区的功能| 亚洲日本韩国一区| 欧美午夜精品久久久| 五月天中文字幕一区二区| 3d动漫精品啪啪1区2区免费 | 欧美日韩免费视频| 午夜欧美视频在线观看| 日韩欧美一级精品久久| 久久se精品一区精品二区| 久久九九久精品国产免费直播| 国产成人av网站| 亚洲三级在线免费| 欧美日韩久久久| 精品在线视频一区| 国产精品乱码久久久久久| 91网址在线看| 日韩制服丝袜先锋影音| 精品国产精品一区二区夜夜嗨| 国产精品69毛片高清亚洲| 中文字幕一区二区三区乱码在线| 欧洲精品一区二区| 青娱乐精品视频| 国产清纯白嫩初高生在线观看91| 成人av影院在线| 亚洲国产中文字幕| 精品久久久久香蕉网| 成人app网站| 亚洲国产综合视频在线观看| 精品盗摄一区二区三区| av电影在线观看一区| 石原莉奈一区二区三区在线观看| 欧美tickling挠脚心丨vk| aaa亚洲精品| 日韩精品亚洲专区| 久久理论电影网| 一本大道久久a久久精品综合| 日日夜夜精品视频免费| 久久精品视频网| 欧美在线视频你懂得| 九九国产精品视频| 亚洲六月丁香色婷婷综合久久| 欧美精品在线视频| 粗大黑人巨茎大战欧美成人| 亚洲成av人片在线观看无码| 久久精品一二三| 欧美日韩一二三| 福利一区二区在线观看| 婷婷夜色潮精品综合在线| 日本一区二区不卡视频| 欧美高清视频一二三区| 成人免费av在线| 奇米四色…亚洲| 亚洲裸体xxx| 久久精品一区二区三区不卡| 欧美高清视频不卡网| 成人午夜激情影院| 免费在线成人网| 亚洲天堂福利av| 精品久久久久99| 精品视频在线免费| 成人h动漫精品一区二区| 美女国产一区二区三区| 亚洲国产精品久久一线不卡| 国产精品久久久久久久久晋中 | 午夜精品福利在线| 亚洲国产成人一区二区三区| 欧美一卡二卡三卡四卡| 欧洲在线/亚洲| yourporn久久国产精品| 狠狠色丁香久久婷婷综合_中| 亚洲午夜私人影院| 亚洲欧美电影一区二区| 国产欧美一区二区精品忘忧草| 日韩一区二区高清| 欧美视频三区在线播放| 97精品国产露脸对白| 成人丝袜高跟foot| 国内精品久久久久影院色| 日本最新不卡在线| 亚洲综合网站在线观看| 国产精品污污网站在线观看| 精品成人佐山爱一区二区| 91精品久久久久久久91蜜桃| 欧亚洲嫩模精品一区三区| 91小视频免费观看| www.亚洲在线| 成人高清免费观看| 懂色av一区二区在线播放| 国产精品18久久久久久久网站| 蜜臀av性久久久久蜜臀aⅴ四虎| 午夜伦欧美伦电影理论片| 亚洲一区二区三区四区中文字幕| 最新不卡av在线| 国产精品福利一区| 国产精品久久福利| 国产精品福利一区二区三区| 国产精品天美传媒| 中文字幕电影一区| 国产精品久久久久一区二区三区共| 久久综合成人精品亚洲另类欧美| 日韩一二三四区| 日韩三级在线免费观看| 欧美一区二区三区免费大片| 91精品国产高清一区二区三区 | 麻豆国产91在线播放| 美女被吸乳得到大胸91| 麻豆国产精品官网| 激情文学综合插| 国产成人午夜片在线观看高清观看| 国产综合久久久久影院| 国产成人精品www牛牛影视| 成人视屏免费看| 91亚洲精品乱码久久久久久蜜桃| 色综合久久天天综合网| 欧美影院一区二区三区| 777奇米成人网| 精品国产网站在线观看|