📄 fb.c
字号:
/* * Copyright (c) 2000 Greg Haerr <greg@censoft.com> * Portions Copyright (c) 2002 by Koninklijke Philips Electronics N.V. * * 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. */#include <assert.h>#include <stdio.h>#include <stdlib.h>#include "device.h"#include "genmem.h"#include "fb.h"/* select a framebuffer subdriver based on planes and bpp*//* modify this procedure to add a new framebuffer subdriver*/PSUBDRIVER select_fb_subdriver(PSD psd){ PSUBDRIVER driver = NULL; extern SUBDRIVER fblinear1; extern SUBDRIVER fblinear2; extern SUBDRIVER fblinear4; extern SUBDRIVER fblinear8; extern SUBDRIVER fblinear16; extern SUBDRIVER fblinear24; extern SUBDRIVER fblinear32; extern SUBDRIVER fblinear32alpha;#if FBVGA extern SUBDRIVER vgaplan4; extern SUBDRIVER memplan4; /* FB_TYPE_VGA_PLANES*/ if(psd->planes == 4 && psd->bpp == 4) { if(psd->flags & PSF_MEMORY) driver = &memplan4; else driver = &vgaplan4; }#endif /* FB_TYPE_PACKED_PIXELS*/ /* device and memory drivers are the same for packed pixels*/ 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: if (psd->pixtype == MWPF_TRUECOLOR8888) { driver = &fblinear32alpha; } else { driver = &fblinear32; } break; } } /* return driver selected*/ return driver;}/* * Initialize memory device with passed parms, * select suitable framebuffer subdriver, * and set subdriver in memory device. */MWBOOLfb_mapmemgc(PSD mempsd,MWCOORD w,MWCOORD h,int planes,int bpp,int linelen, int size,void *addr){ PSUBDRIVER subdriver; /* initialize mem screen driver*/ initmemgc(mempsd, w, h, planes, bpp, linelen, size, addr);/* FIXME kluge for current portrait mode subdriver in scr_fbportrait.c*/if(mempsd->portrait != MWPORTRAIT_NONE) return 1; /* 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;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -