Visual Reordering Of Partial Vector Objects

In implementations of systems for visual reordering of partial vector objects, a computing device implements an order system to receive input data describing a region specified relative to a group of vector objects that includes a portion of a first vector object and a portion of second vector object. A visual order as between the portion of the first vector object and the portion of the second vector object within the region is determined. The order system computes a modified visual order as between the portion of the first vector object and the portion of the second vector object within the region based on the visual order. The order system generates the group of vector objects for display in a user interface using a render surface and a sentinel value to render pixels within the region in the modified visual order.

BACKGROUND

Localized reordering of portions of vector objects creates an appearance of depth between the portions of the vector objects in which some portions of a first vector object appear above a second vector object while other portions of the first vector object appear below the second vector object. In order to generate such an “intertwined” appearance between the first and second vector objects using conventional systems, a user manipulates an input device (e.g., a mouse, a stylus, or a touchscreen) relative to a user interface of an application for editing digital content displaying the vector objects. The user then manually adds and/or removes portions of the first and second vector objects via manipulation of the input device to create the appearance of depth. This process is tedious and prone to user error and also requires destruction of original geometries of the first and second vector objects which is a shortcoming of the conventional systems.

SUMMARY

Techniques and systems for visual reordering of partial vector objects are described. In an example, a computing device implements an order system to receive input data describing a region specified relative to a group of vector objects that includes a portion of a first vector object and a portion of a second vector object. The order system determines a visual order of as between the portion of the first vector object and the portion of the second vector object within the region.

A modified visual order as between the portion of the first vector object and the portion of the second vector object within the region is computed based on the visual order. For example, the portion of the first vector object appears above the portion of the second vector object in the visual order and the portion of the first vector object appears below the portion of the second vector object in the modified visual order. The order system generates the group of vector objects for display in a user interface using a render surface and a sentinel value to render pixels of the portion of the first vector object and the portion of the second vector object in the modified visual order.

DETAILED DESCRIPTION

Overview

In order to generate an appearance of depth between a first vector object and a second vector object using conventional systems, a user manipulates an input device (e.g., a stylus, a touchscreen, a mouse, a keyboard, etc.) relative to a user interface of an application for editing digital content displaying the first and second vector objects. The user then manually adds and/or removes portions of the first and second vector objects via manipulation of the input device to create the appearance of depth in which a portion of the first vector object appears before or in front of the second vector object and another portion of the first vector object appears after or behind the second vector object. Creating the appearance of depth in this manner is tedious and prone to user error and also fails to preserve original geometries of the first and second vector objects which is a shortcoming of the conventional systems.

In order to overcome the limitations of conventional systems, techniques and systems for visual reordering of partial vector objects are described. In one example, a computing device implements an order system to receive input data and interaction data. For example, the input data describes a group of vector objects, a particular vector object included in the group of vector objects, and a region that includes a portion of the particular vector object and a portion of an additional vector object included in the group of vector objects. A user interacts with an input device relative to a user interface of an application for editing digital content to generate the interaction data. In some examples, the user interacts with the input device to specify the group of vector objects, the particular vector object, and/or the region described by the input data.

The order system determines a visual order as between the portion of the particular vector object and the portion of the additional vector object within the region. In one example, the order system computes a modified visual order as between the portion of the particular vector object and the portion of the additional vector object within the region. For instance, the order system is capable of computing the modified visual order automatically and without additional user intervention based on the visual order in some scenarios. Examples of such scenarios include a scenario in which there is only one possible modified visual order as between portions of vector objects within the region, a scenario in which the particular vector object is a topmost or bottommost vector object within the region, and so forth. The order system is also capable of computing the modified visual order based on receiving the interaction data generated by the user as describing a visual reordering as between the portion of the particular vector object and the portion of the additional vector object within the region.

The order system generates the group of vector objects having the modified visual order within the region for display in the user interface. In an example, the order system generates the group of vector objects non-destructively with respect to an original geometry of the particular vector object and with respect to an original geometry of the additional vector object which is not possible using conventional systems. Additionally, the order system is capable of receiving the interaction data as describing additional regions specified by the user via the input device to include in the group of vector objects and/or deletion of existing regions from the group of vector objects such as the region.

Consider examples in which the user interacts with the input device relative to the user interface of the application for editing digital content to specify an additional region to include in the group of vector objects. In a first example, the user generates the interaction data as describing an additional region that fully overlaps or contains the region and only includes the portion of the particular vector object and the portion of the additional vector object in the modified visual order. In this first example, the order system receives and processes the interaction data to combine the additional region with the region and changes the modified visual order of the portion of the particular vector object and the portion of the additional vector object within a combined region (e.g., back to the visual order or to a different modified visual order).

In a second example, the user generates the interaction data as describing an additional region that partially overlaps the region such that a first portion of the additional region includes the portion of the particular vector object and the portion of the additional vector object and a second portion of the additional region includes a portion of a third vector object in addition to the portion of the particular vector object and the portion of the additional vector object. In this second example, the order system receives and processes the interaction data to split the additional region into a first region corresponding to the first portion of the additional region and second region corresponding to the second portion of the additional region. For example, the order system generates the first and second regions such that they do not overlap and include portions of vector objects ordered in a single visual order.

