到多层栅格布局的对象的对准的制作方法

文档序号:15884456发布日期:2018-11-09 18:35阅读:198来源:国知局
到多层栅格布局的对象的对准的制作方法

在如文档编辑应用等环境中,文档通常包含多个对象,诸如形状、段落等。通常,用户可能打算在对象对准、大小调节和间距方面规则地创建布局。有几种现有工具来协助创建与文档中的多个对象相关联的规则布局,诸如栅格线、布局向导或布局命令。栅格线系统通常可以在水平和垂直维度中的所有线之间使用相等的间隔,这可以将对象和间距限制为相同栅格大小的倍数。当被拖动的对象变为与现有对象的对准或等效间距状态时,布局向导可以临时出现。



技术实现要素:

根据本文中描述的主题的实现,提出了一种用于将对象对准到多层栅格布局的解决方案。对于包括多个对象(例如,形状、线条、段落等)的文档,本文中描述的主题的实现对多个待对准对象的边缘执行第一对准。减少边缘排序中的不规则性。然后,可以基于第一对准来对多个对象的边缘执行第二对准。可以生成多个对象的第一栅格布局。然后基于多个对象的第一栅格布局来执行第三对准,并且可以生成多个对象的第二栅格布局。

提供本“发明内容”是为了以简化的形式介绍将在以下“具体实施方式”中进一步描述的一些概念。本“发明内容”并非旨在表示所要求保护的主题的关键特征或基本特征,也并非旨在用于限制所要求保护的主题的范围。

附图说明

图1是其中可以实现本文中描述的主题的实现的环境100的框图;

图2是根据本文中描述的主题的实现的用于将对象对准到多层栅格布局的方法200的流程图;

图3示出了根据本文中描述的主题的实现的确定“良好”边缘顺序的示例;

图4是根据本文中描述的主题的实现的对象布局的示意图,将结合该对象布局来描述边缘约束;

图5是根据本文中描述的主题的实现的另一对象布局的示意图,将结合该另一对象布局来描述边缘约束;

图6示出了根据本文中描述的主题的实现的确定“良好”边缘顺序的另一示例;

图7是根据本文中描述的主题的实现的用于执行第一对准以减少边缘排序中的不规则性的方法700的流程图;

图8是根据本文中描述的主题的实现的对准对象的破坏性效果的示意图;

图9是根据本文中描述的主题的实现的用于执行第二对准以生成多个对象的第一栅格布局的方法900的流程图;

图10示出了根据本文中描述的主题的实现的向各种量指派变量的示例;

图11示出了根据本文中描述的主题的实现的旋转对象的示例;

图12是根据本文中描述的主题的实现的用于将嵌套对象对准到多层栅格布局的方法1200的流程图;

图13示出了根据本文中描述的主题的实现的均衡边界的示例。

在整个附图中,使用相同或相似的附图标记来表示相同或相似的元素。

具体实施方式

现在将参考若干示例实现来讨论本文中描述的主题。应当理解,这些实现被讨论仅仅是用于使得本领域技术人员能够更好地理解并且因此实现本文中描述的主题,而不是对主题的范围提出任何限制。

如本文中使用的,术语“包括”及其变体应当被解读为意指“包括但不限于”的开放术语。除非上下文另有明确指示,否则术语“或”应当被解读为“和/或”。术语“基于”应当被解读为“至少部分基于”。术语“一个实现”和“实现”应当被解读为“至少一个实现”。术语“另一实现”应当被解读为“至少一个其他实现”。术语“第一”、“第二”、“第三”等可以指代不同或相同的对象。下面可以包括其他定义(显式和隐式)。

传统上为多个文档对象创建规则布局是复杂且耗时的。尽管一些应用可以提供解决问题的工具,但是可能存在一些问题或限制。例如,当使用诸如栅格线、布局向导或布局命令等传统工具来创建与文档中的多个对象相关联的布局时,通常存在很多类似的对象位置或对象间距要对准,这可能在视觉上分散注意力并且在物理上要求很高。而且,布局命令可能需要预先规划期望布局。因此,依次多重选择对象并且向它们应用布局命令以创建最终规则布局可能会非常复杂且耗时。这些和其他潜在问题可以通过本文中描述的主题的实现来解决。

图1示出了可以实现本文中描述的主题的实现的环境100的框图。如图所示,环境100包括用户101和计算设备102。

