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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pngvcrd.c

?? Qt/Embedded是一個多平臺的C++圖形用戶界面應(yīng)用程序框架
?? 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.7 - July 1, 2000 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson * Copyright (c) 1998, Intel Corporation * * Contributed by Nirav Chhatrapati, Intel Corporation, 1998 * Interface to libpng contributed by Gilles Vollant, 1999 * */#define PNG_INTERNAL#include "png.h"#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) && defined(PNG_USE_PNGVCRD)/*   One of these might need to be defined.#define DISABLE_PNGVCRD_COMBINE#define DISABLE_PNGVCRD_INTERLACE*/static int mmx_supported=2;void /* PRIVATE */png_read_filter_row_c(png_structp png_ptr, png_row_infop row_info,   png_bytep row, png_bytep prev_row, int filter);static int mmxsupport(){  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);  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#ifdef DISABLE_PNGVCRD_COMBINE   int save_mmx_supported = mmx_supported;#endif   png_debug(1,"in png_combine_row_asm\n");#ifdef DISABLE_PNGVCRD_COMBINE   if ((png_ptr->transformations & PNG_INTERLACE) && png_ptr->pass != 6)       mmx_supported = 0;   else#endif       if (mmx_supported == 2)           mmx_supported = mmxsupport();   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;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂成人国产精品一区| 久久天堂av综合合色蜜桃网| 亚洲欧洲国产日韩| 99re这里只有精品视频首页| 亚洲欧美影音先锋| 欧美色综合网站| 日日欢夜夜爽一区| 精品少妇一区二区三区在线播放| 国产在线视频不卡二| 国产欧美日韩另类一区| 99精品久久久久久| 五月天亚洲精品| 欧美变态凌虐bdsm| 成人99免费视频| 亚洲综合网站在线观看| 欧美一区二区三区视频| 国产成人综合精品三级| 一区二区三区免费看视频| 欧美一区二区三区小说| 国产成人精品亚洲午夜麻豆| 亚洲男人的天堂网| 日韩精品一区二区三区四区视频 | 日韩欧美在线一区二区三区| 国产伦精一区二区三区| 椎名由奈av一区二区三区| 欧美三级电影在线观看| 精品午夜一区二区三区在线观看| 久久久午夜电影| 91久久精品一区二区二区| 久久精品av麻豆的观看方式| 国产精品视频一区二区三区不卡| 欧美日韩美女一区二区| 国产剧情一区二区| 五月开心婷婷久久| 亚洲国产精品成人综合色在线婷婷| 丁香婷婷综合网| 欧美a级理论片| 日韩欧美123| 午夜激情综合网| 91久久国产最好的精华液| 精品国产三级电影在线观看| 91精品国产福利| 亚洲国产精品精华液ab| 亚洲视频每日更新| 欧美岛国在线观看| 99久久99久久综合| 日韩一区二区精品在线观看| 日韩不卡一区二区| 依依成人精品视频| 久久无码av三级| 不卡在线观看av| 日韩免费一区二区三区在线播放| 美腿丝袜亚洲一区| 欧美激情一区二区| 另类小说一区二区三区| 成人免费毛片app| 久久你懂得1024| 国产在线一区二区| 国产精品欧美综合在线| 不卡视频在线观看| 一区二区三区在线观看动漫 | 国产精品亚洲视频| 国产日韩亚洲欧美综合| 91麻豆精品国产无毒不卡在线观看| 激情五月婷婷综合网| 一区二区三区在线播| 欧美精品tushy高清| 麻豆极品一区二区三区| 国产精品久久久一区麻豆最新章节| 91色在线porny| 亚洲一卡二卡三卡四卡五卡| 欧美这里有精品| 国内精品不卡在线| 亚洲色图欧美偷拍| 精品国产电影一区二区| 亚洲图片欧美综合| 亚洲乱码一区二区三区在线观看| 国产在线精品一区二区不卡了 | 精品日韩一区二区三区免费视频| 国产精品美女久久久久久| 国产成人av福利| 99精品热视频| 成人app下载| kk眼镜猥琐国模调教系列一区二区| 1区2区3区精品视频| 久久久久久综合| 99视频有精品| 成人免费视频免费观看| 欧美乱熟臀69xxxxxx| 色猫猫国产区一区二在线视频| 国产精品一区二区免费不卡 | 久久99国产精品久久| 麻豆91在线播放| 国产在线精品免费av| 国产成人自拍在线| 色综合久久综合网97色综合| 欧美综合亚洲图片综合区| 欧美二区三区91| 精品国产髙清在线看国产毛片| 久久久久久夜精品精品免费| 国产精品沙发午睡系列990531| 亚洲天堂成人在线观看| 一区二区三区欧美| 免费日本视频一区| 国产91色综合久久免费分享| 9l国产精品久久久久麻豆| 欧美三级午夜理伦三级中视频| 91精品国产91久久综合桃花| 久久综合av免费| 亚洲日本护士毛茸茸| 日本在线播放一区二区三区| 成人影视亚洲图片在线| 欧美亚洲综合在线| www国产精品av| 夜夜精品视频一区二区| 久久99精品视频| 99精品欧美一区| 日韩欧美成人激情| 综合在线观看色| 麻豆国产精品一区二区三区| 成人美女在线视频| 欧美精品成人一区二区三区四区| 久久九九国产精品| 亚洲高清视频中文字幕| 国产精品一区二区久激情瑜伽 | 不卡高清视频专区| 3751色影院一区二区三区| 国产精品美女久久久久aⅴ| 日韩av电影免费观看高清完整版 | 日韩欧美一级片| 日韩一区有码在线| 另类小说欧美激情| 97久久超碰国产精品电影| 欧美成人精品高清在线播放| 亚洲一区二区精品视频| 国产精品一区二区免费不卡 | 日本精品裸体写真集在线观看| 日韩欧美成人一区二区| 亚洲高清在线视频| 99视频热这里只有精品免费| 日韩免费一区二区| 婷婷开心久久网| 成人app网站| 2021国产精品久久精品| 视频一区二区国产| 日本丰满少妇一区二区三区| 国产日韩三级在线| 免播放器亚洲一区| 884aa四虎影成人精品一区| 自拍偷拍国产精品| 成人国产在线观看| 久久久亚洲综合| 久久精品国产亚洲aⅴ| 欧美精品精品一区| 亚洲成人免费av| 在线亚洲精品福利网址导航| 国产精品美女久久久久高潮| 国产一二精品视频| 精品国产三级电影在线观看| 奇米色一区二区三区四区| 91精品国产一区二区三区香蕉| 午夜天堂影视香蕉久久| 精品视频1区2区| 亚洲成a人v欧美综合天堂下载| 欧美性生交片4| 亚洲电影在线免费观看| 精品污污网站免费看| 亚洲影院久久精品| 欧美日韩在线播放一区| 亚洲成av人片在线| 欧美乱妇23p| 蜜桃精品视频在线| 精品女同一区二区| 国产精品综合视频| 中文字幕精品在线不卡| 国产99精品视频| 亚洲人精品午夜| 在线观看日韩国产| 秋霞成人午夜伦在线观看| 精品电影一区二区三区| 国产精品一区二区在线看| 中文一区在线播放| 色噜噜夜夜夜综合网| 午夜免费欧美电影| 欧美成人激情免费网| 国产成人aaa| 一区二区不卡在线播放| 欧美一区二区在线不卡| 精品一区免费av| 中文字幕精品一区| 欧美视频在线播放| 免费观看在线色综合| 欧美国产日韩亚洲一区| 色狠狠色噜噜噜综合网| 六月婷婷色综合| 国产精品久久久久婷婷| 欧美网站大全在线观看| 狠狠色狠狠色合久久伊人| 1000部国产精品成人观看| 欧美日韩激情一区二区|