Returning to the example in which the order system generates the group of vector objects having the modified visual order within the region, the order system also leverages an offscreen render surface for rendering the group of vector objects having the modified visual order within the region. To do so in one example, the order system identifies a z-order of nodes included in an input render tree that correspond to vector objects included in the group of vector objects which is described by the input data. The order system generates the offscreen render surface and sets the offscreen render surface as a current framebuffer.

For example, the order system rasterizes the region into the offscreen render surface and marks pixels within the region with a sentinel value. Continuing this example, the order system sets an original framebuffer as the current framebuffer and draws the group of vector objects according to the z-order of the input render tree by identifying pixels that are not marked with the sentinel value. The order system then draws the portion of the particular vector object and the portion of the additional vector object within the region according to the modified visual order by identifying pixels that are marked with the sentinel value. Finally, the order system clears the offscreen render surface, e.g., in order to render another group of vector objects using both the z-order of the input render tree and visual orders of portions of vector objects within regions.

In addition to providing the functionality capable of visual reordering of partial vector objects in a free-form manner via the user's interaction with the input device, the described systems also efficiently represent portions of vector objects within regions as well as portions of the vector objects that are excluded from the regions. The described systems are capable of processing cyclic dependencies among vector objects within groups of vector objects and are also capable of use in related applications such as hit testing. Additionally, the described systems modify visual orders of portions of vector objects in a manner that is non-destructive to geometries of the vector objects which is not possible using conventional systems.

In the following discussion, an example environment is first described that employs examples of techniques described herein. Example procedures are also described which are performable in the example environment and other environments. Consequently, performance of the example procedures is not limited to the example environment and the example environment is not limited to performance of the example procedures.

Example Environment

FIG.1is an illustration of an environment100in an example implementation that is operable to employ digital systems and techniques as described herein. The illustrated environment100includes a computing device102connected to a network104. The computing device102is configurable as a desktop computer, a laptop computer, a mobile device (e.g., assuming a handheld configuration such as a tablet or mobile phone), and so forth. Thus, the computing device102is capable of ranging from a full resource device with substantial memory and processor resources (e.g., personal computers, game consoles) to a low-resource device with limited memory and/or processing resources (e.g., mobile devices). In some examples, the computing device102is representative of a plurality of different devices such as multiple servers utilized to perform operations “over the cloud.”

The illustrated environment100also includes a display device106that is communicatively coupled to the computing device102via a wired or a wireless connection. A variety of device configurations are usable to implement the computing device102and/or the display device106. For example, the display device106is an ultra-high-definition display device having a display resolution of 4K, 5K, 8K, etc. The computing device102includes a storage device108and an order module110. The storage device108is illustrated to include digital content112such as digital images, digital artwork, digital videos, etc.

The computing device102and/or the order module110have access to a graphics processing unit (GPU)114which is representative of multiple GPUs114in some examples. In one example, the computing device102includes the GPU114in addition to a central processing unit (CPU). In another example, the GPU114is available to the computing device102and the order module110via the network104. For example, the computing device102and the order module110leverage the GPU114(e.g., GPU114computing kernels) for processing and rendering digital content112and/or for processing data in series or parallel with the CPU such as in a CPU-GPU114framework. In an example, this includes leveraging multiple CPUs and/or multiple GPUs114.

As shown, the order module110is illustrated as having, receiving, and/or transmitting input data116describing a group of vector objects118. For instance, the group of vector objects118includes a first vector object120, a particular vector object122, and a second vector object124. The first vector object120is a glyph depicting an “H;” the particular vector object122is a glyph depicting a “D;” and the second vector object124is a glyph depicting a “K.”

The input data116also describes a first region126having a square geometry that includes a portion of the first vector object120and a first portion of the particular vector object122as well as a second region128having a circular geometry that includes a portion of the second vector object124and a second portion of the particular vector object122. As shown, the portion of the first vector object120is ordered before or above the first portion of the particular vector object122(or the first portion of the particular vector object122is ordered after or below the portion of the first vector object120) in a visual order of the first region126. The portion of the second vector object124is ordered after or below the second portion of the particular vector object122(or the second portion of the particular vector object122is ordered before or above the portion of the second vector object124) in a visual order of the second region128.

As illustrated in the environment100, the first vector object120is ordered before or above the particular vector object122outside of the first region126in the group of vector objects118. Similarly, the particular vector object122is ordered before or above the second vector object122outside of the second region128in the group of vector objects118. For example, the first region126and the second region128are mutually exclusive and the first and second regions126,128do not overlap. In this example, a visual order of portions of vector objects included in the first region126is consistent within the first region126. Similarity, a visual order of portions of vector objects included in the second region128is consistent within the second region128. For instance, the order module110leverages the properties of mutual exclusivity of regions or zones and consistency of a visual order of partial vector objects included in the regions or zones to compute modified visual orders of the partial vector objects included in the regions or zones automatically and without user intervention in some scenarios.

