BREW 应用中的SVG技术

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/6509013 SVG是二维的向量图像格式,是由W3C和3GPP的提出的标准,实现了内置的交互性,支持跨越显示环境的缩放,文件尺寸比BMP, JPEG,GIF等格式还要小。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/6509013

SVG是二维的向量图像格式,是由W3C和3GPP的提出的标准,实现了内置的交互性,支持跨越显示环境的缩放,文件尺寸比BMP, JPEG,GIF等格式还要小。SVG的编辑工具非常简单易用,基于XML的格式从而容易创建和修改,支持富文本选项。

在BREW 3.1.4开始,IMediaSVG 接口开始支持SVG的播放,暂停,终止,快进和快退等,同时支持按键,笔操作,旋转和缩放等操作。

       希望使用SVG的时候,首先需要使用一些商用的图像编辑工具来创建SVG文件,例如 Beatware Mobile Designer 2.0™, Beatware e-PicturePro 5.0™,Ikivo Animator 2.0 ™,Adobe® Illustrator CS2®,Adobe® GoLive CS2®和Open source Inkscape 0.44.1等等。

       然后,生成BREW中需要的相关内容,例如:

<!-- Button -->

<g id = "Button_Back2" nav-prev = "url(#Button_GetNew)" navnext = "url(#Button_Options5)" focusable="false" >

其中定义了 ‘nav-prev’和 ‘nav-next’两个元素等等,来保证导航功能。一般的情况下,需要禁止聚焦功能,例如<g focusable="false" id="Animation_38">,并且需要使用gzip压缩目标文件。

在SVG的内容生成之后,一般使用web浏览就可以了解SVG的基本显示,并进行一下交互性测试。但需要注意的是,不同浏览器对SVG的支持程度也不相同。SVG中的XML 文档结构可以通过Opera 浏览器来验证,而且该浏览器还能够报告出错误的行号。在安装了SVG的扩展类之后,BREW模拟器就能够播放SVG了。

在BREW应用中,首先要获得IMediaSVG接口:

ISHELL_CreateInstance(pme->m_pIShell,AEECLSID_MEDIASVG,(void**)pme->m_pIMediaSVG);

其次,确定需要播放的文件内容:

AEEMediaData mData;

mData.clsData = MMD_FILE_NAME;

mData.pData = svg_filename;

mData.dwSize = 0;

IMEDIA_SetMediaData(pMe->pIMediaSVG, &mData);

然后,注册回调函数:

IMEDIA_RegisterNotify(pMe->pIMediaSVG, MediaNotifyCB, pMe);

最后,就可以使用IMEDIA_Play(pMe->pIMediaSVG)来播放文件了。其中回调函数MediaNotifyCB负责获取SVG文件中的一个帧,并显示在屏幕上。

void MediaNotifyCB(void * pUser, AEEMediaCmdNotify * pCmdNotify){

APP_CLASS * pMe = (APP_CLASS*) pUser;

switch(pCmdNotify->nStatus)

{

case MM_STATUS_FRAME:

{

AEEDeviceInfo di;

IBitmap* frameBuf;

IMEDIA_GetFrame(pMe->pIMediaSVG, &frameBuf);

ISHELL_GetDeviceInfo(pMe->a.m_pIShell, &di);

IDISPLAY_BitBlt(pme->m_pIDisplay,0,0,di.cxScreen,di.cyScreen, frameBuf,0,O,AEE_RO_C0PY );

IDISPLAY_UpdateEx(pMe->a.m_pIDisplay, FALSE);

break;

}

}

return;

}

对于SVG中的交互事件,在应用中要做相应的消息处理:

case EVT_KEY:

switch(wParam)

{

case AVK_DOWN:

nErr=IMEDIASVG_Focus(pme->pIMediaSVG,MM_SVG_FOCUS_EVENT_NEXT);

break;

case AVK_UP:

nErr=IMEDIASVG_Focus(pme->pIMediaSVG,MM_SVG_FOCUS_EVENT_PREVIOUS);

break;

case AVK_SELECT:

nErr=IMEDIASVG_Focus(pme->pIMediaSVG,MM_SVG_FOCUS_EVENT_ACTIVATE);

break;

case AVK_END:

nErr = IMEDIA_Stop(pMe->pIMediaSVG);

break;

}

在手机上测试支持SVG应用的时候,要注意手机可能不支持SVG的压缩状态。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wireless_com/archive/2010/07/21/5751903.aspx

目录
相关文章
|
数据安全/隐私保护
Alien Skin ExposureX8最新版图片滤镜磨皮插件
说起照片编辑软件,相信大家都不陌生,一款功能齐全又容易上手的照片编辑软件能带来更高的效率和更好的作品,那照片编辑软件哪个好用呢?Alien Skin ExposureX8下载如下:http://t.csdn.cn/HoGEe
178 0
|
4月前
|
人工智能 JavaScript Linux
基于Three.js的3D自动纹理化开发包
DreamTexture.js 基于 Three.js 和稳定扩散(stable diffusion) AI 模型开发,用于实现 3D 模型的自动纹理化。
56 0
|
4月前
|
JavaScript 算法 计算机视觉
一款简单图像变换工具基于 opencv ,docker ,jquery
一款简单图像变换工具基于 opencv ,docker ,jquery
35 1
|
8月前
|
Java BI API
探索Batik库:优雅处理SVG图形的利器
在现代的应用开发中,矢量图形的使用越来越广泛,特别是在Web开发和图像处理领域。Batik库作为一款优雅的SVG图形处理工具,可以帮助我们生成、操作和展示矢量图形。本文将深入探讨Batik库的基本概念、特点,以及如何在实际应用中使用它进行SVG图形处理。
726 0
|
9月前
|
网络安全
screen4.9.0 离线安装
screen4.9.0 离线安装(服务器ssh断连后,可以继续保持程序运行,以及查看打印信息)
229 0
|
9月前
|
移动开发 前端开发 JavaScript
leaflet使用domtoimage插件与h5 canvas实现截图功能并下载
leaflet使用domtoimage插件与h5 canvas实现截图功能并下载
|
异构计算
Alien Skin Exposure最新版PS后期调色滤镜免费插件
Alien Skin Exposure这是一款一款PS后期调色滤镜,黑白,彩色,人像风,怀旧风,电影风,调色预设非常多,既可以独立应用, 也可以作为插件使用,很直观地能看到每一个效果,可以说是手残党的一个神器。
234 0
|
Python
《Python实例》用Pillow录制屏幕,制作gif ,太简单了
gif 的文章上次实现了图片的合成,看下我们上次的需求分解
321 0
《Python实例》用Pillow录制屏幕,制作gif ,太简单了
Flutter:如何在没有插件的情况下制作旋转动画
Flutter:如何在没有插件的情况下制作旋转动画 本文将向您展示如何使用Flutter 中内置的RotationTransition小部件创建旋转动画。
221 0