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

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

?? pngvcrd.c

?? qt-x11-free-3.0.3.tar.gz minigui圖形界面工具
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* pngvcrd.c - mixed C/assembler version of utilities to read a PNG file * * For Intel x86 CPU and Microsoft Visual C++ compiler * * libpng 1.0.12 - June 8, 2001 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2001 Glenn Randers-Pehrson * Copyright (c) 1998, Intel Corporation * * Contributed by Nirav Chhatrapati, Intel Corporation, 1998 * Interface to libpng contributed by Gilles Vollant, 1999 * Debugging and cleanup by Greg Roelofs, 2000, 2001 * * In png_do_read_interlace() in libpng versions 1.0.3a through 1.0.4d, * a sign error in the post-MMX cleanup code for each pixel_depth resulted * in bad pixels at the beginning of some rows of some images, and also * (due to out-of-range memory reads and writes) caused heap corruption * when compiled with MSVC 6.0.  The error was fixed in version 1.0.4e. * * [png_read_filter_row_mmx_avg() bpp == 2 bugfix, GRR 20000916] * */#define PNG_INTERNAL#include "png.h"#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) && defined(PNG_USE_PNGVCRD)static int mmx_supported=2;int PNGAPIpng_mmx_support(void){  int mmx_supported_local = 0;  _asm {    push ebx          //CPUID will trash these    push ecx    push edx    pushfd            //Save Eflag to stack    pop eax           //Get Eflag from stack into eax    mov ecx, eax      //Make another copy of Eflag in ecx    xor eax, 0x200000 //Toggle ID bit in Eflag [i.e. bit(21)]    push eax          //Save modified Eflag back to stack    popfd             //Restored modified value back to Eflag reg    pushfd            //Save Eflag to stack    pop eax           //Get Eflag from stack    xor eax, ecx      //Compare the new Eflag with the original Eflag    jz NOT_SUPPORTED  //If the same, CPUID instruction is not supported,                      //skip following instructions and jump to                      //NOT_SUPPORTED label    xor eax, eax      //Set eax to zero    _asm _emit 0x0f   //CPUID instruction  (two bytes opcode)    _asm _emit 0xa2    cmp eax, 1        //make sure eax return non-zero value    jl NOT_SUPPORTED  //If eax is zero, mmx not supported    xor eax, eax      //set eax to zero    inc eax           //Now increment eax to 1.  This instruction is                      //faster than the instruction "mov eax, 1"    _asm _emit 0x0f   //CPUID instruction    _asm _emit 0xa2    and edx, 0x00800000  //mask out all bits but mmx bit(24)    cmp edx, 0        // 0 = mmx not supported    jz  NOT_SUPPORTED // non-zero = Yes, mmx IS supported    mov  mmx_supported_local, 1  //set return value to 1NOT_SUPPORTED:    mov  eax, mmx_supported_local  //move return value to eax    pop edx          //CPUID trashed these    pop ecx    pop ebx  }  //mmx_supported_local=0; // test code for force don't support MMX  //printf("MMX : %u (1=MMX supported)\n",mmx_supported_local);  mmx_supported = mmx_supported_local;  return mmx_supported_local;}/* Combines the row recently read in with the previous row.   This routine takes care of alpha and transparency if requested.   This routine also handles the two methods of progressive display   of interlaced images, depending on the mask value.   The mask value describes which pixels are to be combined with   the row.  The pattern always repeats every 8 pixels, so just 8   bits are needed.  A one indicates the pixel is to be combined; a   zero indicates the pixel is to be skipped.  This is in addition   to any alpha or transparency value associated with the pixel.  If   you want all pixels to be combined, pass 0xff (255) in mask.  *//* Use this routine for x86 platform - uses faster MMX routine if machine   supports MMX */void /* PRIVATE */png_combine_row(png_structp png_ptr, png_bytep row, int mask){#ifdef PNG_USE_LOCAL_ARRAYS   const int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};#endif   png_debug(1,"in png_combine_row_asm\n");   if (mmx_supported == 2) {       png_mmx_support();   }   if (mask == 0xff)   {      png_memcpy(row, png_ptr->row_buf + 1,       (png_size_t)((png_ptr->width * png_ptr->row_info.pixel_depth + 7) >> 3));   }   /* GRR:  add "else if (mask == 0)" case?    *       or does png_combine_row() not even get called in that case? */   else   {      switch (png_ptr->row_info.pixel_depth)      {         case 1:         {            png_bytep sp;            png_bytep dp;            int s_inc, s_start, s_end;            int m;            int shift;            png_uint_32 i;            sp = png_ptr->row_buf + 1;            dp = row;            m = 0x80;#if defined(PNG_READ_PACKSWAP_SUPPORTED)            if (png_ptr->transformations & PNG_PACKSWAP)            {                s_start = 0;                s_end = 7;                s_inc = 1;            }            else#endif            {                s_start = 7;                s_end = 0;                s_inc = -1;            }            shift = s_start;            for (i = 0; i < png_ptr->width; i++)            {               if (m & mask)               {                  int value;                  value = (*sp >> shift) & 0x1;                  *dp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff);                  *dp |= (png_byte)(value << shift);               }               if (shift == s_end)               {                  shift = s_start;                  sp++;                  dp++;               }               else                  shift += s_inc;               if (m == 1)                  m = 0x80;               else                  m >>= 1;            }            break;         }         case 2:         {            png_bytep sp;            png_bytep dp;            int s_start, s_end, s_inc;            int m;            int shift;            png_uint_32 i;            int value;            sp = png_ptr->row_buf + 1;            dp = row;            m = 0x80;#if defined(PNG_READ_PACKSWAP_SUPPORTED)            if (png_ptr->transformations & PNG_PACKSWAP)            {               s_start = 0;               s_end = 6;               s_inc = 2;            }            else#endif            {               s_start = 6;               s_end = 0;               s_inc = -2;            }            shift = s_start;            for (i = 0; i < png_ptr->width; i++)            {               if (m & mask)               {                  value = (*sp >> shift) & 0x3;                  *dp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);                  *dp |= (png_byte)(value << shift);               }               if (shift == s_end)               {                  shift = s_start;                  sp++;                  dp++;               }               else                  shift += s_inc;               if (m == 1)                  m = 0x80;               else                  m >>= 1;            }            break;         }         case 4:         {            png_bytep sp;            png_bytep dp;            int s_start, s_end, s_inc;            int m;            int shift;            png_uint_32 i;            int value;            sp = png_ptr->row_buf + 1;            dp = row;            m = 0x80;#if defined(PNG_READ_PACKSWAP_SUPPORTED)            if (png_ptr->transformations & PNG_PACKSWAP)            {               s_start = 0;               s_end = 4;               s_inc = 4;            }            else#endif            {               s_start = 4;               s_end = 0;               s_inc = -4;            }            shift = s_start;            for (i = 0; i < png_ptr->width; i++)            {               if (m & mask)               {                  value = (*sp >> shift) & 0xf;                  *dp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);                  *dp |= (png_byte)(value << shift);               }               if (shift == s_end)               {                  shift = s_start;                  sp++;                  dp++;               }               else                  shift += s_inc;               if (m == 1)                  m = 0x80;               else                  m >>= 1;            }            break;         }         case 8:         {            png_bytep srcptr;            png_bytep dstptr;            png_uint_32 len;            int m;            int diff, unmask;            __int64 mask0=0x0102040810204080;            if ( mmx_supported )            {               srcptr = png_ptr->row_buf + 1;               dstptr = row;               m = 0x80;               unmask = ~mask;               len  = png_ptr->width &~7;  //reduce to multiple of 8               diff = png_ptr->width & 7;  //amount lost               _asm               {                  movd       mm7, unmask   //load bit pattern                  psubb      mm6,mm6       //zero mm6                  punpcklbw  mm7,mm7                  punpcklwd  mm7,mm7                  punpckldq  mm7,mm7       //fill register with 8 masks                  movq       mm0,mask0                  pand       mm0,mm7       //nonzero if keep byte                  pcmpeqb    mm0,mm6       //zeros->1s, v versa                  mov        ecx,len       //load length of line (pixels)                  mov        esi,srcptr    //load source                  mov        ebx,dstptr    //load dest                  cmp        ecx,0         //lcr                  je         mainloop8endmainloop8:                  movq       mm4,[esi]                  pand       mm4,mm0                  movq       mm6,mm0                  pandn      mm6,[ebx]                  por        mm4,mm6                  movq       [ebx],mm4                  add        esi,8         //inc by 8 bytes processed                  add        ebx,8                  sub        ecx,8         //dec by 8 pixels processed                  ja         mainloop8mainloop8end:                  mov        ecx,diff                  cmp        ecx,0                  jz         end8                  mov        edx,mask                  sal        edx,24        //make low byte the high bytesecondloop8:                  sal        edx,1         //move high bit to CF                  jnc        skip8         //if CF = 0                  mov        al,[esi]                  mov        [ebx],alskip8:                  inc        esi                  inc        ebx                  dec        ecx                  jnz        secondloop8end8:                  emms               }            }            else /* mmx not supported - use modified C routine */            {               register unsigned int incr1, initial_val, final_val;               png_size_t pixel_bytes;               png_uint_32 i;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美乱码久久久久久1区2区| 国产日韩综合av| 国产资源在线一区| 亚洲宅男天堂在线观看无病毒| 日韩亚洲欧美高清| 97久久人人超碰| 国产一区亚洲一区| 亚洲成人自拍偷拍| 中文字幕日韩一区二区| 久久伊人蜜桃av一区二区| 欧美人牲a欧美精品| 成人高清av在线| 国产一区二区视频在线| 五月天亚洲婷婷| 亚洲精品大片www| 国产精品久久久久久久浪潮网站| 精品久久久久久亚洲综合网| 欧美日韩国产美女| 欧美专区日韩专区| 99精品桃花视频在线观看| 国产精品99久久久久久有的能看| 丝袜脚交一区二区| 亚洲一区二区三区免费视频| 亚洲视频一二三区| 亚洲婷婷综合色高清在线| 国产亚洲综合在线| 精品乱人伦一区二区三区| 欧美精品123区| 欧美三级乱人伦电影| 色欧美88888久久久久久影院| 成人爽a毛片一区二区免费| 国产乱人伦偷精品视频免下载| 日韩av在线播放中文字幕| 偷拍亚洲欧洲综合| 日日摸夜夜添夜夜添国产精品| 亚洲综合激情另类小说区| 亚洲美女免费在线| 国产精品久久久久久久久搜平片| 国产欧美日韩麻豆91| 久久久99精品久久| 国产丝袜欧美中文另类| 欧美国产日本韩| 国产精品欧美综合在线| 国产视频在线观看一区二区三区| 国产网红主播福利一区二区| 国产三级精品三级| 日本一二三四高清不卡| 国产精品色噜噜| 亚洲天堂2016| 一区二区在线电影| 亚洲高清在线精品| 久久国产夜色精品鲁鲁99| 精品无人区卡一卡二卡三乱码免费卡 | 日本一区二区三区四区| 久久久久久久久久久久久久久99 | 天天影视色香欲综合网老头| 五月婷婷综合激情| 极品美女销魂一区二区三区免费| 久久国产福利国产秒拍| 国产激情精品久久久第一区二区 | 亚洲六月丁香色婷婷综合久久 | 99久久99久久免费精品蜜臀| 91国产视频在线观看| 欧美精品日韩精品| 欧美精品在欧美一区二区少妇| 欧美一区午夜视频在线观看| wwwwww.欧美系列| 亚洲国产成人午夜在线一区| 亚洲裸体在线观看| 日韩国产欧美三级| 国产不卡视频一区| 在线中文字幕一区二区| 日韩精品一区二区三区四区| 国产精品久久久久一区二区三区| 亚洲综合av网| 国产一区二区三区四区五区美女| 99国产精品一区| 欧美一区二区免费视频| 国产日韩欧美精品综合| 亚洲愉拍自拍另类高清精品| 久久国产生活片100| 99riav久久精品riav| 91精品国产福利| 国产婷婷色一区二区三区四区 | 国产99久久久国产精品潘金| 欧洲日韩一区二区三区| 日韩精品一区二区三区四区 | 日韩精品专区在线| 亚洲激情av在线| 国产专区欧美精品| 欧美三级电影网站| 国产精品美女久久久久av爽李琼| 亚洲一区av在线| 高清国产午夜精品久久久久久| 欧美日韩成人综合| 国产精品国产a级| 激情综合亚洲精品| 欧美乱熟臀69xxxxxx| 中文欧美字幕免费| 免费成人在线观看| 日本道色综合久久| 日本一区二区三级电影在线观看 | 亚洲国产一二三| 成人高清视频在线| 欧美变态凌虐bdsm| 午夜私人影院久久久久| 色综合久久99| 国产精品丝袜久久久久久app| 蜜桃传媒麻豆第一区在线观看| 色婷婷激情一区二区三区| 久久久国际精品| 久久99热这里只有精品| 欧美女孩性生活视频| 国产精品久久久久久久久久免费看| 精品一区二区免费| 日韩美一区二区三区| 亚洲.国产.中文慕字在线| 色综合久久久久综合| 国产精品传媒入口麻豆| 风间由美一区二区av101| 欧美xxxxx牲另类人与| 秋霞午夜av一区二区三区| 欧美日韩一区二区电影| 亚洲永久精品国产| 日本久久电影网| 一区二区三区在线免费视频| 欧美另类高清zo欧美| 亚洲乱码中文字幕综合| 99久久国产综合精品麻豆| 国产精品网站在线播放| 成人av在线影院| 中文字幕精品在线不卡| 成人性视频免费网站| 欧美国产综合色视频| 成人免费视频一区| 国产精品卡一卡二卡三| fc2成人免费人成在线观看播放| 国产色综合久久| 成人久久18免费网站麻豆| 国产精品视频一二三| 波多野结衣的一区二区三区| 国产精品国产三级国产aⅴ原创 | 99久久国产综合色|国产精品| 国产精品日日摸夜夜摸av| 国产成人aaaa| 综合久久一区二区三区| 欧美综合亚洲图片综合区| 亚洲国产毛片aaaaa无费看| 欧美日韩国产高清一区二区三区| 日韩精品电影在线观看| 日韩精品最新网址| 国产suv精品一区二区6| 亚洲欧美一区二区三区极速播放| 色94色欧美sute亚洲线路二| 午夜一区二区三区在线观看| 欧美一级夜夜爽| 国产乱国产乱300精品| 国产精品理论片在线观看| 91精品福利在线| 蜜臀a∨国产成人精品| 久久久噜噜噜久久中文字幕色伊伊| 福利电影一区二区三区| 国产精品白丝在线| 欧美日韩国产综合草草| 精品亚洲成a人| 最新久久zyz资源站| 欧美丰满少妇xxxbbb| 黄页视频在线91| 亚洲乱码精品一二三四区日韩在线| 欧美高清视频不卡网| 国产精品一卡二| 一区二区高清免费观看影视大全| 91精品国产丝袜白色高跟鞋| 国产成人aaa| 天堂一区二区在线免费观看| 国产丝袜欧美中文另类| 欧美亚洲综合久久| 国产一区二区三区黄视频| 一区二区三区在线免费| 日韩无一区二区| 91丨九色porny丨蝌蚪| 蜜桃久久久久久| 亚洲人精品午夜| 久久综合狠狠综合久久激情| 91老师片黄在线观看| 久久精品免费看| 午夜久久久久久久久| 国产免费观看久久| 欧美一区二区三区四区视频| 成人av在线电影| 看电视剧不卡顿的网站| 一区二区三区在线观看网站| 久久精品亚洲麻豆av一区二区| 欧美日韩视频第一区| 成人午夜又粗又硬又大| 青青草原综合久久大伊人精品 | 久久久不卡网国产精品二区| 欧美色图免费看| 成人精品国产免费网站| 爽好久久久欧美精品|