The order module110is illustrated as having, receiving, and/or transmitting interaction data130. For instance, a user interacts with an input device (e.g., a mouse, a stylus, a touchscreen, a keyboard, etc.) relative to a user interface such as a user interface132of the display device106to generate the interaction data130. In an example, the user interacts with the input device relative to a user interface displaying the group of vector objects118to specify the first region126by drawing the first region126relative to the particular vector object122to include the portion of the first vector object120and the first portion of the particular vector object122. In this example, the user also interacts with the input device relative to the user interface displaying the group of vector objects118to specify the second region128by drawing the second region128relative to the particular vector object122to include the portion of the second vector object124and the second portion of the particular vector object122.

For example, the order module110receives and processes the input data116and the interaction data130to modify a visual order of the portion of the first vector object120and the first portion of the particular vector object122within the first region126and to modify a visual order of the second portion of the particular vector object122and the portion of the second vector object124within the second region128. To do so in one example, the order module110determines the visual order of portions of vector objects included in the group of vector objects118within the first region126. Accordingly, the order module110determines that the portion of the first vector object120is ordered before or above the first portion of the particular vector object122in the visual order of the first region126.

In some examples, the user interacts with the input device relative to the user interface displaying the group of vector objects118to generate the interaction data130as describing an operation for modifying the visual order of the first region126. In other examples, the order module110processes the input data116to determine that the first vector object120is a topmost vector object within the first region126and that the particular vector object122is a bottommost vector object within the first region126. In these other examples, it is not necessary for the user to specify the operation for modifying the visual order of the first region126because first vector object120is the topmost vector object within the first region126, the particular vector object122is the bottom most vector object within the first region126, and no other portions of vector objects included in the group of vector objects118are disposed within the first region126.

Accordingly, the order module110determines that the first portion of the particular vector object122is ordered before or above the portion of the first vector object120in a modified visual order for the first region126. In a similar example, the order module110processes the input data116to determine that the particular vector object122is a topmost vector object within the second region128and that the second vector object124is a bottommost vector object within the second region128. For instance, the order module110determines that no other portions of vector objects included in the group of vector objects118are disposed within the second region128. Based on this, the order module110determines that the portion of the second vector object124is ordered before or above the second portion of the particular vector object122in a modified visual order for the second region128. The order module110generates a modified group of vector objects134having the modified visual order within the first region126as a modified first region136and having the modified visual order within the second region128as a modified second region138which is displayed in the user interface132of the display device106.

In order to render the modified group of vector objects134for display in the user interface132, the order module110draws portions of the first vector object120and the particular vector object122that are excluded from the first region126in a z-order of nodes included in an input render tree that correspond to the first vector object120and the particular vector object122. However, the order module110also draws the portion of the first vector object120and the first portion of the particular vector object122in the modified visual order for the first region126as the modified first region136. Similarly, the order module110draws portions of the second vector object124and the particular vector object122that are excluded from the second region128in a z-order of nodes included in the input render tree that correspond to the second vector object124and the particular vector object122. The order module110also draws the portion of the second vector object124and the second portion of the particular vector object122in the modified visual order for the second region128as the modified second region138.

To do so in one example, the order module110generates an offscreen render surface and sets it as a current framebuffer. In this example, the order module110rasterizes the first region126and the second region128into the offscreen render surface and marks pixels in the first and second regions126,128with a sentinel value such as 0xFF. The order module110sets an original framebuffer as the current framebuffer, and then draws the group of vector objects118(e.g., but not the first and second regions126,128) based on the z-order of the nodes included in the input render tree. For instance, the order module110identifies the group of vector objects118based on pixels that are not marked with the sentinel value. In this manner, the order module110generates and renders portions of the first vector object120, the particular vector object122, and the second vector object124in the modified group of vector objects134that are excluded from the modified first region136and the modified second region138.

Next, the order module110draws the first region126in the modified visual order for the first region126based on the pixels that are marked with the sentinel value in the first region126. For instance, the order module110draws the modified first region136based on the pixels that are marked with the sentinel value in the first region126. Similarly, the order module110draws the second region128in the modified visual order for the second region128based on the pixels that are marked with the sentinel value in the second region128. Accordingly, the order module110draws the modified second region138based on the pixels that are marked with the sentinel value in the second region128. The order module110then clears the offscreen render surface.

As shown in the modified group of vector objects134, the first portion of the particular vector object122is disposed before or above the portion of the first vector object120in the modified first region136. The portion of the second vector object124is disposed before or above the second portion of the particular vector object122in the modified second region138. For example, the order module110generates and displays the modified group of vector objects134in a manner which preserves a geometry of the first vector object120, the particular vector object122, and the second vector object124.

