CN108536441A - 基于排版工具中元素层级的管理方法和装置 - Google Patents
基于排版工具中元素层级的管理方法和装置 Download PDFInfo
- Publication number
- CN108536441A CN108536441A CN201810270040.6A CN201810270040A CN108536441A CN 108536441 A CN108536441 A CN 108536441A CN 201810270040 A CN201810270040 A CN 201810270040A CN 108536441 A CN108536441 A CN 108536441A
- Authority
- CN
- China
- Prior art keywords
- level
- painting canvas
- layer
- value
- list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明涉及计算机应用技术领域。为了解决传统方案中对元素层级管理的准确性低以及可存储扩展性差的问题,本发明实施例提供了一种基于排版工具中元素层级的管理方法和装置,该装置包括元素修改模块根据层级变更操作修改至少一个元素对应的层级列表中的信息;第一标记模块如果监测到画布中至少一个元素对应的层级列表中的信息被修改,将设定标记位的值确定为第一标记值;查找模块当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,确认各元素的显示属性值;元素层级渲染模块刷新画布中各元素的层级渲染。本发明实施例采用一些技术手段确保双重层级的完全同步,以保证任何时候元素的层级值都和视觉上的呈现层级完全一致。
Description
技术领域
本发明涉及计算机应用技术领域,具体而言,涉及一种基于排版工具中元素层级的管理方法和装置。
背景技术
在排版工具中,只要画布中存在多于一个的元素,则元素之间就有可能发生重叠。对于重叠的两个或多个元素,哪一个显示在上面,哪一个显示在下面就是排版工具需要在程序层面考虑的问题。
传统的方案是对所有的元素按顺序编号,例如元素1编号为1,元素2编号为2,元素3编号为3。在显示的时候,按照编号顺序依次渲染每一个元素,渲染时覆盖元素区域内的其它元素外观(或进行透明度叠加,本专利不作将详细描述),于是最终生成的可视画布则能够正确显示元素的层级。
此方案在一般的排版情况下能够胜任。例如,在每一次添加、删除元素,或者改变一个或多个元素层级。但是,一旦需要记录这些操作,以便在需要的时候撤消,此方案就开始变得复杂了。因为一个元素的层级改变意味着画布中其它元素的层级也需要刷新,也就是说,记录元素变化的每一次都必须是画布中所有元素全部记录才可以保证还原时不会出现层级的恢复错误。
另一种方案是采用浮点数来对元素进行编号,这种方案是用来解决前一种方案对操作记录支持不佳而产生的改进方案。做法是每次添加元素时,将元素的层级编号+1,每次改变元素层级时只改变此元素的层级值,而不改变其它元素的层级值。在此方案中,由于每次操作改变仅限于所操作的元素,故记录操作时需要记录的数据少很多。
但是,此方案也有明显的缺陷。因为浮点数并不能直观地描述画布中元素的层级关系,所以在每次操作结束后都必须强制刷新一次元素层级,以便最终的显示能够与层级的值一一对应。这样,如果在开发中使用了意料之外的调用逻辑,例如直接修改了层级的值,而没有调用用于修改层级的安全方法,则会导致层级的值与最终显示的层级效果有差别。
发明内容
为了解决传统方案中对元素层级管理的准确性低以及可存储扩展性差的问题,本发明实施例提供了一种基于排版工具中元素层级的管理方法和装置,达到了对元素层级渲染管理的准确性,且具有较强的可存储扩展性。
第一方面,本发明实施例提供了一种基于排版工具中元素层级的管理装置,包括:元素修改模块,用于在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据所述层级变更操作修改所述至少一个元素对应的层级列表中的信息;第一标记模块,用于如果监测到所述画布中至少一个元素对应的所述层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;查找模块,用于当确定所述画布当前处于空闲状态且检测到所述设定标记的值为第一标记值时,根据所述画布中各元素当前的所述层级列表中的信息确认各元素的显示属性值;元素层级渲染模块,用于根据各元素的所述显示属性值,刷新所述画布中各元素的层级渲染。
第二方面,本发明实施例提供了一种基于排版工具中元素层级的管理方法,包括以下步骤:在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据所述层级变更操作修改所述至少一个元素对应的层级列表中的信息;如果监测到所述画布中至少一个元素对应的所述层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;当确定所述画布当前处于空闲状态且检测到所述设定标记的值为第一标记值时,根据所述画布中各元素当前的所述层级列表中的信息确认各元素的显示属性值;根据各元素的所述显示属性值,刷新所述画布中各元素的层级渲染。
第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的方法的步骤。
第四方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的方法的步骤。
本发明实施例基于排版工具中元素层级的管理装置的有益效果如下:
本发明实施例中元素修改模块在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据层级变更操作修改所述至少一个元素对应的层级列表中的信息;第一标记模块如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;查找模块当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值;元素层级渲染模块根据各元素的显示属性值,刷新画布中各元素的层级渲染。本发明实施例采用一些技术手段确保双重层级的完全同步,以保证任何时候元素的层级值都和视觉上的呈现层级完全一致。
本发明实施例中的生成模块用于当层指针被进行外部存储时,通过GUID生成算法生成字符串以作为临时的层指针作用于至少一个元素与所述层级列表的指向关系。提高了基于排版工具中元素层级的管理的灵活性与可扩展性。
本发明实施例基于排版工具中元素层级的管理方法的有益效果如下:
本发明实施例中在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据层级变更操作修改所述至少一个元素对应的层级列表中的信息;如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值;根据各元素的显示属性值,刷新画布中各元素的层级渲染。本发明实施例采用一些技术手段确保双重层级的完全同步,以保证任何时候元素的层级值都和视觉上的呈现层级完全一致。
本发明实施例中当层指针被进行外部存储时,通过GUID生成算法生成字符串以作为临时的层指针作用于至少一个元素与所述层级列表的指向关系。提高了基于排版工具中元素层级的管理的灵活性与可扩展性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面对实施例描述中所需要使用的附图作简单地介绍:
图1为本发明实施例一的基于排版工具中元素层级的管理装置的结构示意图;
图2为图1所示的基于排版工具中元素层级的管理装置的工作流程图;
图3为本发明实施例二的基于排版工具中元素层级的管理装置的结构示意图;
图4为图3所示的基于排版工具中元素层级的管理装置的工作流程图;
图5为本发明实施例三的基于排版工具中元素层级的管理装置的结构示意图;
图6为图5所示的基于排版工具中元素层级的管理装置的工作流程图;
图7为本发明实施例四的基于排版工具中元素层级的管理装置的结构示意图;
图8为图7所示的基于排版工具中元素层级的管理装置的工作流程图;
图9为基于排版工具中元素层级的管理方法的工作流程示例图;
图9(a)-9(n)为基于排版工具中元素层级的管理方法中元素修改的示例图。
具体实施方式
下面结合附图和实施例对本申请进行进一步的详细介绍。
在下述介绍中,术语“第一”、“第二”仅为用于描述的目的,而不能理解为指示或暗示相对重要性。下述介绍提供了本发明的多个实施例,不同实施例之间可以替换或者合并组合,因此本申请也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征A、B、C,另一个实施例包含特征B、D,那么本申请也应视为包括含有A、B、C、D的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。
在描述之前,对本发明中的一些概念进行详述以便更好地理解本方案。本方案应用于排版工具,排版工具中能够进行排版的最小单位称之为画布,画布内随意移动和编辑的单位称之为元素。传统的基于排版工具中元素层级的管理方法有以下三种。具体为:整数层级值管理方法,优势为与UI渲染一一对应,能确保显示效果和层级值完全一致,缺陷为每修改一个或多个元素的层级,都需要记录所有元素的层级,以便进行恢复,表现为软件的操作记录消耗更多的CPU和内存资源;浮点数层级值管理方法,优势为改变层级只需记录受影响的几个元素,无需记录所有元素。缺陷为与UI无关,在按层级渲染前需要强制刷新层级UI,否则会出现不一致,表现为用户使用排版软件时出现意料之外的层级关系;双重层级值管理方法,优势为既确保了渲染的正确性,也减少了CPU和内存的消耗,缺陷为在极端操作下,层级数值无法被双精度浮点数精确存储,也就无法进行大小比较。
本发明实施例提供了一种基于排版工具中元素层级的管理装置,包括:元素修改模块,用于在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据所述层级变更操作修改所述至少一个元素对应的层级列表中的信息;第一标记模块,用于如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;查找模块,用于当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值;元素层级渲染模块,用于根据各元素的显示属性值,刷新画布中各元素的层级渲染。
本发明实施例针对现有技术的不足,即采用双重层级值来描述元素的层级。使用浮点数作为元素层级的存储属性,这个属性将作为操作记录、存储以及与其它功能交互的属性,即此对所有功能来说,这个属性就是元素的层级属性;使用从1开始的正整数作为元素层级的显示属性,这个属性仅用作渲染显示,不与任何其它功能交互,即对所有功能来说,并不知道这个属性的存在。方案采用一些技术手段确保双重层级的完全同步,以保证任何时候元素的层级值都和视觉上的呈现层级完全一致。此外,由于浮点数在计算机上的存储精度有限,在极端情况下,例如不断地改变单个元素的层级使得浮点数层级值不断二分,当然这种操作十分罕见却不可忽略,只需要这样的操作1000多次,便可以让层级的浮点数之间的大小比较失效。其中,双精度浮点数的精度范围是-2^1024~2^1024,如果让层级系统不断在两个层级数值之间取二分的层级值,那么1024次之后双精度浮点数将无法再储存两个层级值之间的差异。传统方案采取了一些措施极大地降低了这种情况发生的可能性,但当用户选用将元素插入到两个连续层级之间的时候,原有方案的措施也无法应对。本发明实施例采用一些技术手段确保双重层级的完全同步,以保证任何时候元素的层级值都和视觉上的呈现层级完全一致。
本发明实施例中的生成模块用于当层指针被进行外部存储时,通过GUID生成算法生成字符串以作为临时的层指针作用于至少一个元素与所述层级列表的指向关系。提高了基于排版工具中元素层级的管理的灵活性与可扩展性。
实施例一
如图1所示,本实施例的基于排版工具中元素层级的管理装置10包括:元素修改模块100、第一标记模块200、查找模块300和元素层级渲染模块400。
具体的,元素修改模块100用于在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据所述层级变更操作修改所述至少一个元素对应的层级列表中的信息,其中,层级变更操作包括:将元素置于底层、将元素置于顶层、将元素上移一层、将元素下移一层、将元素移置于某元素上方、将元素移置于某元素下方以及将元素移置于任意层级。由此,提高了层级变更操作的多样性与可操作的易用性;第一标记模块200用于如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;查找模块300用于当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值;元素层级渲染模块400用于根据各元素的显示属性值,刷新画布中各元素的层级渲染。
本公开涉及的一种基于排版工具中元素层级的管理装置,确保双重层级的完全同步,以保证任何时候元素的层级值都和视觉上的呈现层级完全一致。
图2为图1所示的基于排版工具中元素层级的管理装置的工作流程图,即基于排版工具中元素层级的管理方法的步骤流程图。具体说明如下:
步骤201,在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据层级变更操作修改至少一个元素对应的层级列表中的信息。
本实施例中,层级变更操作包括:将元素置于底层、将元素置于顶层、将元素上移一层、将元素下移一层、将元素移置于某元素上方、将元素移置于某元素下方以及将元素移置于任意层级。由此,提高了层级变更操作的多样性与可操作的易用性。
步骤202,如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值。
步骤203,当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值。
步骤204,根据各元素的显示属性值,刷新画布中各元素的层级渲染。
本公开涉及的一种基于排版工具中元素层级的管理方法,确保双重层级的完全同步,以保证任何时候元素的层级值都和视觉上的呈现层级完全一致。
实施例二
如图3所示,本实施例的基于排版工具中元素层级的管理装置与实施例一不同的是:本实施例中的元素修改模块包括:确定单元、第一元素修改单元、第二元素修改单元、第三元素修改单元以及第四元素修改单元。
本实施例的基于排版工具中元素层级的管理装置10,包括:元素修改模块100、第一标记模块200、查找模块300和元素层级渲染模块400。其中,元素修改模块100包括:确定单元110、第一元素修改单元120、第二元素修改单元130、第三元素修改单元140以及第四元素修改单元150。
具体的,确定单元110用于确定至少一个元素对应的层级更新操作;第一元素修改单元120用于如果层级更新操作为将至少一个元素置于底层或将至少一个元素下移一层,则确定画布中当前的待置于底层的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向进行移动;第二元素修改单元130用于如果层级更新操作为将至少一个元素置于顶层或将至少一个元素上移一层,则确定画布中当前的待置于顶层的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的正向进行移动;第三元素修改单元140用于如果层级更新操作为将至少一个元素移置于某元素上方或将至少一个元素移置于某元素下方,则根据画布中当前的待移置于某元素上方或待移置于某元素下方的至少一个元素对应的层级列表中的层指针信息创建一个相对层,将相对层相对于画布渲染显示方向正向进行移动或者反向进行移动;第四元素修改单元150用于如果层级更新操作为将至少一个元素移置于任意层级,则确定画布中待移置于任意层级的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向或者正向进行移动。
此外,本公开提出的一种基于排版工具中元素层级的管理装置10包括:元素修改模块100用于在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据所述层级变更操作修改所述至少一个元素对应的层级列表中的信息;第一标记模块200用于如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;查找模块300用于当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值;元素层级渲染模块400用于根据各元素的显示属性值,刷新画布中各元素的层级渲染。
本实施例中,确定单元、第一元素修改单元、第二元素修改单元、第三元素修改单元以及第四元素修改单元的添加,使得基于排版工具中元素层级的管理方法的操作更加具有灵活性与易用性。
图4为图3所示的基于排版工具中元素层级的管理装置的工作流程图。具体说明如下:
步骤401,在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据层级变更操作修改至少一个元素对应的层级列表中的信息。
其中,根据层级变更操作修改至少一个元素对应的层级列表中的信息,包括:
步骤411,确定至少一个元素对应的层级更新操作。
步骤421,如果层级更新操作为将至少一个元素置于底层或将至少一个元素下移一层,则确定画布中当前的待置于底层的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向进行移动。
步骤431,如果层级更新操作为将至少一个元素置于顶层或将至少一个元素上移一层,则确定画布中当前的待置于顶层的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的正向进行移动。
步骤441,如果层级更新操作为将至少一个元素移置于某元素上方或将至少一个元素移置于某元素下方,则根据画布中当前的待移置于某元素上方或待移置于某元素下方的至少一个元素对应的层级列表中的层指针信息创建一个相对层,将相对层相对于画布渲染显示方向正向进行移动或者反向进行移动。
步骤451,如果层级更新操作为将至少一个元素移置于任意层级,则确定画布中待移置于任意层级的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向或者正向进行移动。
步骤402,如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值。
步骤403,当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值。
步骤404,根据各元素的显示属性值,刷新画布中各元素的层级渲染。
本实施例中,通过对层级变更操作的多种方式进行详述,使得基于排版工具中元素层级的管理方法的操作更加具有灵活性与易用性。
实施例三
如图5所示,本实施例的基于排版工具中元素层级的管理装置与实施例二不同的是,基于排版工具中元素层级的管理添加了生成模块、设定模块和第二标记模块。
本实施例的基于排版工具中元素层级的管理装置10,包括:元素修改模块100、第一标记模块200、查找模块300和元素层级渲染模块400。其中,元素修改模块100包括:确定单元110、第一元素修改单元120、第二元素修改单元130、第三元素修改单元140以及第四元素修改单元150。此外,还包括:生成模块500、设定模块600和第二标记模块700。
具体的,生成模块500用于当层指针被进行外部存储时,通过GUID生成算法生成字符串以作为临时的层指针作用于至少一个元素与层级列表的指向关系。此外,设定模块600用于基于设定规则对画布中的元素进行修改,设定元素在画布中对应的层级列表中的信息。此外,第二标记模块700用于将设定标记位的值确定为第二标记值。
此外,本公开提出的一种基于排版工具中元素层级的管理装置10包括:元素修改模块100用于在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据所述层级变更操作修改所述至少一个元素对应的层级列表中的信息;第一标记模块200用于如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;查找模块300用于当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值;元素层级渲染模块400用于根据各元素的显示属性值,刷新画布中各元素的层级渲染。
本实施例中,生成模块、设定模块和第二标记模块的添加,使基于排版工具中元素层级的管理装置在元素的管理与渲染操作的精准性上有了良好的提高,且提高了可扩展性。
图6为图5所示的基于排版工具中元素层级的管理装置的工作流程图。本实施例的基于排版工具中元素层级的管理装置的工作流程步骤为:
步骤601,在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据层级变更操作修改至少一个元素对应的层级列表中的信息。
其中,根据层级变更操作修改至少一个元素对应的层级列表中的信息,包括:
步骤611,确定至少一个元素对应的层级更新操作。
步骤621,如果层级更新操作为将至少一个元素置于底层或将至少一个元素下移一层,则确定画布中当前的待置于底层的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向进行移动。
步骤631,如果层级更新操作为将至少一个元素置于顶层或将至少一个元素上移一层,则确定画布中当前的待置于顶层的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的正向进行移动。
步骤641,如果层级更新操作为将至少一个元素移置于某元素上方或将至少一个元素移置于某元素下方,则根据画布中当前的待移置于某元素上方或待移置于某元素下方的至少一个元素对应的层级列表中的层指针信息创建一个相对层,将相对层相对于画布渲染显示方向正向进行移动或者反向进行移动。
步骤642,基于设定规则对画布中的元素进行修改,设定元素在画布中对应的层级列表中的信息。
步骤651,如果层级更新操作为将至少一个元素移置于任意层级,则确定画布中待移置于任意层级的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向或者正向进行移动。
需要说明的是步骤611-步骤651中的层指针被进行内部存储,当层指针被进行外部存储时,通过GUID生成算法生成字符串以作为临时的层指针作用于至少一个元素与层级列表的指向关系。
步骤602,如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值。
步骤603,当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值。
步骤604,根据各元素的显示属性值,刷新画布中各元素的层级渲染。
步骤605,将设定标记位的值确定为第二标记值。
本实施例中,层指针被进行外部存储时生成临时指针,以及有关基于设定规则对画布中的元素进行修改,设定元素在所述画布中对应的层级列表中的信息,以及将设定标记位的值确定为第二标记值的操作,使基于排版工具中元素层级的管理方法在元素的管理与渲染操作的精准性上有了良好的提高,且提高了可扩展性。
实施例四
如图7所示,本实施例的基于排版工具中元素层级的管理装置与实施例三不同的是,设定模块包括:确定单元和生成单元。
本实施例的基于排版工具中元素层级的管理装置10,包括:元素修改模块100、第一标记模块200、查找模块300和元素层级渲染模块400。其中,元素修改模块100包括:确定单元110、第一元素修改单元120、第二元素修改单元130、第三元素修改单元140以及第四元素修改单元150。此外,还包括:生成模块500、设定模块600和第二标记模块700。其中,设定模块600包括确定单元610和生成单元620。
具体的,设定模块600包括:确定单元610用于确定待修改至画布中的元素当前的层级列表中的信息;生成单元620用于如果元素当前的层级列表中的信息表述为将该层级属性值存储在层指针中,则生成一个新层级,并将新层级修改至层级列表中。需要说明的是,确定单元610还用于在层级列表中查找待修改至画布中的元素当前的层级属性值。
此外,本公开提出的一种基于排版工具中元素层级的管理装置10包括:元素修改模块100用于在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据所述层级变更操作修改所述至少一个元素对应的层级列表中的信息;第一标记模块200用于如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;查找模块300用于当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值;元素层级渲染模块400用于根据各元素的显示属性值,刷新画布中各元素的层级渲染。
本实施例中,设定模块中所包含的确定单元与生成单元,使得层级变更操作中将元素移置于某元素上方、将元素移置于某元素下方的操作的精准性提高,且具有可扩展性与易用性。
图8为图7所示的基于排版工具中元素层级的管理装置的工作流程图。本实施例的基于排版工具中元素层级的管理装置的工作流程步骤为:
步骤801,在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据层级变更操作修改至少一个元素对应的层级列表中的信息。
其中,根据层级变更操作修改至少一个元素对应的层级列表中的信息,包括:
步骤811,确定至少一个元素对应的层级更新操作。
步骤821,如果层级更新操作为将至少一个元素置于底层或将至少一个元素下移一层,则确定画布中当前的待置于底层的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向进行移动。
步骤831,如果层级更新操作为将至少一个元素置于顶层或将至少一个元素上移一层,则确定画布中当前的待置于顶层的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的正向进行移动。
步骤841,如果层级更新操作为将至少一个元素移置于某元素上方或将至少一个元素移置于某元素下方,则根据画布中当前的待移置于某元素上方或待移置于某元素下方的至少一个元素对应的层级列表中的层指针信息创建一个相对层,将相对层相对于画布渲染显示方向正向进行移动或者反向进行移动。
步骤842,基于设定规则对画布中的元素进行修改,设定元素在画布中对应的层级列表中的信息。其中,基于设定规则对所述画布中的元素进行修改,设定元素在画布中对应的层级列表中的信息,包括:
步骤8421,确定待修改至画布中的元素当前的层级列表中的信息。其中,确定待修改至画布中的元素当前的层级列表中的信息,包括:在层级列表中查找待修改至画布中的元素当前的层级属性值。
步骤8422,如果元素当前的层级列表中的信息表述为将该层级属性值存储在层指针中,则生成一个新层级,并将新层级修改至层级列表中。
步骤851,如果层级更新操作为将至少一个元素移置于任意层级,则确定画布中待移置于任意层级的至少一个元素对应的层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向或者正向进行移动。
需要说明的是步骤811-步骤851中的层指针被进行内部存储,当层指针被进行外部存储时,通过GUID生成算法生成字符串以作为临时的层指针作用于至少一个元素与层级列表的指向关系。
步骤802,如果监测到画布中至少一个元素对应的层级列表中的信息被修改,则将设定标记位的值确定为第一标记值。
步骤803,当确定画布当前处于空闲状态且检测到设定标记的值为第一标记值时,根据画布中各元素当前的层级列表中的信息确认各元素的显示属性值。
步骤804,根据各元素的显示属性值,刷新画布中各元素的层级渲染。
步骤805,将设定标记位的值确定为第二标记值。
本实施例中,对基于设定规则对画布中的元素进行修改,设定元素在画布中对应的层级列表中的信息步骤的具体详述,使得层级变更操作中将元素移置于某元素上方、将元素移置于某元素下方的操作的精准性提高,且具有可扩展性与易用性。
图9为基于排版工具中元素层级的管理方法的工作流程示例图;图9(a)-9(n)为基于排版工具中元素层级的管理方法中元素修改的示例图。
需要说明的是,本方案相比于传统方案的双重层级值来说,去掉了双精度浮点值,新增引入了如下概念:元素的“层级”以及画布的层级列表。继而,本方案包含三个重要概念:元素的“层级”,画布的层级列表和元素的渲染层级数值。下面分别对这三个概念进行解释。
元素的“层级”:层级打了引号,因为它已经与此前方案中“层级”的含义不同了。现在的元素层级是一个完整的对象,我们将这个对象称之为层。在我们的方案中,有两种不同的层,一种是绝对层,后续描述中简称为层,一种是相对层,没有简称。相比于之前用浮点数表示元素的层级时,浮点数直接存在了元素的内部;此方案的层级既可以储存在内部,也可以储存在外部。如果储存在内部,可能会略微损失性能并需要手动进行层级同步;如果储存在外部,则这些过程从逻辑上是可以自动完成的。优选地,本方案推荐储存在外部,在后面的方案流程中会有更详细的说明。下图中用一个包含的方式描述了元素与层之间的关系。
画布的层级列表:本方案为每一个画布采用了一个层级列表来储存画布内所有元素的层。相比于原方案采用浮点数进行大小比较,这种方案提供了几乎无限空间的大小比较方法,受限于计算机的储存能力和计算速度。
渲染层级数值:与原方案一样,渲染的层级数值依然是从1开始的连续正整数。
具体的,如图9所示,分为7个步骤,其中第4个步骤和第6个步骤分子流程进行详述。
S101方案开始。
S201层级操作有很多种类型;其中,有一部分是用户的操作,有一部分是程序内其他业务模块的操作。用户操作和程序的操作并不会严格区分,因为每一项是否开放给用户操作是软件开发者的权利,是否开放给其他业务模块使用是API设计者的权利。这里我们实现全部的层级操作,以适应所有可能的情形。根据操作的不同,流程将分到S301-S307这7个分支中。
S301置于顶层。即将元素的层级改为为最高级,效果是被指定的一个或多个元素会渲染在其他元素之上,如果重叠则会遮挡其他元素,而被指定的多个元素之间的层级上下关系不变。当检测到操作为置于顶层时,将执行S401子流程。
S302置于底层。即将元素的层级改为为最低级,效果是被指定的一个或多个元素会渲染在其他元素之下,如果重叠则会被其他元素遮挡,而被指定的多个元素之间的层级上下关系不变。当检测到操作为置于底层时,将执行S402子流程。
S303上移一层。将每一个被指定层级的元素的层级都置为比它自己上一个元素高但比更上一个元素低的层级;指定的过程去除被指定的那些元素。当检测到操作为上移一层时,将执行S403子流程。
S304下移一层。将每一个被指定层级的元素的层级都置为比它自己下一个元素低但比更下一个元素低的层级;指定的过程去除被指定的那些元素。当检测到操作为下移一层时,将执行S404子流程。
S305从S305开始,通常软件都不会给用户开放设置,而是给应用程序的其他模块调用,因为这种设置对用户的技能要求比较高,且这几个的层级设置都能从前面四个操作组合得到。即将指定的一个或多个元素的层级设置到某个指定元素的上方。当检测到操作为移到某元素上方时,将执行S405子流程。
S306将指定的一个或多个元素的层级设置到某个指定元素的下方。S305和S306都是在指定相对层级,而其他都是在指定绝对层级。当检测到操作为移到某元素下方时,将执行S406子流程。
S307移动到任意层级。将指定的一个或多个元素的层级设置到某一个或多个固定的值,原来具备此层级的元素将跟随上衣或下移以便留出这样的层级空缺。当检测到操作为移动到任意层级时,将执行S407子流程。
S401-S407由于其子流程比较复杂,为避免影响到对主流程的理解。将在后面再详细说明。
S501子过程中对层级的修改会导致画布中的层级列表改变。画布中的层级列表是特制的,以便能够在每一次改变列表时执行一段刷新层级的操作。或者,即便不是特制的列表,也可以通过控制对此列表的每一处操作来实现对列表改变的监视。当监视到列表发生改变时,将执行S601子流程。
S601由于其子流程比较复杂,为避免影响到对主流程的理解。将在后面再详细说明。
S701当完成刷新元素层级的子流程后,方案结束。如果还有用户进行层级操作或程序中的其他模块进行层级操作,就重新执行流程。
进一步地,主方案中S601的子流程的第一种可执行方案的一部分的目的是当层级改变时,决定刷新的时机。
需要说明的是,要完成S601子流程,此部分也可以不存在。此部分是为了提升层级刷新时的性能。考虑到每次刷新层级需要更新所有元素的整数层级属性并几乎全部重新渲染依次,即只是几乎,还有优化空间,这是一个耗费性能的操作。于是我们将真正的刷新任务延迟,在延迟期间,新的刷新申请可以继续发生,但不会立刻进行层级刷新,以节省CPU时间。其中,此部分的流程具体为:
S101子流程开始。
S201此子流程是一个层级模块中一个较独立的流程,事实上,即便主方案没有开始,此模块也一直在执行等待。当主方案S601步骤开始时,便是向此流程提出了一次申请。当申请发生时,进入流程S301,否则继续等待。
S301检测是否已经添加了刷新层级渲染的待办任务。如果已经存在待办,则流程返回S201继续等待新的申请;否则进入S401。
S401由于此时并不存在刷新层级渲染的待办任务,所以在此时将任务加入待办区。只有进入待办区的任务才会在主方案S601子流程的2/2部分执行。加入待办后,再次回到S201等待新的申请。
S501此流程一旦开启将不会结束,除非结束应用程序。当然,作为此方案的改进方案,我们可以为此子流程添加一个开关,在每一次返回S201之前检查开关以决定继续还是结束流程。开关也可以加在S301和S401的后面,同样可以决定流程是否结束。
更进一步地,主方案中S601的子流程的第一种可执行方案的另一部分的目的是当UI空闲时,刷新层级。
需要说明的是,未完成S601子流程,此部分是配合之前的部分而存在的。此部分包含5个步骤,其中S401又是一个复杂的子流程,将在后面详细说明。如果主方案的S601子流程中不存在之前的部分,那么此部分也将只需要S401部分就够了。也就是说,在性能并不敏感的应用程序中,此部分的S401子流程能够实现主方案中的S601子流程。其中,此部分的流程具体为:
S101子流程开始。
S201等待UI进入空闲状态。由于带有图形用户界面(GUI,简称UI)的程序通常都需要及时响应用户的操作,于是UI会有繁忙与空闲的区分。当UI繁忙时,说明UI线程正在处理UI逻辑或其他在UI线程上执行的任务。而UI空闲时,便可以处理用户输入或执行其他操作。此子流程便是利用UI的空闲时间来刷新层级。不同操作系统的等待UI进入空闲状态的方法不同,但这都是操作系统本身就提供的功能。例如,Windows操作系统通过向窗口发送消息,如果能够收到对应的消息,说明应用程序UI空闲。当UI空闲时,进入S301。
S301检查是否存在刷新层级渲染的待办任务。这个任务就是1/2部分的S401步骤添加进来的。如果存在,就执行S401进行真正的层级刷新;否则回到S201继续等待。
S401此流程将在后面有更详细的说明。在S401流程结束后,回到S201。
S501此流程一旦开启将不会结束,除非结束应用程序。当然,作为此方案的改进方案,我们可以为此子流程添加一个开关,在每一次返回S201之前检查开关以决定继续还是结束流程。开关也可以加在S301和S401的后面,同样可以决定流程是否结束。
此外,需要说明的是,主方案中S601的子流程的第一种可执行方案为避免性能浪费,执行层级刷新时采用的申请和检查方式。而第二种可执行方案则无视这种性能浪费,一定程度上适用于轻量级问题。由于流程很简单,几乎是主方案中S601的子流程的第一种可执行方案后半部分的子集。所以此处不再赘述。其中,刷新层级子流程和主方案中S601的子流程的第一种可执行方案后半部分的S401是同一个子流程。后续介绍子流程时,将以主方案中S601的子流程的第一种可执行方案为主进行引用,但同时也适用于此主方案中S601的子流程的第二种可执行方案。
此外,需要说明的是,主方案中S601的子流程的第一种可执行方案还有第三种可执行替代方案。主方案中S601的子流程的第三种可执行方案综合了主方案中S601的子流程的第一种可执行方案的两个部分,采用一个统一的调度器线程模型来实现。其中,操作流程具体为:
S101子流程开始。
S201此子流程是一个层级模块中一个较独立的流程,事实上,即便主方案没有开始,此模块也一直在执行等待。当主方案S601步骤开始时,便是向此流程提出了一次申请。当申请发生时,进入流程S301,否则继续等待。
S301检测是否存在尚未执行的用于刷新层级渲染的UI调度。如果已经存在未执行的调度,则流程返回S201继续等待新的申请;否则进入S401。
S401将层级渲染加入UI线程调度器进行调度,并设置好合适的优先级。如果优先级设置为高于渲染,那么层级的刷新将会在渲染之前完成;如果优先级设置为等于或低于渲染,那么层级的刷新将会在渲染之后完成。如果在渲染之后完成,那么用户会看到层级刷新的延迟。
由于刷新层级之后还会再次进行渲染以反应最新的遮挡关系,多进行了一次渲染。所以,优选地,我们采用高于渲染的优先级刷新层级。当设置好UI调度器之后,它会根据优先级决定合适执行预定的刷新层级任务。具体的决定原理类似于主方案中S601的子流程的第一种可执行方案的后半部分,可以作为参考。当决定执行时,将进入S402流程。
S402这里的S401子流程和主方案中S601的子流程的第一种可执行方案后半部分的S401是同一个子流程。后续介绍子流程时,将以主方案中S601的子流程的第一种可执行方案为主进行引用,但同时也适用于此主方案中S601的子流程的第三种可执行方案。
S501此流程一旦开启将不会结束,除非结束应用程序。当然,作为此方案的改进方案,我们可以为此子流程添加一个开关,在每一次返回S201之前检查开关以决定继续还是结束流程。开关也可以加在S301和S401的后面,同样可以决定流程是否结束。
此外,需要说明的是,子流程中S401子流程第一种可执行方案,这里是真正的层级刷新逻辑。从刷新层级开始,到最终决定渲染的先后顺序以遮挡反应。其中,操作流程为:
S101子流程开始。子流程中S401子流程第一种可执行方案的主要思想是按层级顺序找到每个元素,标记其层级,然后统一按顺序渲染。
S201~S301从画布中的层级列表中按顺序读取每一项。第一项我们标记为1,第二项我们标记为2,以此类推,直到标记完整个列表。在每一次标记时,都遍历一次画布中的所有元素,以找到拥有相同层级的那个元素,然后标记此元素的层级为当前读取的项序号。之前用层指针是否指向同一个“层”,找到指向同一个层的元素就算做找到相同层级的元素。如果遍历结束,则子流程结束,进入S501;否则继续遍历,直到完成整个列表。
S401在每个元素上都标记了层级的整数数值。可以像列表序号一样从0开始或者从1开始,也可以选择正数或者负数开始。也可以是连续的或不连续的。只要所有的元素的层级标记是单向递增的即可。因为数值最终会给渲染框架,对本方案的流程几乎没有影响。渲染框架会按照标记的整数数值按顺序渲染元素。由于这里使用了渲染框架的内容逻辑,所以此处不赘述。
S501子流程结束。
此外,需要说明的是,完成真正的层级刷新逻辑还有子流程中S401子流程第二种可执行方案。其中,操作流程为:
S101子流程开始。完成真正的层级刷新逻辑还有子流程中S401子流程第二种可执行方案的主要思想是按元素顺序寻找层级,然后根据层级在画布中层级列表中的编号标记元素的层级。
S201~S301遍历画布中的每一个元素,每当遍历到一个元素的时候,就将其层记录,然后去画布中的层级列表中寻找此层的序号,即方法是找到此层在列表中占第几位。当找到第几位后,就为此时遍历到的元素标记层级的数值。直到遍历全部结束。
S401自此,我们在每个元素上都标记了层级的整数数值。可以像列表序号一样从0开始或者从1开始,也可以选择正数或者负数开始。也可以是连续的或不连续的。只要所有的元素的层级标记是单向递增的即可。因为数值最终会给渲染框架,对本方案的流程几乎没有影响。渲染框架会按照标记的整数数值按顺序渲染元素。由于这里使用了渲染框架的内容逻辑,所以此处不赘述。
S501子流程结束。
更进一步地,描述主方案中更加复杂的S401-S407子流程。上述流程有三大类处理方法,第一类先描述,在不需要进行撤消恢复的应用程序中这将节省一部分的内存占用;第二类后描述,用于解决需要撤消恢复的应用中用户操作的撤消和恢复。而第三类是对第二类的改进,用于使第二类方法同时在内存中和外存中生效。
基于主方案中的S401子流程,如图9(a)-(b),试图将元素2置于顶层。那么,会找到元素2所指向的层级层B;随后去画布中的层级列表中寻找层B的层指针是哪一个。找到是2号层指针,于是,将其移动到列表的最末尾。由于列表中不存在空缺,所以所有的层指针都向前移动填满整张列表。当然,如果并不是采用这种动态扩展的列表的话,也可以使用链表数据结构,可以节省这样的移动消耗。只要是顺序表即可,本方案不做限定。
如图9(c),如果发现指定的此元素已经在顶层或画布中仅有此元素,则不进行处理。如果画布中没有元素,则此操作不存在。如果指定置顶的元素有多个,则取出多个层指针,将其按照原先的顺序置于列表的末尾。
需要说明的是,由于列表中不存在空缺,所以所有的层指针同样都向前移动填满整张列表。如果多个元素中存在已经在顶层的元素,则有两种不同的处理方案。如图9(d)所示,为将顶层元素的层级同样放入到列表末尾,如图9(e)所示,顶层元素的层指针不动,而是将非顶层元素移至顶层元素的前面。此外,如果有多个元素已经在顶层,如图9(f)所示,则一样可以采用之前的9(d)方案和9(e)方案决定是否移动顶层的层指针。
基于主方案中的S402子流程,S402子流程相比于S401子流程的区别在于层级调整的方向是相反的。
如图9(g)所示,对于已经在底层的情况和多元素置底的情况与S401刚好相反,在此不再赘述。
基于主方案中的S403子流程,如图9(h)-g(j)所示,我们试图将元素2上移一层。那么,我们会找到元素2所指向的层级层B;随后去画布中的层级列表中寻找层B的层指针是哪一个。现在找到是2号层指针,于是将其移动到3号层指针的后面。层指针在列表中的移动只有2和3有改变,其他不需要移动。如果发现指定的此元素已经在顶层或画布中仅有此元素,则不进行处理。如果画布中没有元素,则此操作不存在。如果指定置顶的元素有多个,则将其分连续和不连续的两个部分进行处理。对于连续的部分,将其层指针一起向后一个不处理层级的层指针后移动;对于不连续的部分,则单独移动此元素对应的层指针到后一个。
基于主方案中的S404子流程,S404子流程相比于S403子流程的区别在于层级调整的方向是相反的,在此不再赘述。此外,基于主方案中的S405子流程,如图9(k)所示,希望将元素2置于元素3的上方。这时同样按照S403的流程进行。只是找到目标层的方式不是按照当前数值加1,而是根据元素去列表中查找。其余部分与S403是相似的,在此不再赘述。
基于主方案中的S406子流程,S406子流程相比于S405子流程的区别在于层级调整的方向是相反的,在此不再赘述。此外,基于主方案中的S407子流程,如图9(l)所示,当试图移动到任意层级,例如移动到时,找到目标层级对应的层指针。如果原指针在目标指针之前,则将此之间的所有层指针前移,否则后移。这样,指定元素层指针将在列表中排在目标层级数值的位置上。
更进一步地,在第二类处理方法中,画布列表可以不像之前那样储存层指针,也可以储存,且影响并不大。相比于第一类处理方法,画布中的层级列表将不再移动和删除任何层。元素所有的层级操作都将生成新的层。
对于需要进行撤消恢复的应用程序来说,这样的结构将非常有利于记录元素的层级变化,以便在需要的时候可以恢复之前的操作。当元素的层级变化将改变自己的层指针时,就可以通过记录改变前后的层指针,以便将来撤消时,使用改变前的层指针,恢复时,使用改变后的层指针。为了统一描述,在第二类方法中,我们将层直接放入列表,以简化流程图。具体的变化过程如图9(m)所示。当希望元素置于顶层时,将在画布中层级列表的顶层生成一个新的层,然后将元素的层指针指向新层。在此过程中,记录元素前后的层指针,就可以在将来需要的时候进行撤消操作和恢复操作。
使用此方法后,画布中的层级列表将会经常出现冗余信息,但其实并不冗余,因为这些层级会在撤消后继续发挥作用。S401-S404,S407中的所有子流程都可以改成这种方式,但S405-S406不行。这里需要另行说明。
在本方案的一开始,描述了层的概念,有绝对层,简称层和相对层即没有简称。此前用的都是绝对层的概念,第二类处理方法的S405和S406将用到相对层的概念。如图9(n)所示,当试图将指定元素移到另一个元素上方时,将为此元素生成一个新的相对层,将此元素的相对层记为“相对元素3向上1层”。随后,将此相对层插入画布中的层级列表。在插入时,将检查相对层所相对的元素,查找到元素3对应的层为C,那么在C的上一层生成一个与相对层E对应的绝对层E,然后将元素2的层指针指向层E。在此操作中,记录元素之前的层B,之后的层绝对层E,以便在将来进行撤消恢复。
此过程中引入相对层的概念是为了准确描述子流程发起方的意图,否则子流程的发起方需要关注如何从画布层级列表中得知层级,即指针的插入方式。如果直接采用绝对层,将需要在流程发起方考虑插入方式。移到另一个元素下方的策略与上方相反,在此不再赘述。
更进一步地,第三类处理方法,层指针的概念在内存中更容易生效。但如果需要将层级的操作过程或某个元素的层级状态存在外部存储,例如硬盘中将失效。第三类处理方法中,将为层的存储结构进行细化,以解决外部存储问题。
为了确保不断新生成的层在外部存储中也不会重复,我们可以考虑使用GUID生成算法生成一段字符串,将其记录在“绝对层”中。于是,在此前所有流程的层级查找中,查找的将不再是层实体,而是查找此字符串。
结合本专利方案的整个主方案、子流程和各类处理方法,我们将得到一个完整的,不止保留此前专利交底书方案中所有优势的方案,实现其所有功能,即改变层级、运行时储存、永久储存、撤消恢复的同时,还解决了其浮点数精度问题。
本公开涉及的基于排版工具中元素层级的管理方法,使用层级列表来储存,而不是浮点数,层级列表可以永不清理不用的层级,以便实现撤消和恢复功能,且层级使用GUID表示,以便永久存储。使用此技术后,不会再存在浮点数精度问题而导致的极端情况下的层级比较失效的问题。
本领域的技术人员可以清楚地了解到本公开实施例的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是FPGA(Field-Programmable Gate Array,现场可编程门阵列)、IC(Integrated Circuit,集成电路)等。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述用于处理触摸数据的方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适合于存储指令和/或数据的任何类型的媒介或设备。
本公开实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现用于处理触摸数据的方法的步骤。在本公开实施例中,处理器为计算机系统的控制中心,可以是实体机的处理器,也可以是虚拟机的处理器。
以上介绍仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (18)
1.一种基于排版工具中元素层级的管理装置,其特征在于,包括:
元素修改模块,用于在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据所述层级变更操作修改所述至少一个元素对应的层级列表中的信息;
第一标记模块,用于如果监测到所述画布中至少一个元素对应的所述层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;
查找模块,用于当确定所述画布当前处于空闲状态且检测到所述设定标记的值为第一标记值时,根据所述画布中各元素当前的所述层级列表中的信息确认各元素的显示属性值;
元素层级渲染模块,用于根据各元素的所述显示属性值,刷新所述画布中各元素的层级渲染。
2.根据权利要求1所述的装置,其特征在于,所述层级变更操作包括:将元素置于底层、将元素置于顶层、将元素上移一层、将元素下移一层、将元素移置于某元素上方、将元素移置于某元素下方以及将元素移置于任意层级。
3.根据权利要求1或2所述的装置,其特征在于,所述元素修改模块包括:
确定单元,用于确定所述至少一个元素对应的层级更新操作;
第一元素修改单元,用于如果所述层级更新操作为将所述至少一个元素置于底层或将所述至少一个元素下移一层,则确定所述画布中当前的待置于底层的所述至少一个元素对应的所述层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向进行移动;
第二元素修改单元,用于如果所述层级更新操作为将所述至少一个元素置于顶层或将所述至少一个元素上移一层,则确定所述画布中当前的待置于顶层的所述至少一个元素对应的所述层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的正向进行移动;
第三元素修改单元,用于如果所述层级更新操作为将所述至少一个元素移置于某元素上方或将所述至少一个元素移置于某元素下方,则根据所述画布中当前的待移置于某元素上方或待移置于某元素下方的所述至少一个元素对应的所述层级列表中的层指针信息创建一个相对层,将所述相对层相对于所述画布渲染显示方向正向进行移动或者反向进行移动;
第四元素修改单元,用于如果所述层级更新操作为将所述至少一个元素移置于任意层级,则确定所述画布中所述待移置于所述任意层级的所述至少一个元素对应的所述层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向或者正向进行移动。
4.根据权利要求3所述的装置,其特征在于,还包括:
生成模块,用于当所述层指针被进行外部存储时,通过GUID生成算法生成字符串以作为临时的所述层指针作用于所述至少一个元素与所述层级列表的指向关系。
5.根据权利要求1所述的装置,其特征在于,还包括:
设定模块,用于基于设定规则对所述画布中的元素进行修改,设定所述元素在所述画布中对应的所述层级列表中的信息。
6.根据权利要求5所述的装置,其特征在于,所述设定模块包括:
确定单元,用于确定待修改至所述画布中的所述元素当前的所述层级列表中的信息;
生成单元,用于如果所述元素当前的所述层级列表中的信息表述为将该层级属性值存储在层指针中,则生成一个新层级,并将所述新层级修改至所述层级列表中。
7.根据权利要求6所述的装置,其特征在于,所述确定单元,还用于在所述层级列表中查找待修改至所述画布中的所述元素当前的层级属性值。
8.根据权利要求1-7任一项所述的装置,其特征在于,还包括:第二标记模块,用于将所述设定标记位的值确定为第二标记值。
9.一种基于排版工具中元素层级的管理方法,其特征在于,包括以下步骤:
在监测到对排版工具画布中的至少一个元素进行层级变更操作时,根据所述层级变更操作修改所述至少一个元素对应的层级列表中的信息;
如果监测到所述画布中至少一个元素对应的所述层级列表中的信息被修改,则将设定标记位的值确定为第一标记值;
当确定所述画布当前处于空闲状态且检测到所述设定标记的值为第一标记值时,根据所述画布中各元素当前的所述层级列表中的信息确认各元素的显示属性值;
根据各元素的所述显示属性值,刷新所述画布中各元素的层级渲染。
10.根据权利要求9所述的方法,其特征在于,所述层级变更操作包括:将元素置于底层、将元素置于顶层、将元素上移一层、将元素下移一层、将元素移置于某元素上方、将元素移置于某元素下方以及将元素移置于任意层级。
11.根据权利要求9或10所述的方法,其特征在于,所述根据所述层级变更操作修改所述至少一个元素对应的层级列表中的信息,包括:
确定所述至少一个元素对应的层级更新操作;
如果所述层级更新操作为将所述至少一个元素置于底层或将所述至少一个元素下移一层,则确定所述画布中当前的待置于底层的所述至少一个元素对应的所述层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向进行移动;
如果所述层级更新操作为将所述至少一个元素置于顶层或将所述至少一个元素上移一层,则确定所述画布中当前的待置于顶层的所述至少一个元素对应的所述层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的正向进行移动;
如果所述层级更新操作为将所述至少一个元素移置于某元素上方或将所述至少一个元素移置于某元素下方,则根据所述画布中当前的待移置于某元素上方或待移置于某元素下方的所述至少一个元素对应的所述层级列表中的层指针信息创建一个相对层,将所述相对层相对于所述画布渲染显示方向正向进行移动或者反向进行移动;
如果所述层级更新操作为将所述至少一个元素移置于任意层级,则确定所述画布中所述待移置于所述任意层级的所述至少一个元素对应的所述层级列表中的层指针信息,将该层指针相对于画布渲染显示方向的反向或者正向进行移动。
12.根据权利要求11所述的方法,其特征在于,还包括:
当所述层指针被进行外部存储时,通过GUID生成算法生成字符串以作为临时的所述层指针作用于所述至少一个元素与所述层级列表的指向关系。
13.根据权利要求9所述的方法,其特征在于,还包括:
基于设定规则对所述画布中的元素进行修改,设定所述元素在所述画布中对应的所述层级列表中的信息。
14.根据权利要求13所述的方法,其特征在于,所述基于设定规则对所述画布中的元素进行修改,设定所述元素在所述画布中对应的所述层级列表中的信息,包括:
确定待修改至所述画布中的所述元素当前的所述层级列表中的信息;
如果所述元素当前的所述层级列表中的信息表述为将该层级属性值存储在层指针中,则生成一个新层级,并将所述新层级修改至所述层级列表中。
15.根据权利要求14所述的方法,其特征在于,所述确定待修改至所述画布中的所述元素当前的所述层级列表中的信息,包括:
在所述层级列表中查找待修改至所述画布中的所述元素当前的层级属性值。
16.根据权利要求9-15任一项所述的方法,其特征在于,所述根据各元素的所述显示属性值,刷新所述画布中各元素的层级渲染之后,还包括:
将所述设定标记位的值确定为第二标记值。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现所述权利要求9-16中任一项所述方法的步骤。
18.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现所述权利要求9-16中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810270040.6A CN108536441A (zh) | 2018-03-29 | 2018-03-29 | 基于排版工具中元素层级的管理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810270040.6A CN108536441A (zh) | 2018-03-29 | 2018-03-29 | 基于排版工具中元素层级的管理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108536441A true CN108536441A (zh) | 2018-09-14 |
Family
ID=63482361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810270040.6A Pending CN108536441A (zh) | 2018-03-29 | 2018-03-29 | 基于排版工具中元素层级的管理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108536441A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024046268A1 (zh) * | 2022-08-31 | 2024-03-07 | 北京字跳网络技术有限公司 | 渲染层级顺序调整方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473068A (zh) * | 2013-09-24 | 2013-12-25 | 北京天源科创风电技术有限责任公司 | 基于svg的图形实时监控界面定制系统及其定制方法 |
US20140019892A1 (en) * | 2012-07-16 | 2014-01-16 | Sap Ag | Systems and Methods for Generating Application User Interface with Practically Boundless Canvas and Zoom Capabilities |
CN106651996A (zh) * | 2016-12-20 | 2017-05-10 | 广州视源电子科技股份有限公司 | 文稿编辑工具中元素层级的管理方法及装置 |
-
2018
- 2018-03-29 CN CN201810270040.6A patent/CN108536441A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140019892A1 (en) * | 2012-07-16 | 2014-01-16 | Sap Ag | Systems and Methods for Generating Application User Interface with Practically Boundless Canvas and Zoom Capabilities |
CN103473068A (zh) * | 2013-09-24 | 2013-12-25 | 北京天源科创风电技术有限责任公司 | 基于svg的图形实时监控界面定制系统及其定制方法 |
CN106651996A (zh) * | 2016-12-20 | 2017-05-10 | 广州视源电子科技股份有限公司 | 文稿编辑工具中元素层级的管理方法及装置 |
Non-Patent Citations (1)
Title |
---|
DUKESWORD: "唯一编号算法:生成GUID", 《HTTPS://BLOG.CSDN.NET/DUKESWORD/ARTICLE/DETAILS/7945157》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024046268A1 (zh) * | 2022-08-31 | 2024-03-07 | 北京字跳网络技术有限公司 | 渲染层级顺序调整方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9292347B2 (en) | Status tool to expose metadata read and write queues | |
US9495283B2 (en) | System and method for server migration synchronization | |
CN102736945B (zh) | 一种运行应用程序的多个实例的方法和系统 | |
US8302006B2 (en) | Interactive tooltip to display and navigate to different resources of a data point | |
CN107729094A (zh) | 一种用户界面渲染的方法及装置 | |
EP1970803B1 (en) | Interactive tool tip to display and navigate to different resources of a data point | |
Cerf | Multiprocessors, semaphores, and a graph model of computation | |
KR20060067817A (ko) | 데이터를 다이어그램의 형태들에 쌍방향으로 링크시키는시스템 및 방법 | |
US8719765B2 (en) | Dual-pattern coloring technique for mask design | |
CN109542719A (zh) | 线程状态监控方法、装置、计算机设备和存储介质 | |
CN108536441A (zh) | 基于排版工具中元素层级的管理方法和装置 | |
CN106651996A (zh) | 文稿编辑工具中元素层级的管理方法及装置 | |
US9105222B2 (en) | Display control apparatus and display control method | |
CN109446082B (zh) | 多线程测试流程项目配置系统 | |
US10783061B2 (en) | Reducing likelihood of cycles in user interface testing | |
CN110532225A (zh) | 存储引擎切换方法、装置、电子设备和介质 | |
JP2015036930A (ja) | 表示装置、表示方法、及び、プログラム | |
US20110310108A1 (en) | Information processing system, information processing method, and information processing apparatus | |
JP2004118553A (ja) | ワークフロー実行方法とシステム、およびそのためのプログラム | |
US20220365665A1 (en) | Map calendar graphical user interface with content-variable view levels | |
CN109670011A (zh) | 一种多图源地图服务引擎 | |
KR20130093334A (ko) | 유저인터페이스를 이용한 컴퓨터프로그램의 워크플로 자동구현방법 및 장치 | |
CN107422990A (zh) | 一种动态迁移方法及装置 | |
CN105159766B (zh) | 数据的同步访问方法和同步访问装置 | |
Sedlacek et al. | Software visualization application for threads synchronization handling in operating systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180914 |
|
RJ01 | Rejection of invention patent application after publication |