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

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

?? mng.c

?? 美化linux的kernel啟動畫面的程序
?? C
字號:
/* *	fbmngplay - fb console MNG player. *	(c) 2001-2002 by Stefan Reinauer, <stepan@suse.de> * *	This program is based on mngplay, part of libmng, written and (C) by *	Ralph Giles <giles@ashlu.bc.ca> * *	This program my be redistributed under the terms of the *	GNU General Public Licence, version 2, or at your preference, *	any later version. */#include <unistd.h>#include <sys/time.h>#include "fbmngplay.h"#include "console.h"#include "mng.h"mngstuff *mng;unsigned char *bufferstream;unsigned long bufferpos = 0, buffersize = 0;/*  * callbacks for the mng decoder  *//* memory allocation; data must be zeroed */mng_ptr mngalloc(mng_uint32 size){	return (mng_ptr) calloc(1, size);}/* memory deallocation */void mngfree(mng_ptr p, mng_uint32 size){	free(p);	return;}mng_bool mngopenstream(mng_handle mng){	mngstuff *mymng;	/* look up our stream struct */	mymng = (mngstuff *) mng_get_userdata(mng);	/* open the file */	mymng->file = fopen(mymng->filename, "rb");	if (mymng->file == NULL) {		fprintf(stderr, "unable to open '%s'\n", mymng->filename);		run = 0;		return MNG_FALSE;	}	if (buffered) {		unsigned long len;		fseek(mymng->file, 0, SEEK_END);		len = ftell(mymng->file);		rewind(mymng->file);		bufferstream = malloc(len);		if (!bufferstream) {			/* Not enough memory for buffers 			 * -> we go back to unbuffered mode			 */			printf("Reverted to non buffered mode.\n");			buffered = 0;			return MNG_TRUE;		}		buffersize = len;		fread(bufferstream, 1, len, mymng->file);		bufferpos = 0;		fclose(mymng->file);		mymng->file = NULL;	}	return MNG_TRUE;}mng_bool mngclosestream(mng_handle mng){	mngstuff *mymng;	/* look up our stream struct */	mymng = (mngstuff *) mng_get_userdata(mng);	/* close the file */	if (mymng->file)		fclose(mymng->file);	mymng->file = NULL;	/* for safety */	if (bufferstream) {		free(bufferstream);		bufferstream = 0;		buffersize = 0;		bufferpos = 0;	}	return MNG_TRUE;}/* feed data to the decoder */mng_bool mngreadstream(mng_handle mng, mng_ptr buffer,		       mng_uint32 size, mng_uint32 * bytesread){	mngstuff *mymng;	/* look up our stream struct */	mymng = (mngstuff *) mng_get_userdata(mng);	if (!buffered) {		/* read the requested amount of data from the file */		*bytesread = fread(buffer, 1, size, mymng->file);	} else {		*bytesread = (buffersize - bufferpos) <		    size ? (buffersize - bufferpos) : size;		memcpy(buffer, bufferstream + bufferpos, *bytesread);		bufferpos += (*bytesread);	}	return MNG_TRUE;}mng_bool mnggetbackgroundbuffer(mng_handle mng){	unsigned char *background, *src;	mngstuff *mymng = mng_get_userdata(mng);	mng_uint32 width = mymng->width, height = mymng->height;	int bytes = (mymng->fbbpp >> 3);	if (mymng->background)		return MNG_TRUE;	/* If we're not on the right terminal, don't 	 * initialize background yet.	 */	if (sconly && current_console() != start_console)		return MNG_FALSE;	background = (unsigned char *) malloc(width * height * bytes);	if (background == NULL) {		fprintf(stderr, "could not allocate background buffer.\n");		exit(0);	}	mymng->background = background;	src =	    mymng->display + (mymng->fbwidth * mymng->fby +			      mymng->fbx) * bytes;	while (height--) {		memcpy(background, src, width * bytes);		background += width * bytes;		src += mymng->fbrow;	}	return MNG_TRUE;}/* the header's been read. set up the display stuff */mng_bool mngprocessheader(mng_handle mng,			  mng_uint32 width, mng_uint32 height){	mngstuff *mymng;	unsigned char *copybuffer;	mymng = (mngstuff *) mng_get_userdata(mng);	mymng->width = width;	mymng->height = height;	copybuffer = (unsigned char *) malloc(width * height * 4);	if (copybuffer == NULL) {		fprintf(stderr, "could not allocate copy buffer.\n");		exit(0);	}	mymng->copybuffer = copybuffer;	/* Try to get background buffer */	mnggetbackgroundbuffer(mng);	/* tell the mng decoder about our bit-depth choice */	/* FIXME: this works on intel. is it correct in general? */	mng_set_canvasstyle(mng, MNG_CANVAS_BGRA8);	return MNG_TRUE;}/* return a row pointer for the decoder to fill */mng_ptr mnggetcanvasline(mng_handle mng, mng_uint32 line){	mngstuff *mymng;	mng_ptr row;	/* dereference our structure */	mymng = (mngstuff *) mng_get_userdata(mng);	/* we assume any necessary locking has happened 	   outside, in the frame level code */	row = mymng->copybuffer + mymng->width * 4 * line;	return (row);}/* timer */mng_uint32 mnggetticks(mng_handle mng){	mng_uint32 ticks;	struct timeval tv;	struct timezone tz;	gettimeofday(&tv, &tz);	ticks = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);	return (ticks);}static inline void copyline(unsigned char *dest, unsigned char *src,			    unsigned char *background, mngstuff * mymng){	// BGRA8        	unsigned int i = mymng->width;	unsigned int fr, fg, fb, br, bg, bb, r, g, b, a;	unsigned short output, input;	while (i--) {		fb = *src++;		fg = *src++;		fr = *src++;		a = *src++;		a = a * mymng->alpha / 100;		switch (mymng->fbbpp) {		case 16:			input = *((unsigned short *) background)++;			br = (input >> mng->fbredo) << (8 - mng->fbredl);			bg = (input >> mng->fbgreeno) << (8 -							  mng->fbgreenl);			bb = (input >> mng->fbblueo) << (8 - mng->fbbluel);			br &= 0xf8;			bg &= 0xfc;			bb &= 0xff;#if 0			br = (input >> 8) & 0xf8;			bg = (input >> 3) & 0xfc;			bb = input << 3 & 0xff;#endif			break;		case 24:			bb = *background++;			bg = *background++;			br = *background++;			break;		case 32:			bb = *background++;			bg = *background++;			br = *background++;			background++;			break;		default:			br = 0;			bg = 0;			bb = 0;			printf("depth not supported.\n");			run = 0;			break;		}		r = ((fr * a) + (br * (0x100 - a))) >> 8;		g = ((fg * a) + (bg * (0x100 - a))) >> 8;		b = ((fb * a) + (bb * (0x100 - a))) >> 8;		switch (mymng->fbbpp) {		case 16:			// dumb 24->16 bit conversion.			r >>= (8 - mng->fbredl);			g >>= (8 - mng->fbgreenl);			b >>= (8 - mng->fbbluel);			output =			    (r << mng->fbredo) | (g << mng->						  fbgreeno) | (b << mng->							       fbblueo);			*((unsigned short *) dest)++ = output;			break;		case 24:			*dest++ = b;			*dest++ = g;			*dest++ = r;			break;		case 32:			*dest++ = b;			*dest++ = g;			*dest++ = r;			dest++;			break;		default:			break;		}	}}mng_bool mngrefresh(mng_handle mng, mng_uint32 x, mng_uint32 y,		    mng_uint32 w, mng_uint32 h){	mngstuff *mymng = mng_get_userdata(mng);	unsigned char *background;	unsigned char *dest, *src;	int bytes = (mymng->fbbpp >> 3);	if (sconly && current_console() != start_console)		return MNG_TRUE;	/* When we read the header, we might still	 * have been on a different console	 */	if (!(mymng->background))		mnggetbackgroundbuffer(mng);	background = mymng->background;	dest =	    mymng->display + (mymng->fby * mymng->fbwidth +			      mymng->fbx) * bytes;	src = mymng->copybuffer;	/* refresh the screen with the new frame */	while (h-- > 0) {		copyline(dest, src, background, mymng);		dest += mymng->fbrow;		background += mymng->width * bytes;		/* 4 bytes per pixel due to RGBA */		src += 4 * mymng->width;	}	/* remove traces in alpha transparent pictures. */	memset(mymng->copybuffer, 0, 4 * mymng->width * mymng->height);	return MNG_TRUE;}/* interframe delay callback */mng_bool mngsettimer(mng_handle mng, mng_uint32 msecs){	mngstuff *mymng;	/* look up our stream struct */	mymng = (mngstuff *) mng_get_userdata(mng);	/* set the timer for when the decoder wants to be woken */	mymng->delay = msecs;	return MNG_TRUE;}mng_bool mngerror(mng_handle mng, mng_int32 code, mng_int8 severity,		  mng_chunkid chunktype, mng_uint32 chunkseq,		  mng_int32 extra1, mng_int32 extra2, mng_pchar text){	mngstuff *mymng;	char chunk[5];	/* dereference our data so we can get the filename */	mymng = (mngstuff *) mng_get_userdata(mng);	/* pull out the chuck type as a string */	// FIXME: does this assume unsigned char?	chunk[0] = (char) ((chunktype >> 24) & 0xFF);	chunk[1] = (char) ((chunktype >> 16) & 0xFF);	chunk[2] = (char) ((chunktype >> 8) & 0xFF);	chunk[3] = (char) ((chunktype) & 0xFF);	chunk[4] = '\0';	/* output the error */	fprintf(stderr, "error playing '%s' chunk %s (%d):\n",		mymng->filename, chunk, chunkseq);	fprintf(stderr, "%s\n", text);	return 0;}int mngquit(mng_handle mng){	mngstuff *mymng;	/* dereference our data so we can free it */	mymng = (mngstuff *) mng_get_userdata(mng);	/* cleanup. this will call mymngclosestream */	mng_cleanup(&mng);	/* free our data */	free(mymng);	exit(0);}void cleanup(void){	mngquit(mng->mng);	exit(0);}void restore_area(void){	int height, width;	unsigned char *dest, *background;	if (sconly && current_console() != start_console)		return;	/* when we didn't manage to get a background until 	 * now, we don't have anything to restore anyways.	 */	if (!(mng->background))		return;	background = mng->background;	height = mng->height;	width = mng->width;	dest = mng->display + ((mng->fbwidth * mng->fby + mng->fbx) *			       (mng->fbbpp >> 3));	while (height--) {		memcpy(dest, background, width * (mng->fbbpp >> 3));		background += width * (mng->fbbpp >> 3);		dest += mng->fbrow;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜乳av一区二区| 国产jizzjizz一区二区| 国产在线精品免费av| 91蜜桃免费观看视频| 正在播放亚洲一区| 自拍偷拍国产精品| 国产美女精品一区二区三区| 欧美日韩国产一区| 亚洲桃色在线一区| 国产成人精品亚洲777人妖| 欧美性猛片xxxx免费看久爱| 欧美激情一区三区| 国内精品国产三级国产a久久| 欧美性受xxxx黑人xyx| 国产精品嫩草久久久久| 久久er99热精品一区二区| 在线观看日韩毛片| 亚洲综合在线观看视频| 99久久精品国产一区| 欧美经典一区二区三区| 国内精品嫩模私拍在线| 91精品国产综合久久久久久久久久 | 国产欧美日韩不卡| 久久成人18免费观看| 91精品国产一区二区三区蜜臀| 亚洲日本一区二区| av电影天堂一区二区在线观看| 欧美国产精品中文字幕| 国产高清一区日本| 国产精品丝袜在线| 成人高清伦理免费影院在线观看| 国产午夜精品一区二区三区嫩草 | 26uuu精品一区二区| 麻豆精品精品国产自在97香蕉| 欧美日韩久久不卡| 日韩影视精彩在线| 欧美一区二区三级| 精品在线你懂的| 精品国产三级a在线观看| 国产麻豆精品在线| 国产精品高清亚洲| 在线观看一区日韩| 午夜不卡在线视频| 日韩一区二区电影网| 黄页视频在线91| 中文字幕乱码久久午夜不卡| 99re成人精品视频| 亚洲一区欧美一区| 欧美一区二区在线视频| 裸体歌舞表演一区二区| 欧美国产精品中文字幕| 91高清在线观看| 日韩精品成人一区二区在线| 日韩三级伦理片妻子的秘密按摩| 国产在线一区观看| 亚洲视频免费在线| 91 com成人网| 成人免费观看男女羞羞视频| 亚洲一区二区三区免费视频| 日韩一区二区视频在线观看| 国产精品一区二区无线| 夜夜嗨av一区二区三区中文字幕| 欧美丰满少妇xxxxx高潮对白| 国产一区二区三区电影在线观看| 国产精品另类一区| 欧美日韩国产精选| 国产激情视频一区二区在线观看 | 在线中文字幕一区| 美女一区二区三区| 中文字幕中文字幕一区| 欧美精品三级日韩久久| 国产传媒日韩欧美成人| 香蕉成人伊视频在线观看| 久久日韩精品一区二区五区| 在线亚洲高清视频| 国产不卡高清在线观看视频| 亚洲伊人伊色伊影伊综合网| 精品粉嫩aⅴ一区二区三区四区| av电影在线不卡| 国产在线精品一区二区不卡了 | 国产欧美精品一区aⅴ影院| 欧美调教femdomvk| 高清视频一区二区| 日本在线播放一区二区三区| 中文字幕欧美激情一区| 欧美一激情一区二区三区| 色悠久久久久综合欧美99| 精品一区二区三区免费视频| 亚洲一区二区三区四区在线观看 | 日韩美一区二区三区| 色综合色综合色综合色综合色综合 | 91原创在线视频| 国产精品综合二区| 蜜臀国产一区二区三区在线播放| 亚洲黄色片在线观看| 国产精品国产三级国产aⅴ入口 | 精品国产区一区| 91精品国产一区二区三区蜜臀| 色婷婷综合久久久| 波多野洁衣一区| 丰满亚洲少妇av| 国产一区二区三区在线看麻豆| 亚洲一区二区在线播放相泽| 国产精品久久久久久福利一牛影视| 精品久久久久久久久久久院品网 | 91精品国产欧美一区二区18| 色吧成人激情小说| 91亚洲精品乱码久久久久久蜜桃 | 亚洲欧美综合在线精品| 国产精品丝袜黑色高跟| 国产精品区一区二区三| 久久欧美一区二区| 中文字幕欧美三区| 亚洲欧美自拍偷拍色图| 亚洲男女一区二区三区| 一区二区三国产精华液| 天堂成人国产精品一区| 精品日韩欧美一区二区| 国产东北露脸精品视频| 精品亚洲aⅴ乱码一区二区三区| 日本欧美在线看| 精品午夜久久福利影院 | 久久久久久久久久久久久久久99| 欧美日韩中文字幕一区| 日韩免费观看高清完整版| 91国偷自产一区二区开放时间| 欧美妇女性影城| 极品少妇一区二区三区精品视频| 麻豆视频一区二区| 精品一区二区三区在线播放| 国产精品亚洲第一区在线暖暖韩国| 国产精品一卡二卡| 激情久久五月天| 成人午夜免费视频| 精品久久一二三区| 欧美激情艳妇裸体舞| 亚洲欧美日韩一区二区| 亚洲国产欧美另类丝袜| 久久不见久久见免费视频1| 国产剧情一区二区| 99re这里都是精品| 欧美日韩免费在线视频| 欧美刺激午夜性久久久久久久| 精品99久久久久久| 日韩毛片精品高清免费| 婷婷成人激情在线网| 激情图区综合网| 99视频一区二区| 91精品黄色片免费大全| 久久久亚洲午夜电影| 亚洲人成网站影音先锋播放| 日日夜夜免费精品| 成人网页在线观看| 欧美日韩一区二区在线视频| 欧美tk—视频vk| 亚洲日本欧美天堂| 日本中文字幕一区二区视频| 国产成人综合网站| 7799精品视频| 亚洲另类春色国产| 狠狠网亚洲精品| 在线观看国产精品网站| 久久这里只精品最新地址| 亚洲综合在线视频| 国产成人免费视频| 欧美一区二区三区白人| 亚洲精选免费视频| 国产精品888| 666欧美在线视频| 亚洲精品欧美激情| 成人在线一区二区三区| 日韩欧美在线123| 亚洲va欧美va人人爽| eeuss鲁片一区二区三区在线观看| 欧美精品三级在线观看| 一区2区3区在线看| 成人av网站在线| 国产欧美中文在线| 久久爱另类一区二区小说| 在线成人av网站| 亚洲在线视频网站| 91丨九色丨蝌蚪富婆spa| 久久综合久久综合久久| 日韩精品乱码av一区二区| 欧美色图免费看| 成人欧美一区二区三区1314| 国产专区综合网| 精品第一国产综合精品aⅴ| 日韩成人一级大片| 7777精品久久久大香线蕉| 亚洲无线码一区二区三区| 色综合久久中文字幕| 亚洲欧洲三级电影| 成人免费av资源| 中文字幕日韩一区| aaa亚洲精品| 成人欧美一区二区三区白人| bt7086福利一区国产| 《视频一区视频二区| 91日韩在线专区|