顺序布局构建器体系结构的制作方法

文档序号:6360028阅读:202来源:国知局
专利名称:顺序布局构建器体系结构的制作方法
顺序布局构建器体系结构
背景技术
使用Web浏览器再现结构化的Web内容,诸如HTML和CSS内容,典型地牵涉到处理包括标记的结构化文档以确定内容的布局(layout),使得其可以由Web浏览器呈现。这样的处理可以包括内容位置、大小和形状计算,以便从所述标记确定相关联的内容将如何被呈现在屏幕或显示器上。对于可用性和用户感知而言,期望的是布局和呈现算法按照可适用的标准快速并正确地工作。在整个业界,布局处理普遍以递归方式执行。例如,这样的处理可以包括在HTML标记的根节点上发起处理操作,并以递归的方式贯穿该标记向下处理到叶节点。该处理典型地在HTML文档被呈现之前在整个HTML文档上进行。此外,现代的多核体系结构可以准许处理被并行地执行。然而,因为布局处理的递归性质,从并行处理所得到的优势不能被充分利用。
布局处理的递归性质也可能导致处理中的重复,这进而又可能使性能和用户体验降级。

发明内容
本概要被提供来以简化的形式介绍概念的选择,这些概念还将在下面的详细说明中进行描述。本概要既不打算确认所要求保护的主题的关键特征或必要特征,也不打算被使用来限制所要求保护的主题的范围。按照一个或多个实施例,对结构化文档的布局处理以顺序的方式实施(conduct)。布局过程被分成可以顺序地执行的多个更小的步骤。在至少一些实施例中,布局构建器被结合栈使用以控制在文档的结构层次的各层次上的布局执行。不可变的数据结构被使用,并且其允许顺序布局操作的并行执行。在至少一些实施例中,可以完成布局序列的部分执行来产生可用的数据。


