图表中的形状位置的基于约束的校正的制作方法

文档序号:6355325阅读:228来源:国知局
专利名称:图表中的形状位置的基于约束的校正的制作方法
技术领域
本发明涉及图表中的形状的位置的校正。
背景技术
图表应用程序通常用于创建流程图和其他图表。在创建并编辑图表时,用户通常将形状和连接符拖放到该图表中、调整形状的大小、添加文本、移动形状、插入形状、翻转和旋转形状和图表的各个部分、以及各种其他动作。在这样做时,形状和连接符通常变得未对准且不均勻地间隔开。在创建专业的且在视觉上吸引人的最终产品的努力中,用户可能发现必须花费大量时间推动形状和对应的连接符以在图表内正确地对齐并间隔开各个形状。在此呈现对于这些和其他考虑事项做出的本发明。

发明内容
本文描述了这样的技术,用于对图表中诸如容器等的形状和区域的位置进行微小校正以正确地对齐并间隔开这些形状和区域而同时维持现有布局以保留图表创建者的意图。具体而言,通过利用本文呈现的概念,用户可以正确地对齐并间隔开图表中的形状和区域,而无需手动地操纵该图表中的形状、区域和连接符。在布局校正或操纵期间保留由区域的特性或由形状和区域的直接连接施加在布局上的任何约束。在校正了图表布局之后,本文呈现的概念允许图表应用程序标识并解决由对形状和区域所采取的重新对齐和间隔动作所造成的布局冲突。根据本文呈现的一个方面,响应于接收到对具有位于一列区域内的多个形状的图表的布局进行校正的请求,对于每一区域,确定区域内的形状的经校正的布局,并且确定经校正的形状布局周围的最小附加间隔。随后使用最小附加间隔来确定对区域边界的校正。 相应地,随后对于该列区域中的每一区域,顺序地重新定位图表形状和区域边界。根据其他方面,向具有一列区域的图表内的每一区域的角分配虚拟节点。创建依存关系树,它根据形状在图表中的物理位置来定义图表的形状与虚拟节点之间的父与子关系以及形状与虚拟节点之间的关联。随后根据该依存关系树和任何适用的布局规则来顺序地重新定位这些形状和虚拟节点。根据又一方面,响应于对包括彼此直接粘合的至少两个形状的图表布局进行校正的请求,向形状之间的每一连接分配分类。随后根据连接分类来分配优先次序。创建了根据形状在图表内的物理位置来定义父与子关系的依存关系树。最后,根据依存关系树和所分配的连接优先次序来重新定位图表的形状。应当明白,上述主题还可被实现成计算机控制的装置、计算机进程、计算系统、或诸如计算机可读介质等制品。通过阅读以下具体实施方式
并查阅相关联的附图,这些和各种其他特征将是显而易见的。提供本发明内容是为了以简化的形式介绍将在以下具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,本发明内容也不旨在用于限定所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本发明的任何部分中提及的任何或所有缺点的实现。