计算设备102可以是台式计算机、膝上型计算机、平板计算机、智能电话或任何其他类型的计算设备。计算设备102的组件可以包括但不限于一个或多个处理器110、存储器120和一个或多个i/o接口130。存储器120可以存储各种模块、应用、程序或其他数据。此外,存储器120可以包括在由(多个)处理器110执行时引起(多个)处理器110执行本文中描述的用于计算设备102的操作的指令。在计算设备102中,(多个)i/o接口130可以支持使得用户101能够与计算设备102交互的各种不同的输入设备和输出设备中的一个或多个。例如,(多个)输入设备可以包括用户设备,诸如键盘、小键盘、触摸垫、轨迹球等。例如,(多个)输出设备可以包括显示器。

计算设备102可以具有附加的特征和/或功能。例如,计算设备102还可以包括附加的数据存储设备(可移除和/或不可移除),诸如磁盘或光盘。这样的附加存储装置可以包括可移除存储装置和/或不可移除存储装置。计算机可读介质可以包括至少两种类型的计算机可读介质,即计算机存储介质和通信介质。计算机存储介质可以包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块、程序数据或其他数据)的任何方法或技术实现的易失性和非易失性的可移除和不可移除介质。系统存储器、可移除存储装置和不可移除存储装置都是计算机存储介质的示例。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储技术、cd-rom、数字多功能盘(dvd)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备、或者可以用于存储期望的信息并且可以由计算设备102访问的任何其他介质。任何这样的计算机存储介质可以是计算设备102的一部分。此外,计算机可读介质可以包括在由(多个)处理器执行时执行本文中描述的各种功能和/或操作的计算机可执行指令。相反,通信介质可以在诸如载波等调制数据信号或其他机制中实施计算机可读指令、数据结构、程序模块或其他数据。如本文中定义的,计算机存储介质不包括通信介质。

存储器120可以存储用于处理文档103的文档编辑应用121。文档103可以是演示文档或文本文档。文档103可以包括一个或多个编辑单元。如本文中使用的,术语“编辑单元”是指构成文档103的基本单元。编辑单元的示例包括但不限于演示文档中的幻灯片或者文本文档中的页面,诸如图1所示的编辑单元104、105和106。每个编辑单元可以包括一个或多个对象(例如,形状、线条、段落等)。例如,编辑单元104被示出为包括对象114和116,编辑单元104被示出为包括对象115和117,并且编辑单元106被示出为包括对象118和119。在以下讨论中,仅为了说明的目的,将描述一些实现,其中文档103是演示文档,并且编辑单元104、105和106是演示文档内的幻灯片。

图2示出了根据本文中描述的主题的实现的用于将对象对准到多层栅格布局的方法200的流程图。例如,方法200可以由如图1所示的计算设备102来实现。更具体地,方法200可以被实现为文档编辑应用121的一部分。

方法200在步骤210中进入,在步骤210中,对多个待对准对象的边缘执行第一对准。在一些实现中,多个待对准对象可以包括文档103的编辑单元内的所有对象(例如,如图1所示的编辑单元105内的所有对象)。替代地或另外地,可以由用户101来多重选择多个待对准对象(例如,编辑单元104内的对象114和116)。而且,多个对象中的每个可以具有不同的形状,诸如矩形、三角形等。在下面的讨论中,仅为了说明的目的,将描述一些实现,其中多个待对准对象中的每个是没有旋转的矩形,其具有上边缘、下边缘、左边缘和右边缘。

通过执行第一对准,边缘排序中的不规则可以减少,从而获取“良好”的边缘排序。例如,图3示出了根据本文中描述的主题的实现的确定“良好”边缘顺序的示例。如图所示,在这个示例中有四种不同的对象布局,包括初始输入310和可能的结果输出320至340。在下面的讨论中,只讨论一个维度(例如,水平边缘)。然而,应当理解,这仅仅是为了简化的目的,而不对本文中描述的主题的范围提出任何限制。在一些实现中,顶部边缘和底部边缘可以分别由t和b表示,并且如图3所示的四个布局中的所有水平边缘可以如下从上到下来列出:

310:ttbtbtbb

320:ttbbttbb

330:ttbtbbtb

340:bttbbtbt

如四个布局的所列出的水平边缘所示,输出320仅具有面向相同方向的四个边缘的连续序列,即“tt”、“bb”、“tt”和“bb”,而输出330和340分别具有面向相同方向的更多两个边缘的连续序列。因此,由于输出320给出面向相同方向的最少数目的边缘的连续序列,所以可以确定输出320比输出330和340更好。其他维度(例如,垂直边缘)可以以类似的方式考虑,并且因此本文中将不讨论。