在全部附图中,使用相同的标号来标注同样的特征。图I图示了按照一个或多个实施例的、在其中可以利用这里描述的各种原理的操作环境。图2图示了按照一个或多个实施例的示例性体系结构。图3描述了按照一个或多个实施例的、在顺序布局构建过程中的布局空间分配协议。图4是描述按照一个或多个实施例的方法中的步骤的流程图。图5图示了按照一个或多个实施例的布局框的类层次。图6图示了按照一个或多个实施例的框构建器的类层次。图7图示了可以被使用来实施一个或多个实施例的示例性系统。
具体实施例方式综沭
按照一个或多个实施例,布局处理以顺序的方式实施。布局过程被分成可以顺序地执行的多个更小的步骤。在至少一些实施例中,布局构建器被结合栈使用以控制在结构化文档的结构层次的各层次上的布局执行。不可变的数据结构被使用,并且允许顺序布局操作的并行执行。在至少一些实施例中,可以完成布局序列的部分执行来产生可用的数据。这里描述的技术可以结合任意类型的结构化文档一起被使用,作为例子而不是限制,结构化文档诸如是HTML文档。在一个或多个实施例中,在布局构建器的影响下,顺序布局处理被组织为按一组顺序的步骤执行的非递归树径(tree walk),所述的一组顺序的步骤诸如像“进入块”、“退出块”、“构建行”等等。一个个步骤可以具有恒定的时间来执行,并且整个过程可以在一个个步骤后被停止,以便产生可用于再现和用户交互的部分布局。
在一个或多个实施例中,通过把在布局构建期间使用的临时数据与提供用于再现和交互的布局结果的持久性数据进行分离,而将布局构建数据结构组织成达到高效紧致性。临时数据由一组布局构建器代表,每种布局一个布局构建器。布局构建器是在布局处理期间临时存在的临时对象。另一方面,持久性数据被表示为存储在最终得到的显示树中的布局框,显示树可以被处理来呈现相关联的内容。这样做可以比过去更加高效地利用存储器资源。例如,在HTML处理的上下文中,在任一特定时间存在的布局构建器的数量由HTML文档的深度来限定,而不是由HTML文档的宽度来限定。因此,由布局构建器代表的临时数据不必驻留在最终得到的显示树中。另外,被处理的数据和处理算法都以可伸缩的方式被组织。这允许任意的布局片段的执行。这种顺序可伸缩性导致了对于可以被使用于回溯针对滚动、分页、栏目化等等的尝试的算法的改进性能。此外,在至少一些实施例中,布局结果由被设计为不可变的布局框所代表。这使得布局框能够在动态情景中被再次使用,动态情景诸如是渐增的部分更新、并行布局、渐进式再现以及回溯布局执行。此外,在至少一些实施例中,在规定的、计算的以及已用值和结构之间强制分离。这允许跨整个布局流水线的、部分的和可再次使用的计算。在HTML上下文中,规定的值涉及在原始的HTML标记中如何规定值。这些值可能是矛盾的、不完整的和无效的。这些不一致性可使规定的值很难利用。计算的值是与归一化属性和归一化值的组合相关联的。这些值是不矛盾的且是可靠的。已用值代表在布局框中存储的值。在随后的讨论中,提供了标题为“操作环境”的章节,其描述了一种在其中可以利用一个或多个实施例的环境。在这之后,标题为“示例性体系结构”的章节描述了按照一个或多个实施例的示例性体系结构。接着,标题为“示例性方法”的章节描述了按照一个或多个实施例的示例性方法。在这之后,标题为“实施细节”的章节描述了按照一个或多个实施例的实施细节。最后,标题为“示例性系统”的章节描述了可以被使用来实施一个或多个实施例的示例性系统。操作环境
图I图示了按照一个或多个实施例的操作环境,总地标为100。环境100包括计算设备102,其具有一个或多个处理器104、一个或多个计算机可读存储媒体106、和驻留在计算机可读存储媒体上并可由处理器执行的一个或多个应用108。作为例子而不是限制,所述计算机可读存储媒体可以包括典型地与计算设备相关联的、所有形式的易失性和非易失性存储器和/或存储媒体。这样的媒体可以包括ROM、RAM、闪存、硬盘、可拆卸媒体等等。下面在图7中显示和描述了计算设备的一个特定的例子。另外,计算设备102包括以web浏览器110形式的软件应用。可以使用任何适当的web浏览器,其例子是从本文档的受让人和其它方可得到的。另外,计算机可读存储媒体106可以包括顺序布局构建器111,其按上面和下面所描述的那样进行操作。顺序布局构建器111可以被实施为可由应用108和浏览器110使用的独立的组件。替换地或另外地,顺序布局构建器111可以被实施为应用108和/或浏览器110的一部分。在操作中,顺序布局构建器111允许诸如HTML文档这样的结构化文档的顺序处理,以及允许布局以顺序的方式被计算。顺序布局构建器使用高效的体系结构,该体系结构利用了布局构建器的用来监督布局处理的过程的用途、利用了熟知它们自己的针对内容处理的要求的框构建器类型、以及利用了由框构建器类型的实例构建且持有最终要在显示器或屏幕上再现的数据的相关联的布局框。另外,环境100包括诸如因特网那样的网络112,以及可以从其接收内容和向其发送内容的一个或多个网站114。这样的内容可以包括诸如HTML文档的结构化文档,以及可以由顺序布局构建器111如上面和下面描述的在其上进行操作的其它web内容。计算设备102可以被具体化为任何适当的计算设备,作为例子而不是限制,诸如是台式计算机,便携式计算机,比如个人数字助理(PDA)、蜂窝电话那样的手持式计算机,等
坐寸o已经描述了示例性操作环境后,现在考虑可以被使用来顺序地处理诸如HTML的结构化文档的示例性体系结构的讨论。在下面的讨论中,使用HTML做为结构化文档的例子。应当理解和明白,下面描述的技术可以结合其它类型的结构化文档一起被利用,而不背离所要求保护的主题的精神和范围。示例件体系结构
图2图示了按照一个或多个实施例的示例性体系结构,总地标为200。在这个特定的例子中,体系结构200包括布局构建器202、框构建器204、布局框206、容器框208和行框210。另外,体系结构200包括可以在HTML的顺序布局处理期间采取的动作212、214、216和218的表示。该体系结构被使用来构建布局框的显示树,其中布局框包含内容或数据,诸如文本、图像或图形元素,比如将要在屏幕或显示器上再现的顺序矢量图形(Svg)元素。在图示的和描述的实施例中,布局构建器202构成监督或组织整个顺序布局处理的布局引擎或对象。布局构建器202负责实例化布局框206,然后与框构建器204进行通信以务必使(see)布局框206被填充以要在屏幕或显示器上再现的内容。框构建器204是负责构建特定类型的布局框的对象。特别地,有不同类型的框构建器,在204上只显示了其中的一个。有用于构建表、图像、多色、行等等的框构建器。框构建器被特定地配置成构建特定的一段内容。如本领域的技术人员所理解的,不同类型的内容具有不同的布局要求。每个不同类型的框构建器熟知针对它的相关联的内容类型的不同布局要求,并能构建相对应的一段内容。
在图示的和描述的实施例中,框构建器204是代表这些不同类型的构建器的共同属性和方法的抽象类,并因此定义了框构建的通用联系(contact)。布局构建器202接收HTML文档并且顺序地移动穿过该文档,与框构建器204进行通信,框构建器204进而又用它的内容来填充布局框206。在这个特定的例子中,容器框208和行框210代表布局框206的子类别或子类。行框210代表对应于一行文本的个别情形。容器框208是可包含诸如容器框和行框这样的其它框的框。诸如图像和Svg图元这样的内容被作为容器框对待。动作212、214、216和218构成代表在顺序布局处理期间发生的一系列基本构建步骤的动作或函数。这里,有四个动作BuildLine (f)、EnterBlock (f)、ReEnterBlock (f)和ExitBox (f)。所述函数加有代表布局构建器的缩写“LB”的前缀,因为它们被实施为这个类的方法。针对这些方法中的每个方法的主要参数是当前的框构建器,其在图中由从框构建 器204朝向所述方法中的每个的数据流箭头来反映。BuildLine (f)
这个方法对应于在其上构建一行文本的布局构建器202的基本步骤。这是可以由布局构建器构建的内容的最小原子部分。要指出的是,所有可能的嵌套的块,诸如内联块(inline block)、浮动物(floater)、或锚定在该行的绝对定位的块,并不在BuildLine函数内部递归地构建。而是,它们作为该行的兄弟(sibling)经由EnterBlock/ExitBox回调而被单独地构建。EnterBlock (f)
当布局构建器202遇到诸如DIV或TABLE的某个块元素的打开标签时执行这个方法。ReEnterBlock(f)
在块被前一页上的分页符中断后,当该块在后一页上被进入时,调用这个方法。ExitBox (f)
当布局构建器202到达块元素的结束标签时,或在当分段的(分页的)空间在页边界上被中断时的情形下,执行这个方法。在操作中,布局处理被组织为对应于HTML的基本结构单元(即,纯文本的元素标签或顺串(run))的一系列步骤。布局构建器202接收HTML文档且一个接一个地读取这些单元,并执行适当的动作。当布局构建器遇到打开标签时,它识别其类型、创建适当的类型特定的框构建器(比如框构建器204)、以及通过将所述框构建器推给构建栈来激活该框构建器。然后所述类型特定的框构建器将控制针对特定元素构建布局内容的过程。当布局构建器遇到元素的关闭标签时,它与活动的、类型特定的框构建器通信以使得最终得到的布局框被完成并被附连到显示树上。在这个过程期间,当遇到一行文本时,行框形式的布局框(比如行框210)被创建并被插入到显示树中。图3在某些方面与图2类似,其描述了按照一个或多个实施例的、在顺序布局构建过程中的布局空间分配协议300。该图也代表可扩展性模型。图3描述了在通用布局构建器和多个特定框构建器之间的协议。可扩展性通过简单地将新的框构建器类型插入到协议中,而在想要新的布局类型的事件中变得容易。如将在下面更详细地描述的,所述协议使用了一组虚拟函数,该组虚拟函数被定义为框构建器的抽象类。不同类型的框构建器可以不同地实施这些虚拟函数。从布局构建器的观点来看,这些函数中仅有少数函数看起来是和布局构建器一样的。如上面所指出的,它们的实现取决于框构建器类型而不同。当布局构建器贯穿HTML进行处理时,以及当它遇到标签和其它内容时,它在相关联的框构建器上调用相应的函数。当布局构建器移动穿过特定标签的内容时,它可以在框构建器上酌情调用这些不同的函数,使框构建器能执行它的构造,以使得相关联的容器框被构建并为显示作准备。然而,在各段HTML内容之间移动的过程由相关联的个体的框构建器控制,所述框构建器明确地熟知所述内容的结构。在图示的和描述的实施例中,协议300包括布局构建器302、ContainerBox.BoxBuilder (容器框.框构建器)304、ContainerBox. BoxBuilder 306 和容器框 308。如以上所讨论的,布局构建器302代表组织整个布局构建过程的对象。布局构建器302与由图中的ContainerBox. BoxBuilder 304代表的各个框构建器一起工作。如以上所指出的,ContainerBox. BoxBuilder是一种抽象类,其定义框构建器的许多具体的子类型要遵循的总合同(general contract)。它定义了布局构建器302在不同的构建步骤期间调用的一组虚拟回调,这里被描绘为列举的椭圆。
下表描述了在椭圆的列举和它的相关联的虚拟函数之间的关联。在表的下面,描述了每个虚拟函数。
权利要求
1.一种或多种计算机可读存储媒体,其包含计算机可执行指令,当所述指令被执行时实施一种软件体系结构,包括 布局构建器,被配置成组织结构化文档的顺序布局处理; 框构建器,其与布局构建器相关联;和 一个或多个布局框; 其中所述框构建器是代表不同框构建器类型的共同属性和方法的类,各个框构建器类型被配置成构建对应的特定类型的布局框。
2.权利要求I所述的一种或多种计算机可读存储媒体,其中所述一个或多个布局框包括一个或多个容器框和/或一个或多个行框,其中所述一个或多个容器框和一个或多个行框是布局框的子类。
3.权利要求I所述的一种或多种计算机可读存储媒体,其中所述一个或多个布局框包括一个或多个容器框和/或一个或多个行框,其中所述一个或多个容器框和所述一个或多个行框是布局框的子类,以及其中容器框被配置成包含其它容器框和其它行框。
4.权利要求I所述的一种或多种计算机可读存储媒体,其中所述布局构建器被配置成实例化所述一个或多个布局框。
5.权利要求I所述的一种或多种计算机可读存储媒体,其中所述布局构建器被配置成与所述一个或多个框构建器类型通信,以有效于促使用要被再现的内容填充所述一个或多个布局框。
6.权利要求I所述的一种或多种计算机可读存储媒体,其中所述结构化文档包括HTML文档,并且所述布局构建器实施用来使能顺序布局处理的方法,其中所述方法包括以下至少一项 构建一行文本的方法, 当布局构建器遇到打开HTML标签时执行的方法,或 当布局构建器遇到结束HTML标签时执行的方法。
7.权利要求I所述的一种或多种计算机可读存储媒体,其中所述结构化文档包括HTML文档,并且所述布局构建器被配置成遇到打开HTML标签并创建对应的框构建器类型。
8.权利要求I所述的一种或多种计算机可读存储媒体,其中所述结构化文档包括HTML文档,并且所述布局构建器被配置成遇到打开HTML标签并创建对应的框构建器类型,以及其中所述布局构建器被配置成遇到相关联的关闭HTML标签并促使与对应的框构建器类型相关联的布局框被附连到显示树。
9.一种或多种计算机可读存储媒体,其包含计算机可执行指令,当所述指令被执行时实施一种软件体系结构,该软件体系结构包括 布局构建器,被配置成组织HTML文档的处理; 框构建器,其与布局构建器相关联,并且其代表框构建器类型的类;和 一组虚拟函数,其被定义为框构建器的类,并被配置成使能HTML文档的顺序的、非递归的处理。
10.权利要求9所述的一种或多种计算机可读存储媒体,其中所述虚拟函数包括用于初始化框构建器并把所述框构建器置于当前的布局构建过程的上下文中的函数。
11.权利要求9所述的一种或多种计算机可读存储媒体,其中所述虚拟函数包括用于请求布局构建器要处理的下一个位置的函数。
12.权利要求9所述的一种或多种计算机可读存储媒体,其中所述虚拟函数包括用于请求已存在的框是否可被再次使用于给定的块的函数。
13.权利要求9所述的一种或多种计算机可读存储媒体,其中所述虚拟函数包括用于请求已存在的框是否可被再次使用于给定的块的函数,和当找到可再次使用的框时被调用的函数。
14.权利要求9所述的一种或多种计算机可读存储媒体,其中所述虚拟函数包括用于请求已存在的框是否可被再次使用于给定的块的函数,和当没有找到可再次使用的框时被调用的函数。
15.权利要求9所述的一种或多种计算机可读存储媒体,其中所述虚拟函数包括用于向父框构建器通知相关联的子框能够被附连到最终得到的显示树的函数。
全文摘要
描述了布局处理技术,所述布局处理技术允许实施结构化文档的处理,以及允许以顺序的方式完成相关联的布局。布局过程被分成可以顺序地执行的多个更小的步骤。在至少一些实施例中,布局构建器被结合栈使用以控制在结构化文档的结构层次的各层次上的布局执行。不可变的数据结构被使用,并且允许顺序布局操作的并行执行。在至少一些实施例中,可以完成布局序列的部分执行来产生可用的数据。
文档编号G06F17/21GK102804174SQ201180015838
公开日2012年11月28日 申请日期2011年3月24日 优先权日2010年3月25日
发明者E.N.韦塞罗夫, R.P.阿塔纳索夫, M.J.乔尔森 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1