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

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

?? pngvcrd.c

?? qt專門用于嵌入式的圖形開發GUI
?? 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 version 1.2.5 - October 3, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * Copyright (c) 1998, Intel Corporation * * Contributed by Nirav Chhatrapati, Intel Corporation, 1998 * Interface to libpng contributed by Gilles Vollant, 1999 * * * 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] * * [runtime MMX configuration, GRR 20010102] * */#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    push ecx          // save original Eflag to stack    popfd             // restore original Eflag    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) {       /* this should have happened in png_init_mmx_flags() already */       png_warning(png_ptr, "asm_flags may not have been initialized");       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 ((png_ptr->asm_flags & PNG_ASM_FLAG_MMX_READ_COMBINE_ROW)                /* && 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:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男女性色大片免费观看一区二区| 色94色欧美sute亚洲线路一ni| 99国产麻豆精品| 51午夜精品国产| 亚洲色图.com| 国产一区二三区好的| 欧美专区在线观看一区| 国产蜜臀av在线一区二区三区| 日韩精品成人一区二区在线| 91亚洲永久精品| 国产欧美日韩精品a在线观看| 日本美女视频一区二区| 在线免费精品视频| 亚洲精品写真福利| av成人老司机| 中文一区在线播放| 国产91高潮流白浆在线麻豆| 精品久久免费看| 捆绑变态av一区二区三区| 欧美高清视频不卡网| 亚洲综合久久久| 91亚洲精品一区二区乱码| 中文字幕av资源一区| 福利电影一区二区| 国产午夜亚洲精品不卡| 国产一区二区看久久| 久久亚洲一区二区三区明星换脸| 久久国产尿小便嘘嘘| 日韩美女一区二区三区| 久久99久久久久| 337p粉嫩大胆噜噜噜噜噜91av| 久久电影网站中文字幕| 久久综合久久鬼色| 国产一区二区导航在线播放| 亚洲精品在线电影| 国产成人啪免费观看软件| 国产午夜精品久久久久久免费视| 国产精品69毛片高清亚洲| 国产婷婷色一区二区三区在线| 国产suv一区二区三区88区| 国产日韩综合av| 99综合电影在线视频| 亚洲精品中文字幕在线观看| 色婷婷av一区二区三区gif| 亚洲日本电影在线| 色综合久久综合中文综合网| 亚洲一区二区中文在线| 欧美日韩中文另类| 久久精品国产99国产精品| 久久久国产精品不卡| 99久久免费国产| 亚洲福利视频三区| 精品成人一区二区三区四区| 国产91综合网| 亚洲综合色丁香婷婷六月图片| 欧美蜜桃一区二区三区| 国内精品久久久久影院薰衣草| 欧美激情在线一区二区三区| 色激情天天射综合网| 日韩精品成人一区二区在线| 久久综合色8888| 色噜噜狠狠色综合欧洲selulu| 五月天激情综合网| 欧美极品xxx| 51午夜精品国产| www.成人在线| 韩国女主播成人在线观看| 中文字幕日本乱码精品影院| 欧美日韩国产一级片| 国产麻豆精品在线| 亚洲成人激情自拍| 国产欧美日韩久久| 欧美一区在线视频| av不卡免费在线观看| 麻豆精品一区二区综合av| 亚洲少妇中出一区| 精品福利av导航| 欧美色精品在线视频| 成人性生交大片免费看中文网站| 一区二区三区四区国产精品| 久久精品综合网| 欧美精品777| 色噜噜狠狠色综合欧洲selulu| 韩国三级在线一区| 日韩黄色免费电影| 一区二区国产视频| 久久久久久久久久久99999| 欧美日韩国产综合视频在线观看| 成人免费的视频| 精品一二线国产| 欧美aaaaa成人免费观看视频| 亚洲欧洲精品一区二区三区| 久久综合九色欧美综合狠狠| 欧美日韩免费观看一区三区| 色综合视频在线观看| 成人少妇影院yyyy| 国产一区二区久久| 九色|91porny| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲综合激情网| 亚洲精品欧美专区| 亚洲日本丝袜连裤袜办公室| 国产精品嫩草99a| 久久精品视频在线看| 日韩欧美国产一二三区| 欧美肥大bbwbbw高潮| 欧美日韩久久久久久| 91久久免费观看| 91久久精品国产91性色tv| 色综合久久九月婷婷色综合| 99视频精品全部免费在线| 暴力调教一区二区三区| 成人黄页在线观看| 97se狠狠狠综合亚洲狠狠| 99视频一区二区三区| 91免费观看视频在线| 久久色视频免费观看| 久久亚洲二区三区| 国产日产欧美一区二区三区| 国产欧美日韩三区| 91福利视频久久久久| 在线观看日韩一区| 欧美午夜精品一区二区三区| 欧美在线观看18| 免费观看在线色综合| 九九视频精品免费| 国产传媒一区在线| 亚洲视频在线观看一区| 裸体在线国模精品偷拍| 在线影视一区二区三区| 国产欧美精品一区aⅴ影院 | 精品久久久久久久久久久久久久久| 国产精品久久久久桃色tv| 久久成人综合网| 欧美日本高清视频在线观看| 亚洲国产精品精华液2区45| 免费久久99精品国产| 91福利资源站| 国产精品麻豆欧美日韩ww| 欧美aaaaa成人免费观看视频| 色猫猫国产区一区二在线视频| 中文字幕的久久| 国内精品久久久久影院色| 6080亚洲精品一区二区| 亚洲精品综合在线| 94-欧美-setu| 中文字幕国产一区| 国产黄色成人av| 精品第一国产综合精品aⅴ| 人人爽香蕉精品| 欧美日韩极品在线观看一区| 亚洲精品福利视频网站| 91麻豆高清视频| 中文字幕中文乱码欧美一区二区| 国产精品亚洲专一区二区三区| 欧美va亚洲va在线观看蝴蝶网| 亚洲第一福利视频在线| 欧美亚洲动漫精品| 亚洲一区二区av在线| 欧美亚洲图片小说| 亚洲一级不卡视频| 欧美日韩一区在线| 亚洲成人手机在线| 4438x成人网最大色成网站| 亚洲国产日韩精品| 欧美乱熟臀69xxxxxx| 午夜精品久久久久久久久久| 欧美三级视频在线| 五月婷婷色综合| 欧美一级艳片视频免费观看| 免费高清在线一区| www成人在线观看| 国产激情一区二区三区四区 | 午夜av电影一区| 在线播放视频一区| 精久久久久久久久久久| 久久久99免费| 成人动漫一区二区在线| 中文字幕在线免费不卡| 91成人免费网站| 日本强好片久久久久久aaa| 欧美不卡在线视频| 成人午夜激情在线| 一区二区三区在线观看国产| 欧美伊人久久久久久久久影院| 亚洲va中文字幕| 精品国产乱码91久久久久久网站| 国产河南妇女毛片精品久久久| 国产亚洲精品久| 色欧美日韩亚洲| 欧美aaa在线| 欧美激情一二三区| 欧美午夜片在线看| 激情文学综合网| 国产精品电影一区二区三区| 欧美男生操女生| 国产成人亚洲综合a∨婷婷图片| 亚洲另类一区二区| 精品成人一区二区| 一本在线高清不卡dvd|