频道栏目
首页 > 程序开发 > 移动开发 > 其他 > 正文
svgalib编译安装与应用方法
2018-05-10 03:07:06      个评论    来源:宁静以致远  
收藏   我要投稿
svgalib编译安装:
一、要先安装libx86-1:
https://packages.ubuntu.com/lucid/libx86-1

tar xzf libx86_1.1+ds1.orig.tar.gz?
gunzip libx86_1.1+ds1-6.diff.gz
cd libx86-1.1/
patch -p1 < ../libx86_1.1+ds1-6.diff?
make // 出错,修改lrmi.h,添加宏, 参考561491.patch

lrmi.h添加如下代码:
#if defined(__linux__) && !defined(TF_MASK)
#define TF_MASK X86_EFLAGS_TF
#define IF_MASK X86_EFLAGS_IF
#define VIF_MASK X86_EFLAGS_VIF
#define IOPL_MASK X86_EFLAGS_IOPL
#endif

#define REAL_MEM_BASE ((void *)0x10000)
#define REAL_MEM_SIZE 0x10000
#define REAL_MEM_BLOCKS 0x100
修改后:
make
sudo make install

二、下载安装svgalib:
下载地址:
https://launchpad.net/ubuntu/+source/svgalib/1:1.4.3-30
svgalib_1.4.3.orig.tar.gz
svgalib_1.4.3-30.debian.tar.gz
svgalib_1.4.3-30.dsc

打补丁
tar xzf svgalib_1.4.3.orig.tar.gz
tar xzf svgalib_1.4.3-30.debian.tar.gz
cd svgalib-1.4.3.orig/
for file in ../debian/patches/*.patch; do patch -p1 < $file; done

编译安装:
sudo make install??

把库考到/lib:

sudo cp svgalib-1.4.3.orig/sharedlib/*so* /lib

测试:

官方例子:
 

#include 
#include 
 
int main(void)
{
   vga_init();
   vga_setmode(G320x200x256);
   vga_setcolor(4);
   vga_drawpixel(10, 10);
 
   sleep(5);
   vga_setmode(TEXT);

   return EXIT_SUCCESS;
}

非常简单,没什么好说的。

我把svgalib应用在我前面用HZK16实现的电子书上,就可以在pc的tty终端显示电子书了。主要把之前对fbmem的put pixel改为 vga_drawpixel(),其他地方相应改一下即可。下面是我写的两个函数:

svga_clean()函数,代替原来的memset(fbmem, 0, screen_size);:


void svga_clean(void)
{
	int x, y;	
	vga_setcolor(4);

	for (x = 0; x < 320; x++)
		for (y = 0; y < 200; y++)
			vga_drawpixel(x, y);	
}

crt_show_pixel(int x,int y,int color)函数代替原来的lcd_put_pixel():

void ctr_show_pixel(int x,int y,int color)
{
	vga_setcolor(color);	//4泛黄的纸,0黑色
	vga_drawpixel(x, y);
}

lcd_init()函数中把对LCD的操去掉,直接设置几个分辨率参数即可:

int lcd_init(void)
{
	
	//vga_setmode(G320x200x256);
	var.xres = 320;
	var.yres = 200;
	line_width  = var.xres * var.bits_per_pixel / 8;
	pixel_width = var.bits_per_pixel / 8;
	screen_size = var.xres * var.yres * var.bits_per_pixel / 8;
	
}

main()函数中添加对svga的一些初始化代码:

        vga_init();
	vga_setmode(G320x200x256);
	gl_setpalettecolor(4, 0xE7>>2, 0xDB>>2, 0xB5>>2);   /* 0xE7DBB5  */ /* 泛黄的纸 */
	svga_clean();

编译时加上链接选项-lvga -lvgagl:

gcc -o svgatest main.c function.c -lvga -lvgagl?

要在tty文本模式下执行程序,程序会进入图形模式来显示。

如其他地方有问题的话,适当修改一下即可。

使用svgalib在虚拟机tty终端下显示电子书效果:

\

点击复制链接 与好友分享!回本站首页
上一篇:移动开发中百度地图使用方法
下一篇:移动开发ionic打包APP方法
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站