在一些实现中,可以定义一些边缘约束以避免多个对象的破坏性布局。例如,多个对象的破坏性布局可以包括对象被折叠,新的重叠被创建和/或现有重叠被破坏。图4示出了示例对象布局,将结合该示例对象布局来描述边缘约束。如图所示,包括三个对象410至430。面向不同方向的边缘由不同的字母标识:l表示左,r表示右,t表示上,b表示下。它们从左到右或从上到下编号。例如,符号可以用于指示顺序。边缘约束的示例可以如下给出。

对于每个对象,其左边缘必须保持在其右边缘的左边,并且其上边缘必须保持在其下边缘之上:并且等等。如果两个对象沿着一个轴线分离但是沿另一轴线重叠,则它们必须沿着分离轴线保持分离并且保持它们的原始顺序:并且如果两个对象沿着两个轴线分离,它们应当至少沿着一个轴线保持分离,并且其原始距离较大的轴线可以被选择:而不是

此外,需要为重叠对象定义一些边缘约束。将参考图5描述一些示例边缘约束,图5示出了另一对象布局。如图5所示,包括三个重叠对象510至530。面向不同方向的边缘由不同的字母标识:l表示左,r表示右,t表示上,b表示下。它们从左到右或从上到下编号,并且符号可以用于指示顺序。用于重叠对象的边缘约束的示例可以如下给出。

当输入包含两个重叠对象时,可以要求面向每个方向的边缘保持其原始顺序并且可以不对准。例如,在图5中,可以要求并且但是可不要求注意,例如,可能无法通过要求来分离重叠形状,因为重叠可能是打算的。

在如上所述的边缘约束下,可以确定给出面向相同方向的最少数目的边缘的连续序列的候选顺序。然而,通常有多个候选顺序给出面向相同方向的最少数目的边缘的连续序列。在这种情况下,只能从中选择一个顺序。例如,图6示出了根据本文中描述的主题的实现的确定“良好”边缘顺序的示例。图6中示出了四个对象布局610至640。仅为了简化的目的,可以仅考虑垂直边缘,并且左边缘和右边缘可以分别由l和r表示。如图6所示的四个布局中的所有垂直边缘可以如下从左至右来列出:

610:llllrrrrlllrrr

620:llllrrrlrllrrr

630:llllrrrllrlrrr

640:llllrrrlllrrrr

如四个布局的所列出的垂直边缘所示,布局610和640分别具有面向相同方向的四个边缘的连续序列,而布局620和630分别具有面向相同方向的更多两个边缘的连续序列。此外,在布局610和620之间以及布局630和640之间只有一个倒置,而在布局610和630之间以及布局620和640之间有两个倒置。在这种情况下,“良好”边缘顺序可以被确定为使得面向相同方向的边缘的连续序列的数目和相对于边缘的原始顺序的倒置的数目被最小化。如图6所示,例如,如果输入(即,对象的原始布局)是620,则布局610可以表示“良好”边缘顺序;如果输入是630,则布局640可以表示“良好”边缘顺序。

也就是说,期望改变边缘的原始顺序,使得面向相同方向的边缘的连续序列的数目和相对于边缘的原始顺序的倒置的数目被最小化。图7示出了根据本文中描述的主题的实现的用于执行第一对准以减少边缘排序中的不规则性的方法700的流程图。例如,方法700可以由如图1所示的计算设备102并且更具体地由文档编辑应用121来实现。

在步骤710中,确定面向相同方向的每个边缘的连续序列的加权平均边缘位置。在一些实现中,可以向边缘指派权重。可以向在移动的情况下将具有较高的视觉显著性的边缘指派较高的权重。该权重不仅可以受到边缘本身的影响,而且还可以受同一对象的一个或多个其他边缘的影响。例如,增加细长矩形的宽度将比增加它的高度具有更多的视觉显著性。这样,可以确定面向相同方向的每个边缘的连续序列的加权平均边缘位置(例如,垂直边缘的加权平均x坐标和水平边缘的加权平均y坐标)。

然后,方法700进行到步骤720,在步骤720中,将面向相同方向的每个边缘的连续序列内的边缘移动到加权平均边缘位置。步骤720的结果可以是破坏性的。例如,图8示出了破坏性效果的示意图。如图所示,在步骤720中存在输入对象布局810和通过移动边缘而获得的结果布局820。可以看出,输入810中的规则性在输出820中没有被很好地保留。因此,需要进行调节以避免这样的破坏性效果。

方法700进行到步骤730以执行这样的调节。具体地,在步骤730中,调节多个对象中的每个以指示其原始大小和对准。在一些实现中,这可以通过允许对象缩小来进行。在其他实现中,如果该步骤会导致新的重叠,则可以省略该步骤。替代地或另外地,对象在步骤730中被移动的距离可以与其在步骤720中已经移动的距离成比例。步骤730可以具有这样的效果:具有类似宽度但是被水平地扩展的一列对象将几乎中心对准,而具有不同宽度但是几乎与一侧对准的一列对象将保持该配置。