The order module110is also capable of generating the modified group of vector objects134in scenarios in which the first and second vector objects120,124include complex visual appearances such as blends and transparencies. This is not possible in conventional systems that are limited to local layering and other techniques which are not capable of preserving the geometry of the first vector object120, the particular vector object122, and the second vector object124. Conventional systems are also not capable of facilitating visual reordering of partial vector objects in a free-form manner in which portions of vector objects are reordered automatically. For instance, when the order module110receives the interaction data130describing a user specified region without additional specifications for reordering portions of vector objects within the user specified region, the order module110moves a topmost portion of a vector object down within the user specified region and the order module110moves an intermediate portion of a vector object up within the user specified region automatically. For example, the order module110is capable of receiving the interaction data130as describing a deletion of the first region126(or the modified first region136) or the second region128(or the modified second region138). In some examples, the order module110receives the interaction data130as describing an addition of a third region to the group of vector objects118which is described in detail with respect toFIG.4below.

FIG.2depicts a system200in an example implementation showing operation of an order module110. The order module110is illustrated to include a group module202, a visual order module204, and a display module206. For example, the group module202receives and processes the input data116and/or the interaction data130to generate group data208. In some examples, the input data116describes a group of vector objects displayed in a user interface of an application for editing digital content. In these examples, a user interacts with an input device (e.g., a stylus, a mouse, a touchscreen, a microphone, a keyboard, etc.) relative to the user interface of the application for editing digital content to generate the interaction data130. For instance, the user interacts with the input device relative to the user interface to generate the interaction data130as describing a selection of the group of vector objects described by the input data116as an intertwine group for visual reordering of partial vector objects, a selection of a subset of the group of vector objects described by the input data116as the intertwine group for visual reordering of partial vector objects, specification of a vector object included in the intertwine group as a particular or key vector object, specification of a region that includes a portion of the particular or key vector object and a portion of an additional vector object included in the intertwine group, an operation to modify a visual order of the portion of the particular or key vector object and the portion of the additional vector object within the region, and so forth.

FIG.3illustrates a representation300of regions specified relative to a particular vector object included in a group of vector objects and visual reordering of partial vector objects included in the regions. As shown, the representation300includes a group of vector objects302and a modified group of vector objects304. In one example, the group module202receives the input data116as describing the group of vector objects302. In this example, the group of vector objects302is displayed in the user interface (e.g., the user interface132) of the application for editing digital content. The user interacts with the input device relative to the user interface to generate the interaction data130as describing a specification of a particular or key vector object306that is included in the group of vector objects302.

As illustrated inFIG.3, the particular or key vector object306is a glyph depicting a “D.” For instance, the group of vector objects302also includes a first vector object308which is a glyph depicting an “H;” a second vector object310which is a glyph depicting a “K;” and a third vector object312which is a glyph depicting an “O.” In one example, the group module202receives and processes the input data116and the interaction data130to generate the group data208as describing the particular or key vector object306as well as the first, second, and third vector objects308,310,312.

In this example, the visual order module204receives and processes the group data208and/or the interaction data130to generate visual order data210. For example, the visual order module204receives and processes the interaction data130as describing a first region314, a second region316, and a third region318, and the visual order module204generates the visual order data210as describing the first, second, and third regions314,316,318. Continuing the previous example, the display module206receives and processes the visual order data210to render the modified group of vector objects304in the user interface132.

Consider another example in which the visual order module204receives the group data208as describing the group of vector objects302and the visual order module204receives the interaction data130describing the first region314. In this example, the first region314includes a portion of the first vector object308and a first portion of the particular or key vector object306. As shown, the portion of the first vector object308is ordered before or above the first portion of the particular or key vector object306in a visual order of the first region314. For instance, the visual order module204denotes the visual order of the first region314as H, D where H represents the portion of the first vector object308and D represents the first portion of the particular or key vector object306. In an example, the visual order module204is capable of representing visual orders as a total order which is representable as:

where: Vtosetrepresents a list of all art object identifiers (e.g., by index or global unique identifier); and N represents a total number of the art objects.

For example, the visual order module204is also capable of representing visual orders as a partial order which is representable as:

where: Vposetrepresents a list of all art object identifiers in a region such as the first region314; and k≤; N.

Continuing the previous example, the visual order module204receives the interaction data130describing the first region314, the second region316, and the third region318. The second region316includes a second portion of the particular or key vector object306and a first portion of the second vector object310. As illustrated in the representation300, the second portion of the particular or key vector object306is ordered before or above the first portion of the second vector object310in a visual order of the second region316. The visual order module204denotes the visual order of the second region316as D, K where D represents the second portion of the particular or key vector object306and K represents the first portion of the second vector object310.

The third region318includes a third portion of the particular or key vector object306, a portion of the third vector object312, and a second portion of the second vector object310. For instance, the third portion of the particular or key vector object306is ordered before or above the portion of the third vector object312and the second portion of the second vector object310; the portion of the third vector object312is ordered after or below the third portion of the particular or key vector object306and before or above the second portion of the second vector object310; and the second portion of the second vector object310is ordered after or below the third portion of the particular or key vector object306and the portion of the third vector object312in a visual order of the third region318. In one example, the visual order module204denotes the visual order of the third region318as D,0, K where D represents the third portion of the particular or key vector object306,0represents the portion of the third vector object312, and K represents the second portion of the second vector object310.

