Commands模块中还存在一个很重要的模块:应用程序宿主。它的对象类型是DCSoft.Writer.WriterAppHost。它搭建一个比较独立的后台环境,将命令功能模块、用户开发的服务器模块等等组织在一起。一般而言一个应用程序只有一个Host,当然也可以有多个Host同时运行。
WriterAppHost的主要成员有
public DCSoft.Writer.Commands.WriterCommandContainer CommandContainer{get;set;}
功能模块模块容器对象。
public System.ComponentModel.ServiceContainer Services{get;set;} 服务器对象容器。
public void AddService( Type type , object instance ) 添加服务器容器对象实例。
public WriterAppHostConfig Config{get;set;} 配置信息对象。 此外定义有静态成员
public static string GetResigerMachineCode ( )
获得注册时是用的本地机器码。 public static bool Register( string code )
进行产品注册。
public static WriterAppHost Default{get;}
默认的宿主对象,基本上都是使用本属性返回的对象实例。
编辑器控件和文档对象都具有AppHost属性来设置和返回应用程序宿主对象,通常都是返回WriterAppHost.Default指定的默认值。系统都是通过这个宿主来获得编辑器命令功能模块和用户开发的服务器对象实例。
4.1.6. Data
Data模块是管理数据的内部模块。用于实现数据源绑定。
4.1.7. 可扩展文件系统
Data模块中包括了一个可扩展的文件系统操作模块。编辑器内部使用这个文件系统来执行内部的加载和保存文档的功能。默认情况下,编辑器配置的基本的文件系统是基于本地操作系统文件的,开发者可以扩展该文件系统模块来实现将文件保存在数据库、FTP服务器或其他地方。
DCWriter中定义了一个名为DCSoft.Writer.Data.IFileSystem的接口,其定义如下: ///
/// 打开文件 /// /// ///
4.1.8. Printing
Printing是打印相关的功能模块。
4.1.9. Security
Security是安全和授权相关的模块,是实现痕迹保留和权限等级的基础。
4.2. 文档视图的度量和坐标
DCWriter的文档视图的度量单位是System.Drawing.GraphicsUnit.Document,也就是三百
分之一英寸,而没采用和设备相关的像素单位,这样就能实现所见即所得了。
由于.NET框架中描述打印相关的度量单位就是百分之一英寸为单位,为此DCWriter的页面设置中采用是的百分之一英寸为单位的。因此文档对象的纸张大小、页边距等都是采用百分之一英寸为单位的。
默认情况下,DCWriter文档采用A4大小的纸张,也就是宽度827个单位(8.27英寸)、高度1169个单位(11.69英寸),采用纵向打印模式,页边距都是100个单位(1英寸)。页眉顶端距离纸张上边缘为50个单位(0.5英寸),页脚低端距离纸张下边缘为50个单位(0.5英寸)。
4.3. 文档内容样式开发接口
在大部分情况下,开发者想要改变文档内容,都是通过调用编辑器命令的方式来实现的,关于编辑器命令可参考后面的相关章节。
DCWriter支持复杂的文档内容样式,包括字体、颜色、边框、对齐方式等等。DCWriter中是集中管理文档样式信息,并且文档元素引用文档样式。
文档对象XTextDocument有一个签名为“public DCSoft.Writer.Dom.DocumentContentStyleContainer ContentStyles{get;set;}”的属性。该属性值就是文档内容样式容器,DocumentContentStyleContainer类型主要属性有 public DCSoft.Drawing.ContentStyle Default{get;set;}
文档默认样式,它实际上返回一个类型为DCSoft.Writer.Dom.DocumentContentStyle的对象实例。
public DCSoft.Drawing.ContentStyleList Styles{get;set;}
文档中所有样式的列表,该列表元素成员类型实际上是DCSoft.Writer.Dom.DocumentContentStyle。
DCWriter文档元素都是从XTextElement类型派生的,XTextElement类型有一个签名为“public virtual int StyleIndex{get;set;}”的属性,该属性值就是其引用的文档样式编号,因此可以使用代码“document.ContentStyles.Styles[ element.StyleIndex]”获得文档元素引用的文档内容样式;若StyleIndex为-1或者其他不合理的值,则文档元素引用默认样式,也就是document.ContentStyles.Default的值。
注意:当文档在一个编辑器控件中显示和编辑时,文档的默认字体就自动设置为编辑器控件的字体;文档的默认文本颜色就自动设置为编辑器的前景色。这个过程是自动的,外界即使修改了文档的默认属性也是没有用的。
XTextElement类型有一个签名为“public DocumentContentStyle Style{get;set;}”的属性就是返回改文档元素引用的内容样式对象。
文档元素在实际使用文档内容样式时不会直接使用其引用的文档样式,而是先将文档样式和文档默认样式进行合并,再使用它。为此XTextElement类型有一个签名为“public DocumentContentStyle RuntimeStyle{get;}”的属性来返回这个运行时实际使用的文档样式。
DocumentContentStyle类型主要属性有 背景相关属性
public System.Drawing.Color BackgroundColor{get;set;}
背景色。默认为透明色。
public DCSoft.Drawing.XImageValue BackgroundImage{get;set;} 背景图片。
public System.Drawing.ContentAlignment BackgroundPosition{get;set;}
背景对齐方式。
public float BackgroundPositionX{get;set;} 背景X轴方向偏移量。
Public float BackgroundPositionY{get;set;} 背景Y轴方向偏移量。
public bool BackgroundRepeat{get;set;} 是否重复绘制背景。 文字相关属性
public System.Drawing.Color Color{get;set;} 文字颜色。
public DCSoft.Drawing.XFontValue Font{get;set;} 字体。
public string FontName{get;set;}
字体名称,默认为系统默认字体名称。 public float FontSize{get;set;} 字体大小,默认为9。 public bool Italic{get;set;} 斜体,默认为false。 public bool Underline{get;set;} 下划线,默认为false。 public bool Strikeout{get;set;} 删除线,默认为false。 public bool Bold{get;set;} 粗体。
public bool Superscript{get;set;} 上标样式,默认为false。 public bool Subscript{get;set;} 下标样式,默认为false。 public float Spacing{get;set;} 字符间距,默认为0。 边框相关属性
public bool BorderLeft{get;set;}
是否显示左边框线,默认为false。 public bool BorderTop{get;set;} 是否显示上边框线,默认为false。 public bool BorderRight{get;set;} 是否显示右边框线,默认为false。 public bool BorderBottom{get;set;} 是否显示下边框线,默认为false。 public float BorderWidth{get;set;} 边框线粗细,默认为0。
public System.Drawing.Drawing2D.DashStyle BorderStyle{get;set;} 边框线样式,默认为Solid。 public float BorderSpacing{get;set;}