仍然参考图2,方法200进行到步骤220,在步骤220中,基于第一对准来对多个对象的边缘执行第二对准以生成多个对象的第一栅格布局。通常,这可以通过将多个对象的边缘分成组并且然后在每个组内执行详细对准来进行。为了避免使上述问题变得棘手,尽可能地防止将边缘分成太多组以及将一些对象移动离其原始位置太远。这样,上述问题可以通过如下定义的成本函数来描述。仅为了简化的目的,可以在下面的讨论中考虑一个维度(例如,垂直边缘),并且原理可以同样适用于其他维度。

多个对象的边缘可以用x1,x2...xn(即,垂直边缘的x坐标)表示,并且边缘集合{xi,xi+1,...,xj}可以由xi..j表示。对于任何边缘集合s,将s划分成子集并且对准每个子集的最小成本f(s)可以如下表示:

f(x1..0)=0

其中f(s)表示对准集合s中的所有边缘的成本。为了惩罚创建太多组以及将边缘移动太远,创建新组的成本可以保持不变并且移动边缘的成本可以与移动的距离的平方成比例。如上所述,可以向边缘指派权重。可以向在移动的情况下将具有更高的视觉显著性的边缘指派更高的权重。对于边缘xi,例如,其权重ti可以如下基于相关联的对象的宽度和高度来决定:

其中分别表示所有对象的平均宽度和高度。则f(s)可以如下表示:

其中c表示创建组的成本,并且p(s)表示在该边缘集合s被对准在一起的情况下的对准位置。通过取最小化f(s)的p(s)可以被确定为加权平均位置:

在某些情况下,可以被定义为所有对象的平均宽度和高度的“平均大小”可能无法捕获布局的实际粒度,特别是当存在跨多行或多列的对象时。因此,在一些实现中,可以优化如上所述的成本函数。

在一些实现中,可以消除常数c以避免需要来自用户的附加输入。例如,常数c可以固定为合适的值,诸如1,并且可以找到合适的归一化因子来捕获布局的实际粒度。如上所述,可以在参考图7描述的方法700中确定给出面向相同方向的边缘的连续序列的最少数目的顺序。例如,面向左或右的边缘的连续序列可以被称为“半列”,其中面向左的边缘的连续序列可以被称为“左半列”,并且其中面向右的边缘的连续序列可以被称为“右半列”。同样,面向上或下的边缘的连续序列可以被称为“半行”,其中面向上的边缘的连续序列可以被称为“上半行”,并且其中面向右的边缘的连续序列可以被称为“下半行”。在从方法700获取的半列序列中,左半列后跟右半列可以被称为“列”,并且如果对象左边缘位于该左半列中并且其右边缘位于该右半列中,则该对象可以被称为“在该列中”。对于每一列,如果存在,则可以采用该列中的所有对象中宽度最小的一个对象。然后,被称为特征宽度的归一化因子可以被认为是这些所选择的对象的平均宽度。在一些实现中,如果对象没有在任何单个列中,则中心对准可能是期望的。也就是说,除了实际边缘之外,可以将该对象的“中心边缘”添加到边缘集合中。最后,成本函数可以改变。与边缘的数目相比,一起移动一些边缘的视觉效果可能受到这些边缘的范围的影响更多。此外,由于算法可以依赖于跨间隙对准相对边缘并且然后缩小对象以创建均衡间距,因此应当鼓励缩小(closing)间距。

对于边缘集合s,成本函数f(s)可以如下表示:

其中p(s)表示如上所述的边缘的加权平均位置,l(s)、c(s)和r(s)分别表示s中所有左、中央和右边缘的集合,range()表示最大值减去最小值,并且λ1、λ2和λ3表示通过实验而具有相同数量级的正值,其中λ2<λ3。为了构建上述成本函数,可以首先将每个边缘组内的左、右和中央边缘分成三个子组。每个子组可以与其加权平均位置对准,并且成本可以与边缘的范围成比例。然后,每个子组可以朝向整个组的加权平均位置移动。移动中央子组可能没有视觉效果,并且因此不会造成成本。向左移动左侧子组并且向右移动右侧子组可以被认为是“缩小间隙”,这导致相对较低的成本。另一方面,朝向相对方向移动可以被认为是“扩大间隙”,这导致相对较高的成本。

