摘要:
Text Editor Design 资料整理Design and Implementation of a Win32 Text EditorThe Craft of Text Editing, or Emacs for the Modern World, by Craig A. Finseth.PDF Here!Data Structures for Text Sequences, by Charles Crowley.PDF Here!ned – Text Editor of the FutureAbiWord DevelopementImproving the AbiWord’s Pie 阅读全文
摘要:
Abiword页面布局 AP_Win32FrameImpl::_DocumentWndProc 文档窗口过程函数在WM_SIZE消息中设置FV_View对象的整体尺寸,跟窗体的:设备单位 转换成:布局单位。m_iWindowWidth = 19695,m_iWindowHeight= 8520设备单位和布局单位的比例是:1:15。 在设置尺寸是会根据文档窗体的实际尺寸利用下面的公式转换: m_iWindowWidth= 实际窗体尺寸*1440*100/96*100 1440 是:#define UT_LAYOUT_RESOLUTION1440,是版面设计的分辨率,在ut_units.cpp的单 阅读全文
摘要:
Abiword中鼠标在文档中位置定位利用鼠标消息获取鼠标在客户区的坐标信息FV_View::_getMouseContext函数,layout view mouse pos x, pos y减去页面的外边距FV_View::_getPageForXY,具体算法参考:Abiword页面布局,系统默认的左边距是:1500,上边距是:375减去页面内边距fp_Page::mapXYToPosition函数中调用fp_VerticalContainer::mapXYToPosition(列)时,自动减去页面内边距。也可以理解成列的外边距,默认是1440。根据页面列的设置,循环所有的列用于确定坐标是否包 阅读全文
摘要:
TEXTMETRIC 结构详解函数GetTextMetrics可以获取一个字体文本度量并将它放入一个类型为TEXTMETRIC的数据结构中,该结构如下所示:typedef struct taTEXTMETRICThe TEXTMETRIC structure contains basic information about a physical font. All sizes are specified in logical units; that is, they depend on the current mapping mode of the display context.typede 阅读全文
摘要:
Abiword中自定义字段对象流程分析1、定义对象的id,ap_String_Id.hdcl(FIELD_Type_Custom, "Custom") //字段所属分类dcl(FIELD_Custom_FieldCustom, "FieldCustom") // 字段2、继承fp_FieldRun类,实现自定义字段3、fp_Fields.h_FIELDTYPE(CUSTOM, AP_STRING_ID_FIELD_Type_Custom)_FIELD(CUSTOM, AP_STRING_ID_FIELD_Custom_FieldCustom, Custo 阅读全文
摘要:
Abiword中字符操作一、关于不同字符的宏定义typedef gunichar UT_UCS4Char;typedef guint16 UT_UCS2Char;typedef UT_UCS4CharUT_UCSChar;/* Unicode */typedef guint32 gunichar;typedef guint16 gunichar2;AbiWord is now fully converted to using 32-bit Unicode internally在Abiword内部完全转换成32-bit Unicode 表示。二、针对UT_UCS*Char 的常用函数,参考:af 阅读全文
摘要:
Abiword菜单对象的维护1.在ap_Menu_Id.h文件中定义菜单的ID利用menuitem宏和ap_Menu_Id_List.h头文件定义一个枚举类型:_Ap_Menu_Id2.在ap_String_Id文件中定义菜单的显示名称和状态栏的提示信息3.Ev_EditMethod中定义利用typedef关键字定义EV_EditMethod_Fn函数类型4.在ap_EditMethod中定义EV_EditMethod_Fn的静态变量和EV_EditMethod对象的数组。并利用Defun(fn),Defun0(fn),Defun1(fn)宏定义各个函数5.在ap_Menu_ActionSet 阅读全文
摘要:
Abiword对话框资源对话框常用尺寸宽、高:276、310,字号:9号,字体:"宋体"宽、高:242、279,字号:9号,字体:"宋体"宽、高:269、306,字号:9号,字体:"宋体"模板的定义自定义对话框模板文件,在Abiword中所有的资源文件存储在ap_Win32Resources.rc2中。把对话框模板设计好后存成.rc2文件,并且包含到ap_Win32Resources.rc2中。在ap_Dialog_Id.h中定义对话框枚举类型。在ap_Win32Dialog_All.h中声明对话框在AP_Win32DialogFac 阅读全文
摘要:
Abiword 编辑事件设计Abiword作为专业的字处理软件,其各种编辑事件的处理封装比较巧妙。其中包含鼠标、键盘、字符等各种操作的封装。本文将详细记录事件的处理各个类的设计概要。一、EV_EditMethod类 该类的定义:具有根据名字调用方法的能力。** The EditMethod mechanism provides essentially a 'call-by-name'** capability. A key, mouse, menu, or toolbar event may be bound** to a 'named' function (o 阅读全文
摘要:
GDI对象的初始化一、GR_GraphicsFactory对象的初始化在XAP_App对象的构造函数中创建GR_GraphicsFactory对象。在XAP_Win32App构造函数中,调用GR_GraphicsFactory对象的registerClass函数初始化m_vAllocators、m_vDescriptors、m_vClassIds集合成员变量,前两个分别是GR_Allocator、GR_Descriptor函数指针。二、GR_Graphics对象的初始化在XAP_Win32FrameImpl::_createDocumentWindow函数中,根据各个窗口句柄创建GR_Grap 阅读全文