Consider an example in which the user interacts with the input device relative to the user interface of the application for editing digital content to generate the interaction data130as describing an operation for changing a visual order of portions of vector objects included in the group of vector objects302that are within the first region314, the second region316, and/or the third region318. In this example, the user interacts with the input device to specify the operation relative to the particular or key vector object306. However, in other examples, the operation is specified relative to another vector object included in the group of vector objects302such as the first vector object308, the second vector object310, the third vector object312, etc.

For example, the interaction data130describes the operation with respect to an operator ⊕ as being “send back,” “send front,” “send backward,” or “send forward.” The operator ⊕ is unary, binary, or ternary which is representable as:Ternary [V⊕(Akey, Ai, D)]Binary [V⊕(Akey, D)]Unary [V⊕Akey]
where: Akeyrepresents the particular or key vector object306; and a visual order V of Akeyis changed in a direction guided by parameter D with reference to vector object Aiwhich is the first vector object308, the second vector object310, or the third vector object312.

In an example, a ternary operation ⊕ is a most explicit manner of changing a visual order V of portions of vector objects within a region Z. As shown in the example above, is not necessary for the user to specify a reference vector object Aifor a binary operation ⊕ as the reference vector object is determined automatically based on a current visual order Voldwithin the region Z. Similarly, it is not necessary for the user to specify a reference vector object Aior a direction parameter D for a unary operation ⊕. This is because Akeyis a topmost vector object in V, and D is automatically determined to be “send backward” or Akeyis a bottommost vector object in V, and D is automatically determined to be “send forward” for a unary operation ⊕.

For a visual order V within the first region314, the second region316, and/or the third region318, the visual order module204is capable of determining a modified visual order Vnewin a manner which is representable as:procedure GetNewVisualOrder(V, Akey, Ai, D)Vnew←Visrc←Find index of Akeyin Vidst←Find index of Aiin Vif isrcand idstare defined thenif SIGN(isrc−idst, D)==0 thenmove Akeyat idstin Vnewreturn Vnew

For example, the visual order module204determines a new visual order Vnewfor a modified first region320based on the visual order V of the first region314; the visual order module204determines a new visual order Vnewfor a modified second region322based on the visual order V of the second region316; and the visual order module204determines a new visual order Vnewfor a modified third region324based on the visual order V of the third region318. For the first region314having the visual order V denoted H, D, the visual order module204performs a unary operation ⊕ because the particular or key vector object306is a bottommost vector object in the first region314. The visual order module204orders the first portion of the particular or key vector object306before or above the portion of the first vector object308in the modified first region320. In one example, the visual order module204denotes the new visual order Vnewfor the modified first region320as D, H.

For the second region316having the visual order V denoted D, K, the visual order module204performs a unary operation ⊕ because the particular or key vector object306is a topmost vector object in the second region316. The visual order module204orders the second portion of the particular or key vector object306after or below the first portion of the second vector object310in the modified second region322. For instance, the visual order module204denotes the new visual order Vnewfor the modified second region322as K, D.

For the third region318having the visual order V denoted D, O, K, the visual order module204performs a ternary operation ⊕ that includes a direction D specified by the user interacting with the input device and described by the interaction data130. In an example, the visual order module204orders the third portion of the particular or key vector object306after or below the portion of the third vector object312and also orders the third portion of the particular or key vector object306before or above the second portion of the second vector object310. In this example, the visual order module204denotes the new visual order Vnewfor the modified third region324as O, D, K.

As shown, the representation400includes a group of vector objects402and a modified group of vector objects404. For example, the group of vector objects402includes the particular or key vector object306, the first vector object308, the second vector object312, and the third vector object312. The group of vector objects402also includes a first region406, a second region408, and a third region410. The first region406includes a first portion of the particular or key vector object306and a portion of the first vector object308. For example, the first portion of the particular or key vector object306is ordered before or above the portion of the first vector object308and the visual order module204denotes a visual order V of the first region406as D, H.

The second region408includes a first portion of the second vector object310and a second portion of the particular or key vector object306such that the first portion of the second vector object310is ordered before or above the second portion of the particular or key vector object306in the second region408. In one example, the visual order module204denotes a visual order V of the second region408as K, D. The third region410includes a third portion of the particular or key vector object306, a second portion of the second vector object310, and a first portion of the third vector object312. For instance, the first portion of the third vector object312is ordered before or above the third portion of the particular or key vector object306and the second portion of the second vector object310. The third portion of the particular or key vector object306is ordered after or below the first portion of the third vector object312and before or above the second portion of the second vector object310. For example, the visual order module204denotes a visual order V of the third region410as O, D, K.

In the representation400, the first region406, the second region408, and the third region410are mutually exclusive (e.g., do not overlap) and have unique or consistent visual orders Vs which is representable as:

where: region or zone (Z) is a closed Bezier based boundary (Ω) which contains a visual order (V) of portions of vector objects within the region or zone (Z).

Consider an example in which the user manipulates the input device relative to the user interface of the application for editing digital content to specify an additional region or zone412that fully contains or fully overlaps the first region406. In this example, the visual order module204receives and processes the interaction data130describing the additional region or zone412to determine a visual order V of the additional region or zone412based on the visual order V of the first region406which is D, H. For example, before determining the visual order V of the additional region or zone412, the visual order module204determines how to add the additional region or zone412to the group of vector objects402. In an example, this is representable as:procedure GetNewZones(Σ, (n, Akey, Ai, D))Σnew←Øfor each Ziin Σ doif Ωi∩Ω==Ø thenΩold←i−Ω, Ωcom←Ωi∩Ω compute intersection surfaceΩ←Ω−Ωicompute remaining input regionZold←(Ωold, Vi) compute modified older region without any change in visual orderZcom←(Ωcom, Vi⊕(Akey, Ai, D)) compute visual orderΣ←Σ−Ziremove Zifrom ΣΣnew←Σnew+Zcom+Zoldadd (Zcom, Zold) in Σnewmerge zones in Σnewmerge newer zones with older zonesbased on same visual order VΣnew←Σnew+Σreturn Σnew
where: Σ denotes a set of zones or regions Z in a group of vector objects designated as an intertwine group.

Continuing the previous example, the visual order module204determines that for adding any particular zone or region to a group of vector objects designated as an intertwine group, there is a default or implicit zone Z in the intertwine group defined by a bounding box of the intertwine group that has a visual order V defined in the user interface of the application for editing digital content (e.g., in a layers panel of the user interface). Accordingly, adding the particular zone to the intertwine group either overlaps one existing zone of the intertwine group such as the default or implicit zone Ω or the particular zone overlaps multiple existing zones of the intertwine group. Further, deleting an existing zone or region is a special case of adding the particular zone to the default or implicit zone Z.

In the representation400, the additional region or zone412overlaps a single existing region (the first region406). Accordingly, the visual order module204merges the additional region or zone412with the first region406such that the additional region or zone412has a same visual order V of the first region406which is D, H. For example, the visual order module204determines a new visual order Vnewfor a modified additional region or zone414included in the modified group of vector objects404based on the visual order V of the additional region or zone412. In this example, the visual order module204determines that the first portion of the first vector object308is ordered before or above the first portion of the particular or key vector object306in the new visual order Vnewfor the modified additional region or zone414. In an example, the visual order module204denotes the new visual order Vnewfor the modified additional region or zone414as H, D and generates the visual order data210as describing the new visual order Vnewfor the modified additional region or zone414.

FIGS.5A,5B, and5Cillustrate a representation of specifying an additional region relative to a particular vector object included in a group of vector objects that partially overlaps an existing region of an intertwine group.FIG.5Aillustrates a representation500of the additional zone or region that partially overlaps the existing zone or region of the intertwine group.FIG.5Billustrates a representation502of splitting the existing zone or region into multiple zones or regions based on the additional zone or region.FIG.5Cillustrates a representation504of new visual orders determined for the multiple zones or regions.

As shown in the representation500, the intertwine group of vector objects includes the first region406, the second region408, and the third region410. The user interacts with the input device relative to the user interface of the application for editing digital content to generate the interaction data130as describing an additional region506that partially overlaps the third region410. For example, the visual order module204receives and processes the interaction data130to add the additional region506to the intertwine group of vector objects.

With reference toFIG.5B, the visual order module204splits the third region410and the additional region506into a fourth region508, a fifth region510, and a sixth region512. For instance, the visual order module204denotes a visual order V of the fourth region508as D, O, K; a visual order V of the fifth region510as O, D, K; and a visual order V of the sixth region512as O, D, K. However, this causes the fifth region510and the sixth region512to have a same visual order V of O, D, K. Because of this, the visual order module204determines a modified fourth region514and a modified fifth region516by moving portions of the second vector object310denoted as K upward in the fourth region508and the fifth region510.

Accordingly, the visual order module204denotes a new visual order Vnewfor the modified fourth region514as K, D,0and the visual order module204denotes a new visual order Vnewfor the modified fifth region516as O, K, D. The modified fourth region514, the modified fifth region516, and the sixth region512have unique or consistent visual orders and are not overlapping. For example, the visual order module204generates the visual order data210as describing the modified fourth region514, the modified fifth region516, and the sixth region512.

The display module206receives and processes the visual order data210to generate and display the intertwine group in the representation504as having the modified fourth region514, the modified fifth region516, and the sixth region512in place of the third region410and the additional region506of the intertwine group in the representation500. To do so in one example, the display module206receives and processes the input data116to determine a z-order of an input render tree having nodes corresponding to the vector objects308-312. As shown inFIG.2, the display module206is illustrated as having access to the GPU114and the display module204leverages the GPU114, the z-order of the input render tree, and the visual order data210to render the intertwine group as having the modified fourth region514, the modified fifth region516, and the sixth region512.