图9示出了根据本文中描述的主题的实现的用于执行第二对准以生成多个对象的第一栅格布局的方法900的流程图。方法900可以由如图1所示的计算设备102来实现。例如,方法900可以被实现为文档编辑应用121的一部分。

在步骤910中,从第一对准的结果来获取多个对象的多个特征值。例如,可以从如参考图7描述的方法700的结果来获取列的特征宽度和行的特征高度。然后,方法900进行到步骤920,在步骤920中,基于多个特征值和预定策略来对多个对象的边缘进行分组,以使对准多个对象的成本最小化。在一些实现中,如上所述,对于跨越多行或多列的对象,可以向该边缘集合添加中央/中间边缘以支持中央/中间对准。成本函数可以基于多个特征值来构造。更具体地,该构造可以包括针对每个组中的每个边缘类型惩罚组的创建和每个子组内的边缘的范围。另外,该构造可以包括促使相对类型的边缘之间的间隙(诸如右边缘和左边缘之间的间隙、或者下边缘和上边缘之间的间隙)的缩小。

仍然参考图2,方法200进行到步骤230,在步骤230中,基于多个对象的第一栅格布局来执行第三对准,以生成多个对象的第二栅格布局。步骤230的目的是基于来自步骤220的分组结果来决定每个组的对准位置并且进一步为每个水平和垂直方向决定间距。

在一些实现中,两个轴线可以不再被解耦,而是一起被优化。可以为每个对准组指派变量以表示其位置,并且可以指派两个其他变量以表示两个轴线的间距。对象的大小和任何其他感兴趣的长度可以用这些变量的线性组合来表示。图10示出了根据本文中描述的主题的实现的向各种量指派变量的示例。如图所示,矩形1020的左边缘的对准组被指派变量x3,右边缘的对准组被指派变量x5,并且水平间距的一半被指派变量u,则矩形1020的所得到的宽度是x5-x3-2u。

在一个实现中,作为寻找最佳位置和间距的最直接的方式,可以优化一些最小二乘项的总和,每个最小二乘项负责某个目标。例如,如果矩形1020的原始宽度是wb,并且如果不希望导致所得到的宽度与原始的宽度过多不同,则可以将(x5-x3-2u-wb)2添加到目标函数。但是,在一些情况下,可能存在冲突的目标。假定矩形1020和1030的原始高度分别是hb和hc,通过使经平方的差的和最小化而获取的所得到的高度可以是hb和hc的某种加权平均值。如果hb和hc非常不同,则通常更期望所得到的高度等于其中之一。

通常,更希望精确地满足约束子集并且忽略其他因素而不是在所有目标之间作出妥协。因此,在一些实现中,可以使用具有形式的损失函数来代替也就是说,从传统的平方项中减去高斯项。该函数是单峰的并且具有特殊属性。在这种情况下,可以考虑特定量之间的比值,即,如图10所示的矩形1040将被描述作为示例。

首先,应当考虑每个对象的所得到的宽度/高度与原始宽度/高度之间的差异,如上所述。也就是说,可以将添加到目标函数。其次,应当考虑中心边缘与实际中心之间的差异。由于来自同一对象的所有边缘都是分离的,因此这些边缘的移动可能导致中央边缘不再位于对象的中心。因此,可以被添加到目标函数。第三,应当考虑所得到的纵横比与原始纵横比之间的差异。也就是说,可以被添加到目标函数。可以使用梯度下降法优化目标函数。注意,所有的术语具有的形式,并且关于每个变量的偏导数可以如下求解:

另外,位置变量之间的顺序可能仍然需要保持以确保间距是正的。因此,g(xi+1-xi)、g(yi+1-yi)、g(u)和g(v)可以相加并且被给予更高的权重,其中:

每个对准组的位置变量的初始值是如以上关于步骤220描述的对准位置。对于间距变量的初始值,当计算每个对准组的成本时,计算左侧子组和右侧子组的平均位置。这两个位置之间的距离可以被视为该对准组的间隙宽度,并且间距变量的初始值可以被视为所有对准组的间隙宽度的平均值。

应当理解,不同的目标可能会导致不同的对准效果。例如,选择如上所述的目标集合可能导致多个对象被对准和调节大小以生成具有更一致的视觉效果的第二栅格布局。在其他实现中,可以选择不同的目标集合以使得多个对象仅能够被对准但是不被调节大小。这样,可以实现用于对准、间距和调节对象大小的多种策略(例如,对准和间距,但是不调节大小与对准、间距并且调节大小),并且可以将相关结果提供给用户以供选择。每个策略也可以评估其自己的置信度,即其已经以期望方式改进了布局,并且可以使用这些置信度值来确定是进行更改还是示出与更改相关联的建议。

