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

📄 ecos_synth_qvfb.c

📁 microwindows最新源码
💻 C
字号:
/* kate: space-indent off; indent-width 4; replace-tabs-save off; replace-tabs off; show-tabs on;  tab-width 4; *//* * Copyright (c) 1999, 2000 Greg Haerr <greg@censoft.com> * * Microwindows Screen Driver for Linux kernel framebuffers * * Portions used from Ben Pfaff's BOGL <pfaffben@debian.org> * * Modified for eCos by *   Alexander Neundorf <neundorf@kde.org> *   Gary Thomas <gthomas@redhat.com> *   Richard Panton <richard.panton@3glab.org> * * Note: modify select_fb_driver() to add new framebuffer subdrivers ftok is taken from FreeBSD: * Copyright (c) 1994 SigmaSoft, Th. Lockert <tholo@sigmasoft.com> * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products *    derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */#define _GNU_SOURCE 1#include <assert.h>#include "device.h"#include "genfont.h"#include "genmem.h"#include "fb.h"#include "ecos_synth_qvfb.h"#include <cyg/infra/diag.h>#include <cyg/hal/hal_io.h>#include <cyg/infra/cyg_type.h>#include <cyg/infra/cyg_ass.h>// code for accessing the Qt virtual framebufferstruct QVFbHeader* qvfb_header=NULL;char* qvfb_connect(){	int sid=0;	char pipeName[256];	int displayId=0;	cyg_uint32 key;	if (qvfb_header)		return (char*) qvfb_header;	snprintf(pipeName, 256, QT_VFB_MOUSE_PIPE, displayId);	key=cyg_hal_sys_ftok(pipeName, 'b');	sid=cyg_hal_sys_shmget(key, 0, 0);	if (sid<0)		return NULL;	char* qvfb_buf=(char*)cyg_hal_sys_shmat(sid, 0, 0);	if (!qvfb_buf)		return NULL;	qvfb_header=(struct QVFbHeader*)qvfb_buf;	return qvfb_buf+qvfb_header->dataoffset;}void qvfb_update(void){	if (!qvfb_header)		return;	qvfb_header->update_x1=0;	qvfb_header->update_y1=0;	qvfb_header->update_x2=qvfb_header->width;	qvfb_header->update_y2=qvfb_header->height;	qvfb_header->dirty=0xff;}void qvfb_update_rect(int x1, int y1, int x2, int y2){	if (!qvfb_header)		return;	qvfb_header->update_x1=x1;	qvfb_header->update_y1=y1;	qvfb_header->update_x2=x2;	qvfb_header->update_y2=y2;	qvfb_header->dirty=0xff;}void qvfb_disconnect(void){	if (!qvfb_header)		return;	cyg_hal_sys_shmdt(qvfb_header);	qvfb_header=NULL;}int qvfb_width(void){	if (!qvfb_header)		return -1;	return qvfb_header->width;}int qvfb_height(void){	if (!qvfb_header)		return -1;	return qvfb_header->height;}int qvfb_depth(void){	if (!qvfb_header)		return -1;	return qvfb_header->depth;}int qvfb_linestep(void){	if (!qvfb_header)		return -1;	return qvfb_header->linestep;}int qvfb_open_keyboard(){	char pipeName[256];	int displayId=0;	snprintf(pipeName, 256, QT_VFB_KEYBOARD_PIPE, displayId);	int fd=cyg_hal_sys_open(pipeName, CYG_HAL_SYS_O_RDONLY, 0);//	diag_printf("keyboard fd: %d\n", fd);	return fd;}int qvfb_open_mouse(){	char pipeName[256];	int displayId=0;	snprintf(pipeName, 256, QT_VFB_MOUSE_PIPE, displayId);	int fd=cyg_hal_sys_open(pipeName, CYG_HAL_SYS_O_RDONLY, 0);//	diag_printf("mouse fd: %d\n", fd);	return fd;}

⌨️ 快捷键说明

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