FIG.6illustrates a representation600of rendering partial vector objects in a visual order. For example, the display module206receives and processes the input data116. At602, the display module206determines whether or not the input data116describes a group of vector objects specified as an intertwine group. If the display module206determines that the input data116does not describe an intertwine group, then the display module206renders vector objects described by the input data116using existing rendering methods at604. For example, at604, the display module206renders all portions of the group of vector objects according to the z-order of the input render tree.

At612, the display module206draws portions (e.g., pixels) of the intertwine group that are not marked with the sentinel value according to the z-order of the input render tree. For instance, the display module206renders portions of the particular or key vector object306that are not included in the first region406, the second region408, the modified fourth region514, the modified fifth region516, or the sixth region512at612. Similarly, the display module206renders portions of the first vector object308that are not included in the first region406; the display module206renders portions of the second vector object310that are not included in the second region408, the modified fourth region514, the modified fifth region516, or the sixth region512; and the display module206renders portions of the third vector object312that are not included in the modified fourth region514, the modified fifth region516, or the sixth region512at612.

At614, the display module206draws portions (e.g., pixels) of the intertwine group that are marked with the sentinel value according to the visual orders described by the visual order data210. For example, the display module206renders a portion of the particular or key vector object306and a portion of the first vector object308included in the first region406in the visual order denoted D, H. In this example, the display module206renders a portion of the particular or key vector object306and a portion of the second vector object310included in the second region410in the visual order denoted K, D; the display module206renders a portion of the particular or key vector object306, a portion of the second vector object310, and a portion of the third vector object312included in the modified fourth region514in the visual order denoted K, D,0; the display module renders a portion of the particular or key vector object306, a portion of the second vector object310, and a portion of the third vector object312included in the modified fifth region516in the visual order denoted O, K, D; and the display module206renders a portion of the particular or key vector object306, a portion of the second vector object310, and a portion of the third vector object312included in the sixth region512in the visual order denoted O, D, K. For example, the display module206clears the offscreen render surface at616.

In general, functionality, features, and concepts described in relation to the examples above and below are employed in the context of the example procedures described in this section. Further, functionality, features, and concepts described in relation to different figures and examples in this document are interchangeable among one another and are not limited to implementation in the context of a particular figure or procedure. Moreover, blocks associated with different representative procedures and corresponding figures herein are applicable individually, together, and/or combined in different ways. Thus, individual functionality, features, and concepts described in relation to different example environments, devices, components, figures, and procedures herein are usable in any suitable combinations and are not limited to the particular combinations represented by the enumerated examples in this description.

Example Procedures

The following discussion describes techniques which are implementable utilizing the previously described systems and devices. Aspects of each of the procedures are implementable in hardware, firmware, software, or a combination thereof. The procedures are shown as a set of blocks that specify operations performed by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks. In portions of the following discussion, reference is made toFIGS.1-6.FIG.7is a flow diagram depicting a procedure700in an example implementation in which a visual order as between a portion of a first vector object and a portion of a second vector object included in a region is determined and a modified visual order as between the portion of the first vector object and the portion of the second vector object is determined based on the visual order.

Input data is received describing a region specified relative to a group of vector objects that includes a portion of a first vector object and a portion of a second vector object (block702). For example, the computing device102implements the order module110to receive the input data. A visual order as between the portion of the first vector object and the portion of the second vector object is determined within the region (block704). In one example, the order module110determines the visual order as between the portion of the first vector object and the portion of the second vector object within the region.

A modified visual order as between the portion of the first vector object and the portion of the second vector object within the region is computed based on the visual order (block706). The computing device102implements the order module110to compute the modified visual order as between the portion of the first vector object and the portion of the second vector object in some examples. The group of vector objects is generated for display in a user interface using a render surface and a sentinel value to render pixels of the portion of the first vector object and the portion of the second vector object in the modified visual order (block708). For example, the order module110generates the group of vector objects for display in the user interface.

FIGS.8A,8B,8C,8D,8E, and8Fillustrate a representation of an example user interface for visual reordering of partial vector objects.FIG.8Aillustrates a representation800of vector objects displayed in a user interface.FIG.8Billustrates a representation802of a user interacting with an input device to specify a first region that includes a portion of a first vector object and a first portion of a second vector object in an input visual order.FIG.8Cillustrates a representation804of the first region having the portion of the first vector object and the first portion of the second vector object in a modified visual order.FIG.8Dillustrates a representation806of the user interacting with the input device relative to the user interface.FIG.8Eillustrates a representation808of the user interacting with the input device to specify a second region that includes a portion of a third vector object and a second portion of the second vector object in an input visual order.FIG.8Fillustrates a representation810of the second region having the portion of the third vector object and the second portion of the second vector object in a modified visual order.