在一些实现中,如图1所示,文档编辑应用121可以向用户101提供不同的命令(诸如不同的按钮)。每个命令可以对应于用于对准、间距和/或调节对象大小的策略的一个策略。响应于从用户101接收到命令(例如,响应于用户101按下一个按钮),可以将对应的策略应用于多个待对准对象。在其他实现中,可以提供如下策略作为建议:可能需要用户101在相应地更新多个对象之前进行选择。例如,可以提供特定用户界面以呈现建议。替代地或另外地,可以将建议呈现为文档103的预览,其中建议被应用于多个对象。在这种情况下,响应于用户101选择建议,可以将对应的策略应用于多个待对准对象。

在上面的讨论中,为了简化的目的,已经针对没有旋转的对象描述了一些实现。然而,在本发明的一些实现中,可以提供用于旋转对象的解决方案。可以使用旋转对象的界限框来简化问题。在一些情况下,如果需要在对准之后保持旋转对象的旋转角度,则对于具有任意纵横比的给定界限框,可能不存在期望的所得到的对象。即使可能存在满足这样的要求的解决方案,所得到的对象的形状通常可能与原始对象的形状大不相同。在这种情况下,需要平衡旋转对象的旋转角度和纵横比的变化。例如,图11示出了根据本文中描述的主题的实现的旋转对象1110的示例。假定对象1110的原始旋转角度是θ并且原始纵横比是r。如果所得到的旋转角度是θ',则所得到的纵横比r'可以如下计算。

可以找到使得最小化的θ′,其中λ是平衡权重。例如,可以通过简单地以固定的间隔枚举θ'的有效范围内的所有值来找到最佳θ'。

在一些情况下,多个待对准对象可以包括一些重叠或嵌套的对象。在本发明的一些实现中可以提供用于这种情况的解决方案。例如,图12示出了根据本文中描述的主题的实现的用于将嵌套对象对准到多层栅格布局的方法1200。例如,方法1200可以由如图1所示的计算设备102来实现。替代地或另外地,方法1200可以被实现为文档编辑应用121的一部分。

在步骤1210中,从多个待对准的嵌套对象确定嵌套层级。嵌套层级可以包括多个对象组,多个对象组中的每个包括顶层对象和多个子对象,每个子对象被该对象组内的对象嵌套,并且多个对象中的每个具有层编号以指示对象的层。例如,多个待对准的嵌套对象可以包括第一对象和第二对象。在一个实现中,如果所有以下条件满足,则可以确定第一对象包含第二对象:(1)第一对象以z顺序低于第二对象;(2)第一对象的宽度和高度分别大于第二对象的宽度和高度;(3)第一和第二对象的交集的宽度和高度大于第二对象的宽度和高度的某个分数(例如,0.8);以及(4)如果第二对象固定,则第一对象在满足所有以上条件的所有对象中将具有最高的z-顺序。对象可以包含多个子对象,但是条件(4)可以确保任何对象的父对象是唯一的。这样,如果第一对象被在特定数目的较低层中的每个处的对象嵌套,则第一对象的层编号可以被确定为该特定数目。

然后,方法1200进行到步骤1220,在步骤1220中,针对多个对象组中的每个,对对象组内的对象的边缘执行第一对准。方法1200的步骤1220可以对应于如参考图2描述的方法200的步骤210,并且因此在本文中不再详细描述。

然后,方法1200进行到步骤1230,在步骤1230中,针对多个嵌套对象的每个层,基于第一对准来执行第二对准,以生成多个嵌套对象的第三栅格布局。这样,从下层到上层,可以分别确定每层的特征大小。方法1200的步骤1230可以对应于如参考图2描述的方法200的步骤220,并且因此在本文中不再详细描述。

然后,方法1200进行到步骤1240,在步骤1240中,基于多个嵌套对象的第三栅格布局来执行第三对准,以生成多个嵌套对象的第四栅格布局。步骤1240仍然可以一次考虑所有对象,但是不同对的间距变量可以被指派给不同的层。另外,对于具有任何子对象的每个对象,可以添加项以均衡边界。图13示出了根据本文中描述的主题的实现的均衡边界的示例。在如图13所示的配置中,可以向目标函数添加一项其中u1和u2分别表示第一层和第二层的水平间距变量。由于方法1200的步骤1240可以对应于如参考图2描述的方法200的步骤230,并且因此在本文中不再详细描述。

