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

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

?? pngvcrd.c

?? Qt/Embedded是一個多平臺的C++圖形用戶界面應用程序框架
?? 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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久精品麻豆| 欧美色老头old∨ideo| 免费久久99精品国产| 亚洲美女一区二区三区| 一区二区三区在线免费| 亚洲综合一区二区三区| 亚洲亚洲人成综合网络| 亚洲成人综合在线| 理论片日本一区| 国产精品一区二区果冻传媒| 风间由美一区二区三区在线观看| 国产精品亚洲视频| www.日韩在线| 日本久久一区二区三区| 777奇米四色成人影色区| 欧美大片国产精品| 亚洲国产成人午夜在线一区| 亚洲视频免费在线| 性久久久久久久久| 激情综合网天天干| 成人av电影在线观看| 在线精品视频免费播放| 欧美一区二区三区不卡| 久久一区二区三区国产精品| 亚洲视频免费看| 麻豆精品新av中文字幕| www.亚洲在线| 欧美v日韩v国产v| 日韩理论片在线| 日韩二区三区四区| 不卡一卡二卡三乱码免费网站 | 欧美日韩在线播放一区| 欧美一区二区私人影院日本| 亚洲国产精品激情在线观看| 亚洲高清不卡在线| www.亚洲色图| 精品sm捆绑视频| 亚洲主播在线播放| 国产成人自拍网| 欧美视频精品在线观看| 久久久一区二区| 亚洲午夜久久久久久久久电影网 | 欧美精品一区在线观看| 亚洲日本丝袜连裤袜办公室| 麻豆视频一区二区| 色狠狠色噜噜噜综合网| 国产日韩视频一区二区三区| 亚洲国产人成综合网站| 成人黄色小视频| 日韩欧美国产三级| 污片在线观看一区二区| 91免费观看国产| 国产人成一区二区三区影院| 人人狠狠综合久久亚洲| 欧美在线视频日韩| 亚洲欧美综合在线精品| 成人毛片老司机大片| 久久精品在线免费观看| 韩国成人精品a∨在线观看| 欧美人体做爰大胆视频| 洋洋成人永久网站入口| 一本一道综合狠狠老| 国产精品沙发午睡系列990531| 久久av中文字幕片| 日韩欧美一级在线播放| 青青草国产成人av片免费| 在线一区二区三区四区五区| 亚洲欧美日韩在线| 色综合天天综合| 日韩美女精品在线| 91免费版pro下载短视频| 成人欧美一区二区三区1314| 99久久婷婷国产综合精品电影 | 亚洲柠檬福利资源导航| av在线播放成人| 中文字幕在线观看一区| 99久久综合精品| 中文字幕在线不卡一区二区三区 | 一区二区三区中文在线观看| 91网站黄www| 一区二区激情视频| 欧美日韩专区在线| 免费在线观看一区| 久久亚洲二区三区| 成人高清视频在线| 亚洲精品欧美专区| 911精品产国品一二三产区| 日本中文字幕不卡| 国产日韩在线不卡| 91网址在线看| 肉色丝袜一区二区| 精品国产亚洲在线| 97久久人人超碰| 日韩av成人高清| 精品99一区二区| 91麻豆国产在线观看| 日韩一区精品字幕| 久久久久久久电影| 色偷偷88欧美精品久久久| 丝瓜av网站精品一区二区| 精品少妇一区二区三区日产乱码| 国产一区二区三区免费观看| 亚洲视频免费看| 日韩免费看网站| 不卡的看片网站| 日产国产欧美视频一区精品 | 色菇凉天天综合网| 久久精品国产一区二区| 国产精品久久久久久久久久免费看 | 日韩欧美123| 成人激情午夜影院| 亚洲电影你懂得| 欧美国产在线观看| 欧美军同video69gay| 国产激情视频一区二区三区欧美| 一区二区三区在线视频观看 | 久久亚洲欧美国产精品乐播| 欧美在线短视频| 国产91丝袜在线播放| 免费人成精品欧美精品| 亚洲欧美电影一区二区| 亚洲国产经典视频| 日韩免费一区二区| 欧美日韩一区二区三区在线| 国产成人aaa| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品伦一区| 久久久精品黄色| 日韩精品一区二区三区视频播放 | 日本vs亚洲vs韩国一区三区二区| 国产精品第一页第二页第三页 | 国产综合色视频| 亚洲观看高清完整版在线观看| 久久久久久久久久久黄色| 88在线观看91蜜桃国自产| 在线亚洲欧美专区二区| 粉嫩aⅴ一区二区三区四区| 精品影视av免费| 青青草精品视频| 亚洲成人激情自拍| 夜夜嗨av一区二区三区四季av| 成人免费小视频| 国产午夜精品在线观看| 精品国产髙清在线看国产毛片 | 久久99精品久久久久久动态图| 亚洲伦理在线精品| 亚洲狼人国产精品| 亚洲私人黄色宅男| 最新中文字幕一区二区三区| 国产精品三级av在线播放| 国产视频视频一区| 国产精品天干天干在观线| 一区视频在线播放| 国产蜜臀97一区二区三区| 337p日本欧洲亚洲大胆精品 | 亚洲欧美另类久久久精品| 亚洲色图在线视频| 亚洲综合色网站| 日韩在线观看一区二区| 久久99精品国产麻豆婷婷| 国产成人综合在线观看| 不卡的av中国片| 91首页免费视频| 在线观看视频一区二区| 欧美久久久一区| 日韩女优视频免费观看| 国产欧美日韩综合| 一区二区高清视频在线观看| 亚洲韩国精品一区| 日本成人中文字幕在线视频| 国产一区二区三区黄视频| 成人动漫av在线| 欧美午夜片在线观看| 欧美一区午夜精品| 国产精品日韩成人| 亚洲一区二区三区三| 日本视频一区二区| 国产精品综合在线视频| 99精品久久99久久久久| 欧美老肥妇做.爰bbww视频| 久久久久久久网| 亚洲免费大片在线观看| 久久疯狂做爰流白浆xx| 91麻豆免费在线观看| 日韩精品自拍偷拍| 亚洲欧美电影院| 精品无人码麻豆乱码1区2区 | 亚洲一区二区不卡免费| 久久超碰97中文字幕| 91婷婷韩国欧美一区二区| 日韩欧美一级二级| 亚洲欧洲综合另类在线| 韩国av一区二区三区在线观看| kk眼镜猥琐国模调教系列一区二区| 欧美日韩一本到| 国产精品高潮久久久久无| 久久国产精品99精品国产 | 国产精品一卡二卡在线观看| 欧美日韩精品一区二区在线播放| 久久久久久一级片|