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

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

?? fblin8.c

?? RMF-1.7.153.0-NODOLBY.tar.gz 神龍卡的驅動
?? C
字號:
/* * Copyright (c) 1999, 2000, 2001 Greg Haerr <greg@censoft.com> * * 8bpp Linear Video Driver for Microwindows * 	00/01/26 added alpha blending with lookup tables (64k total) * * Inspired from Ben Pfaff's BOGL <pfaffben@debian.org> *//*#define NDEBUG*/#include <assert.h>/* We want to do string copying fast, so inline assembly if possible */#ifndef __OPTIMIZE__#define __OPTIMIZE__#endif#include <string.h>#include "device.h"#include "fb.h"#if ALPHABLEND/* * Alpha lookup tables for 256 color palette systems * A 5 bit alpha value is used to keep tables smaller. * * Two tables are created.  The first, alpha_to_rgb contains 15 bit RGB  * values for each alpha value for each color: 32*256 short words. * RGB values can then be blended.  The second, rgb_to_palindex contains * the closest color (palette index) for each of the 5-bit * R, G, and B values: 32*32*32 bytes. */static unsigned short *alpha_to_rgb = NULL;static unsigned char  *rgb_to_palindex = NULL;void init_alpha_lookup(void);#endif/* Calc linelen and mmap size, return 0 on fail*/static intlinear8_init(PSD psd){	if (!psd->size)		psd->size = psd->yres * psd->linelen;	/* linelen in bytes for bpp 1, 2, 4, 8 so no change*/	return 1;}/* Set pixel at x, y, to pixelval c*/static voidlinear8_drawpixel(PSD psd, MWCOORD x, MWCOORD y, MWPIXELVAL c){	ADDR8	addr = psd->addr;	assert (addr != 0);	assert (x >= 0 && x < psd->xres);	assert (y >= 0 && y < psd->yres);	assert (c < psd->ncolors);	DRAWON;	if(gr_mode == MWMODE_COPY)		addr[x + y * psd->linelen] = c;	else		applyOp(gr_mode, c, &addr[ x + y * psd->linelen], ADDR8);	DRAWOFF;}/* Read pixel at x, y*/static MWPIXELVALlinear8_readpixel(PSD psd, MWCOORD x, MWCOORD y){	ADDR8	addr = psd->addr;	assert (addr != 0);	assert (x >= 0 && x < psd->xres);	assert (y >= 0 && y < psd->yres);	return addr[x + y * psd->linelen];}/* Draw horizontal line from x1,y to x2,y including final point*/static voidlinear8_drawhorzline(PSD psd, MWCOORD x1, MWCOORD x2, MWCOORD y, MWPIXELVAL c){	ADDR8	addr = psd->addr;	assert (addr != 0);	assert (x1 >= 0 && x1 < psd->xres);	assert (x2 >= 0 && x2 < psd->xres);	assert (x2 >= x1);	assert (y >= 0 && y < psd->yres);	assert (c < psd->ncolors);	DRAWON;	addr += x1 + y * psd->linelen;	if(gr_mode == MWMODE_COPY)		memset(addr, c, x2 - x1 + 1);	else {		while(x1++ <= x2) {			applyOp(gr_mode, c, addr, ADDR8);			++addr;		}	}	DRAWOFF;}/* Draw a vertical line from x,y1 to x,y2 including final point*/static voidlinear8_drawvertline(PSD psd, MWCOORD x, MWCOORD y1, MWCOORD y2, MWPIXELVAL c){	ADDR8	addr = psd->addr;	int	linelen = psd->linelen;	assert (addr != 0);	assert (x >= 0 && x < psd->xres);	assert (y1 >= 0 && y1 < psd->yres);	assert (y2 >= 0 && y2 < psd->yres);	assert (y2 >= y1);	assert (c < psd->ncolors);	DRAWON;	addr += x + y1 * linelen;	if(gr_mode == MWMODE_COPY) {		while(y1++ <= y2) {			*addr = c;			addr += linelen;		}	} else {		while(y1++ <= y2) {			applyOp(gr_mode, c, addr, ADDR8);			addr += linelen;		}	}	DRAWOFF;}/* srccopy bitblt*/static voidlinear8_blit(PSD dstpsd, MWCOORD dstx, MWCOORD dsty, MWCOORD w, MWCOORD h,	PSD srcpsd, MWCOORD srcx, MWCOORD srcy, long op){	ADDR8	dst;	ADDR8	src;	int	dlinelen = dstpsd->linelen;	int	slinelen = srcpsd->linelen;#if ALPHABLEND	unsigned int srcalpha, dstalpha;#endif	assert (dstpsd->addr != 0);	assert (dstx >= 0 && dstx < dstpsd->xres);	assert (dsty >= 0 && dsty < dstpsd->yres);	assert (w > 0);	assert (h > 0);	assert (srcpsd->addr != 0);	assert (srcx >= 0 && srcx < srcpsd->xres);	assert (srcy >= 0 && srcy < srcpsd->yres);	assert (dstx+w <= dstpsd->xres);	assert (dsty+h <= dstpsd->yres);	assert (srcx+w <= srcpsd->xres);	assert (srcy+h <= srcpsd->yres);	DRAWON;	dst = dstpsd->addr + dstx + dsty * dlinelen;	src = srcpsd->addr + srcx + srcy * slinelen;#if ALPHABLEND	if((op & MWROP_EXTENSION) != MWROP_BLENDCONSTANT)		goto stdblit;	srcalpha = op & 0xff;	/* FIXME create lookup table after palette is stabilized...*/	if(!rgb_to_palindex || !alpha_to_rgb) {		init_alpha_lookup();		if(!rgb_to_palindex || !alpha_to_rgb)			goto stdblit;	}	/* Create 5 bit alpha value index for 256 color indexing*/	/* destination alpha is (1 - source) alpha*/	dstalpha = ((srcalpha>>3) ^ 31) << 8;	srcalpha = (srcalpha>>3) << 8;	while(--h >= 0) {	    int	i;	    for(i=0; i<w; ++i) {		/* Get source RGB555 value for source alpha value*/		unsigned short s = alpha_to_rgb[srcalpha + *src++];		/* Get destination RGB555 value for dest alpha value*/		unsigned short d = alpha_to_rgb[dstalpha + *dst];		/* Add RGB values together and get closest palette index to it*/		*dst++ = rgb_to_palindex[s + d];	    }	    dst += dlinelen - w;	    src += slinelen - w;	}	DRAWOFF;	return;stdblit:#endif	if (op == MWROP_COPY) {		/* copy from bottom up if dst in src rectangle*/		/* memmove is used to handle x case*/		if (srcy < dsty) {			src += (h-1) * slinelen;			dst += (h-1) * dlinelen;			slinelen *= -1;			dlinelen *= -1;		}		while(--h >= 0) {			/* a _fast_ memcpy is a _must_ in this routine*/			memmove(dst, src, w);			dst += dlinelen;			src += slinelen;		}	} else {		while (--h >= 0) {			int i;			for (i=0; i<w; i++) {				applyOp(MWROP_TO_MODE(op), *src, dst, ADDR8);				++src;				++dst;			}			dst += dlinelen - w;			src += slinelen - w;		}	}	DRAWOFF;}/* srccopy stretchblt*/static voidlinear8_stretchblit(PSD dstpsd, MWCOORD dstx, MWCOORD dsty, MWCOORD dstw,	MWCOORD dsth, PSD srcpsd, MWCOORD srcx, MWCOORD srcy, MWCOORD srcw,	MWCOORD srch, long op){	ADDR8	dst;	ADDR8	src;	int	dlinelen = dstpsd->linelen;	int	slinelen = srcpsd->linelen;	int	i, ymax;	int	row_pos, row_inc;	int	col_pos, col_inc;	unsigned char pixel = 0;	assert (dstpsd->addr != 0);	assert (dstx >= 0 && dstx < dstpsd->xres);	assert (dsty >= 0 && dsty < dstpsd->yres);	assert (dstw > 0);	assert (dsth > 0);	assert (srcpsd->addr != 0);	assert (srcx >= 0 && srcx < srcpsd->xres);	assert (srcy >= 0 && srcy < srcpsd->yres);	assert (srcw > 0);	assert (srch > 0);	assert (dstx+dstw <= dstpsd->xres);	assert (dsty+dsth <= dstpsd->yres);	assert (srcx+srcw <= srcpsd->xres);	assert (srcy+srch <= srcpsd->yres);	DRAWON;	row_pos = 0x10000;	row_inc = (srch << 16) / dsth;	/* stretch blit using integer ratio between src/dst height/width*/	for (ymax = dsty+dsth; dsty<ymax; ++dsty) {		/* find source y position*/		while (row_pos >= 0x10000L) {			++srcy;			row_pos -= 0x10000L;		}		dst = dstpsd->addr + dstx + dsty*dlinelen;		src = srcpsd->addr + srcx + (srcy-1)*slinelen;		/* copy a row of pixels*/		col_pos = 0x10000;		col_inc = (srcw << 16) / dstw;		for (i=0; i<dstw; ++i) {			/* get source x pixel*/			while (col_pos >= 0x10000L) {				pixel = *src++;				col_pos -= 0x10000L;			}			*dst++ = pixel;			col_pos += col_inc;		}		row_pos += row_inc;	}	DRAWOFF;}#if ALPHABLENDvoidinit_alpha_lookup(void){	int	i, a;	int	r, g, b;	extern MWPALENTRY gr_palette[256];	if(!alpha_to_rgb)		alpha_to_rgb = (unsigned short *)malloc(			sizeof(unsigned short)*32*256);	if(!rgb_to_palindex)		rgb_to_palindex = (unsigned char *)malloc(			sizeof(unsigned char)*32*32*32);	if(!rgb_to_palindex || !alpha_to_rgb)		return;	/*	 * Precompute alpha to rgb lookup by premultiplying	 * each palette rgb value by each possible alpha	 * and storing it as RGB555.	 */	for(i=0; i<256; ++i) {		MWPALENTRY *p = &gr_palette[i];		for(a=0; a<32; ++a) {			alpha_to_rgb[(a<<8)+i] =				(((p->r * a / 31)>>3) << 10) |				(((p->g * a / 31)>>3) << 5) |				 ((p->b * a / 31)>>3);		}	}	/*	 * Precompute RGB555 to palette index table by	 * finding the nearest palette index for all RGB555 colors.	 */	for(r=0; r<32; ++r) {		for(g=0; g<32; ++g)			for(b=0; b<32; ++b)				rgb_to_palindex[ (r<<10)|(g<<5)|b] =					GdFindNearestColor(gr_palette, 256,						MWRGB(r<<3, g<<3, b<<3));	}}#endifSUBDRIVER fblinear8 = {	linear8_init,	linear8_drawpixel,	linear8_readpixel,	linear8_drawhorzline,	linear8_drawvertline,	gen_fillrect,	linear8_blit,	NULL,	linear8_stretchblit};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区三区很污很色的| 日本一区二区动态图| 精品国产污网站| 国产精品人人做人人爽人人添| 国产精品久久久久久妇女6080| 亚洲欧美在线另类| 日韩精品一卡二卡三卡四卡无卡 | 久久综合色之久久综合| 精品剧情v国产在线观看在线| 久久嫩草精品久久久精品 | 欧美精品一区二区三区蜜桃| 国产日产精品一区| 国产精品第13页| 亚洲一级电影视频| 国产专区欧美精品| 色婷婷精品大视频在线蜜桃视频| 日本精品视频一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美视频日韩视频| 中文字幕乱码亚洲精品一区| 亚洲永久精品大片| 99视频在线精品| 精品日韩在线一区| 亚洲自拍偷拍欧美| 99综合影院在线| 国产三区在线成人av| 日本午夜精品一区二区三区电影| hitomi一区二区三区精品| 26uuu色噜噜精品一区二区| 亚洲v精品v日韩v欧美v专区| 成人黄色电影在线| 久久久三级国产网站| 免费观看在线综合| 欧美人牲a欧美精品| 亚洲天堂久久久久久久| 国产美女一区二区三区| 日韩精品一区国产麻豆| 日韩 欧美一区二区三区| 在线中文字幕一区二区| 国产调教视频一区| 国产精品一级片在线观看| 久久在线观看免费| 亚洲美女免费视频| 91黄色免费看| 五月婷婷综合网| 欧美一区二区视频观看视频| 麻豆精品在线播放| 久久精品人人爽人人爽| 色综合av在线| 99精品视频一区| 精品中文字幕一区二区小辣椒| 亚洲欧美国产毛片在线| 久久久一区二区三区捆绑**| 精品视频一区二区不卡| 国产精品亚洲人在线观看| 亚洲va欧美va人人爽| 国产精品午夜在线观看| 精品国产免费一区二区三区香蕉| 91福利在线观看| 高清国产一区二区| 蜜桃av一区二区| 亚洲动漫第一页| 国产午夜久久久久| 欧美日韩国产精品自在自线| 国产精品资源在线看| 狠狠色综合播放一区二区| 国产精品1区2区| 国产一区二区三区av电影| 性欧美疯狂xxxxbbbb| 国产视频一区在线播放| 欧美精品一卡两卡| 色噜噜狠狠色综合欧洲selulu| 国产精品99久久久久| 精品一区二区免费| 视频一区国产视频| 日韩理论片一区二区| 国产亚洲欧美日韩在线一区| 欧美一区二区三区婷婷月色| 在线看不卡av| 91精品免费在线观看| 欧美怡红院视频| 在线中文字幕一区二区| 日本高清不卡视频| 一本高清dvd不卡在线观看| 在线观看日韩高清av| 成人免费视频视频在线观看免费| 婷婷国产v国产偷v亚洲高清| 亚洲欧洲精品成人久久奇米网| 久久婷婷综合激情| 久久久久久99精品| 中文字幕欧美激情一区| 欧美国产精品v| 欧美综合一区二区| 国产真实乱子伦精品视频| 美女久久久精品| 国产成人午夜高潮毛片| 成人黄色免费短视频| 欧美日韩一区二区在线观看视频| 制服.丝袜.亚洲.中文.综合| 国产欧美日韩三区| 亚洲日本电影在线| 久久精品国产亚洲高清剧情介绍| 日韩高清欧美激情| 国产成人在线看| 欧美精品在线观看播放| 国产精品国产三级国产aⅴ入口| 风间由美一区二区av101| 欧美久久久一区| 国产精品久久国产精麻豆99网站| 婷婷开心激情综合| 丁香婷婷深情五月亚洲| 欧美伦理电影网| 亚洲人成亚洲人成在线观看图片| 日韩高清不卡一区| 亚洲午夜精品在线| 亚洲一区二区视频| 亚洲成人精品一区二区| 免费高清在线一区| 国产麻豆视频一区二区| 欧美性感一区二区三区| 中文字幕一区二区三区不卡| 婷婷激情综合网| 色婷婷国产精品久久包臀 | 成人激情图片网| 91精品欧美综合在线观看最新| 日韩一区在线播放| 国产91色综合久久免费分享| 在线成人午夜影院| 亚洲不卡一区二区三区| 色狠狠桃花综合| 精品国产污网站| 日韩高清一级片| 欧美视频一区二区| 亚洲精品国产视频| k8久久久一区二区三区| 国产午夜精品美女毛片视频| 日韩av一级片| 91国产成人在线| 国产精品国产馆在线真实露脸| 久久成人麻豆午夜电影| 欧美tickle裸体挠脚心vk| 午夜精品一区二区三区电影天堂| 精品亚洲成a人在线观看 | 亚洲人成网站色在线观看| 国产乱码字幕精品高清av| 精品国产免费久久| 国产真实乱子伦精品视频| 久久夜色精品国产欧美乱极品| 亚洲第一综合色| 精品免费视频.| 日韩精品乱码免费| 色婷婷久久久久swag精品| 国产精品不卡一区二区三区| 97久久人人超碰| 亚洲国产精品久久不卡毛片 | 欧美日韩日本视频| 最好看的中文字幕久久| 日韩一区二区电影网| 日韩中文字幕麻豆| 国产精品二三区| 日韩美女一区二区三区四区| 国产在线播放一区| 91精品国产丝袜白色高跟鞋| 亚洲国产欧美一区二区三区丁香婷 | 久久品道一品道久久精品| 欧美三级韩国三级日本一级| 99精品在线免费| 97久久超碰精品国产| 国产乱码精品一区二区三区av| 在线看一区二区| 亚洲国产精品一区二区www| 中文字幕字幕中文在线中不卡视频| 成人晚上爱看视频| 中文字幕亚洲视频| 久久久亚洲欧洲日产国码αv| 欧美日韩一区国产| 欧美撒尿777hd撒尿| 欧美久久久久免费| 欧美一区二区三区小说| 日韩欧美的一区| 日韩欧美一级片| 日韩精品一区二区在线| 欧美一卡二卡三卡| 精品国内二区三区| 国产日韩精品视频一区| 国产日韩欧美精品电影三级在线| 国产三级欧美三级| 国产精品嫩草影院com| 国产精品传媒在线| 国产欧美视频一区二区三区| 日本一区二区三区久久久久久久久不| 欧美zozozo| 国产网红主播福利一区二区| 日本一区二区电影| 有坂深雪av一区二区精品| 亚洲va中文字幕| 国产揄拍国内精品对白| av不卡免费在线观看| aaa欧美日韩| 欧美卡1卡2卡|