通过以上描述,将意识到,如本文中描述的主题的实现允许对对象进行粗略布置并且将这些对象变换成具有更加规则的对象大小和对象之间的间距的更加一致的对准状态。该能力可以应用于其选择为隐式或显式的对象,并且可以类似地从隐式或显式的触发器来调用。变换后的布局可以直接应用,以适当地更新对象,或者变换后的布局可以示出为需要用户在对象被相应地更新之前进行选择的建议。用于对准、间距和调节对象大小的多种策略可以实现为多个命令或多个建议。每个策略也可以评估其自己的置信度,即其已经以期望方式改进了布局,并且可以使用这些置信度值来确定是进行更改还是示出建议。本文中描述的主题的实现使得能够适当地处理嵌套、重叠或旋转的对象,并且即使对象的初始布置被扭曲使得底层栅格结构不能够被容易感知,也能够将对象强制为最佳拟合栅格布局。

本文中描述的功能可以至少部分由一个或多个硬件逻辑组件来执行。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统系统(soc)、复杂可编程逻辑器件(cpld)等。

用于执行本文中描述的主题的方法的程序代码可以用一种或多种编程语言的任何组合来编写。这些程序代码可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码在由处理器或控制器执行时引起在流程图和/或框图中指定的功能/操作被实现。程序代码可以完全在机器上,部分在机器上,作为独立软件包,部分在机器上并且部分在远程机器上,或者完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是可以包含或存储由指令执行系统、装置或设备使用或与其相结合使用的程序的任何有形介质。机器可读介质可以是机器可读信号介质或机器可读存储介质。机器可读介质可以包括但不限于电子、磁性、光学、电磁、红外或半导体系统、装置或设备或前述的任何适当组合。机器可读存储介质的更具体的示例将包括具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式光盘只读存储器(cd-rom)、光存储设备、磁存储设备或前述的任何适当组合。

此外,尽管以特定顺序描述操作,但是这不应当被理解为要求以所示的特定顺序或顺序地执行这样的操作,或者也不应当被理解为要求执行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。同样,尽管在上述讨论中包含了若干具体实现细节,但是这些不应当被解释为对本文中描述的主题的范围的限制,而是作为可以特定于特定实现的特征的描述。在单独实现的上下文中描述的某些特征也可以在单个实现中组合实现。相反,在单个实现的上下文中描述的各种特征也可以在多个实现中单独地或以任何合适的子组合来实现。

下面列出本文中描述的主题的一些示例实现。

在一方面,提供了一种设备。所述设备包括处理单元和存储器,所述存储器耦合到所述处理单元并且存储用于由所述处理单元执行的指令的存储器,所述指令在由所述处理单元执行时引起所述设备:对多个待对准对象的边缘执行第一对准以减少边缘排序中的不规则性;基于所述第一对准,对所述多个对象的边缘执行第二对准以生成所述多个对象的第一栅格布局;以及基于所述多个对象的第一栅格布局,执行第三对准以生成所述多个对象的第二栅格布局。

在一些实现中,所述指令在由所述处理单元执行时还引起所述设备响应于接收到来自用户的命令来向所述多个对象应用所述第二栅格布局。

在一些实现中,所述指令在由所述处理单元执行时还引起所述设备:将所述第二栅格布局作为建议呈现给用户用于选择;以及响应于所述建议被所述用户选择,向所述多个对象应用所述第二栅格布局。

在一些实现中,所述指令在由所述处理单元执行时还引起所述设备为所述多个对象的边缘定义约束以避免所述多个对象的破坏性布局,所述多个对象的破坏性布局包括以下中的至少一项:对象被折叠,新的重叠被创建,以及现有重叠被破坏。

在一些实现中,所述指令在由所述处理单元执行时还引起所述设备在所述约束下确定水平维度和垂直维度的边缘的顺序,使得面向相同方向的边缘的连续序列的数目以及相对于所述边缘的原始顺序的倒置的数目被最小化。

在一些实现中,所述指令在由所述处理单元执行时还引起所述设备:为面向相同方向的所述边缘的连续序列中的每个边缘的连续序列确定加权平均边缘位置;将面向相同方向的所述边缘的连续序列中的每个边缘的连续序列内的边缘移动到所述加权平均边缘位置;以及调节所述多个对象中的每个对象以指示所述对象的原始大小和对准。

在一些实现中,所述指令在由所述处理单元执行时还引起所述设备:从所述第一对准的结果获取所述多个对象的多个特征值;以及基于所述多个特征值和预定策略,对所述多个对象的边缘进行分组以使对准所述多个对象的成本最小化。

在一些实现中,所述指令在由所述处理单元执行时还引起所述设备为所述多个对象确定最终位置和间距以生成具有更一致的视觉效果的所述第二栅格布局。