With reference toFIG.8A, the representation800includes a first vector object812, a second vector object814, and a third vector object816. In an example, the order module110receives the input data116as describing the first, second, and third vector objects812,814,816. In this example, a user interacts with an input device (e.g., a stylus, a mouse, a touchscreen, a keyboard, etc.) relative to the user interface to manipulate a cursor818within the user interface. In the representation802, the user manipulates the input device and the cursor818to specify a first region820that includes a portion of the first vector object812and a first portion of the second vector object814in a visual order in which the portion of the first vector object812is ordered before or above the first portion of the second vector object814.

With respect toFIG.8C, the order module110receives the interaction data130describing the specification of the first region820and the order module processes the interaction data130to generate a modified first region822. As shown, the modified first region822includes the portion of the first vector object812and the first portion of the second vector object814in a modified visual order in which the first portion of the second vector object814is ordered before or above the portion of the first vector object812. In the representation806, the user further manipulates the input device relative to the user interface which manipulates the cursor818within the user interface.

As illustrated inFIG.8E, the user interacts with the input device to specify a second region824that includes a second portion of the second vector object814and a portion of the third vector object816in a visual order in which the second portion of the second vector object816is ordered before or above the portion of the third vector object816. For example, the order module110receives the interaction data130describing the specification of the second region824. In this example, the order module110processes the interaction data130to generate a modified second region826that includes the second portion of the second vector object814and the portion of the third vector object816in a modified visual order in which the portion of the third vector object816is ordered before or above the second portion of the second vector object814.

Example System and Device

FIG.9illustrates an example system900that includes an example computing device that is representative of one or more computing systems and/or devices that are usable to implement the various techniques described herein. This is illustrated through inclusion of the order module110. The computing device902includes, for example, a server of a service provider, a device associated with a client (e.g., a client device), an on-chip system, and/or any other suitable computing device or computing system.

The example computing device902as illustrated includes a processing system904, one or more computer-readable media906, and one or more I/O interfaces908that are communicatively coupled, one to another. Although not shown, the computing device902further includes a system bus or other data and command transfer system that couples the various components, one to another. For example, a system bus includes any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures. A variety of other examples are also contemplated, such as control and data lines.

The processing system904is representative of functionality to perform one or more operations using hardware. Accordingly, the processing system904is illustrated as including hardware elements910that are configured as processors, functional blocks, and so forth. This includes example implementations in hardware as an application specific integrated circuit or other logic device formed using one or more semiconductors. The hardware elements910are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, processors are comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)). In such a context, processor-executable instructions are, for example, electronically-executable instructions.

The computer-readable media906is illustrated as including memory/storage912. The memory/storage912represents memory/storage capacity associated with one or more computer-readable media. In one example, the memory/storage912includes volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). In another example, the memory/storage912includes fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., Flash memory, a removable hard drive, an optical disc, and so forth). The computer-readable media906is configurable in a variety of other ways as further described below.

Implementations of the described modules and techniques are storable on or transmitted across some form of computer-readable media. For example, the computer-readable media includes a variety of media that is accessible to the computing device902. By way of example, and not limitation, computer-readable media includes “computer-readable storage media” and “computer-readable signal media.”

Combinations of the foregoing are also employable to implement various techniques described herein. Accordingly, software, hardware, or executable modules are implementable as one or more instructions and/or logic embodied on some form of computer-readable storage media and/or by one or more hardware elements910. For example, the computing device902is configured to implement particular instructions and/or functions corresponding to the software and/or hardware modules. Accordingly, implementation of a module that is executable by the computing device902as software is achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elements910of the processing system904. The instructions and/or functions are executable/operable by one or more articles of manufacture (for example, one or more computing devices902and/or processing systems904) to implement techniques, modules, and examples described herein.

The techniques described herein are supportable by various configurations of the computing device902and are not limited to the specific examples of the techniques described herein. This functionality is also implementable entirely or partially through use of a distributed system, such as over a “cloud”914as described below.

The cloud914includes and/or is representative of a platform916for resources918. The platform916abstracts underlying functionality of hardware (e.g., servers) and software resources of the cloud914. For example, the resources918include applications and/or data that are utilized while computer processing is executed on servers that are remote from the computing device902. In some examples, the resources918also include services provided over the Internet and/or through a subscriber network, such as a cellular or Wi-Fi network.

The platform916abstracts the resources918and functions to connect the computing device902with other computing devices. In some examples, the platform916also serves to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the resources that are implemented via the platform. Accordingly, in an interconnected device embodiment, implementation of functionality described herein is distributable throughout the system900. For example, the functionality is implementable in part on the computing device902as well as via the platform916that abstracts the functionality of the cloud914.

CONCLUSION

Although implementations of systems for visual reordering of partial vector objects have been described in language specific to structural features and/or methods, it is to be understood that the appended claims are not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as example implementations of systems for visual reordering of partial vector objects, and other equivalent features and methods are intended to be within the scope of the appended claims. Further, various different examples are described and it is to be appreciated that each described example is implementable independently or in connection with one or more other described examples.