《南音工尺谱排版软件的设计与实现.doc》由会员分享,可在线阅读,更多相关《南音工尺谱排版软件的设计与实现.doc(3页珍藏版)》请在三一办公上搜索。
1、:;第 26 卷 第 8 期计算机工程与设计Computer Engineering and Design2005 年 8 月Aug. 2005V ol . 26N o. 8南音工尺谱排版软件的设计与实现陈荣鑫, 陈维斌(华侨大学 计算机科学系,福建 泉州 362021)摘 要:南音工尺谱具有竖体编排、词谱混排、使用特殊记谱符号等特点,需要采用特殊的排版技术。排版软件通过定义编辑对象,采用 MFC 的类型指针类进行对象管理,有效地解决了工尺谱串行化和进行各种编辑操作遇到的问题,软件还实现了记谱符号的快捷输入和版式风格设定等功能。关键词:工尺谱;竖体编排;编辑对象;MFC;类型指针类中图法分类号
2、:TP391 文献标识码:A文章编号:1000-7024 (2005) 08-2246-03Design and implement of editing software for NanyinCHEN Rong-xin,CHEN Wei-bin(Department of Computer Science , Huaqiao University, Quanzhou 362021, China)Abstract:Nanyin Gong-Chi music score has special editing technology requirement including vertical e
3、diting style,mixed editing style of words and music symbols and uses special music symbols. The editing software realized functions such as convenient music symbol input, editing operations which styled output through defining editing objects and using MFC typed pointer class to manage the objects.K
4、ey words:Gong-Chi music score; vertical editing style; editing object; MFC; typed pointer class了专用的排版软件,基于矢量字体,支持无级缩放,支持快捷的输入和版式风格多样的显示、打印输出。1引言南音是保存我国古代音乐文化最丰富、最完整的一大乐 种,被誉为“中国音乐史上的活化石”。几百年来,南音保持着 自己的声腔风格,现存曲目数千首,广泛流传于闽南、台湾和 东南亚一带,素有“御前清曲”的美誉。南音由指、谱、曲3 部分组成,都用南音工尺谱记2设计与实现2.1 编辑对象的定义工尺谱中的词一般为常用字符;谱则
5、采用字符和图元这 两种形式。由于谱中的某些特殊符号比一般字符长,我们采 用图元表达,一个图元就是绘制一个符号的图形。本文中编 辑对象指一个字符或图元,包括词和谱。编辑对象的参数包 括符号的码值、逻辑位置、属性(字体,字号,颜色)等。逻辑位 置指对象在编辑区内的行、列位置。工尺谱中词和谱的符号 属性是不同的,可以用两种方法管理视图页面,一种是视图分 层,每个编辑页面分为词和谱两个层次,每层各自定义符号属 性;另一种是混合管理,把词和谱在同一个类中定义,它们用 类中的标识符加以区别。本着简化的原则,我们采用后一种 方法,定义了统一的编辑对象类 CNanYinNote。C+的表达如 下:class
6、CNanYinNote : public CObjectpublic:录。工尺谱是南音独特的记谱方式,传统的排版特点有采用竖体编排,词在上,谱在下。词用较大的字号,谱的每一个列可分为左、中、右 3 小列,分别记录音名、指法(演奏法)和撩 拍(节拍),如图 1 所示。右一小列为撩拍,指示节奏和速度;中 间一小列为琵琶指法,说明该音使用什么指法来弹奏;左一小列为音名,记录南音最主要的 5 个音中存在词和谱词谱的混排,同一列南音的谱记号是特殊的符号,没有现成的字库,必须自定义。由于民间工尺谱多为手抄本,编辑 和保存很不方便。为更好传承和发扬这 个古老艺术,很有必要利用计算机技术 实现排版。排版基本要
7、求是实现对工尺 谱的读取、保存、编辑和打印等功能。以 前我们成功开发了基于点阵字体的工尺 谱编辑软件,为了更好适应 Windows 工 作环境,我们现在采用 VC 6.0 开发/所属页号/逻辑位置/类型:词、谱short m_PageID; CPoint m_Pos;short m_NoteType;图 1 南音工尺谱收稿日期:2 004-10-28。作者简介:陈荣鑫 (1975 -),男,福建厦门人,硕士研究生,研究方向为数据库技术及应用、面向对象技术; 陈维斌 (195 7-),男,福建泉州人,教授,研究方向为数据库技术及应用、面向对象技术。CString m_OutChar; / 一个字
8、符符,我们建立了一个可扩充的自定义字库,区位码从AAA1 开始,存放在系统字符文件 Eudc 中,系统加载后,可以用区位码 输入法输入。为了更快捷直观,我们设计了一个输入板,供特 殊字符的可视化输入,如图 2 所示。输入板对南音工尺谱的 特殊字符进行了分类,对选中的符号自动放大显示。用户可 以方便地用鼠标在输入板上点取字符进行输入,还可以根据 需要,增删面板上的字符。/图元标识符/标识是否为删除状态short m_GraphID;BOOL m_Delete;CNanYinNote ();CNanYinNote (short PageID, CPoint Pos, CString Out- Ch
9、ar,short NoteType,BOOL Delete); / 构造函数virtual CNanYinNote(); void Delete(BOOL bDelete); void Save(CFile* file);void Draw (CDC *pDC, short CurrentPageID, ChoosedStyle myStyle); /在视图中显示void Serialize(CArchive& ar);protected:/ 重载串行化函数DECLARE_SERIAL(CNanYinNote); /串行化声明;若编辑对象的类型是词或字符型的谱,先用字符定义函 数 Create
10、FontIndirect 根据用户设定的风格来设置字符的字体、 字号和颜色,然后调用图形字符输出函数 TextOut 显示字符, 这些函数支持无级缩放的矢量字符输出。若编辑对象的类型 是图元型的谱,则根据标识符 m_GraphID 调用对应子函数来 绘制图元。某些南音谱字符的长度超过一个字符,排版时要 求能灵活调节显示的长度,这就要求输入的对象可调整。采 用图元来表达这类字符,可以用 GDI 绘图方式实现显示。我们在定义编辑对象的时候已经考虑到串行化问题。串行化是为解决面向对象程序中对象的构造和存储而设计的。 MFC 的文档串行化是通过 CArchive 对象完成的,而 CArchive 对象
11、是建立在 CFile 对象基础上的,它克服了 CFile 对象操作 的繁琐与功能不强的缺点,允许从存储区内缓冲地读取数据, 或把数据写入存储区,以一种无冗余的方式处理二进制对象 数据。Serialize 函数是在 CObject 类中定义的虚函数,我们定 义的 CNanYinNote 类继承了 CObject,可以重载该函数以实现 串行化功能。图 2工尺谱输入板我们自制了输入框控件,在编辑状态时显示,在非编辑状态时自动隐藏。词和谱的输入框大小是不同的,由于屏幕视 图已经格式化,软件根据鼠标点取的编辑位置判断,激活对应 类型的输入框。2.3 排版基本操作的实现排版软件支持选择区域中对象的复制、插
12、入、剪切、粘贴和删除,以及撤消操作。这些操作需要一种良好的机制来统 一管理编辑对象。MFC 的类型指针类 CTypedPtrArray 类为CPtrArray 和 COb- Array 的类对象提供了一种类型安全的包装机制,其中的 C+ 类 型 检 测功 能 消 除 了 指针 类 型 不 匹配 的 错 误。而 且 所 有 CTypedPtrArray 类的函数都是内联型的,使用该模板不会明显 影响代码的尺寸和速度。我们用 CTypedPtrArray 管理编辑对 象,形如 CTypedPtrArraym_CNanY- inNoteArray;把 m_CNanYinNoteArray 定义成 M
13、FC 文档头文件 中的 public 对象,便于在文档和视图之间共享。视图中编辑 对象的任何改变,都同步更新 m_CNanYinNoteArray 的内容,而 m_CNanYinNoteArray 同时也是文档串行化的对象。选择操作是编辑中最基本的操作,复制、剪切和删除时先 要选择编辑对象。用户可以在编辑区中拖动鼠标选择,选中 区域部分用灰色背景提示。由于编辑区画布已经格式化,选 中区域部分是规整的,也就是说不存在跨小列错位的问题。选 择时要进行位置判断,对区域中编辑对象的识别和操作的实 现伪码如下:nn=m_CNanYinNoteArray.GetUpperBound()+1; while(
14、nn-) if(SelectedArea.m_PosMin=m_CNanYinNoteArray.GetAt(nn).m_PosMAX_PAGE_POS then图 3排版软件界面3结论本文根据南音工尺谱排版技术特点,论述了排版实现的几个关键技术。设计时通过定义编辑对象,并采用 MFC 的类 型指针类进行对象管理,实现记谱符号的快捷输入和编辑操 作的基本功能,以及对同一文档进行不同版式风格的输出。我 们开发的工尺谱排版软件,界面友好,操作方便,满足了南音 工尺谱排版的技术要求,相信对各种特色的排版软件的开发 有很好的借鉴作用。参考文献:1陈维斌.南音编辑及检索系统的设计与实现J.华侨大学学报(
15、自然科学版),1996,17(1):103-106.王珊, 王丹丹.南音教程M.厦门:厦门大学出版社, 2003.汉唐乐府.南管的乐谱工尺谱EB/OL. http:/www. hantang. com.tw/nankuan,2004.Richard J.面向对象程序设计: C+语言描述M.北京:机械工业出版社, 2003陈建春.Visual C+高级编程技术: 开发实例剖析M.北京:电 子工业出版社, 1999.闵燕, 周树杰, 张世博.在 Visual C+中任意多个控件的创建J.计算机工程与设计, 2003,24(8):55-57. Microsoft Co. MSDN LibraryCD
16、,2000./新增一页/ 页首/显示刷新EditObj.m_PageID+; EditObj.m_ptPos=PagePos(0,0); RefreshPage();end if2.4 风格设定234风格指工尺谱显示和打印输出的版式。提供风格设定功能的优点是,对于同一份文件,可以根据需要,由用户通过设 定纸张尺寸、背景格式、词谱的字体、字号、颜色等各种参数, 改变排版风格。软件支持所见即所得打印方式,可以对文档 进行打印预览。软件界面如图 3 所示。567(上接第 2245 页)从新技术应用的角度来说,本方案在为USB 接口的应用提出了新颖、简便和可靠的解决方案的同时,也凸显出 USB 接口为
17、保健治疗仪提供的扩展性,意味着这种仪器在保健领 域的进一步功能上的升级、拓展甚至智能化,这些都说明此种 技术具备极深的开发潜力,值得进一步的探讨和更广范围的 应用。(3):20-22.Texas InstrumentsTUSB3210 Data manuaLR. Dallas Texas: Texas Instruments, 2003.张念淮, 江浩.USB 总线接口开发指南M.北京:国防工业出版社, 2001.178-189.Chirs Cant.Windows WDM 设备驱动程序开发指南M.北京:机械工业出版社, 2000.235-261.杨乐平, 李海涛, 肖相生.LabVIEW 程序设计与应用M.北京:电子工业出版社, 2001.159-173. 张虎军,黄晓明,张超群.通讯与网络技术在医学仪器设计中的 应用J.医疗卫生装备, 2003,(6):32-33.345参考文献:61 沙宪政, 尹勇, 魏巍.基于 USB 的家庭健康监护系统数据采集的设计J.电子技术, 2003,(1):29-31.2 崔岩松. USB 接口的高速数据采集卡的设计与实现 J. 2003,7