IP Library › Granted Patent US 10,878,587
Granted Patent B2
US 10,878,587 · App. 16/062,098 · Granted Dec 29, 2020

Alignment of objects to multi-layer grid layouts

Inventors: Darren Edge (Beijing, CN); Sitao Xiang (Beijing, CN)
Assignee: Microsoft Technology Licensing, LLC
G06T7/33G06F40/106G06K9/6206G06T7/12G06T11/60G06T2207/30176
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,878,587
App. No.
16/062,098
Granted
Dec 29, 2020
Kind
B2
Abstract

A solution for aligning objects to multi-layer grid layouts is proposed. For a document including multiple objects, a first alignment is performed on edges of a plurality of objects to be aligned. Irregularities in edge orderings are reduced. Then, a second alignment is performed on the edges of the plurality of objects based on the first alignment. A first grid layout of the plurality of objects is generated. A third alignment is then performed based on the first grid layout of the plurality of objects and a second grid layout of the plurality of objects is generated.

Claims (65)

1. A device comprising:

a processing unit;

a memory coupled to the processing unit and storing instructions for execution by the processing unit, the instructions, when executed by the processing unit, causing the device to:

perform, on edges of a plurality of objects to be aligned, a first alignment to reduce irregularities in edge orderings;

obtain, from a result of the first alignment, a plurality of characteristic values of the plurality of objects;

group, based on the plurality of characteristic values and a predetermined policy, the edges of the plurality of objects, into a plurality of groups, to minimize a cost of aligning the plurality of objects;

perform, based on the first alignment, a second alignment on the edges of the plurality of objects, in each of the plurality of groups, to generate a first grid layout of the plurality of objects; and

perform, based on the first grid layout of the plurality of objects, a third alignment to generate a second grid layout of the plurality of objects.

2. The device of claim 1 , wherein the instructions, when executed by the processing unit, further cause the device to:

in response to receiving a command from a user, apply the second grid layout to the plurality of objects.

3. The device of claim 1 , wherein the instructions, when executed by the processing unit, further cause the device to:

present the second grid layout as a suggestion to a user for selection; and

in response to the suggestion being selected by the user, apply the second grid layout to the plurality of objects.

4. The device of claim 1 , wherein the instructions, when executed by the processing unit, further cause the device to:

define a constraint for the edges of the plurality of objects to avoid a destructive layout of the plurality of objects, the destructive layout of the plurality of objects including at least one of the following: an object being collapsed, a new overlap being created and an existing overlap being destroyed.

5. The device of claim 4 , wherein the instructions, when executed by the processing unit, further cause the device to:

determine, under the constraint, an order of the edges for both horizontal and vertical dimensions, such that a number of consecutive sequences of edges facing a same direction and a number of inversions relative to an original order of the edges are minimized.

6. The device of claim 5 , wherein the instructions, when executed by the processing unit, further cause the device to:

determine a weighted average edge position for each of the consecutive sequences of edges facing the same direction;

move an edge within the each of the consecutive sequences of edges facing the same direction to the weighted average edge position; and

adjust each of the plurality of objects to indicate its original size and alignment.

7. The device of claim 1 , wherein the cost of moving an edge is proportional to a square of a distance moved.

8. The device of claim 1 , wherein the instructions, when executed by the processing unit, further cause the device to:

determine final positions and spacing for the plurality of objects to generate the second grid layout with a more consistent visual effect.

9. The device of claim 1 , wherein the instructions, when executed by the processing unit, further cause the device to:

determine, from a plurality of nested objects to be aligned, a nesting hierarchy including the plurality of groups of objects, each of the plurality of groups of objects including a top-layer object and a plurality of child objects, each of the child objects being nested by an object within the group, and each of the plurality of objects having a layer number to indicate a layer of the object;

perform, for each of the plurality of groups of objects, the first alignment on edges of objects within the group of objects;

perform, based on the first alignment, the second alignment for each layer of the plurality of nested objects to generate a third grid layout of the plurality of nested objects; and

perform, based on the third grid layout of the plurality of nested objects, the third alignment to generate a fourth grid layout of the plurality of nested objects.

