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

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

?? scr_fb.c

?? mini gui 1.6.8 lib and source
?? C
字號:
/*** $Id: scr_fb.c,v 1.29 2004/09/16 02:08:23 panweiguo Exp $** ** scr_fb.c: GAL driver for Linux kernel FrameBuffers.** ** Copyright (C) 2003 Feynman Software.** Copyright (C) 2000 Song Lixin.*//*** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License as published by** the Free Software Foundation; either version 2 of the License, or** (at your option) any later version.**** This program is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the** GNU General Public License for more details.**** You should have received a copy of the GNU General Public License** along with this program; if not, write to the Free Software** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <unistd.h>#include "native.h"#ifdef _NATIVE_GAL_FBCON#include <sys/ioctl.h>#include <sys/mman.h>#include <sys/stat.h>#include <sys/time.h>#include <sys/types.h>#include <fcntl.h>#include <limits.h>#include <linux/fb.h>#include <linux/kd.h>#include <linux/vt.h>#include "fb.h"#ifdef _LITE_VERSIONextern BOOL mgIsServer;#endif#ifndef FB_TYPE_VGA_PLANES#define FB_TYPE_VGA_PLANES 4#endif/* static variables*/static int fb;			/* Framebuffer file handle. */static int status;		/* 0=never inited, 1=once inited, 2=inited. */static short saved_red[16];	/* original hw palette*/static short saved_green[16];static short saved_blue[16];#ifdef _HAVE_TEXT_MODEstatic int tty = -1;#endif/* init framebuffer*/static PSD fb_open(PSD psd){	char *	env;	int	type, visual;	PSUBDRIVER subdriver;	struct fb_fix_screeninfo fb_fix;	struct fb_var_screeninfo fb_var;	/* locate and open framebuffer, get info*/	if(!(env = getenv ("FRAMEBUFFER")))		env = "/dev/fb0";	fb = open(env, O_RDWR);	if(fb < 0) {		fprintf(stderr,"GAL fbcon engine: Error when opening %s: %m. Please check kernel config.\n", env);		return NULL;	}	if(ioctl(fb, FBIOGET_FSCREENINFO, &fb_fix) == -1 ||		ioctl(fb, FBIOGET_VSCREENINFO, &fb_var) == -1) {			fprintf(stderr,"GAL fbcon engine: Error when reading screen info: %m.\n");			goto fail;	}	/* setup screen device from framebuffer info*/	type = fb_fix.type;	visual = fb_fix.visual;	psd->xres = psd->xvirtres = fb_var.xres;	psd->yres = psd->yvirtres = fb_var.yres;	/* set planes from fb type*/	if (type == FB_TYPE_VGA_PLANES)		psd->planes = 4;	else if (type == FB_TYPE_PACKED_PIXELS)		psd->planes = 1;	else        psd->planes = 0;	/* force error later*/	psd->bpp = fb_var.bits_per_pixel;	psd->ncolors = (psd->bpp >= 24)? (1 << 24): (1 << psd->bpp);	/* set linelen to byte length, possibly converted later*/	psd->linelen = (psd->xres * psd->bpp) >> 3;    /*     * Some framebuffer drivers give wrong line_length value.     * If line_length < xres_virtual * bpp, it's certainly wrong.     * But how do i know if line_length > xres_virtual * bpp.     * God bless me!     *          James Liu     */#ifndef _FXRM9200_IAL /* workaround for Fuxu RM9200 */    if (fb_fix.line_length > psd->linelen)        psd->linelen = fb_fix.line_length;#endif	psd->size = 0;		/* force subdriver init of size*/	psd->flags = PSF_SCREEN;    /*     * For 1bpp, 2bpp and 4bpp framebuffer, some systems have     * different bit order. That means the highest bits represent     * the first pixel or the lowest bites represent first pixel.     *      * For example:     *      * EP7211 2bpp:                    Byte 1                                 Byte 2     *         | D0  D1 | D2  D3 | D4  D5 | D6  D7 |  | D0  D1 | D2  D3 | D4  D5 | D6  D7 |     *         | pixel0 | pixel1 | pixel2 | pixel3 |  | pixel4 | pixel5 | pixel6 | pixel7 |     *              * Helio 2bpp:                  Byte 1                                 Byte 2     *         | D0  D1 | D2  D3 | D4  D5 | D6  D7 |  | D0  D1 | D2  D3 | D4  D5 | D6  D7 |     *         | pixel3 | pixel2 | pixel1 | pixel0 |  | pixel7 | pixel6 | pixel5 | pixel4 |     */#ifndef _L7200_IAL  /* workaround for ZhongYuan L7200 */    if (fb_var.red.msb_right)#endif        psd->flags |= PSF_MSBRIGHT;	/* set pixel format*/	if (visual == FB_VISUAL_TRUECOLOR || visual == FB_VISUAL_DIRECTCOLOR) {		switch(psd->bpp) {		case 8:			psd->pixtype = PF_TRUECOLOR332;		break;		case 16:			psd->pixtype = PF_TRUECOLOR565;		break;		case 24:			psd->pixtype = PF_TRUECOLOR888;		break;		case 32:			psd->pixtype = PF_TRUECOLOR0888;		break;		default:			fprintf(stderr, "GAL fbcon engine: Unsupported FrameBuffer type\n");			goto fail;		}	}    else         psd->pixtype = PF_PALETTE;	/* select a framebuffer subdriver based on planes and bpp*/	subdriver = select_fb_subdriver(psd);	if (!subdriver) {		fprintf(stderr,"GAL fbcon engine: No driver for screen type %d visual %d bpp %d\n",			type, visual, psd->bpp);		goto fail;	}	/*	 * set and initialize subdriver into screen driver	 * psd->size is calculated by subdriver init	 */	if(!set_subdriver(psd, subdriver, TRUE)) {		fprintf(stderr,"GAL fbcon engine: Driver initialize failed type %d visual %d bpp %d\n",			type, visual, psd->bpp);		goto fail;	}#ifdef _HAVE_TEXT_MODE#ifdef _LITE_VERSION    if (mgIsServer)#endif    {	    /* open tty, enter graphics mode*/        char* tty_dev;        if (geteuid() == 0)            tty_dev = "/dev/tty0";        else    /* not a super user, so try to open the control terminal */            tty_dev = "/dev/tty";	    tty = open (tty_dev, O_RDWR);	    if(tty < 0) {		    fprintf(stderr,"GAL fbcon engine: Can't open /dev/tty0: %m\n");		    goto fail;	    }	    if(ioctl (tty, KDSETMODE, KD_GRAPHICS) == -1) {		    fprintf(stderr,"GAL fbcon engine: Error when setting console to graphics mode: %m\n");		    fprintf(stderr,"GAL fbcon engine: Maybe have no enough permission.\n");		    goto fail;	    }    }#endif	/* mmap framebuffer into this address space*/	psd->size = (psd->size + getpagesize () - 1)			/ getpagesize () * getpagesize ();#ifdef _FXRM9200_IAL /* workaround for Fuxu RM9200 */	psd->addr = mmap(NULL, psd->size, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0);#elif defined (__uClinux__)	psd->addr = mmap(NULL, psd->size, PROT_READ | PROT_WRITE, 0, fb, 0);#else	psd->addr = mmap(NULL, psd->size, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0);#endif	if(psd->addr == NULL || psd->addr == (unsigned char *)-1) {		fprintf(stderr,"GAL fbcon engine: Error when mmaping %s: %m\n", env);		goto fail;	}	/* save original palette*/	ioctl_getpalette(0, 16, saved_red, saved_green, saved_blue);	status = 2;	psd->gr_mode = MODE_SET;	return psd;	/* success*/fail:#ifdef _HAVE_TEXT_MODE#ifdef _LITE_VERSION    if (mgIsServer) {#endif	    /* enter text mode*/        if (tty >= 0) {	        ioctl (tty, KDSETMODE, KD_TEXT);	        close (tty);            tty = -1;        }#ifdef _LITE_VERSION    }#endif#endif	close(fb);	return NULL;}/* close framebuffer*/static void fb_close(PSD psd){	/* if not opened, return*/	if(status != 2)		return;	status = 1;  	/* reset hw palette*/	ioctl_setpalette(0, 16, saved_red, saved_green, saved_blue);  	/* unmap framebuffer*/	munmap(psd->addr, psd->size);  #ifdef _HAVE_TEXT_MODE#ifdef _LITE_VERSION    if (mgIsServer) {#endif	    /* enter text mode*/        if (tty >= 0) {	        ioctl (tty, KDSETMODE, KD_TEXT);	        close (tty);            tty = -1;        }#ifdef _LITE_VERSION    }#endif#endif	/* close framebuffer*/	close(fb);}static int fade = 100;static void fb_setpalette(PSD psd,int first, int count, GAL_Color *palette){	int 	i;	unsigned short 	red[count];	unsigned short 	green[count];	unsigned short 	blue[count];	/* convert palette to framebuffer format*/	for(i=0; i < count; i++) {		GAL_Color *p = &palette[i];		/* grayscale computation:		 * red[i] = green[i] = blue[i] =		 *	(p->r * 77 + p->g * 151 + p->b * 28);		 */		red[i] = (p->r * fade / 100) << 8;		green[i] = (p->g * fade / 100) << 8;		blue[i] = (p->b * fade / 100) << 8;	}	ioctl_setpalette(first, count, red, green, blue);}static void fb_getpalette(PSD psd,int first, int count, GAL_Color *palette){	int 	i;	unsigned short 	red[count];	unsigned short 	green[count];	unsigned short 	blue[count];	ioctl_getpalette(first,count,red,green,blue);	for(i=0; i < count; i++) {		GAL_Color *p = &palette[i];		/* grayscale computation:		 * red[i] = green[i] = blue[i] =		 *	(p->r * 77 + p->g * 151 + p->b * 28);		 */		p->r = (red[i] >> 8) * 100 / fade;		p->g = (green[i] >>8) * 100 / fade;		p->b = (blue[i] >>8) * 100 / fade;	}}/* get framebuffer palette*/void ioctl_getpalette(int start, int len, short *red, short *green, short *blue){	struct fb_cmap cmap;	cmap.start = start;	cmap.len = len;	cmap.red = red;	cmap.green = green;	cmap.blue = blue;	cmap.transp = NULL;	ioctl(fb, FBIOGETCMAP, &cmap);}/* set framebuffer palette*/void ioctl_setpalette(int start, int len, short *red, short *green, short *blue){	struct fb_cmap cmap;	cmap.start = start;	cmap.len = len;	cmap.red = red;	cmap.green = green;	cmap.blue = blue;	cmap.transp = NULL;    //printf ("enter ioctl_setpalette\n");	//ioctl(fb, FBIOPUTCMAP, &cmap);}SCREENDEVICE scrdev = {	0, 0, 0, 0, 0, 	0, 0, 0, 0, 0, 	0, 0, 0, 0, 0, 	0, 0, 0, 0, 	NULL, NULL,	fb_open,	fb_close,	fb_setpalette,	fb_getpalette,	native_gen_allocatememgc,	fb_mapmemgc,	native_gen_freememgc,	native_gen_clippoint,	native_gen_fillrect,	NULL,			/* DrawPixel subdriver*/	NULL,			/* ReadPixel subdriver*/	NULL,			/* DrawHLine subdriver*/	NULL,			/* DrawVLine subdriver*/	NULL,			/* Blit subdriver*/	NULL,			/* PutBox subdriver*/	NULL			/* CopyBox subdriver*/};#endif /* _NATIVE_GAL_FBCON */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三电影在线| 美国精品在线观看| 91久久奴性调教| 亚洲一区二区三区四区的| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲成人在线观看视频| 在线精品亚洲一区二区不卡| 亚洲v中文字幕| 欧美第一区第二区| 国产精一品亚洲二区在线视频| 国产精品欧美综合在线| 91蜜桃传媒精品久久久一区二区| 一区二区激情小说| 日韩一区二区免费视频| 国产精品一区二区久久精品爱涩 | 日韩一区二区视频| 国产成人免费在线观看不卡| 亚洲人成人一区二区在线观看 | 国产成人精品一区二区三区四区 | 国产精品女主播在线观看| 色综合久久天天| 蜜臀av一区二区在线免费观看| 2023国产精品自拍| 色婷婷精品久久二区二区蜜臀av| 丝袜a∨在线一区二区三区不卡| 精品日韩99亚洲| 91网站在线播放| 欧美aaaaa成人免费观看视频| 国产精品乱码妇女bbbb| 欧美人成免费网站| 国产不卡高清在线观看视频| 亚洲激情五月婷婷| 久久久久国产精品麻豆ai换脸 | 国产精品123区| 午夜精品福利一区二区三区av | 99re热这里只有精品免费视频| 日日夜夜一区二区| 亚洲欧美日韩一区| 精品国产污网站| 色一情一乱一乱一91av| 国产一区二区电影| 日韩中文字幕一区二区三区| 国产精品大尺度| 精品成人一区二区| 欧美日韩1234| 91首页免费视频| 国产a精品视频| 久久精品999| 亚洲成人一区二区在线观看| 最新国产精品久久精品| 久久久久久久国产精品影院| 7799精品视频| 欧美自拍丝袜亚洲| 成人av在线资源网站| 精品一区二区三区欧美| 日韩专区在线视频| 五月天视频一区| 亚洲一区二区三区激情| 亚洲视频 欧洲视频| 国产日韩av一区| 精品欧美黑人一区二区三区| 91精品国产综合久久精品性色| 色婷婷综合久色| av男人天堂一区| 成人动漫一区二区在线| 成人成人成人在线视频| 国产99久久久国产精品| 国产精品一级黄| 精东粉嫩av免费一区二区三区| 日本视频一区二区| 日韩精品国产精品| 日本特黄久久久高潮| 日韩中文字幕区一区有砖一区| 亚瑟在线精品视频| 偷窥国产亚洲免费视频| 亚洲午夜精品在线| 午夜精品福利一区二区三区av | 亚洲成人1区2区| 亚洲一卡二卡三卡四卡无卡久久| 最新国产精品久久精品| 一区二区三区高清| 一级日本不卡的影视| 亚洲另类春色国产| 亚洲男人的天堂网| 亚洲福利一区二区三区| 午夜亚洲福利老司机| 日韩av电影免费观看高清完整版| 蜜桃视频一区二区三区| 久久99精品国产麻豆婷婷 | 激情综合亚洲精品| 国产一区二区三区| www.亚洲在线| 日本精品一区二区三区高清 | 亚洲精品欧美在线| 日韩精品一区第一页| 精品一区二区免费| 国产成人精品免费| 91视频观看免费| 欧美丰满少妇xxxbbb| 久久精品夜色噜噜亚洲aⅴ| 国产精品日产欧美久久久久| 一区二区三区欧美激情| 日韩主播视频在线| 国产iv一区二区三区| 在线看不卡av| 精品少妇一区二区三区日产乱码| 国产欧美日韩三级| 亚洲午夜三级在线| 国产做a爰片久久毛片| 91在线视频18| 日韩欧美一区二区视频| 国产精品三级视频| 免费观看日韩电影| 99国产精品久久久久久久久久久 | 日本道在线观看一区二区| 制服丝袜亚洲精品中文字幕| 久久新电视剧免费观看| 亚洲特级片在线| 蜜桃av一区二区三区| 91亚洲国产成人精品一区二三| 青娱乐精品在线视频| 亚洲综合在线第一页| 天天免费综合色| 成人精品免费网站| 在线不卡免费av| 中文字幕一区二区三| 久久精品72免费观看| 欧美在线啊v一区| 久久久99免费| 午夜精品久久久久久久99水蜜桃| 成人精品gif动图一区| 日韩欧美国产成人一区二区| 综合久久国产九一剧情麻豆| 国产一区在线不卡| 欧美区一区二区三区| 中文字幕一区二区视频| 看电影不卡的网站| 欧美日韩精品一区二区在线播放| 国产精品热久久久久夜色精品三区| 美女mm1313爽爽久久久蜜臀| 欧美色图在线观看| 日韩毛片精品高清免费| 久久亚区不卡日本| 蜜桃视频在线观看一区二区| 欧美性一级生活| 久久66热re国产| 欧美性一级生活| 一区二区三区色| 中文字幕一区二区三中文字幕| 国产一区二区三区美女| 日韩欧美视频一区| 午夜视黄欧洲亚洲| 欧美三级在线播放| 一区二区三区欧美久久| 日本精品一区二区三区高清 | 一区二区三区不卡视频| 成人福利在线看| 国产精品麻豆视频| 成人免费不卡视频| 国产精品欧美一区二区三区| 成人精品小蝌蚪| 国产精品毛片高清在线完整版| 国产精品系列在线观看| 久久日韩粉嫩一区二区三区| 激情综合亚洲精品| 国产亚洲精品bt天堂精选| 国产精品一区专区| 欧美激情综合在线| 不卡视频免费播放| 中文字幕亚洲区| 一本久久a久久精品亚洲 | 婷婷开心激情综合| 欧美精品在线视频| 青青草原综合久久大伊人精品 | 欧美性生活久久| 香蕉成人啪国产精品视频综合网| 欧美日韩精品一区二区三区蜜桃 | 成人黄色一级视频| 日韩伦理av电影| 欧美视频在线一区| 日韩avvvv在线播放| 精品久久一二三区| 国产精品一区二区久激情瑜伽| 国产农村妇女精品| 色综合欧美在线视频区| 日日夜夜免费精品| 国产亚洲欧美在线| 91在线免费播放| 日本在线不卡视频| 久久久www免费人成精品| 色一情一伦一子一伦一区| 日韩黄色一级片| 久久男人中文字幕资源站| yourporn久久国产精品| 天堂资源在线中文精品| 久久免费看少妇高潮| 日本乱码高清不卡字幕| 久久99国产精品久久| 亚洲欧洲成人精品av97| 91精品国产综合久久精品app |