⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fb.c

📁 在ecos 下mingui 的移植开发
💻 C
字号:
/* * Copyright (c) 2000 Greg Haerr <greg@censoft.com> * Screen Driver Utilities * Microwindows framebuffer selection routines * Including this file will drag in all fblinX framebuffer subdrivers * When a new framebuffer subdriver is written, it should be referenced * here in select_fb_driver. * * 2000/10/20 Modified by Song Lixin  to be used under MiniGUI. */#include <assert.h>#include <stdio.h>#include <stdlib.h>#include "native.h"#include "../../ial/native/native.h"#include "fb.h"#ifndef __ECOS# include <syslog.h>#endif/* select a framebuffer subdriver based on planes and bpp*//* modify this procedure to add a new framebuffer subdriver*/extern SUBDRIVER fblinear1;extern SUBDRIVER fblinear2;extern SUBDRIVER fblinear4;extern SUBDRIVER fblinear8;extern SUBDRIVER fblinear16;extern SUBDRIVER fblinear24;extern SUBDRIVER fblinear32;#ifndef __ECOSextern SUBDRIVER fbvga16;#endifPSUBDRIVER select_fb_subdriver(PSD psd){	PSUBDRIVER  driver = NULL;	/* FB_TYPE_VGA_PLANES*/	/* device and memory drivers are not same for vga16*/	if(psd->planes == 4 && psd->bpp == 4) {#ifndef __ECOS		driver = &fbvga16;#endif    }	/* FB_TYPE_PACKED_PIXELS*/	/* device and memory drivers are the same for packed pixels*/	else if(psd->planes == 1) {		switch(psd->bpp) {		case 1:	//		driver = &fblinear1;		break;		case 2://			driver = &fblinear2;		break;		case 4://			driver = &fblinear4;		break;		case 8:			driver = &fblinear8;		break;		case 16://			driver = &fblinear16;		break;		case 24://			driver = &fblinear24;		break;		case 32://			driver = &fblinear32;		break;		}	}	/* return driver selected*/	return driver;}/*  * Initialize memory device with passed parms, * select suitable framebuffer subdriver, * and set subdriver in memory device. */int fb_mapmemgc(PSD mempsd,int w,int h,int planes,int bpp, int linelen,int size,void *addr){	PSUBDRIVER subdriver;	/* initialize mem screen driver*/	assert ( w > 0 );	assert ( h > 0 );	assert ( planes > 0 );	assert ( linelen > 0 );	assert ( size > 0 );	assert ( addr );	native_gen_initmemgc(mempsd, w, h, planes, bpp, linelen, size, addr);	/* select a framebuffer subdriver based on planes and bpp*/	subdriver = select_fb_subdriver(mempsd);	if(!subdriver)		return 0;	/* set and initialize subdriver into mem screen driver*/	if(!set_subdriver(mempsd, subdriver, TRUE))		return 0;	return 1;}/* * Set subdriver entry points in screen device * Initialize subdriver if init flag is TRUE * Return 0 on fail */int set_subdriver(PSD psd, PSUBDRIVER subdriver, int init){	/* set subdriver entry points in screen driver*/	psd->DrawPixel 	= subdriver->DrawPixel;	psd->ReadPixel 	= subdriver->ReadPixel;	psd->DrawHLine 	= subdriver->DrawHLine;	psd->PutHLine 	= subdriver->PutHLine;	psd->GetHLine 	= subdriver->GetHLine;	psd->DrawVLine 	= subdriver->DrawVLine;	psd->PutVLine 	= subdriver->PutVLine;	psd->GetVLine 	= subdriver->GetVLine;	psd->Blit 	= subdriver->Blit;	psd->PutBox	= subdriver->PutBox;	psd->GetBox	= subdriver->GetBox;	psd->PutBoxMask = subdriver->PutBoxMask;	psd->CopyBox	= subdriver->CopyBox;	/* call driver init procedure to calc map size and linelen*/	if (init && !subdriver->Init(psd))		return 0;	return 1;}/* fill in a subdriver struct from passed screen device*/void get_subdriver(PSD psd, PSUBDRIVER subdriver){	/* set subdriver entry points in screen driver*/	subdriver->DrawPixel 	= psd->DrawPixel;	subdriver->ReadPixel 	= psd->ReadPixel;	subdriver->DrawHLine 	= psd->DrawHLine;	subdriver->PutHLine 	= psd->PutHLine;	subdriver->GetHLine 	= psd->GetHLine;	subdriver->DrawVLine 	= psd->DrawVLine;	subdriver->PutVLine 	= psd->PutVLine;	subdriver->GetVLine 	= psd->GetVLine;	subdriver->Blit 	= psd->Blit;	subdriver->PutBox	= psd->PutBox;	subdriver->GetBox	= psd->GetBox;	subdriver->PutBoxMask	= psd->PutBoxMask;	subdriver->CopyBox	= psd->CopyBox;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -