Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1517727
  • 博文数量: 114
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 1357
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-19 18:13
文章分类
文章存档

2010年(8)

2009年(9)

2008年(27)

2007年(62)

2006年(8)

我的朋友

分类: C/C++

2008-07-08 20:11:53

北京理工大学  20981  陈罡
今天整整用了一下午的时间,总算让libsvg, libsvg-cairo, libcairo, libpixman
等库可以流畅地在symbian s60模拟器上运行了。
这里需要说明一下的是,关于libsvg中使用的xml解析器。它可以使用expat解析器和libxml2的解析器,
对于symbian而言,我们可以很容易的拿到syexpat的源代码。但是能不能直接用在这里呢?答案是否定的。
syexpat虽然做得已经很好了,但毕竟是对原有expat库进行了基于c++类的封装。而目前在libsvg中所采用
的expat是“原汁原味”的。所以还需要做一点修改了,具体的过程很简单,就是要把作者封装了的类去掉,
然后使用expat原本的api函数即可。这里需要特别注意一点的是,syexpat的作者移植expat库的时候,由于考虑到symbian本身内建的字符处理系统是基于unicode的,因此,他把syexpat的配置进行了少许修改,
让expat传递给解析函数的变量字符串都是采用unicode进行编码的。但是做为svg解码器而言,是不需要这个变换的,所以我们需要找到expat_config.h文件,找到如下编译开关:
#define XML_UNICODE
#define XML_UNICODE_WCHAR_T 1
可以把它修改成为:
#undef XML_UNICODE
#undef XML_UNICODE_WCHAR_T
呵呵,这个小bug折腾了我半天,我还纳闷expat怎么会自动支持unicode呢?
模拟器抓图如下:
 
这张是经过了缩放和旋转以后的老虎图:
 
这张也是很著名的小狮子:
 
 
 
下班了。。。困死了。。。
 
最后,贴上一个sis包,请注意,这个是为s60 3rd平台开发的demo程序。需要经过签名才可以安装到手机
上。
 
sis包(需要自己做sign才能安装,安装路径不限)
文件: SvgMap.rar
大小: 347KB
下载: 下载
 
使用方法:
(1)选择open,在弹出对话框里面选择svg文件,如果没有错误的话,就会全屏显示
(2)数字键“1”代表放大;数字键“2”代表缩小;每次缩放,步长为10个像素
(3)支持如下格式的外部链接图片:
但是要求xlink的图片必需要与svg文件在相同的目录下。另外,xlink的图片最好不要过大,会造成内存
分配失败。
(4)查看完毕后,选择"close"菜单项即可(其实不选择也没关系,这里是做资源释放实验用的)
 
目前还在做的工作是:
(1)加入旋转功能,旋转后图片是相对左上角坐标(0,0)旋转的,因此,图片定位比较麻烦。
(2)加入对字体轮廓的渲染功能,这一点是在svgt中有所定义的,illustrator中也用这种方式
输出文字,不过要想在symbian上实现这种效果,最好借助于freetype来实现。因此,基于freetype
的backend还在开发中。
 
 
阅读(3848) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-09-26 14:36:37

能不能把原代码好给我?我的邮箱是caizf1987@126.com

chinaunix网友2009-09-26 14:35:32

好棒!