IP Library › Granted Patent US 12,038,897
Granted Patent B2
US 12,038,897 · App. 17/742,256 · Granted Jul 16, 2024

Document co-editing using a Forest representation

Inventors: Tarun Beri (Noida, IN); Kush Pandey (Aligarh, IN)
Assignee: Adobe Inc.
G06F16/2246G06F16/2343
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 12,038,897
App. No.
17/742,256
Granted
Jul 16, 2024
Kind
B2
Abstract

Embodiments are disclosed for managing co-editing management. A method of co-editing management includes detecting a modification operation to be performed on a sequential data structure being edited by one or more client devices, determining a segment of the sequential data structure associated with the modification operation based on a logical index associated with the modification operation, generating a tree structure associated with the segment, a root node of the tree structure corresponding to the modification operation, determining a global index for the root node of the tree structure, and sending an update corresponding to the modification operation, including the root node and the global index, to a co-editing server to be distributed to the one or more client devices.

Claims (71)

1. A method comprising:

detecting a modification operation to be performed on a sequential data structure being edited by one or more client devices;

determining a segment of the sequential data structure associated with the modification operation based on a logical index associated with the modification operation;

generating a tree structure associated with the segment, a root node of the tree structure corresponding to the modification operation;

determining a global index for the root node of the tree structure; and

sending an update corresponding to the modification operation, including the root node and the global index, to a co-editing server to be distributed to the one or more client devices.

2. The method of claim 1 , wherein generating a tree structure associated with the segment, a root node of the tree structure corresponding to the modification operation further comprises:

associating the root node of the tree structure with property data associated with the modification operation, wherein the modification operation is an element addition operation; and

storing the tree structure in memory.

3. The method of claim 1 , further comprising:

detecting a second modification operation, the second modification operation to delete an element from the sequential data structure;

determining that the element is associated with an implicit index;

identifying a segment associated with the implicit index; and

updating a flag associated with the segment to indicate that the element is deleted.

4. The method of claim 1 , further comprising:

detecting a second modification operation, the second modification operation to delete an element from the sequential data structure;

determining that the element is associated with a node of the tree structure; and

deleting the node from the tree structure.

5. The method of claim 1 , further comprising:

detecting a second modification operation, the second modification operation to reorder an element of the sequential data structure from a first local index to a second local index;

deleting the element from the sequential data structure;

adding a new element to the sequential data structure using the second local index;

determining global indices corresponding to the first local index and the second local index; and

sending a second update, including the global indices and data associated with the element, to the co-editing server to be distributed to one or more client devices.

6. The method of claim 1 , wherein the sequential data structure represents a Bezier path and wherein each element of the sequential data structure corresponds to an anchor point of the Bezier path.

7. The method of claim 6 , wherein the modification operation includes one or more of adding an anchor point, deleting an anchor point, or reordering anchor points associated with the Bezier path.

8. The method of claim 1 , further comprising:

determining an index reset condition has been met;

obtaining a lock on the sequential data structure; and

resetting logical indices of the sequential data structure based on a current state of the sequential data structure.

9. The method of claim 8 , wherein the index reset condition includes one or more of a number of operations performed on the sequential data structure or a time-out period since a last operation was performed on the sequential data structure.

10. The method of claim 1 , wherein the tree structure is a Stern-Brocot tree.

11. A non-transitory computer-readable medium storing executable instructions, which when executed by a processing device, cause the processing device to perform operations comprising:

detecting a modification operation to be performed on a sequential data structure being edited by one or more client devices;

determining a segment of the sequential data structure associated with the modification operation based on a logical index associated with the modification operation;

generating a tree structure associated with the segment, a root node of the tree structure corresponding to the modification operation;

determining a global index for the root node of the tree structure; and

sending an update corresponding to the modification operation, including the root node and the global index, to a co-editing server to be distributed to the one or more client devices.

12. The non-transitory computer-readable medium of claim 11 , wherein the operation of generating a tree structure associated with the segment, a root node of the tree structure corresponding to the modification operation further comprises:

associating the root node of the tree structure with property data associated with the modification operation, wherein the modification operation is an element addition operation; and

storing the tree structure in memory.

13. The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise:

detecting a second modification operation, the second modification operation to delete an element from the sequential data structure;

determining that the element is associated with an implicit index;

identifying a segment associated with the implicit index; and

updating a flag associated with the segment to indicate that the element is deleted.

14. The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise:

detecting a second modification operation, the second modification operation to delete an element from the sequential data structure;

determining that the element is associated with a node of the tree structure; and

deleting the node from the tree structure.

15. The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise:

detecting a second modification operation, the second modification operation to reorder an element of the sequential data structure from a first local index to a second local index;

deleting the element from the sequential data structure;

adding a new element to the sequential data structure using the second local index;

determining global indices corresponding to the first local index and the second local index; and

sending a second update, including the global indices and data associated with the element, to the co-editing server to be distributed to one or more client devices.

16. The non-transitory computer-readable medium of claim 11 , wherein the sequential data structure represents a Bezier path and wherein each element of the sequential data structure corresponds to an anchor point of the Bezier path.

17. The non-transitory computer-readable medium of claim 16 , wherein the modification operation includes one or more of adding an anchor point, deleting an anchor point, or reordering anchor points associated with the Bezier path.

18. The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise:

determining an index reset condition has been met;

obtaining a lock on the sequential data structure; and

resetting logical indices of the sequential data structure based on a current state of the sequential data structure.

19. The non-transitory computer-readable medium of claim 11 , wherein the tree structure is a Stern-Brocot tree.

20. A system comprising:

memory storing instructions; and

processor coupled to the memory, the processor executing the instructions to perform operations comprising:

receiving a request to modify an anchor point associated with a Bezier path being edited by one or more client devices;

determining a segment associated with the request based on a logical index associated with a location on the Bezier path corresponding to the anchor point;

generating a tree structure associated with the segment, a root node of the tree structure including one or more properties of the anchor point modified based on the request;

determining a global index for the root node of the tree structure; and

causing the one or more properties of the anchor point to be replicated to the one or more client devices using the global index.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2022
From: BERI, TARUN; PANDEY, KUSH
To: ADOBE INC.
Reel/Frame 059985/0758 →
Continuity (1)
Related Publication 20230367754A1 · Nov 16, 2023