图IA和IB是根据本文呈现的各实施方式的分别示出执行间隔和对齐校正过程之前和执行间隔和对齐校正过程之后的形状布局的说明性示图;图2A和2B是根据本文呈现的各实施方式的分别示出将形状插入图表之前和将形状插入图表之后的形状布局的说明性示图;图3AJB和3C是根据本文呈现的各实施方式的分别示出旋转图表之前的形状布局、旋转动作的可能结果以及旋转动作的结果的说明性示图;图4A和4B是根据本文呈现的各实施方式的分别示出执行间隔和对齐校正过程之前和执行间隔和对齐校正过程之后的形状布局的说明性示图;图5和6分别是根据本文呈现的各实施方式的与图4A和4B中示出的图表相对应的放置树和依存关系树的说明性示例;图7是示出根据本文呈现的各实施方式的两个形状间的虚拟重叠的说明性示图;图8A和8B是分别示出执行对齐校正过程之前和之后的形状布局的说明性示图, 以示出对用于创建依存关系树并校正形状布局的规则的应用;图9A和9B是根据本文呈现的各实施方式的分别示出执行间隔和对齐校正过程之前和执行间隔和对齐校正过程之后的包括多个形状区域的形状布局的说明性示图;图10AU0B和IOC是根据本文呈现的各实施方式的分别示出包括校正布局之前的形状区域、布局校正动作的可能结果以及布局校正动作的结果在内的形状布局的说明性示图;图IlAUlB和IlC是根据本文呈现的各实施方式的分别示出校正布局之前的形状布局、造成冲突的布局校正动作的可能结果以及冲突解决动作的结果的说明性示图;图12A、12B和12C是根据本文呈现的各实施方式的分别示出具有校正布局之前的未连接形状的形状布局、造成冲突的布局校正动作的可能结果以及冲突解决动作的结果的说明性示图;图13A和1 是根据本文呈现的各实施方式的示出用于校正图表中的形状的位置的说明性过程的流程图;图14A和14B是根据本文呈现的各实施方式的分别示出执行间隔和对齐校正过程之前和执行间隔和对齐校正过程之后的具有一列区域的图表布局的说明性示图;图15是根据本文呈现的各实施方式的示出用于对具有一列区域的图表中的形状的位置进行校正的说明性过程的流程图;图16A和16B是根据本文呈现的各实施方式的分别示出执行旋转校正过程之前和执行旋转校正过程之后的具有重叠的各列区域的图表布局的说明性示图17A和17B分别是根据本文呈现的各实施方式的与图16A和16B中示出的图表相对应的带有和不带有虚拟节点的放置树的说明性示例;图18是根据本文呈现的各实施方式的示出用于旋转或翻转图表中的形状的位置的说明性过程的流程图;图19A和19B是根据本文呈现的各实施方式的分别示出执行间隔和对齐校正过程之前和执行间隔和对齐校正过程之后的具有重叠的形状的图表布局的说明性示图;图20A和20B是根据本文呈现的各实施方式的分别示出执行间隔和对齐校正过程之前和执行间隔和对齐校正过程之后的图表布局的说明性示图,该图表与图19A和19B中的图表类似,但具有相反的流动方向;图21A和21B是根据本文呈现的各实施方式的分别示出执行间隔和对齐校正过程之前和执行间隔和对齐校正过程之后的具有粘合到区域边界的形状的图表布局的说明性示图;图22A和22B分别是根据本文呈现的各实施方式的与图21A和21B中示出的图表相对应的不带有和带有连接分类和优先次序确定的放置树的说明性示例;图23是根据本文呈现的各实施方式的示出用于对具有直接粘合到其他形状或区域的形状或区域的图表中的形状的位置进行校正的说明性过程的流程图;图M是示出能够实现本文所呈现的实施例的各方面的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。
具体实施例方式以下具体实施方式
针对用于调整图表内的形状的位置的技术。如上文简述的,用户在创建图表期间或之后通常花费相当多的时间来清理图表。在图表应用程序中存在尝试帮助用户放置形状的布局特征。然而,传统的自动化形状布局特征通常根据预定义的模板来尝试将形状放置在页面上,而不管用户对形状的实际放置。例如,典型的自动化形状布局特征可拾取用户创建的图表并根据预定义的流程图模板、组织图模板、或任何其他所选图表类型来重新安排所有形状。用户将特定形状置于另一形状的右侧而非另一相对位置的事实未被考虑并且在所得布局中没有被保留。结果,通常丢失了与该图表相关联的意图。本发明的各方面允许重新定位图表内的形状以校正微小的对齐和间隔偏差,同时维持用户创建的总体布局。在下面的详细描述中,将参考构成本发明的一部分的附图,并且在附图中作为说明示出了各具体实施例或示例。现在参考附图,其中全部若干附图中相同的标号表示相同的元素,用于校正图表中的形状放置的计算系统和方法的各方面将被描述。尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模块的一般上下文中呈现了此处描述的主题,但是本领域技术人员将认识到,其他实现可以结合其他类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。此外,本领域技术人员将明白,可以利用其他计算机系统配置来实施此处描述的主题,这些计算机系统配置包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等等。图1A-3C提供利用本文描述的概念的布局校正之前和之后的示图的各示例。这些示例将首先作为本发明的各种应用的说明性概览来讨论。应当注意,这些示例不是穷尽性的。相反,下文讨论的概念可被应用于任何图表的任何形状以校正未对齐和/或不均勻的间隔问题。现在转向图1,图表100包括形状A-L。图表100示出用户通过将形状拖放到页面上来创建的典型图表。在添加了所有所需形状A-L和对应的连接符之后,用户创建了包括不均勻地间隔且未对齐的形状的图表100例如,形状A和B之间的空间远小于形状B和C 以及形状B和F之间的空间。类似地,当形状A、B和E沿水平轴对齐时,形状C和D偏出该轴。未对齐且不均勻间隔的结果是不像用户通常希望的那样整洁和专业的图表。通常,为了 “整理”图表,用户将手动地一次选择一个形状并将它们向上、下、左和右推动,直至校正了间隔和对齐问题为止。然而,利用以下描述的实施方式,用户可以选择单个控件,该单个控件触发布局校正引擎应用一个或多个布局规则来重新定位图表100内的形状以得到图IB所示的图表 102。图表102表示图表100的经校正的布局。如图所示,形状A-L之间的间隔已被标准化并且这些形状已经水平地和垂直地对齐。如以下进一步描述的,布局校正引擎可以是图表应用程序、图表应用程序的一部分、或可用于执行本文描述的布局校正过程的任何其他应用程序或模块。图2A示出包括形状A-E的说明性图表200。在该示例中,用户正将形状F插入图表200中的形状B和C之间以创建图2B中示出的图表202。通常,用户必须手动地将形状 C、D和E向右移动来为形状F腾出空间,将形状F扔到所创建的空间,将形状B和C之间的连接符从形状B附连到形状F,并添加从形状F到形状C的另一连接符。然而,利用本文描述的实施方式,用户可以简单地将形状F扔在形状B和C之间的连接符上。这一动作触发布局校正引擎将形状F与形状B均勻地间隔开,如图2B所示地划分形状B和C之间的连接符,并将形状C、D和E向右推。应当注意,原始图表200中的形状之间的偏移或相对位置在图表202中得到维持。或者,应当明白,通过用户的任何所请求的动作来触发布局校正引擎以重新定位图表中的任何形状可不仅触发布局校正引擎来执行所请求的动作(即,插入新形状),还重新定位图表内的所有形状以校正未对齐和不均勻间隔。在该替换实施方式中,将形状F插入图表200将创建与图表202相类似的图表,但所有形状A、B、F、C和E将在共同水平轴上重新对齐并被均勻地间隔开,而形状D将在形状C下方间隔开相等的距离并且与形状C垂直地对齐。图3A示出包括形状1-3的说明性图表300。有时,用户想要在不改变形状的定向的情况下旋转图表或图表的一部分来更改图表的定向。例如,图3B的图表302示出对图表 300进行旋转的传统结果。如图表302中看到的,形状1-3和对应的文本被旋转了 90度。 然而,用户可能想要将该流程图的从左至右布局简单地改变成自顶向下布局。本发明允许用户以更改定向而不更改单独形状配置的方式来旋转图表,如在图3C中的图表304中看到的。在图1A-3C中示出的各种布局校正请求的上下文中描述了各实施方式的一些一般概念之后,现在将描述允许布局校正引擎更改图表内的形状的位置的本发明的各方面。 图4A和4B示出校正前图表400和经校正图表402。经校正图表402示出了在布局校正引擎修改了校正前图表400之后正确地对齐且均勻地间隔开的形状A-E。根据各实施方式, 布局校正引擎构建并利用分别在图5和6中示出的放置树500和依存关系树600。应当注意,在本发明全文中,术语“放置树500”和“依存关系树600”指的是根据本文描述的概念来创建并利用的任何放置树和依存关系树,如图5和6中示出的那些树,并且不限于图5和 6中示出的实施方式的具体形状和关系。为了准确地重新定位图表中的形状以校正布局问题而同时尽可能接近地保留用户的原始布局,布局校正引擎从父-子观点并从相对位置观点来确立形状之间的关系。根据一个实施方式,放置树500定义图表的各形状之间的父-子关系。放置树500以父-子方式来组织形状,以使得图表中的每一形状只出现在放置树500中一次并且只具有一个父形状。在这样做时,布局校正引擎解决围绕多个父形状的任何模糊性。例如,如在图表402 中看到的,形状C具有两个父形状,形状B和D。布局校正引擎通过选择形状B作为形状C 的父形状来消除了这一模糊性,如在放置树500中所看到的。如果图表具有回路,则布局校正引擎同样将解析这些回路,以使得放置树500中的每一形状只具有一个父形状并且该树只向下或在单个方向上流动。布局校正引擎在创建放置树500时将利用一组放置树规则。如以上相对于图表400所描述的,在一形状具有两个或更多个传入连接符从而指示超过一个父形状的情况下,这些规则将帮助布局校正引擎选择单个父形状。应当明白,放置树规则可以使用任何数量和类型的规则来选择父形状,包括但不限于形状特性、形状接近度、形状对齐、中间形状,以及任何其他准则。例如,放置树规则可以指导布局校正引擎选择图表400的形状B而非形状D来作为形状C的父形状,因为形状 C在主图表分支中被配置成与形状B和E成一直线,而形状D在主图表分支下面对齐。除确立父-子关系之外,放置树500确立在重新定位图表中的形状时给定形状的子形状应被处理的次序。与上文关于使用哪一形状(形状B或形状D)作为形状C的父形状所讨论的确定相类似,布局校正引擎利用放置树规则来确定这两个分支的处理次序。例如,因为形状C是主图表分支的一部分并且具有相关联的子形状(形状E),所以作出与在放置树500的包含形状D的分支之前处理放置树500的包含形状C的分支有关的判定。对于其中所有形状被使用连接符线连接到至少一个其他形状的连接图,连接符线被用来确立放置树500中的父-子关系。然而,图表内通常有未连接的形状。一个示例包括置于页面上的用于描述一个或多个形状的文本。根据一个实施方式,对于未连接的形状, 各规则允许从最接近的连接形状或从已经具有在放置树500中定义的关系的最接近的未连接形状确立子关系。应当明白,各规则可以提供与未连接的形状可以距另一形状有多远以可确立父-子关系有关的限制。此外,图表可不仅包括经由连接符线连接的形状和未连接的形状,还可包括直接连接到(即,粘合到)图表内的其他形状或区域的形状。关于这一独特场景的各实施方式将参考图19A-23来示出并详细描述。返回图5和6,在创建了放置树500之后,根据一个实施方式,布局校正引擎创建依存关系树600。根据本文提供的各实施方式,布局校正引擎利用每一形状与它所依赖的另一形状的偏移或相对位置来定位图表中的形状。依存关系树600定义由放置树500确立的各父-子-兄弟形状之间的位置依存关系。布局校正引擎利用依存关系树规则来从图表中创建依存关系树600。应当明白,依存关系树规则可以使用任何数量和类型的准则来确定给定形状依赖于哪一形状来进行其定位。作为示例,根据一个实现,一形状依赖于它虚拟地重叠的最接近的父形状或兄弟形状。在校正图表布局时,布局校正引擎将根据依存关系树来顺序地重新定位每一形状。应当注意,放置树500被用来解决关于图表中的父-子关系的任何模糊性。依存关系树600是使用放置树500来构建的,并且定义图表内的父-子关系及其位置关系,包括定义每一形状相对于另一形状位于何处的偏移。当在布局校正动作期间放置形状时,布局校正引擎将顺序地步进通过依存关系树600,根据依存关系树600的关系和偏移来放置形状。应当明白,虽然本发明相对于创建并利用放置树500和依存关系树600来描述了布局校正,但根据各替换实施方式,布局校正引擎可以在创建依存关系树600时解决父-子模糊性,而无需专门创建放置树500。图7示出虚拟重叠。在一个形状处于另一形状的轴对齐扩展边内时发生虚拟重叠。如在图7中看到的,形状A具有水平重叠区域702和垂直重叠区域704。因为形状B位于水平重叠区域702内,所以形状B被认为与形状A虚拟地重叠。根据各实施方式,重叠区域的边界可以对齐到该形状的边,如图7所示,或根据预定容限可以更接近或更远离该形状的边。根据一个说明性实现,如果一形状不与它的父形状或兄弟形状虚拟地重叠,则如果该形状距它的最接近的兄弟形状比距它的父形状更近或处于相等的距离,并且该兄弟形状比该形状更接近父形状或处于相等的距离,则该形状依赖于该兄弟形状。否则,该形状依赖于它的父形状。应当注意,各形状可以在位置上依赖于兄弟形状或父形状。各形状在图表中的连接方式对依存关系树的创建而言并不重要。事实上,各实施方式允许连接的形状依赖于未连接的形状来用于定位目的。图8A和8B示出根据一个实施方式的利用上述依存关系树的布局校正。查看图 8A,形状B沿垂直轴与形状A虚拟地重叠。因为形状B是形状A的最接近子形状并且形状B 与其父形状A虚拟地重叠,所以将形状B与形状A对齐,如在图8B中看到的。将形状C与形状B对齐,因为它们沿水平轴虚拟地重叠。类似地,将形状D与形状B对齐,因为它们沿水平轴虚拟地重叠。因为所有子形状都在父形状下方,所以对齐它们的顶部。在创建了放置树500和依存关系树600之后,在应用布局规则来按照用户的请求校正图表布局时,布局校正引擎利用依存关系树600。给定依存关系树600,布局校正引擎可以在重新定位父形状时确定如何移动子形状来跟随它们的父形状,并且在重新定位给定形状时确定将其位置与哪一其他形状进行比较以精确地确定将它置于图表中的何处。作为示例,在校正图4A的图表400中的形状A-E的对齐和间隔时,布局校正引擎分别创建图5和6中示出的放置树500和依存关系树600。布局校正引擎开始根据依存关系树600来顺序地重新定位形状。首先,形状B与形状A均勻地间隔开并且被正确地对齐。 这样做可将形状B稍微向右移动,如在经校正的图表布局402中看到的。依存关系树600包含从形状B到形状C的偏移。应当理解,布局校正引擎可以计算图表中的每一形状相对于它所依赖的形状的偏移并将该信息作为依存关系树600的一部分来存储或与依存关系树600 分开存储。因为形状C距形状B的偏移是已知的,所以移动形状B的动作不更改形状C相对于形状B的位置。事实上,在重新定位形状B时,形状C跟随形状B。根据一个实施方式,在形状C跟随形状B时,依存关系树600中的从属于形状B的所有其他形状(具体是形状C-E)也使用从依存关系树600计算得到的偏移来跟随形状B。 沿依存关系树600继续向下,布局校正引擎接着重新定位形状C。形状C在形状D之前被重新定位,因为在创建放置树500时,布局校正引擎确定包含形状C的分支应在包含形状D的分支之前被处理。在放置树500中次序被指定为“1”和“2”。形状C随后被重新定位以与形状B相对齐并均勻地间隔,这将它向下并向左移动,如图4B所示。根据依存关系树600, 形状D和E依赖于形状C来得到它们的位置,所以它们事实上使用在依存关系树600中计算得到的偏移来跟随形状C。形状E被重新定位以与形状C相对齐并均勻地间隔。最后,应当注意,根据放置树 600,形状D的父形状是形状B。然而,在构建依存关系树600时,确定形状D的位置依赖于形状C。在依存关系树600计算期间,布局校正引擎确定形状D更接近形状C并且几乎与形状C成一直线,所以作出形状D的位置比它的父形状(形状B)更与形状C相关的判定。结果,形状D与形状C对齐并与其均勻地间隔开,但处于与它在图表400所处的方向相同的一般方向,具体是在形状C下方。布局校正引擎可从依存关系树600中的偏移获得这一信息, 并且这一信息可被用来保留用户创建的原始布局配置。应当理解,在对修改图表的用户请求进行响应时,如以上参考图1A-3C所描述的, 可以应用以上参考通过创建并利用放置树500和依存关系树600来创建图表布局所描述的原理来重新定位图表形状。例如,转回图2A和2B,在用户将形状F插入图表200中时,布局校正引擎将形状C向右推来为形状F腾出空间。在将形状C向右移动时,所有从属形状 (具体是形状D和E)跟随形状C向右移动。从依存关系树600计算得到的偏移被用来确保形状D和E各自位于与它们在图表200中所处的位置相同的相对于形状C的位置。对于形状F,如果布局校正引擎确定形状F是形状B的子形状,则形状F将与形状B间隔开并与其对齐,并且形状C将变成形状F的新子形状。相应地,形状C距形状F的偏移将保持为它最初距形状B的偏移。根据另一实现,在将形状F插入图表200中时,布局校正引擎确定是否有空间将形状F与形状B均勻地间隔开而不与形状C相冲突。如果有空间,则插入形状F而不移动形状C,并且如上所述地修改任何从属形状和连接符。然而,如果布局校正引擎确定要移动形状C来为形状F腾出空间,则将形状C与形状F均勻地间隔开并且对应的从属形状将如上所述地移动。根据一个实现,在创建依存关系树600时,形状C必须依赖于形状B以便在其间插入形状F。其间被插入新形状的各形状必须彼此依赖。因此,如果形状F被插入形状B和D 之间,则将必须创建不同的依存关系树600来确保形状F与形状B以及形状D与形状F的正确的间隔和对齐。类似地,正如放置树500和依存关系树600的创建和利用允许在插入新形状时进行图表布局校正,布局校正引擎可以利用放置树500和依存关系树600来翻转或旋转图表, 如以上参考图3A-3C描述的。例如,在布局校正引擎应用与将图表旋转90度相关联的布局规则时,来自依存关系树600的偏移得到维持,只是如所请求的那样转了 90度来重新定位形状。以此方式,可以更改图表来改变流动方向而不影响各形状相对于彼此的大体定位。图表应用程序可以允许将各形状编组成区域。区域的一个示例是容器。容器和其他受约束的区域可由围绕各成员形状的框或其他边界或者经由用于在视觉上标识一组形状的任何其他手段来标识。保留区域成员关系或分配给该区域的形状组通常是合乎需要的。将成员形状重新定位在区域边界之外或将非成员形状重新定位在区域边界之内是不合乎需要的。图9A和9B分别示出校正之前和之后的图表900和902,它们示出如何将本发明的各方面应用于区域内的形状以及区域本身。例如,对图表900中的形状A-D创建并应用上述放置树和依存关系树概念,布局校正引擎对齐区域904内的形状A和B,并随后将形状C和D与形状A和B进行对齐。根据一个实施方式,各区域尝试跟随各区域内的形状的重新定位。在一些情况下,如在图9A和9B 中所示,调整各区域来与其中的成员形状的重新定位进行对应不是问题。扩展区域906,并将其相对于区域904来对齐并间隔开以适应形状C的重新定位。作为将形状B与形状A进行对齐的结果,区域904的高度被减小。应当明白,可以确立用于以任何数量的方式来校正布局的布局规则。例如,可以调整形状B和D,以使得它们以与形状C同形状A间隔开相同的方式来与形状A和C均勻地间隔开。另外,布局校正引擎可以定位区域904和906以使得它们保持间隔开或使得它们如图所示地彼此邻接。存在着其中简单地移动区域并调整其大小来适应其中的各成员形状的重新定位不能提供合乎需要的结果的情况。转向图10A-10C,将描述对包含区域1006的图表1000 的布局进行校正的说明性示例。图IOA示出图表1000。图表1000具有包含成员形状E、F 和G的区域1006。用户想要校正图表1000的布局来调整形状A-H之间的间隔。如果布局校正引擎调整图表1000来设置均勻的间隔,则形状E和G可以分别移动得距它们的父形状 (形状D和C)更近。应当明白,如果依存关系树600创建了形状F和G之间的依存关系, 则形状G将不会被重新定位得距其父形状C更近。然而,因为形状F和G不具有将创建一个形状对另一形状的依存关系的兄弟关系,所以根据一个实现,形状G与形状C均勻地间隔开,如图IOB所示。这样做可向上扩展区域1006的边界以跟随形状G,从而创建区域1008。 这是不合乎需要的结果,因为扩展区域1006的边界来创建区域1008现在会将形状D引入区域1008。形状D不是区域1006的成员并且不应被添加到区域成员关系中以创建新区域 1008。图IOC示出图表1004,这是对图表1000所采取的布局校正动作的所需结果。根据各实施方式,在遍历依存关系树600来放置形状时,布局校正引擎通过对形状和区域的正在进行的分析来执行区域校正以确保图IOC中示出的结果。为了管理区域边界之内和之外的各形状之间的形状移动并确保区域成员关系得到保留,布局校正引擎标识影响区域的边界的位置的两种类型的形状。第一类型的形状是入口节点1110。入口节点1110是区域中的其父形状处于该区域外部的形状。入口节点1110具有根据入口节点1110与父节点之间的偏移来确定的相关联的入口方向。在图表1004中,形状E和G是区域1006的顶部边界的入口节点1110,因为形状E和G分别位于父形状D和C之下。影响区域的边界的位置的第二类型的形状是出口节点1112。出口节点1112是区域外部的其父形状处于该区域内部的形状。在图表1004 中,形状H是出口节点1112,因为它位于区域1006外部而其父形状(形状G)处于区域1006 的边界之内。在遍历依存关系树600并重新定位形状时,区域的大小及其边界被认为是未确定的,直至放置了入口节点1110为止。在布局校正引擎放置入口节点1110时,布局校正引擎基于入口节点1110、出口节点1112的父节点、以及其内的成员形状的布局校正来计算边界的大小和位置。一旦确定了区域的边界,布局校正引擎就锁定或以其他方式固定这些边界。布局校正引擎尝试尽可能紧密地进行布局来维持区域的边界。为了这样做,限制边界的过度移动。布局校正引擎标识并跟踪入口节点1110和出口节点1112,连同它们的子树的大小或从属于给定形状的形状集合。为了确定区域的顶部边界的位置,将顶部边界置于允许入口节点1110从顶部进入区域并且出口节点1112离开顶部边界到该区域外部的最低位置。这样做可能没有给将区域内部的形状都适合在该区域内留出足够空间。在这些情况下,调整对边(在该场景中是底边)来使之与顶边相距允许区域内有足够空间来容纳其成员形状的固定距离。应当理解,入口节点1110可以在两个方向上与其父节点有偏移。入口节点1110 可被只认为是区域的一侧的入口节点1110。作为示例,如果在图表1000中,形状D更靠近左侧,则形状E可以是顶边或左边的入口节点,因为它可以从形状D的下方或右侧偏移。在这一情况下,布局校正引擎计算这两种可能的结果并选择使形状与原始依存关系树600具有最小总体背离的那一结果。这样做表示父与子之间的相对偏移的最小变化。如上所述,存在着以下场景图表用户想要对图表中的形状进行调整,但图表对形状的定位施加了特定约束。一个典型示例是当图表包括一列区域或重叠的各列区域时。另一示例包括不使用连接线而直接粘合到其他形状的形状。将参考图14A-22来在下文详细描述在这些类型的约束之下对图表布局校正进行管理的各实施方式。现在转向图11A-12C,将讨论冲突解决。在重新定位形状来遵循来自用户的布局校正请求时,一个或多个重新定位的形状可能与图表中的诸如分页符等在其中不期望放置的一个或多个其他形状或区域相重叠。当这一情况发生时,本发明向布局校正引擎提供一组冲突解决规则以帮助进一步重新定位形状来避免重叠。布局校正引擎尝试尽可能小地推动或以其他方式重新定位相冲突的形状或区域以避免该冲突,而同时保留用户想要的总体图表布局。根据一个实施方式,布局校正引擎利用所确立的父-子关系和计算得到的子到父的偏移来确定图表的适用部分所流动的方向。意图是在图表的该部分所流动的大体方向上将冲突的形状推出。应当明白,各实施方式提供与在另一方向上寻找可用空间之前形状应被推出多远相对应的阈值界限。图IlA示出布局校正引擎没有对其进行布局校正动作的图表1100。在重新定位形状以均勻地间隔开图表1100中的形状之后,一个实现产生图IlB所示的图表1102。图表1102包括两个形状冲突。第一冲突发生在形状Bl和形状D相重叠的位置。第二冲突发生在形状B2和形状Dl相重叠的位置。该冲突的一个解决方案是独立地移动形状D和D1。 然而,独立地移动这些形状将具有以可能不与用户的原始意图相一致的方式来分裂图表并更改布局的负面效果。因此,在解决冲突时,冲突解决规则指示布局校正引擎去尝试将冲突的形状及其第一级子形状一起移动。图IlC示出将冲突的形状D与子形状D1-D3 —起移动而得到的图表1104。结果是图表1104被整洁地间隔开并对齐,同时维持了原始图表1100 的大体布局配置。根据各实施方式,冲突解决规则允许各形状彼此交错以最佳地利用可用图表空间,这可使为解决冲突而必须移动一个或多个形状的距离最小化。图12A示出其中未连接的形状被置于形状Cl和C2之间的图表1200。图12B示出根据本发明的在对图表1200进行布局校正时的一个可能的结果,图表1202,它将形状B和C与形状A均勻地间隔开。在图表1202中,形状C 1和C2与形状B重叠,并且未连接的形状最初被置于形状Cl和C2之间而产生两个冲突。图12C示出一个可能的解决方案,其中允许形状Cl和C2与未连接的形状相交错。应当理解,根据本发明的各实施方式,未连接的形状可以参与或不参与布局校正。 根据图12A-12C中示出的实施方式,在布局校正过程期间不重新定位未连接的形状。然而, 根据一替换实施方式,在布局校正引擎构建了放置树500和依存关系树600的情况下,未连接的形状可以经由虚拟连接被当作形状C的子形状并且依赖于形状Cl或C2来进行定位。 在这一实现中,未连接的形状可与形状Cl和C2 —起在图表1202中重新定位,使得未连接的形状与它所依赖的形状Cl或C2之间的偏移保持相同。当然,形状Cl和B之间的冲突仍然存在并需要解决。现在参考图13A和13B,将提供关于此处所给出的用于校正图表中的形状的位置的各实施方式的附加细节。具体而言,图13A和1 示出根据本发明的示出了布局校正引擎在执行布局校正时的操作的各方面的流程图。应当理解,此处各流程图所描述的逻辑操作被实现为(1) 一系列计算机实现的动作或运行于计算系统上的程序模块,和/或(2)计算系统内的互连的机器逻辑电路或电路模块。取决于计算系统的性能及其他要求,可以选择不同的实现。因此,此处参考各流程图描述的逻辑操作被不同地称为状态操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑以及它们的任何组合来实现。还应该明白,可以执行比附图中示出并在此处描述的操作更多或更少的操作。这些操作还可以按与此处所描述的不同的次序来执行。例程1300在操作1302处开始,在此,布局校正引擎接收来自用户的布局校正请求。如上所述,这一请求可以从用户经由用户界面选择一控件来触发,或可以从用户在构建或编辑图表(即,插入形状)时所采取的动作来触发。从操作1302,例程1300继续至操作 1304,在此,布局校正引擎创建放置树500,所述放置树500解决了在确立图表中的各形状之间的父-子关系时的任何模糊性。例程1300进行至操作1306,在此,布局校正引擎创建确立了各形状之间的位置关系的依存关系树600。从操作1306,例程1300继续至操作1308,在此,布局校正引擎根据依存关系树600 来计算每一形状距其对应的依赖形状的偏移。应当明白,这一操作可以在依存关系树600 的创建期间发生并作为依存关系树600的一部分来存储。例程1300从操作1308继续至操作1310,在此,布局校正引擎从依存关系树600选择需要重新定位的第一形状。在操作 1312处,布局校正引擎确定所选形状是否是区域的入口节点1110。如果所选形状是入口节点1110,则例程1300进行至操作1314,在此,布局校正引擎指定该形状被用于如上所述地设置区域边界。从操作1314,该例程继续至操作1316并如下所述地继续。如果在操作1312处,布局校正引擎确定所选形状不是入口节点1110,则该例程进行至操作1316,在此,布局校正引擎根据布局规则来定位该形状。如上文详细描述的,定位形状包括利用依存关系树600来确定一形状距它所依赖的另一形状的位置偏移。例程1300 从操作1316继续至操作1318,在此,布局校正引擎确定该形状是否是出口节点1112。如果该形状是出口节点1112,则例程1300进行至操作1320,在此,布局校正引擎设置并锁定围绕入口节点1110、出口节点1112的父节点以及任何中间成员形状的区域边界。如上所述, 布局校正引擎可以尝试最小化该区域的边界。例程1300随后从操作1320继续至操作1322 并如下文所述地进行。然而,如果在操作1318处,布局校正引擎确定所选形状不是区域的出口节点 1112,则例程1300进行至操作1322,在此,布局校正引擎确定所选形状是否是依存关系树 600中的最后形状。如果所选形状不是依存关系树600中的最后形状,则例程1300进行至操作1324,在此,布局校正引擎前进至依存关系树600中的下一形状并且例程1300返回至操作1312并如上所述地继续。然而,如果在操作1322处,布局校正引擎确定所选形状是依存关系树600中的最后形状,则例程1300进行至操作13 ,在此,布局校正引擎确定是否存在冲突。如上所述,在一个或多个形状或区域相重叠时和在形状或区域与分页符相重叠时可产生冲突。应当明白,冲突解决规则可以将任何类型的布局特性定义成冲突并且提供关于如何解决该冲突的逻辑。如果布局校正引擎确定重新定位的形状都没有产生冲突,则例程1300进行至操作1330并如下文所述地继续。然而,如果在操作13 处,布局校正引擎确定一个或多个重新定位的形状产生冲突,则例程1300进行至操作1328,在此,布局校正引擎根据冲突解决规则来重新定位一个或多个形状。从操作1328,例程1300继续至操作1330,在此,布局校正引擎确定是否存在对应于任何区域的冲突或任何区域内是否存在冲突。如果不存在区域冲突,则例程1300结束。然而,如果布局校正引擎确定存在区域冲突,则例程1300进行至操作1332,在此, 布局校正引擎根据冲突解决规则来重新定位一个或多个区域或一个或多个区域内的形状。 如上所述,根据各实施方式,在形状放置过程期间解决了区域边界和形状成员关系问题,这在进行了布局校正之后消除或最小化了这些类型的冲突。出于这一原因,大多数区域冲突将因一区域与一形状相重叠或在布局校正之后一形状与一区域相重叠而发生。当在操作 1332处解决了区域冲突之后,例程1300结束。如上所述,存在以下场景图表用户想要对图表布局中的形状进行调整,但图表中的一个或多个形状的位置由于区域考虑而受到约束。例如,在完成布局之后区域内的形状保持受该区域约束并且不处于区域内的形状未因布局活动而被添加到区域内是合乎需要的。此外,尽管区域自身可被移动并被调整大小,但与其中包含的成员形状类似,区域也可提供对图表布局的附加约束。这些约束可包括区域的一个或多个边处的不要放置成员形状的内部或外部标题区,并且区域的内部或外部周界周围的空白可进一步约束图表布局,如在布局期间允许形状留在该空白中或在布局期间禁止形状被添加到空白中。图表的一个典型示例包括一列区域或重叠的各列区域。对于各列区域,形状通常被置于各区域内并且在这些区域内以及在各区域之间相互连接。一列区域可包括彼此邻接来创建一“列”容器或区域的任何数量的容器。示出一列区域的一个实施方式在图14A中示出。图14A示出采取跨功能流程图(“CFF”)或泳道(swimlane)图的格式的一列区域 1400的示例。CFF可包括具有各个形状的过程流程图,这些形状根据泳道或阶段(phase) 所表示的特定分类或类别,如谁或什么正在操作该过程的特定子集,被分到被称为泳道或阶段的区域网格中。在对CFF中的形状进行布局时的考虑事项可包括对CFF中的形状何时应从属于CFF内的区域的大小和位置与CFF的区域何时应符合其内部的形状进行平衡,维持CFF中的区域的相对位置和排序,以及允许CFF内的区域改变大小或位置以在不以显著和预料之外的方式进行改变的情况下适应形状布局。因为CFF的用户通常对图表内的泳道和阶段的大小和定位的变化特别敏感,所以提供对各列区域的布局校正的各实施方式将在CFF的上下文中描述。然而,应当理解,本文相对于校正包括各列区域的图表布局来呈现的概念不限于与CFF—起使用。相反,具有多个相邻区域的或具有各列区域的任何图表可以用下文描述的方式来操纵。查看图14A,一列区域1400包括三个区域1404、1406和1408,它们在CFF中被表示成水平泳道1-3。在该示例中,每一区域或泳道包括在其中用标题来指定泳道的标题区 1410,在该示例中这些标题包括“1”、“2”和“3”。此外,每一区域包括该区域内部周界周围的空白1412。在图14A中,出于说明目的,标题区1410和空白1412被用阴影线指定以清楚地示出一列区域1400的形状A-F不能被放置在其中的区域。还应注意,其他实施方式可允许将形状置于标题区1410或空白1412中,但提供相对于这些区域的其他约束。在此提出的概念允许对一列区域1400应用任何数量和类型的约束。在没有上述专用于一列区域1400的约束的情况下,对一列区域1400的布局校正可使得形状D被放置得距形状C更近,这可出乎意料地减小区域1404的大小和/或扩展区域1406的大小。形状F通常可被放置得靠近形状E,但这可使得区域1408扩展或移动并以其他方式干扰区域1406和1404。相反,如在图14B中示出的经校正的一列区域1402中看到的,用于本文描述的区域校正的技术允许间隔并对齐形状A-F,同时使对区域1404、1406 和1408进行的改变最小化。首先,将参考图14B来讨论利用本文公开的概念的布局校正的结果,随后将参考图15的流程图来讨论布局校正引擎根据各实施方式执行布局校正的方式。所以,查看图14B,在对图14A的一列区域1400执行了布局校正之后,布局校正引擎考虑到空白1412和标题区1410,分别约束形状D和F来使它们不会移动得比区域1406 和1408的顶边所允许的更近。此外,已经维持了区域的总体高度,而不是修改区域1404、 1406和1408来将底边向上移动以压缩区域内的空间。如上所述,维持CFF内的泳道的尺寸,尤其是防止对泳道进行压缩,对用户而言特别地合乎需要。所以,维持了区域1404的高度,而不是将区域1404的底边移动得更接近形状C。类似地,在经校正的一列区域1402中也维持了区域1406和1408的高度。一般而言,各列区域内的形状布局是通过预测理想结果并将这些结果用作对实际形状放置的约束以在使对区域进行的改变最小化的同时提供所需的经校正的布局来实现的。为了做到这一点,布局校正引擎首先分析放置树500中的关于每一区域的形状子集,这在此被称为片段。例如,一列区域1400中存在三个片段。第一片段包括形状A、B、C和E。 第二片段包括形状D且第三片段包括形状F。随后考虑诸如空白和标题等约束,根据对应片段的所需布局来考虑每一区域的间隔考虑事项。随后跨一列区域来聚集这些布局预测,并在执行经校正的布局时将这些布局预测用来约束形状位置。现在参考图15,将提供关于本文呈现的用于在包括一列区域的图表中校正布局的实施方式的附加细节。具体而言,图15示出根据本发明的示出了布局校正引擎在对一列区域执行布局校正时的操作的各方面的流程图。例程1500在操作1502处开始,在此,布局校正引擎接收布局校正请求。作为说明性示例,图14A中示出的一列区域1400的创建者可能输入了对所创建的CFF内的形状进行对齐和间隔的选择。在操作1504处,布局校正引擎将第一片段标识为包括形状A、B、C和E,因为这些形状是第一泳道或区域1404的成员。例程1500从操作1504继续至操作1506,在此,布局校正引擎确定第一片段的各形状的所需布局,而不考虑区域1404、1406或1408中的任一个所提供的约束。片段形状的所预测的布局可以用以上参考各实施方式描述的方式利用放置树和依存关系树以及布局规则来确定。在该示例中,形状A、B、C和E要彼此均勻地间隔开。从操作1506,例程1500继续至操作1508,在此,布局校正引擎创建围起第一片段内的所有形状的边界框1420。如在图14B中看到的,根据一个实施方式,边界框1420是占据了由所需片段布局占据的一定量的空间的矩形或任何其他形状。边界框1420被布局校正引擎用来确定区域1404的间隔要求。换言之,边界框1420可被看作出于确定区域尺寸的目的而替换片段内的形状的框。虽然边界框1420在图14B中是出于说明性的目的来用虚线示出的,但应当理解,边界框1420是定义区域内的各组形状的外部尺寸的概念元素并且不是被呈现在图表上的可见形状。在利用边界框1420概念时,本文描述的各实施方式提高了最终布局的准确性。使用上述布局概念和能力,每一片段可在概念上分开布局以创建对该形状片段的所需布局的估计,这可由边界框1420来表示。布局校正引擎随后可创建并利用每一片段的边界框1420 来预测最终图表布局并在放置图表的各形状之前校正任何显著的冲突。以此方式,在对整个图表进行布局时保留了局部片段形状的最优布局。一旦在操作1508创建了边界框1420,例程1500继续至操作1510,在此,基于区域的约束和边界框1420的大小和位置来预测对区域的任何校正。查看图14A和14B中示出的示例,边界框1420靠着区域1404的顶部空白1412放置,从而在形状C的下边与区域1404 的下空白之间留下大量空间。然而,布局校正引擎不更改区域1404的尺寸,而不是压缩区域1404以移除形状C与区域1404的下边界之间的额外空间。在该实施方式中,布局规则指示布局校正引擎在可能时维持一列区域中的各区域的尺寸。应当注意,除了选择不通过压缩区域1404来移除形状C与区域1404的下空白之间的额外空间之外,布局校正引擎根据空白1412将形状D和F定位在它们相应区域的上限,而不尝试将形状D和F分别与C和 E隔得更近。因此,对于一列区域,布局校正引擎可以考虑区域的空白1412、区域的标题1410、 每一片段中的形状与该片段外部的形状之间的间隔、以及区域中的沿该列的流动方向的轴的已有额外间隔,来计算边界框1420周围的沿与一列区域的流动方向对齐的轴的最小附加间隔。对于给定片段,这一分析预测形状位置和区域边界位置。根据各实施方式,如果区域的边界中的任一个的所预测的位置将使区域在该方向上与布局校正之前的位置相比更小,则使用原始位置。这样做防止可能与用户的意图相反的对区域的显著压缩或调整大小。例程1500从操作1510继续至操作1512,在此,布局校正引擎确定针对边界校正来进行分析的当前区域是否是该列区域中的最后区域。如果否,则例程1500返回至操作 1506,并且如上所述,布局校正引擎预测沿上述图表的流动方向的下一片段和对应区域的经校正的布局。然而,如果布局校正引擎在操作1512处确定当前区域是该列区域中的最后区域,则该例程进行至操作1514。应当理解,该列区域可包括重叠的各列区域,如图16A所示。简要查看图16A,说明性CFF包括三个水平泳道1-3,它们对应于包括区域1604、1606、和1608的第一列区域。第二列区域与第一列重叠,并且包括阶段4和5,它们对应于区域1610和1612。根据各实施方式,在包括重叠的各列区域或区域网格的图表中,布局校正引擎在执行布局预测和经校正的布局时从第一列中的最后区域进行至第二列中的第一区域。例如,使用图16A中示出的CFF,布局校正引擎可以按从泳道1向下至泳道3、其后是阶段4和阶段5的次序来执行分析。返回图15,在操作1514,布局校正引擎在操作1516处应用冲突解决规则之前将形状和区域边界定位在经校正的位置。各形状和区域是以与分析它们相同的次序来布局的,该次序对应于如上所述地创建的依存关系树600。例如,在依存关系树600中的根形状开始,放置第一区域或片段中的形状,随后设置区域的边界位置,接着放置下一区域中的形状,并以此类推,直至解决了该树的所有片段为止。在解决冲突时,应当明白,冲突解决规则可包括对区域的特性、一列区域、或图表的类型专用的预编程的或用户定义的规则。在呈现了经校正的图表并解决了所有冲突之后,例程1500结束。现在转向图16A和16B,将参考对包括对其中的成员形状提供特定约束的一列区域或各区域的图表进行旋转或翻转来描述本发明的另一实施方式。具有不受一个或多个区域约束的连接的形状的图表的旋转和翻转是参考图3A-3C来描述的。对于这些情况,上述放置树500和依存关系树600向布局校正引擎提供虚拟路标(roadmap)来用于提供所请求的布局校正动作。然而,在图表包括提供对成员形状的定位的约束的一个或多个区域时,在不使用上述概念的情况下,布局校正引擎难以构建将以使对该图表内的区域的任何改变最小化的方式来旋转或翻转CFF或其他一列区域的可接受的树。因此,为了引导区域和形状的大小和位置,在区域的角处确立虚拟节点并且将这些虚拟节点集成到放置树和依存关系树的构造中。随后可以使用指示每一区域的角的所需位置的经转换的虚拟节点来执行所请求的旋转或翻转动作。如将从下文参考图16A和16B的示例变得清楚的,在成员形状的宽高比不是1 1时,在旋转动作期间,一列区域内的区域可能需要调整大小。查看图16A,示出了重叠的一列区域1600或区域网格,并且将在布局校正引擎从用户接收到的旋转请求的上下文中描述。如以上简要描述的,说明性CFF或重叠的一列区域1600包括三个泳道(1- 和两个阶段G和幻。每一泳道和每一阶段表示单个区域。 因此,CFF可被看作具有两列相重叠的区域,第一列对应于水平定向的区域1604、1606和 1608,而第二列对应于垂直定向的区域1610和1612。靠近区域的附图标记的圆括号中的小箭头被用来示出区域延伸超出相邻边界,使得它将整个CFF自顶向下或从一侧到另一侧来延伸。根据本发明的一个实施方式,为了在旋转期间维持区域的大小和定位,布局校正引擎创建虚拟节点1614,它们位于区域的角处,沿着图表的至少两个侧边。这些虚拟节点 1614被编号为V1-V6,在第一区域1604的左上角处开始,沿该网格的垂直边向下通过第一列区域1604、1606和1608,并随后跨该网格的水平边通过第二列区域1610和1612。应当明白,构想了其他编号习惯,并且本发明不限于布局校正引擎所使用的虚拟节点的特定位置和数量。例如,根据其他实施方式,用于虚拟节点1614的编号习惯可以在相重叠的一列区域1600的任何角处开始,并且遍历该网格的任一侧,以及该网格的顶边或底边。
图16B示出在实现了对形状和区域的重新定位和调整大小之后的经旋转的相重叠的一列区域1602。如在该示例中看到的,形状A-E的位置与区域一起旋转,使得从观看者的观点看,形状的较长边维持顶部和底部位置。在这样做时,泳道1或区域1604的宽度稍微增加以适应形状A和B的新定向。应当注意,在该示例中,泳道1的宽度只增加了允许形状A和B适合在区域1604的空白(未示出)内的量而不是使空间在形状C任一侧都相等的量。虽然本发明不限于使对一列区域中的各区域的改变最小化,但在操纵CFF时这通常是所需结果。还应当理解,除旋转相重叠的一列区域1600之外,取决于用户发起的请求,布局校正引擎还可以在旋转之后对齐并间隔开图表内的形状A-E。图17A示出没有考虑图表的对应区域的形状A-E的可能的放置树1700。相重叠的一列区域1600的从可能的放置树1700开始的旋转可能没有将形状A-E置于区域内的所需位置,因为布局校正引擎尚未具有将产生区域的正确放置和尺寸的信息。图17B示出利用表示图表的各区域的角的虚拟节点1614的放置树1702的一个实现。从来自第一虚拟节点 Vl的形状A开始来定位各形状。虚拟节点V2和V5也与Vl间隔开,其余虚拟节点1614相应地间隔开。虚拟节点1614现在提供区域边界的限定。还应指出,在放置了经旋转的布局之后,泳道1的宽度被最小地增加以避免形状A和B与区域1604的空白之间的冲突。转向图18,将描述用于处理对一列区域或相重叠的一列区域的旋转或翻转请求的说明性例程1800。例程1800在操作1802处开始,在此,布局校正引擎经由输入设备接收来自用户的旋转或翻转请求。在操作1804处,布局校正引擎创建与相重叠的一列区域内的区域的角相对应的虚拟节点1614。从操作1804,例程1800继续至操作1806,在此,构建放置树。当在操作1808处构建了对应的依存关系树之后,在操作1810处,布局校正引擎根据该依存关系树和适用的布局规则来对经旋转或翻转的相重叠的一列区域进行布局。例程1800继续至操作1812,在此,布局校正引擎使用冲突解决规则来解决任何冲突,并且例程1800结束。如以上简要描述的,存在以下场景图表用户想要对图表布局中的形状进行调整, 但图表中的一个或多个形状的位置由于形状之间的连接类型而受到约束。更具体地,图表应用程序可以允许用户将形状直接粘合到另一形状上的连接点而不使用连接线。这种类型的连接的一个示例在图19A中示出。图表1900包括形状A-D。形状A经由传统连接符线连接到形状B。类似地,形状C经由连接符线连接到形状D。然而,形状C被以允许形状C同形状B的一部分相重叠的方式直接附连到形状B,而没有使用中间连接符线。根据上述一些实施方式,布局校正引擎在放置形状时可以避免相重叠的形状。 然而,在一些情况下,形状重叠是合乎需要的。一个说明性实现包括业务流程建模记法 (“BPMN”)图表。BPMN和其他图表的创建者可以将形状粘合到其他形状,使得在被重叠的形状移动时,重叠的形状跟随被重叠的形状。在这些情况下,在进行布局校正时,布局校正引擎将重叠的形状从它所粘合到的被重叠的形状中拉出是不合需要的。本文提出的概念允许布局校正,同时维持相重叠的形状相对于彼此的定位。为了做到这一点,布局校正引擎对图表中的连接进行分类并确定它们的优先次序,以确定适当的父-子关系和应处理给定形状的子形状的次序。根据各实施方式,如果形状之间存在经由连接线的连接,则该连接被分类成I-D连接,因为该连接是使用一维线来实现的。如果形状之间存在不使用连接线的连接,则该连接被分类成2-D连接,因为该连接是在一对二维形状之间直接实现的。如下文将讨论的,进一步确定这些连接的优先次序,这帮助布局校正引擎确定在执行诸如间隔等布局校正时哪些连接是优先的。然而,首先,将描述图19A-20B来示出涉及粘合的相重叠的形状的对齐和间隔的简化概念。查看图19A,图表1900包括形状A-D,形状A-D具有从形状A到B和C到D的I-D 连接以及形状B和C之间的2-D连接,因为形状C被粘合到形状B上的位置。根据一个实施方式,在执行间隔和对齐校正时,布局校正引擎将呈现图19B中示出的经校正的图表1902。 如在经校正的图表1902中看到的,形状B与形状A对齐,形状C维持其在形状B上的位置, 并且形状D与形状C对齐并与它间隔开。图表1900和1902提供简化示例,因为每一形状只具有一个父形状和/或一个子形状,所以下文描述的连接优先次序确定将不适用。应当注意,对于粘合的相重叠的形状,如形状B和C之间的2-D连接,布局校正引擎维持重叠的形状在它所粘合到的被重叠的形状上的定位。例如,如在图19A和19B中看到的,形状C在形状B上的定位在进行了布局校正之后没有改变。然而,如将在以下参考图21A和21B描述的,如果被重叠的形状是区域,则即使粘合到该区域的形状的位置保持不变,该区域的大小也仍然可被更改以提供间隔校正。如上所述,布局校正引擎在将连接分类成I-D或2-D之后确定它们的优先次序。根据各实施方式,在确定优先次序之前,还将每一连接分类成主连接或次连接。为了确定连接是主连接还是次连接,首先相对于参与布局的形状来确定图表的总体流动方向。一种用于确定流动方向的方法是根据围起参与形状的边界框的尺寸。过程在以下方向上流动在边界框的最长边的方向上始发自从图表的根形状。参考图19A,流动方向是自顶向下从根形状 A到形状D。对于I-D连接,如果其移动沿着图表的总体流动方向,则这些形状之间的连接可被认为是主要的。否则,I-D连接是次要的。对于2-D连接,重叠的形状可被认为是被粘合到被重叠的形状(S卩,目标形状)的源形状。从源形状到目标形状的2-D连接被认为是主要的,而从目标形状到源形状的2-D 连接被认为是次要的。根据一个实施方式,在确定父-子关系和处理子形状的次序时,使用以下优先次序确定1)2_D 主连接2) I-D 主连接3) I-D 次连接4)2_D 次连接再次查看图19A,从形状A到形状B的连接是1_D主连接,因为它涉及经由连接线在图表的流动方向上进行的连接。从形状B到形状C的连接是2-D次连接,因为该连接是两个形状之间的不使用连接线的连接并且因为该连接是从目标形状(形状B)到源形状(形状C)。最后,从形状C到形状D的连接是另一 I-D主连接,因为它是经由一连接线的并且在图表的流动方向上。图20A和20B分别类似于图19A和19B,但图表在相反的方向上流动。在该方向上,从形状A到形状B的连接是I-D主连接,从形状B到形状C的连接是2-D主连接,并且从形状C到形状D的连接是I-D主连接。如在图20B中看到的,图表2000的布局校正产生与参考图19B描述的图表相类似的经校正的图表2002。形状B与形状A对齐并间隔开,但带着形状C 一起,使得形状B和C维持相同的相对定位。形状D与形状C对齐并间隔开。
转向图21A和21B,将描述一个实施方式,其中图表2100包括区域A内的并且粘合到区域A的形状。在图表2100中,形状B粘合到区域A的上边界,并且连接到区域A内的形状C。形状C连接到形状D,形状D粘合到区域A的下边界。在对这些连接进行分类时, 从形状A到形状B的连接是2-D次连接,从形状B到形状C的连接是I-D主连接,从形状C 到形状D的连接是I-D主连接,并且从形状A到形状D的连接是2-D次连接。利用本文描述的概念,布局校正引擎可以使用这些连接分类和优先次序确定来调整图表2100以得到图21B中示出的经校正的图表2102。在经校正的图表2102中,形状B 和D维持了它们在区域A上的粘合位置。然而,形状C与形状B对齐,并且区域A的下边界向上移动以将形状D与形状C间隔开大约等于形状B和C之间的距离的距离。为了理解布局校正引擎如何得到图表2102中示出的经校正的布局,现在将描述图22A和22B中示出的放置树2200和2202。放置树2200表示在没有执行校正分类和优先次序确定的情况下可由布局校正引擎创建的可能的放置树。根据这一实现,解析形状B和 D以使之各自具有单个父形状,形状A。形状B是形状C的父形状。使用这一放置树2200, 布局校正引擎可能构建将产生区域A的维持原始位置的下边界以使得形状D不与形状C间隔开的依存关系树,因为根据放置树2200形状C和D之间没有关联。然而,利用上述连接分类和优先次序确定实现,形状D具有两个可能的父形状(形状A和形状C)的事实将被解析,使得形状D依赖于形状C来作为其父形状,如在图21B中示出的放置树2202中所示出的。这是由于上述优先次序确定规则而产生的。从形状A到形状D的连接是2-D次连接,这在优先次序上低于从形状C到形状D的I-D主连接。结果, 布局校正引擎可以确定形状D将依赖于C并且构建所得放置树2202。放置树2202中的形状A与形状B之间的虚线指示这是次连接,而主连接是用实线示出的。即使形状D由于到区域A的边界的粘合连接而不能与形状C对齐,放置树2202也确保形状D被认为是形状C 的子形状,并且因此与形状C间隔开。应当明白,本发明不限于本文描述的分类和优先次序确定的确切数量和类型。相反,本发明中给出的示例要被解释成可由布局校正引擎用来允许使用上述布局校正技术以提供用户想要的合乎需要的结果的分类和优先次序确定技术的示例。现在转向图23,将描述用于对具有直接连接到其他形状而不使用连接线的形状的图表的布局进行校正的说明性例程2300。例程2300在操作2302处开始,在此,布局校正引擎接收来自用户的布局校正请求。在操作2304,布局校正引擎根据图表的流动方向来向图表内的形状分配连接分类。根据各实施方式,这些分类可包括1_D(1维)或2-^2维)以及主或次连接分类。从操作2304,例程2300继续至操作2306,在此,布局校正引擎根据所确定的连接分类和预先确定的优先次序规则来向连接分配优先次序。例程2300从操作2306继续至操作2308,在此,布局校正引擎考虑在操作2306处确立的连接优先次序来构建适当的放置树和依存关系树。例程2300继续至操作2310,在此,根据依存关系树来提供经校正的布局。在操作2312处根据冲突解决规则来解决任何冲突,并且例程2300结束。图M示出了计算机MOO的说明性计算机体系结构,所述计算机MOO能够执行本文所描述的用于以上述方式来校正图表中的形状的位置的软件组件。如图M所示的计算机体系结构示出了常规台式计算机、膝上型计算机或服务器计算机,并且可以用来执行这里呈现的软件组件的任何方面。图M所示的计算机体系结构包括中央处理单元M02( “CPU”)、包括随机存取存储器M14( “RAM”)和只读存储器(“R0M”)M16的系统存储器M08、以及将存储器耦合至 CPU 2402的系统总线M04。基本输入/输出系统被存储在ROM 2416中,该系统包含帮助诸如在启动期间在计算机MOO中的元件之间传递信息的基本例程。计算机MOO还包括用于存储操作系统M18、应用程序和其他程序模块的大容量存储设备M10,这将在本文中更为详尽地描述。大容量存储设备MlO通过连接至总线M04的大容量存储控制器(未示出)连接到CPU 2402。大容量存储设备MlO及其相关联的计算机可读介质为计算机MOO提供非易失性存储。虽然对这里包含的计算机可读介质的描述引用了诸如硬盘或CD-ROM驱动器之类的大容量存储设备,但是本领域的技术人员应该明白,计算机可读介质可以是可由计算机MOO访问的任何可用计算机存储介质。作为示例而非限制,计算机可读介质可以包括以用于存储诸如计算机可读指令、 数据结构、程序模块之类的信息或其他数据的任何方法或技术实现的易失性和非易失性、 可移动和不可移动介质。例如,计算机可读介质包括但不限于,RAM、ROM、EPROM、EEPR0M、闪存或其他固态存储器技术、⑶-ROM、数字多功能盘(“DVD”)、HD-DVD、蓝光(BLU-RAY)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算机M00访问的任何其他介质。根据各实施例,计算机M00可以使用通过诸如网络M20之类的网络到远程计算机的逻辑连接来在联网环境中操作。计算机M00可以通过连接至总线M04的网络接口单元M06来连接到网络M20。应当理解,网络接口单元M06还可以被用来连接到其他类型的网络和远程计算机系统。计算机M00还可以包括用于接收和处理来自多个其他设备的输入的输入/输出控制器M12,这些设备包括键盘、鼠标或者电子指示笔(未在图M中示出)。类似地,输入/输出控制器可以提供至显示屏、打印机或其他类型的输出设备(也未在图M中示出)的输出。如前简述的那样,多个程序模块和数据文件可以存储在计算机M00的大容量存储设备MlO和RAM 2414内,包括适于控制联网的台式计算机、膝上型计算机或服务器计算机的操作的操作系统M18。大容量存储设备MlO和RAM 2414还可以存储一个或多个程序模块。具体而言,大容量存储设备MlO和RAM M14可以存储图表应用程序对22、布局校正引擎M24、冲突解决规则对沈、布局规则对观、放置树规则2430、以及依存关系树规则 M32,在上文中详细地描述了它们中的每一个。大容量存储设备MlO和RAM M14还可存储其他类型的程序模块。基于上文,应当明白,本文提供了用于校正图表布局的技术。利用上文公开的概念,用户将能够享受图表中的形状的多向对齐和间隔。布局校正过程可以在构建或编辑图表时自动发生、通过选择单个控件发生、或通过控件的最小组合发生,而不需要用户在图表中手动地推动形状来清除未对准和不均勻的间隔。通过根据当前布局和形状之间的偏移来重新定位形状,本文提供的各实施例可以进行最小的校正而不破坏用户创建的总体布局。 具体而言,使用本文描述的概念,涉及复杂的约束的区域和形状校正,如涉及各列区域和形状到其他形状和区域的直接连接,可以按维持所调整的图表的完整性以最接近地满足用户
22的意图和要求的方式来提供。虽然以计算机结构特征、方法动作、以及计算机可读介质专用的语言描述了本文呈现的主题,但是应该理解,在所附权利要求书中所限定的本发明不一定仅限于本文描述的具体特征、动作、或介质。相反,这些具体特征、动作和介质是作为实现权利要求的示例形式来公开的。上述主题仅作为说明提供,并且不应被解释为限制。可对此处所述的主题作出各种修改和改变,而不必遵循所示和所述的示例实施例和应用,且不背离所附权利要求书中所述的本发明的真正精神和范围。
权利要求
1.一种用于对包括位于一列区域内的多个形状的图表布局进行校正的计算机实现的方法,所述方法包括接收布局校正请求;响应于所述布局校正请求,对于所述一列区域中的每一区域,确定一组形状的经校正的布局而不进行区域校正,确定所述区域内的所述一组形状的经校正的布局周围的最小附加间隔,以及根据所述最小附加间隔来确定经校正的区域边界;以及根据所述经校正的布局和所述经校正的区域边界来顺序地重新定位所述一列区域中的每一区域的所述一组形状和区域边界。
2.如权利要求1所述的计算机实现的方法,其特征在于,对于所述一列区域中的每一区域,确定一组形状的经校正的布局而不进行区域校正包括确定每一区域的包括该区域内的每一形状的片段;以及对于每一片段,确定该片段内的形状的所预测的布局,忽略任何区域约束。
3.如权利要求2所述的计算机实现的方法,其特征在于,确定所述区域内的所述一组形状的经校正的布局周围的最小附加间隔包括定义所述片段内的形状的所预测的布局周围的边界框;以及根据任何区域约束来确定所述边界框周围所需的附加间隔量,以使得所述边界框适合在所述区域内。
4.如权利要求1所述的计算机实现的方法,其特征在于,所述经校正的区域边界包括相对区域边界之间在所述一列区域的流动方向上的原始间隔的最小值。
5.如权利要求1所述的计算机实现的方法,其特征在于,所述一列区域包括跨功能流程图(CFF)的多个泳道或阶段。
6.如权利要求1所述的计算机实现的方法,其特征在于,还包括在重新定位了所述一组形状和区域边界之后根据至少一个冲突解决规则来解决冲突。
7.如权利要求1所述的计算机实现的方法,其特征在于,所述布局校正请求包括对所述一列区域内的多个形状进行对齐和间隔的请求。
8.如权利要求1所述的计算机实现的方法,其特征在于,所述布局校正请求包括对所述一列区域内的所述多个形状进行旋转或翻转的请求。
9.如权利要求8所述的计算机实现方法,其特征在于,还包括向所述一列区域内的每一区域的至少一个角分配虚拟节点;根据所述多个形状在所述图表中的物理位置来创建依存关系树,所述依存关系树定义了所述多个形状和虚拟节点之间的父与子关系以及所述多个形状和虚拟节点之间的关联; 以及其中根据所述经校正的布局和所述经校正的区域边界来顺序地重新定位所述一列区域的每一区域的一组形状和区域边界包括根据所述经校正的布局和所述经校正的区域边界来顺序地行进通过所述依存关系树并且重新定位所述一列区域的每一区域的所述一组形状和区域边界。
10.一种其上存储计算机可执行指令的计算机存储介质,所述指令当由计算机执行时, 使所述计算机执行接收布局校正请求以更改包括位于一列区域内的多个形状的图表的布局;向所述一列区域内的每一区域的至少一个角分配虚拟节点;根据所述多个形状在所述图表中的物理位置来创建依存关系树,所述依存关系树定义了所述多个形状和虚拟节点之间的父与子关系以及所述多个形状和虚拟节点之间的关联;根据所述依存关系树和对应于所述布局校正请求的至少一个布局规则来顺序地重新定位所述图表中的所述多个形状和虚拟节点。
11.如权利要求10所述的计算机存储介质,其特征在于,所述布局校正请求包括旋转或翻转所述图表的请求。
12.如权利要求10所述的计算机存储介质,其特征在于,所述图表包括具有水平地定向的一列区域和相重叠的垂直地定向的一列区域的区域网格,并且其中使得所述计算机向每一区域的至少一个角分配虚拟节点包括使得所述计算机在所述区域网格的垂直边的顶角或底角处开始来顺序地向所述网格的垂直边分配多个虚拟节点并沿该垂直边进展,并且在所述垂直边的顶角或底角处开始来顺序地向所述网格的水平边分配多个虚拟节点并沿该水平边进展。
13.如权利要求12所述的计算机存储介质,其特征在于,所述区域网格包括CFF,使得水平定向的一列区域包括多个泳道且垂直定向的一列区域包括多个阶段。
14.如权利要求10所述的计算机存储介质,其特征在于,所述布局校正请求包括将所述图表旋转90度的请求,并且其中所述计算机可执行指令在由计算机执行时还使得所述计算机就地旋转所述多个形状中的每一个,以使得所述多个形状中的每一个在图表旋转之前的定向在图表旋转之后得到维持。
15.如权利要求14所述的计算机存储介质,其特征在于,所述计算机可执行指令在由计算机执行时还使得所述计算机确定每一区域内的一组形状的经校正的布局周围的最小附加间隔;根据所述最小附加间隔来确定每一区域的经校正的区域边界;以及根据所述经校正的区域边界来顺序地重新定位所述一列区域的每一区域的区域边界, 其中所述经校正的区域边界包括相对区域边界之间的在所述一列区域的流动方向上的原始间隔的最小值。
16.一种其上存储计算机可执行指令的计算机存储介质,所述指令当由计算机执行时, 使所述计算机执行接收布局校正请求以更改图表中的多个形状的布局,其中所述多个形状的第一形状与所述多个形状的第二形状不使用连接线而直接粘合;向所述多个形状之间的每一连接分配连接分类;根据每一连接分类来分配连接优先次序;根据所述多个形状在所述图表中的物理位置并根据分配给每一连接的连接优先次序来创建依存关系树,所述依存关系树定义了所述多个形状之间的父与子关系以及所述多个形状之间的关联;以及根据所述依存关系树和对应于所述布局校正请求的至少一个布局规则来顺序地重新定位所述图表中的所述多个形状至少一个子集。
17.如权利要求16所述的计算机存储介质,其特征在于,所述第二形状包括区域并且其中所述第一形状直接粘合到所述区域的边界上的位置,并且其中所述至少一个布局规则允许移动所述区域的边界以便可以修改所述区域的大小,但防止所述第一形状从粘合到所述区域的边界上的位置移开。
18.如权利要求16所述的计算机存储介质,其特征在于,使得所述计算机向每一连接分配所述连接分类包括使得所述计算机向经由连接线连接的两个形状之间的连接分配第一分类并向不使用连接线连接的两个形状之间的连接分配第二分类。
19.如权利要求18所述的计算机存储介质,其特征在于,使得所述计算机向每一连接分配所述连接分类还包括使所述计算机当所述连接在所述图表的流动方向上的情况下将所述第一分类指定为主连接,且当所述连接不在所述图表的流动方向上的情况下将所述第一分类指定为次连接,以及当所述连接在重叠的形状到被重叠的形状的方向上的情况下将所述第二分类指定为主连接且当所述连接在所述被重叠的形状到所述重叠的形状的方向上的情况下将所述第二分类指定为次连接。
20.如权利要求19所述的计算机存储介质,其特征在于,使得所述计算机根据每一连接分类来分配所述连接优先次序包括使得所述计算机向被分配了第二分类并被指定为主连接的连接分配最高优先次序。
全文摘要
本发明描述了一种用于校正图表中的形状的布局的技术,并且具体地是用于具有基于约束的布局的图表的技术,诸如具有各列区域和不使用连接线而直接连接的形状的图表。接收校正图表布局的请求。预测每一区域的形状布局,接着进行对应于经校正的形状布局的最小区域校正。随后顺序地通过各列区域来提供经校正的布局,同时解决冲突。在翻转或旋转图表时可以利用虚拟节点来保留区域布局。使用连接分类和优先次序确定系统来对具有形状和/或区域之间的一个或多个直接连接的图表内的形状和区域进行布局。
文档编号G06F9/44GK102169434SQ201110050518
公开日2011年8月31日 申请日期2011年2月24日 优先权日2010年2月25日
发明者A·韦林卡, J·E·豪格三世, J·李, R·P·卡南, Z·A·巴斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1