在一些实现中,所述指令在由所述处理单元执行时还引起所述设备:从多个待对准的嵌套对象确定包括多个对象组的嵌套层级,所述多个对象组中的每个对象组包括顶层对象和多个子对象,所述子对象中的每个子对象被所述组内的对象嵌套,并且所述多个对象中的每个对象具有层编号以指示所述对象的层;针对所述多个对象组中的每个对象组,对所述对象组内的对象的边缘执行所述第一对准;针对所述多个嵌套对象的每个层,基于所述第一对准来执行所述第二对准以生成所述多个嵌套对象的第三栅格布局;以及基于所述多个嵌套对象的所述第三栅格布局,执行所述第三对准以生成所述多个嵌套对象的第四栅格布局。

在一些实现中,所述多个待对准的嵌套对象包括第一对象和第二对象,并且其中所述指令在由所述处理单元执行时还引起所述设备:在所述第一对象是在所述第二对象的最大区域下方的最顶层对象的情况下,确定所述第二对象被所述第一对象嵌套;以及在所述第一对象被特定数目的较低层中的每个层处的对象嵌套的情况下,将所述第一对象的层编号确定为所述特定数目。

另一方面,提供了一种方法。所述方法包括:对多个待对准对象的边缘执行第一对准以减少边缘排序中的不规则性;基于所述第一对准来对所述多个对象的边缘执行第二对准以生成所述多个对象的第一栅格布局;以及基于所述多个对象的第一栅格布局来执行第三对准以生成所述多个对象的第二栅格布局。

在一些实现中,所述方法还包括响应于接收到来自用户的命令,向所述多个对象应用所述第二栅格布局。

在一些实现中,所述方法还包括:将所述第二栅格布局作为建议呈现给用户用于选择;以及响应于所述建议被所述用户选择,向所述多个对象应用所述第二栅格布局。

在一些实现中,所述方法还包括为所述多个对象的边缘定义约束以避免所述多个对象的破坏性布局,所述多个对象的破坏性布局包括以下中的至少一项:对象被折叠,新的重叠被创建,以及现有重叠被破坏。

在一些实现中,对所述多个待对准对象的边缘执行所述第一对准包括在所述约束下确定水平维度和垂直维度的边缘的顺序,使得面向相同方向的边缘的连续序列的数目以及相对于所述边缘的原始顺序的倒置的数目被最小化。

在一些实现中,对所述多个待对准对象的边缘执行所述第一对准包括:为面向相同方向的所述边缘的连续序列中的每个边缘的连续序列确定加权平均边缘位置;将面向相同方向的所述边缘的连续序列中的每个边缘的连续序列内的边缘移动到所述加权平均边缘位置;以及调节所述多个对象中的每个对象以指示所述对象的原始大小和对准。

在一些实现中,对所述多个对象的边缘执行所述第二对准包括:从所述第一对准的结果获取所述多个对象的多个特征值;以及基于所述多个特征值和预定策略,对所述多个对象的边缘进行分组以使对准所述多个对象的成本最小化。

在一些实现中,执行所述第三对准包括为所述多个对象确定最终位置和间距以生成具有更一致的视觉效果的所述第二栅格布局。

在一些实现中,所述方法还包括:从多个待对准的嵌套对象确定包括多个对象组的嵌套层级,所述多个对象组中的每个对象组包括顶层对象和多个子对象,所述子对象中的每个子对象被所述组内的对象嵌套,并且所述多个对象中的每个对象具有层编号以指示所述对象的层;针对所述多个对象组中的每个对象组,对所述对象组内的对象的边缘执行所述第一对准;基于所述第一对准,针对所述多个嵌套对象的每个层执行所述第二对准以生成所述多个嵌套对象的第三栅格布局;以及基于所述多个嵌套对象的所述第三栅格布局,执行所述第三对准以生成所述多个嵌套对象的第四栅格布局。

在一些实现中,所述多个待对准的嵌套对象包括第一对象和第二对象,并且确定所述嵌套层级包括:在所述第一对象是在所述第二对象的最大区域下方的最顶层对象的情况下,确定所述第二对象被所述第一对象嵌套;以及在所述第一对象被特定数目的较低层中的每个层处的对象嵌套的情况下,将所述第一对象的层编号确定为所述特定数目。

在又一方面,提供了一种计算机程序产品。所述计算机程序产品有形地存储在非暂态机器可读介质上并且包括机器可执行指令,所述指令当在设备上执行时引起所述设备执行所述方法的步骤。

虽然已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求中限定的主题不一定限于上述特定特征或动作。相反,上述具体特征和动作被公开作为实现权利要求的示例形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1