10. The device of claim 9 , wherein the plurality of nested objects to be aligned comprises a first object and a second object, and wherein the instructions, when executed by the processing unit, further cause the device to:

determine the second object is nested by the first object if the first object is the topmost object underlying the most area of the second object; and

determine the layer number of the first object to be a certain number if the first object is nested by objects at each of the certain number of lower layers.

11. A computer-implemented method comprising:

performing, on edges of a plurality of objects to be aligned, a first alignment to reduce irregularities in edge orderings;

obtaining, from a result of the first alignment, a plurality of characteristic values of the plurality of objects;

grouping, based on the plurality of characteristic values and a predetermined policy, the edges of the plurality of objects, into a plurality of groups, to minimize a cost of aligning the plurality of objects;

performing, based on the first alignment, a second alignment on the edges of the plurality of objects, in each of the plurality of groups, to generate a first grid layout of the plurality of objects; and

performing, based on the first grid layout of the plurality of objects, a third alignment to generate a second grid layout of the plurality of objects.

12. The method of claim 11 , further comprising:

in response to receiving a command from a user, applying the second grid layout to the plurality of objects.

13. The method of claim 11 , further comprising:

presenting the second grid layout as a suggestion to a user for selection; and

in response to the suggestion being selected by the user, applying the second grid layout to the plurality of objects.

14. The method of claim 11 , further comprising:

defining a constraint for the edges of the plurality of objects to avoid a destructive layout of the plurality of objects, the destructive layout of the plurality of objects including at least one of the following: an object being collapsed, a new overlap being created and an existing overlap being destroyed.

15. The method of claim 14 , wherein performing the first alignment on the edges of the plurality of objects to be aligned comprises:

determining, under the constraint, an order of the edges for both horizontal and vertical dimensions, such that a number of consecutive sequences of edges facing a same direction and a number of inversions relative to an original order of the edges are minimized.

16. The method of claim 15 , wherein performing the first alignment on the edges of the plurality of objects to be aligned comprises:

determining a weighted average edge position for each of the consecutive sequences of edges facing the same direction;

moving an edge within the each of the consecutive sequences of edges facing the same direction to the weighted average edge position; and

adjusting each of the plurality of objects to indicate its original size and alignment.

17. The method of claim 11 , wherein a cost of creating a new group is constant.

18. The method of claim 11 , wherein performing the third alignment comprises:

determining final positions and spacing for the plurality of objects to generate the second grid layout with a more consistent visual effect.

19. The method of claim 11 , further comprising:

determining, from a plurality of nested objects to be aligned, a nesting hierarchy including the plurality of groups of objects, each of the plurality of groups of objects including a top-layer object and a plurality of child objects, each of the child objects being nested by an object within the group, and each of the plurality of objects having a layer number to indicate a layer of the object;

performing, for each of the plurality of groups of objects, the first alignment on edges of objects within the group of objects;

performing, based on the first alignment, the second alignment for each layer of the plurality of nested objects to generate a third grid layout of the plurality of nested objects; and

performing, based on the third grid layout of the plurality of nested objects, the third alignment to generate a fourth grid layout of the plurality of nested objects.

20. A computer program product being tangibly stored on a non-transient machine-readable medium and comprising machine-executable instructions, the instructions, when executed on a device, causing the device to perform acts including:

performing, on edges of a plurality of objects to be aligned, a first alignment to reduce irregularities in edge orderings;

obtaining, from a result of the first alignment, a plurality of characteristic values of the plurality of objects;

grouping, based on the plurality of characteristic values and a predetermined policy, the edges of the plurality of objects, into a plurality of groups, to minimize a cost of aligning the plurality of objects;

performing, based on the first alignment, a second alignment on the edges of the plurality of objects, in each of the plurality of groups, to generate a first grid layout of the plurality of objects; and

performing, based on the first grid layout of the plurality of objects, a third alignment to generate a second grid layout of the plurality of objects.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2018
From: EDGE, DARREN; XIANG, SITAO
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 047052/0555 →
Continuity (1)
Related Publication 20180374225A1 · Dec 27, 2018
Cited By (1)
US 12,293,143