DETAILED ACTION
The Office Action is in response to the Applicants' communication filed on August 10, 2026, which amends the independent claims 1, 8 and 16, amends the dependent claims 3-7, 10-13, 15, and 17-20, and presents arguments, is hereby acknowledged. Claims 1-20 are currently pending and have been examined.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Response to Amendment
Applicant’s arguments filed on August 10, 2026, have been fully considered.
Applicant argues that by this response, the independent claims 1, 8 and 16 are hereby amended to add a new limitation “wherein the second segment and the third segment are positioned along the angular alignment guide” and “a first spacing between the first segment and the second segment is equal to a second spacing between the second segment and the third segment along the angular alignment guide” in order to overcome the 35 U.S.C. §103 rejection.
Examiner replies that the amended claims with new limitations may overcome the cited portions of the prior arts. However, a newly found art, Dhanuka, etc. (US 20190370931 A1) teaches that wherein the second segment and the third segment are positioned along the angular alignment guide (See Dhanuka: Figs. 3-6, and [0016], “Certain embodiments involve angular snapping of a target graphical object to a position in a digital artboard. For instance, a graphics editing application determines the orientation angle of a target graphic and reference graphical objects to use in order to calculate spacing. Based on the orientation and the reference graphical objects, the graphics editing application places a target graphical object at one of the calculated positions. By doing so, the graphics editing application automatically spaces graphical objects along an angular axis (e.g., an axis at an angle other 0 or 90 degrees) and thereby applies the angular equal spacing constraint in a single user interaction with the input graphic”; and [0040], “In an alternative example, if the two reference graphical objects are both on the same side as the target graphical object, then the placement position module 118 bases the placement position on the distance between the two reference graphical objects. The placement position module 118 will place the target graphical object on the axis parallel to the reference angle at a distance from the closest reference graphical object that corresponds or is equal to the distance between the two reference graphical objects.”. Note that the axis parallel to the reference angle is mapped to the angular guide), and “a first spacing between the first segment and the second segment is equal to a second spacing between the second segment and the third segment along the angular alignment guide” (See Dhanuka: Fig. 5, and [0044], “FIG. 5 depicts an example of the placement position of a target graphical object 504 with respect to two reference graphical objects 502 and 506. In this example, the first reference graphical object 502 is on one side of the target graphical object 504 and the second reference graphical object 506 is on the other side of the target graphical object 504. The target graphical object 504 will be placed such that the distance 508 between the target graphical object 504 and the first reference graphical object 502 is the same as the distance 510 between the target graphical object 504 and the second graphical object 506”. Note that 510 is equal ro 506). The remaining arguments of the applicant are mooted in view of the newly found art
Examiner respectfully further replies that the Applicant's arguments have been fully considered and a new ground of rejections have been made. Accordingly, new grounds of rejection are set forth below. Since the new grounds of rejection are necessitated by Applicant's amendments to the claims, the present action is made final.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-5, 7-9, and 16-18 are rejected under 35 U.S.C. 103 as being unpatentable over Jain, etc. (US 20220130088 A2) in view of Leffert, etc. (US 20110141142 A), further in view of Dhanuka, etc. (US 20190370931 A1).
Regarding claim 1, Jain teaches that a computer-implemented method (See Jain: Fig. 1, and [0056], ''Additional detail regarding the design guide system will now be provided with reference to the figures. For example, FIG. 1 illustrates a schematic diagram of an example system environment 100 (or ''system 100'') for implementing a design guide system 112 in accordance with one or more embodiments. Specifically, FIG. 1 illustrates the system 100 including a client device 102, a client application 104, a network 106, server device(s) 108, a content management system 110, and a design guide system 112. Although FIG. 1 illustrates one client device, in alternative embodiments, the system 100 includes a different number of client devices and corresponding users. Similarly, although FIG. 1 illustrates a particular arrangement of the client device 102, the network 106, the server device(s) 108, and the third-party server(s), various arrangements are possible'') comprising:
identifying a set of snappable segments within a graphical user interface of a digital illustration application, the set of snappable segments comprising a first segment associated with a first object, a second segment associated with a second object, and a third segment associated with a third object (See Jain: Figs. 9A-B, and [0146], ''Although FIGS. 9A-9B illustrate particular angular snapping guide visual representations, the design guide system 112 can provide a variety of visual representations of angular snapping guides. For example, the design guide system 112 can provide visual representations of angular snapping guides at various snappable locations corresponding to a target angular linear segment. To illustrate, the design guide system 112 can provide a visual representation of an angular snapping guide both at the snappable location corresponding to a subject angular linear segment and extending from the target angular linear segment itself. Additionally, the design guide system 112 can provide visual representations of an angular snapping guide by varying line thickness, line color, or some other feature''; and Fig. 14, and [0178], ''As shown in FIG. 14, the series of acts 1400 includes an act 1406 for comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin. In particular, the act 1406 can include comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin comprising a first set of angular linear segments. Specifically, the act 1406 can include, in response to a user interaction with a subject digital design object comprising a subject angular linear segment, comparing an angle of the subject angular linear segment with the angular ranges to identify a target angular bin comprising a first set of angular linear segments. Additionally, the act 1406 can include wherein comparing the angle of the target angular linear segment, the angle of the subject angular linear segment, the joining angle, and the collinearity snapping tolerance comprises determining a first angular difference between the angle of the target angular linear segment and the angle of the subject angular linear segment, determining a second angular difference between the angle of the target angular linear segment and the joining angle, determining a third angular difference between the angle of the subject angular linear segment and the joining angle, and comparing the first angular difference, the second angular difference, and the third angular difference to the collinearity snapping tolerance'');
detecting a user interaction for modifying the first object (See Jain: Figs. 1-2, and [0064], ''For example, the design guide system 112 identifies a user interaction 208 indicating a rotation of a subject angular linear segment 210. When the user interaction 208 comes within a snapping tolerance of making the subject angular linear segment 210 parallel to the target angular linear segment 206, the design guide system 112 generates the angular snapping guide 212 and aligns the subject linear segment 210 to the angular snapping guide 212. As shown, the angular snapping guide 212 includes a visual representation that indicates a rotation of the subject angular linear segment 210 as well as the angular alignment of the target angular linear segment 206. Moreover, as illustrated, snapping the subject angular linear segment 210 to the angular snapping guide 212 makes the subject linear segment 210 parallel to the target angular linear segment 206'');
generating, based on the user interaction and the set of snappable segments, an angular alignment guide that extends along a non-vertical and non-horizontal angle, wherein the second segment and the third segment (See Jain: Fig. 13, and [0169], ''Additionally, as shown in FIG. 13, the computing device 1300 includes the caching engine 1310. In one or more embodiments, the caching engine 1310 caches locations of digital design objects, including angular linear segments (with corresponding signed distances and angles), in a digital design document. Further, in some embodiments, the caching engine 1310 transforms cached locations of the angular linear segments in the cache. Accordingly, in one or more embodiments, the caching engine 1310 generates updated angular snapping guides based on an updated cache''; and [0170], ''The computing device 1300 further includes the data storage 1312. The data storage 1312 accesses and stores files, indicators, and other data for the design guide system 112. For example, as shown in FIG. 13, the data storage 1312 includes digital design documents 1314, angular bins 1316, a location cache 1318, and an angular snapping guide 1320''; and [0037], ''The inflexibility of conventional systems also undermines accuracy. Indeed, conventional systems fail to snap digital design objects based on non-horizontal and non-vertical angular linear segments, even though these angles can define the visual features of a digital design. Accordingly, conventional systems often result in manipulation through clumsy user interface controls that cannot accurately and precisely align digital design objects. To illustrate, conventional systems often require repetitive user interactions to rotate and translate a digital design object to roughly match an existing digital design object. However, the resulting modifications are seldom accurate in that angles and alignments are slightly skewed due to the rough controls of most user interfaces'') are positioned along the angular alignment guide;
determining, based on the user interaction and the angular alignment guide, a modified alignment position for the first object that positions the first object along the angular alignment guide (See Jain: Figs. 1 and 8, and [0138], ''Further the design guide system 112 rotates the object around a particular rotation point (e.g., the centroid or center of gravity of the shape) to align the subject angular linear segment parallel to the target angular linear segment. Thus, in one or more embodiments, the design guide system 112 tracks a point during the rotation to determine a modified location of the point and then projects this rotated point perpendicularly to the angular snapping guide. To illustrate, the design guide system 112 identifies a rotated endpoint 814b and projects the endpoint 814b of the subject angular linear segment 806 perpendicularly onto the angular snapping guide 808 to generate a projected point 814a. More specifically, the design guide system 112 determines a vector reflecting this projection. For example, the design guide system 112 determines the distance and angle between the rotated point and the projected point''; and [0062], ''As discussed above, in one or more embodiments, the design guide system 112generates modified digital design documents based on user interaction with one or more angular snapping guides. FIG. 2 illustrates an overview of the process for modifying a digital design document utilizing angular snapping guides''; and Fig. 4, and [0070], ''As shown in FIG. 4, angular linear segments in the angular bin 402 having a representative angle of 26.2 degrees are illustrated with a circle icon. The angular linear segments in the angular bin 404 having a representative angle of 116 degrees are illustrated with a triangle icon. Additionally, angular linear segments in the angular bin 406 having a representative angle of 173.4 degrees are illustrated with a circle icon. Also, the angular linear segments in the angular bin 408 having a representative angle of 236 degrees are illustrated with no icon''. Note that the positioning enhancement and the same angles in the angular bins may be mapped to the equal distance alignment, however, a secondary art will be used to address his limitation explicitly) such that a first spacing between the first segment and the second segment is equal to a second spacing between the second segment and the third segment along the angular alignment guide; and
providing a snappable graphical user interface element in the graphical user interface that, upon selection, causes the first object to move into the modified alignment position (See Jain: Figs. 1-8, and [0076], ''In one or more embodiments, the design guide system 112 determines a total number of angular bins based on a snapping tolerance. For example, in some embodiments, the design guide system 112 determines a number of angular bins for a digital design document based on the snapping tolerance for the digital design document relative to the slopes of angular linear segments in the digital design document. In particular, the design guide system 112 can divide an angular space value (e.g., the range of angles corresponding to segments in the digital design document or a different range such as 180) by the snapping tolerance. To illustrate, given a snapping tolerance of 5 degrees and an angle space value of 180, the design guide system 112 can generate 16 angular bins. Moreover, the design guide system can determine an angular range corresponding to each angular bin (e.g., 0 to 5 degrees, 5 to 10 degrees, 10 to 15 degrees, etc.). In some embodiments, the design guide system also determines a bin number corresponding to each bin (e.g., 0 to 5 degrees corresponds to bin O and 5 to 10 degrees corresponds to bin 1)''; [0137], ''Thus, as shown in FIG. 8, the design guide system 112 can snap an angular linear segment based on receiving a translation to the digital design object 802 by both translating and rotating the digital design object 802. In some embodiments, the design guide system 112 snaps the digital design object in part by snapping the subject angular linear segment 806 to be collinear with the angular snapping guide 808. Thus, in one or more embodiments, the design guide system 112 determines a snapping distance 816 to move the subject angular linear segment 806 into collinearity with the digital design object804''; and [0138], ''Further the design guide system 112 rotates the object around a particular rotation point (e.g., the centroid or center of gravity of the shape) to align the subject angular linear segment parallel to the target angular linear segment. Thus, in one or more embodiments, the design guide system 112 tracks a point during the rotation to determine a modified location of the point and then projects this rotated point perpendicularly to the angular snapping guide. To illustrate, the design guide system 112 identifies a rotated endpoint 814b and projects the endpoint 814b of the subject angular linear segment 806 perpendicularly onto the angular snapping guide 808 to generate a projected point 814a. More specifically, the design guide system 112 determines a vector reflecting this projection. For example, the design guide system 112 determines the distance and angle between the rotated point and the projected point'').
However, Jain fails to explicitly disclose that wherein the second segment and the third segment are positioned along the angular alignment guide; and such that a first spacing between the first segment and the second segment is equal to a second spacing between the second segment and the third segment along the angular alignment guide.
However, Leffert teaches that such that the first segment, second segment, and third segment are separated by equal distances along the angular alignment guide (See Leffert: Figs. SA-P, and [0148], '' UI 500B (Fig. 5B) illustrates that, after detecting the first portion of the first user gesture 507-1 in UI SOOA, the device displays some possible alignment guides in conjunction with the displayed objects circle 501, rectangle 502, and diamond 503 (i.e., attachment handles 501-a and 501-b with respect to circle 501; attachment handles 502-a and 502-b, and extended alignment guide 502-c with respect to rectangle 502; and attachment handles 503-a and 503-b, and extended alignment guides 503-c, 503-d, and 503-e with respect to diamond 503). Alignment guides 503-c, 503-d, and 503-e are configured with respective gravity variables configured to vary the attraction strength. In these exemplary user interface figures, the gravity variables for alignment guides 503-c, 503-d, and 503-e are set to 100%, 80%, and 100%, respectively. For purposes of illustration, these gravity variable values are displayed in conjunction with the reference numerals for alignment guides 503-c, 503-d, and 503-e''. Note that the guide with equal-distance in angular evenly distributed in a circle is mapped to ''equal distances along the angular alignment guide'').
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention was effectively filed to modify Jain to have such that the first segment, second segment, and third segment are separated by equal distances along the angular alignment guide as taught by Leffert in order to manage user interface content and interface elements efficiently (See Leffert: Fig. 1, and [0088], ''In conjunction with RF circuitry 108, touch screen 112, display controller 156, contact module 130, graphics module 132, and text input module 134, the e-mail client module 140 may be used to create, send, receive, and manage e-mail. In conjunction with image management module 144, the e-mail module 140 makes it very easy to create and send e-mails with still or video images taken with camera module 143''). Jain teaches a method and system that may provide angular snapping guides to efficiently, accurately, and flexibly align user interactions and editing operations to existing angular linear segments of digital design objects in a digital design document; while Leffert teaches a system and method that may provide dynamic multi-element GUI snapping with visual selectable guides and spacing/positioning logic to manage the GUI content and elements efficiently. Therefore, it is obvious to one of ordinary skill in the art to modify Jain by Leffert to space and position the GUI content and elements in a managed dynamic adjusted ways. The motivation to modify Jain by Leffert is ''Use of known technique to improve similar devices (methods, or products) in the same way''.
However, Jain, modified by Leffert, fails to explicitly disclose that wherein the second segment and the third segment are positioned along the angular alignment guide; and such that a first spacing between the first segment and the second segment is equal to a second spacing between the second segment and the third segment along the angular alignment guide.
However, Dhanuka teaches that wherein the second segment and the third segment are positioned along the angular alignment guide (See Dhanuka: Figs. 3-6, and [0016], “Certain embodiments involve angular snapping of a target graphical object to a position in a digital artboard. For instance, a graphics editing application determines the orientation angle of a target graphic and reference graphical objects to use in order to calculate spacing. Based on the orientation and the reference graphical objects, the graphics editing application places a target graphical object at one of the calculated positions. By doing so, the graphics editing application automatically spaces graphical objects along an angular axis (e.g., an axis at an angle other 0 or 90 degrees) and thereby applies the angular equal spacing constraint in a single user interaction with the input graphic”; and [0040], “In an alternative example, if the two reference graphical objects are both on the same side as the target graphical object, then the placement position module 118 bases the placement position on the distance between the two reference graphical objects. The placement position module 118 will place the target graphical object on the axis parallel to the reference angle at a distance from the closest reference graphical object that corresponds or is equal to the distance between the two reference graphical objects.”. Note that the axis parallel to the reference angle is mapped to the angular guide); and
“such that a first spacing between the first segment and the second segment is equal to a second spacing between the second segment and the third segment along the angular alignment guide” (See Dhanuka: Fig. 5, and [0044], “FIG. 5 depicts an example of the placement position of a target graphical object 504 with respect to two reference graphical objects 502 and 506. In this example, the first reference graphical object 502 is on one side of the target graphical object 504 and the second reference graphical object 506 is on the other side of the target graphical object 504. The target graphical object 504 will be placed such that the distance 508 between the target graphical object 504 and the first reference graphical object 502 is the same as the distance 510 between the target graphical object 504 and the second graphical object 506”. Note that 510 is equal to 506).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention was effectively filed to modify Jain to have wherein the second segment and the third segment are positioned along the angular alignment guide; and such that a first spacing between the first segment and the second segment is equal to a second spacing between the second segment and the third segment along the angular alignment guide as taught by Dhanuka in order to provide improvements to graphics editing tools by allowing a user to place objects using an angular equal spacing constraint as opposed to limitations found on horizontal and vertical equal spacing constraints (See Dhanuka: Fig. 1, and [0019], “As described herein, certain embodiments provide improvements to graphics editing tools by allowing a user to place objects using an “angular equal spacing constraint” as opposed to the limitations found on the horizontal and vertical equal spacing constraints that exist in existing techniques. The use of angular equal spacing constraints can allow users to place objects with proper spacing with greater efficiency as compared to existing techniques. Additionally or alternatively, the use of angular equal spacing constraints can reduce or eliminate the need for manual rotation of graphical objects before and after object placement''). Jain teaches a method and system that may provide angular snapping guides to efficiently, accurately, and flexibly align user interactions and editing operations to existing angular linear segments of digital design objects in a digital design document; while Dhanuka teaches a system and method that may involve angular snapping of a target graphical object to a position in a digital artboard by allowing a user to place objects using an angular equal spacing constraint as opposed to limitations found on horizontal and vertical equal spacing constraints. Therefore, it is obvious to one of ordinary skill in the art to modify Jain by Dhanuka to by allowing a user to place objects using an angular equal spacing constraint. The motivation to modify Jain by Dhanuka is ''Use of known technique to improve similar devices (methods, or products) in the same way''.
Regarding claim 2, Jain, Leffert and Dhanuka teach all the features with respect to claim 1 as outlined above. Further, Jain teaches that the computer-implemented method of claim 1, wherein identifying the set of snappable segments comprises determining linear segments, near linear segments, and tangential segments from a plurality of objects (See Jain: Figs. 1-3, and [0023], ''As just mentioned, in some embodiments, the design guide system extracts and analyzes angular linear segments in a digital design document to generate angular snapping guides. The design guide system can extract a variety angular linear segments from digital design objects. For example, in some embodiments, the design guide system extracts linear segments from linear paths (e.g., a straight line vector in a digital document), slightly curved paths (e.g., near-linear segments), or tangential segments of curves within a digital design document. Accordingly, in some embodiments the design guide system extracts angular linear segments and generates angular snapping guides to align digital objects, even if the digital design objects do not initially reflect perfectly linear paths or segments''; [0068], ''As mentioned above, in one or more embodiments the design guide system 112 generates angular snapping can extract and analyze a variety of angular linear segments in generating angular snapping guides. FIG. 3 illustrates example angular linear segments and corresponding example angular snapping guides, including slightly curved paths and tangential line segments''; and [0070], ''Additionally, FIG. 3 illustrates a digital design object 304 made up of slightly curved paths 305a-305d. More specifically, as shown in FIG. 3, the digital design object 304 is a trapezoid including a slightly curved segment 305d. As shown in FIG. 3, the design guide system 112 can approximate a straight line for the slightly curved segment 305d and extract an angular linear segment 308. Further, in one or more embodiments, the design guide system 112 generates snappable locations based on the angular linear segment 308'').
Regarding claim 3, Jain, Leffert and Dhanuka teach all the features with respect to claim 1 as outlined above. Further, Jain teaches that the computer-implemented method of claim 1, wherein generating the angular alignment guide (See Jain: Fig. 13, and [0168], ''Also, as shown in FIG. 13, the computing device 1300 includes the angular snapping guide generator 1308. In one or more embodiments, the angular snapping guide generator 1308 identifies a target angular linear segment in response to response to receiving a transformation of a subject angular linear segment and/or cursor. More specifically, the angular snapping guide generator 1308 can generate an angular snapping guide to extend from or run parallel to a target angular linear segment. To illustrate, the angular snapping guide generator 1308 can determine snappable locations corresponding to the target angular linear segment. Further, in one or more embodiments, the angular snapping guide generator 1308 provides the angular snapping guide in response to determining that the subject angular linear segment is within a snapping tolerance of the snappable locations'') comprises:
assigning the set of snappable segments into angular alignment bins based on slopes of the set of snappable segments (See Jain: Fig. 14, and [0175], ''As shown in FIG. 14, the series of acts 1400 includes an act 1402 for assigning angular linear segments within a digital design document to angular bins. In particular, the act 1402 can include assigning angular linear
segments corresponding to one or more digital design objects within a digital design document to angular bins corresponding to angular ranges. Specifically, the act 1402 can include sorting the angular linear segments of the angular bins based on the signed distances of the angular linear segments relative to a reference point in the digital design document. Further, the act 1402 can include sorting the angular linear segments of the angular bins based on the signed distances of the angular linear segments relative to a reference point in the digital design document''; and Fig. 1, and [0123]," In one or more embodiments, the design guide system 112 checks for collinearity between two angular linear segments by determining a slope corresponding to each of the angular linear segments. Further, the design guide system 112 determines a joining angle corresponding to a line segment connecting the endpoints of the two angular linear segments. In some embodiments, the design guide system 112 determines whether the two angular linear segments are within a snapping tolerance of collinearity by determining an error between the slopes of the angular linear segments and an error between the slope of each angular linear segment and the joining angle. The design guide system 112 determines that if each error value satisfies a collinearity snapping tolerance, that the two angular linear segments are collinear or near collinear'');
based on a slope of the first segment, identifying one or more corresponding angular alignment bins (See Jain: Figs. 6A-B, and [0095], ''Thus, as shown in FIG. 6A, the design guide system 112 aligns the subject angular linear segment 607 corresponding to the digital design object 603b based on the slope of a target angular linear segment 605 of the digital design object 603a. Accordingly, the design guide system 112 aligns the digital design objects at a non-vertical and non-horizontal angle. However, as discussed above, providing an angular snapping guide by comparing slopes of each angular linear segment in a digital design document can be inefficient and require excessive computational resources. FIG. 6B illustrates the design guide system 112 utilizing angular bins to efficiently determine that a subject angular linear segment is within an angular snapping tolerance of a snappable location corresponding to another angular linear segment''; [0121], ''In addition to the collinearity snapping tolerance, the design guide system 112 can also apply other conditions to select a target angular linear segment. For example, if two candidate angular linear segments both satisfy the collinearity snapping tolerance, the design guide system 112 can select the candidate angular linear segment having the smallest collinearity snapping error (as described below in FIG. 7C). In some embodiments, the design guide system 112 selects candidate angular linear segment with the smallest amount of deflection (e.g., angular deflection) relative to the subject angular linear segment. Similarly, the design guide system 112 can select the candidate angular linear segment the smallest distance (e.g., signed distance or distance along a particular axis) relative to the subject angular linear segment''; and Fig. 14, and [0181], ''As shown in FIG. 14, the series of acts 1400 includes an act 1410 for providing an angular snapping guide corresponding to the target angular linear segment. In particular, the act 1410 can include providing, for display on the digital design document, an angular snapping guide corresponding to the target angular linear segment. Specifically, the act 1410 can include identifying the user interaction as a rotation of a subject digital design object of the one or more digital design objects comprising a subject angular linear segment, utilizing an angular snapping tolerance together with an angle of the subject angular linear segment to determine an angular snapping range, and identifying a subset of angular linear segments from the first set of angular linear segments that fall within the angular snapping range''); and
determining the angular alignment guide by identifying an angular line along which at least two segments in the one or more corresponding angular alignment bins are positioned and has a minimum alignment difference from the first segment (See Jain: Fig. 1, and [0102], ''] In one or more embodiments, the design guide system 112 analyzes the target angular bins to determine an angular linear segment with a minimum angular distance from the subject angular linear segment. Additionally, in some embodiments, the design guide system 112 utilizes signed distance as a tiebreaker by identifying a target angular linear segment having the lowest signed distance from the subject angular linear segment among candidate angular linear segments having a minimum angular distance. Further, in some embodiments, the design guide system 112 determines a difference in angles between the target angular linear segment and rotates the subject angular linear segment based on the determined difference'').
Regarding claim 4, Jain, Leffert and Dhanuka teach all the features with respect to claim 1 as outlined above. Further, Jain teaches that the computer-implemented method of claim 3, further comprising:
determining signed distance values by determining a signed distance from an origin of the graphical user interface for each snappable segment of the set of snappable segments and has a minimum alignment difference from the first segment (See Jain: Fig. 1, and [0082], ''As just mentioned, in one or more embodiments, the design guide system 112 can determine a signed distance for angular linear segments. Indeed, in one or more embodiments, the design guide system 112 sorts angular linear segments within angular bins based on signed distance from a reference point (e.g. the origin) within the digital design document. Accordingly, the design guide system 112 can efficiently search within an angular bin for a target angular linear segment based on a signed distance of a subject angular linear segment''; and Fig. 14, and [0178], ''As shown in FIG. 14, the series of acts 1400 includes an act 1406 for comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin. In particular, the act 1406 can include comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin comprising a first set of angular linear segments. Specifically, the act 1406 can include, in response to a user interaction with a subject digital design object comprising a subject angular linear segment, comparing an angle of the subject angular linear segment with the angular ranges to identify a target angular bin comprising a first set of angular linear segments. Additionally, the act 1406 can include wherein comparing the angle of the target angular linear segment, the angle of the subject angular linear segment, the joining angle, and the collinearity snapping tolerance comprises determining a first angular difference between the angle of the target angular linear segment and the angle of the subject angular linear segment, determining a second angular difference between the angle of the target angular linear segment and the joining angle, determining a third angular difference between the angle of the subject angular linear segment and the joining angle, and comparing the first angular difference, the second angular difference, and the third angular difference to the collinearity snapping tolerance''); and
sorting each snappable segment of the set of snappable segments in each angular alignment bin based on the signed distance values (See Jain: Fig. 14, and [0179], ''As shown in FIG. 14, the series of acts 1400 includes an act 1408 for comparing a signed distance corresponding to the user interaction with signed distances of the target angular bin. In particular, the act 1408 can include comparing a signed distance corresponding to the user interaction with signed distances of the first set of angular linear segments. Specifically, the act 1408 can include identifying a target angular linear segment by performing a search of sorted signed distances of the first set of angular linear segments utilizing a signed distance of the subject digital design object and applying a snapping tolerance'').
Regarding claim 5, Jain, Leffert and Dhanuka teach all the features with respect to claim 4 as outlined above. Further, Jain teaches that the computer-implemented method of claim 4, further comprising identifying the angular line along which at least two segments in the one or more corresponding angular alignment bins are positioned and has the minimum alignment difference from the first segment based on the signed distance values of the set of snappable segments in the one or more corresponding angular alignment bins (See Jain: Fig. 14, and [0179], ''As shown in FIG. 14, the series of acts 1400 includes an act 1408 for comparing a signed distance corresponding to the user interaction with signed distances of the target angular bin. In particular, the act 1408 can include comparing a signed distance corresponding to the user interaction with signed distances of the first set of angular linear segments. Specifically, the act 1408 can include identifying a target angular linear segment by performing a search of sorted signed distances of the first set of angular linear segments utilizing a signed distance of the subject digital design object and applying a snapping tolerance''; [0180], ''Additionally, the act 1408 can include identifying the linear segment within the collinearity snapping tolerance to the digital design object by determining an angle of the target angular linear segment, determining an angle of a subject angular linear segment corresponding to the digital design object, determining a joining angle between the target angular linear segment and the subject angular linear segment by joining an endpoint of the target angular linear segment to an endpoint of the subject angular linear segment, and comparing the angle of the target angular linear segment, the angle of the subject angular linear segment, the joining angle, and the collinearity snapping tolerance''; and [0161], ''Further, in one or more embodiments, the design guide system 112 determines a target angular linear segment by determining the smallest perpendicular distance, or a ''best match'' from the target angular bin. To illustrate, in one or more embodiments, the design guide system 112 selects a target angular linear segment for the cursor 1204 by identifying a candidate angular linear segment having the shortest signed distance to the cursor point of the cursor 1204. In addition or in the alternative, the design guide system 112 can select a target angular linear segment from the candidate angular linear segments as the candidate angular linear segment that minimizes a difference between a joining angle between the candidate angular linear segment and the cursor 1204 and the angle of the candidate angular linear segment'').
Regarding claim 7, Jain, Leffert and Dhanuka teach all the features with respect to claim 1 as outlined above. Further, Jain teaches that the computer-implemented method of claim 1, wherein determining the modified alignment position for the first object (See Jain: Fig. 14, and [0138], ''Further the design guide system 112 rotates the object around a particular rotation point (e.g., the centroid or center of gravity of the shape) to align the subject angular linear segment parallel to the target angular linear segment. Thus, in one or more embodiments, the design guide system 112 tracks a point during the rotation to determine a modified location of the point and then projects this rotated point perpendicularly to the angular snapping guide. To illustrate, the design guide system 112 identifies a rotated endpoint 814b and projects the endpoint 814b of the subject angular linear segment 806 perpendicularly onto the angular snapping guide 808 to generate a projected point 814a. More specifically, the design guide system 112 determines a vector reflecting this projection. For example, the design guide system 112 determines the distance and angle between the rotated point and the projected point''; and [0182], ''Additionally, in one or more embodiments, the series of acts 1400 includes caching locations of digital design objects, identifying a transformation of the digital design object, and applying the transformation to the cached location of the digital design object to determine updated locations of one or more linear angular segments corresponding to the digital design object'') comprises:
determining a second position of the second segment and a third position of the third segment (See Jain: Fig. 14, and [0178], ''As shown in FIG. 14, the series of acts 1400 includes an act 1406 for comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin. In particular, the act 1406 can include comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin comprising a first set of angular linear segments. Specifically, the act 1406 can include, in response to a user interaction with a subject digital design object comprising a subject angular linear segment, comparing an angle of the subject angular linear segment with the angular ranges to identify a target angular bin comprising a first set of angular linear segments. Additionally, the act 1406 can include wherein comparing the angle of the target angular linear segment, the angle of the subject angular linear segment, the joining angle, and the collinearity snapping tolerance comprises determining a first angular difference between the angle of the target angular linear segment and the angle of the subject angular linear segment, determining a second angular difference between the angle of the target angular linear segment and the joining angle, determining a third angular difference between the angle of the subject angular linear segment and the joining angle, and comparing the first angular difference, the second angular difference, and the third angular difference to the collinearity snapping tolerance''; and [0112], ''Indeed, as mentioned above, the design guide system 112 can snap angular linear segments based on near collinearity. Thus, the design guide system 112 can snap a subject angular linear segment to a target angular linear segment even if the subject angular linear segment and the target angular linear segment are not quite parallel. Accordingly, in one or more embodiments, the design guide system 112 utilizes angular bins and upper and lower signed distance conditions to identify candidate angular linear segments that are nearly parallel and also near in position to the subject angular linear segment'');
determining a reference collinear line positioned in between the second position and the third position (See Jain: Figs. 7A-C, and [0119], ''Upon identifying candidate angular linear segments, the design guide system 112 can also perform an act 736 of applying a collinearity snapping tolerance to the candidate angular linear segments. In particular, the design guide system 112 can analyze the angle of the subject angular linear segment 704 relative to angles of the candidate angular linear segments and the collinearity snapping tolerance to determine whether the candidate angular linear segments are in fact nearly collinear. In some embodiments, the design guide system 112 selects a target angular linear segment based on determining that a candidate linear segment satisfies the collinearity snapping tolerance. Additional detail regarding applying the collinearity snapping tolerance is provided below (e.g., in relation to FIG. 7C)''); and
determining the modified alignment position for the first object that positions the first object based on the reference collinear line (See Jain: Fig. 13, and [0165], ''As shown in FIG. 13, the computing device 1300 includes the angular bin manager 1302. In one or more embodiments, the angular bin manager 1302 generates angular bins corresponding to a digital design document. Further, in some embodiments, the angular bin manager 1302 assigns angular linear segments to angular bins based on the slope of the angular linear segments. Additionally, in one or more embodiments, the angular bin manager 1302 updates angular bins for an angular linear segment in response to receiving user input transforming the angular linear segment''; and Fig. 8, and [0135], ''FIG. 8 illustrates the design guide system 112 managing this snapping. More specifically, the design guide system 112 snaps a subject angular linear segment by precisely aligning the subject angular linear segment with the snappable location collinearly. In one or more embodiments, the design guide system 112 snaps the subject angular linear segment by detecting a reference point for transformation, generating a transformation matrix (including both a rotation and orientation) based on the received transformation, and applying the transformation matrix'').
Regarding claim 8, Jain, Leffert and Dhanuka teach all the features with respect to claim 1 as outlined above. Further, Jain, Leffert and Dhanuka teach that a non-transitory computer-readable medium storing instructions that, when executed by at least one processing device, cause the at least one processing device to perform operations (See Jain: Fig. 1, and [0056], ''Additional detail regarding the design guide system will now be provided with reference to the figures. For example, FIG. 1 illustrates a schematic diagram of an example system environment 100 (or ''system 100'') for implementing a design guide system 112 in accordance with one or more embodiments. Specifically, FIG. 1 illustrates the system 100 including a client device 102, a client application 104, a network 106, server device(s) 108, a content management system 110, and a design guide system 112. Although FIG. 1 illustrates one client device, in alternative embodiments, the system 100 includes a different number of client devices and corresponding users. Similarly, although FIG. 1 illustrates a particular arrangement of the client device 102, the network 106, the server device(s) 108, and the third-party server(s), various arrangements are possible'') comprising:
identifying a set of snappable segments of objects within a graphical user interface of a digital illustration application (See Jain: Figs. 9A-B, and [0146], ''Although FIGS. 9A-9B illustrate particular angular snapping guide visual representations, the design guide system 112 can provide a variety of visual representations of angular snapping guides. For example, the design guide system 112 can provide visual re presentations of angular snapping guides at various snappable locations corresponding to a target angular linear segment. To illustrate, the design guide system 112 can provide a visual representation of an angular snapping guide both at the snappable location corresponding to a subject angular linear segment and extending from the target angular linear segment itself. Additionally, the design guide system 112 can provide visual representations of an angular snapping guide by varying line thickness, line color, or some other feature''; and Fig. 14, and [0178], '' As shown in FlG. 14, the series of acts 1400 includes an act 1406 for comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin. In particular, the act 1406 can include comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin comprising a first set of angular linear segments. Specifically, the act 1406 can include, in response to a user interaction with a subject digital design object comprising a subject angular linear segment, comparing an angle of the subject angular linear segment with the angular ranges to identify a target angular bin comprising a first set of angular linear segments. Additionally, the act 1406 can include wherein comparing the angle of the target angular linear segment, the angle of the subject angular linear segment, the joining angle, and the collinearity snapping tolerance comprises determining a first angular difference between the angle of the target angular linear segment and the angle of the subject angular linear segment, determining a second angular difference between the angle of the target angular linear segment and the joining angle, determining a third angular difference between the angle of the subject angular linear segment and the joining angle, and comparing the first angular difference, the second angular difference, and the third angular difference to the collinearity snapping tolerance'');
detecting one or more user interactions modifying a first object (See Jain: Figs. 1-2, and [0064], ''For example, the design guide system 112 identifies a user interaction 208 indicating a rotation of a subject angular linear segment 210. When the user interaction 208 comes within a snapping tolerance of making the subject angular linear segment 210 parallel to the target angular linear segment 206, the design guide system 112 generates the angular snapping guide 212 and aligns the subject linear segment 210 to the angular snapping guide 212. As shown, the angular snapping guide 212 includes a visual representation that indicates a rotation of the subject angular linear segment 210 as well as the angular alignment of the target angular linear segment 206. Moreover, as illustrated, snapping the subject angular linear segment 210 to the angular snapping guide 212 makes the subject linear segment 210 parallel to the target angular linear segment 206'');
determining, based on the one or more user interactions and the set of snappable segments, a modified alignment position for the first object that positions the first object at a non-vertical and non-horizontal angle between a second object and a third object (See Jain: Figs. 1 and 8, and [0138], ''Further the design guide system 112 rotates the object around a particular rotation point (e.g., the centroid or center of gravity of the shape) to align the subject angular linear segment parallel to the target angular linear segment. Thus, in one or more embodiments, the design guide system 112 tracks a point during the rotation to determine a modified location of the point and then projects this rotated point perpendicularly to the angular snapping guide. To illustrate, the design guide system 112 identifies a rotated endpoint 814b and projects the endpoint 814b of the subject angular linear segment 806 perpendicularly onto the angular snapping guide 808 to generate a projected point 814a. More specifically, the design guide system 112 determines a vector reflecting this projection. For example, the design guide system 112 determines the distance and angle between the rotated point and the projected point''; and [0062], ''As discussed above, in one or more embodiments, the design guide system 112 generates modified digital design documents based on user interaction with one or more angular snapping guides. FIG. 2 illustrates an overview of the process for modifying a digital design document utilizing angular snapping guides''; and Fig. 4, and [0070], ''As shown in FIG. 4, angular linear segments in the angular bin 402 having a representative angle of 26.2 degrees are illustrated with a circle icon. The angular linear segments in the angular bin 404 having a representative angle of 116 degrees are illustrated with a triangle icon. Additionally, angular linear segments in the angular bin 406 having a representative angle of 173.4 degrees are illustrated with a circle icon. Also, the angular linear segments in the angular bin 408 having a representative angle of 236 degrees are illustrated with no icon'' . Note that the positioning enhancement and the same angles in the angular bins may be mapped to the equal distance alignment, however, a secondary art will be used to address his limitation explicitly) such that a fist spacing between the first object and the second object (See Leffert: Figs. SA-P, and [0148], '' UI 500B (FIG. SB) illustrates that, after detecting the first portion of the first user gesture 507-1 in UI SOOA, the device displays some possible alignment guides in conjunction with the displayed objects circle 501, rectangle 502, and diamond 503 (i.e., attachment handles 501-a and 501-b with respect to circle 501; attachment handles 502-a and 502-b, and extended alignment guide 502-c with respect to rectangle 502; and attachment handles 503-a and 503-b, and extended alignment guides 503-c, 503-d, and 503-e with respect to diamond 503). Alignment guides 503-c, 503-d, and 503-e are configured with respective gravity variables configured to vary the attraction strength. In these exemplary user interface figures, the gravity variables for alignment guides 503-c, 503-d, and 503-e are set to 100%, 80%, and 100%, respectively. For purposes of illustration, these gravity variable values are displayed in conjunction with the reference numerals for alignment guides 503-c, 503-d, and 503-e''. Note that the guide with equal-distance in angular evenly distributed in a circle is mapped to ''equal distances along the angular alignment guide'') is equal to a second spacing between the second object and the third object (See Dhanuka: Fig. 5, and [0044], “FIG. 5 depicts an example of the placement position of a target graphical object 504 with respect to two reference graphical objects 502 and 506. In this example, the first reference graphical object 502 is on one side of the target graphical object 504 and the second reference graphical object 506 is on the other side of the target graphical object 504. The target graphical object 504 will be placed such that the distance 508 between the target graphical object 504 and the first reference graphical object 502 is the same as the distance 510 between the target graphical object 504 and the second graphical object 506”. Note that 510 is equal to 506); and
providing a snappable graphical user interface element in the graphical user interface that, upon selection, causes the first object to move into the modified alignment position (See Jain: Figs. 1-8, and [0076], ''In one or more embodiments, the design guide system 112 determines a total number of angular bins based on a snapping tolerance. For example, in some embodiments, the design guide system 112 determines a number of angular bins for a digital design document based on the snapping tolerance for the digital design document relative to the slopes of angular linear segments in the digital design document. In particular, the design guide system 112 can divide an angular space value (e.g., the range of angles corresponding to segments in the digital design document or a different range such as 180) by the snapping tolerance. To illustrate, given a snapping tolerance of 5 degrees and an angle space value of 180, the design guide system 112 can generate 16 angular bins. Moreover, the design guide system can determine an angular range corresponding to each angular bin (e.g., 0 to 5 degrees, 5 to 10 degrees, 10 to 15 degrees, etc.). In some embodiments, the design guide system also determines a bin number corresponding to each bin (e.g., 0 to 5 degrees corresponds to bin O and 5 to 10 degrees corresponds to bin 1)''; [0137], ''Thus, as shown in FIG. 8, the design guide system 112 can snap an angular linear segment based on receiving a translation to the digital design object 802 by both translating and rotating the digital design object 802. In some embodiments, the design guide system 112 snaps the digital design object in part by snapping the subject angular linear segment 806 to be collinear with the angular snapping guide 808. Thus, in one or more embodiments, the design guide system 112 determines a snapping distance 816 to move the subject angular linear segment 806 into collinearity with the digital design object804''; and [0138], ''Further the design guide system 112 rotates the object around a particular rotation point (e.g., the centroid or center of gravity of the shape) to align the subject angular linear segment parallel to the target angular linear segment. Thus, in one or more embodiments, the design guide system 112 tracks a point during the rotation to determine a modified location of the point and then projects this rotated point perpendicularly to the angular snapping guide. To illustrate, the design guide system 112 identifies a rotated endpoint 814b and projects the endpoint 814b of the subject angular linear segment 806 perpendicularly onto the angular snapping guide 808 to generate a projected point 814a. More specifically, the design guide system 112 determines a vector reflecting this projection. For example, the design guide system 112 determines the distance and angle between the rotated point and the projected point'').
Regarding claim 9, Jain, Leffert and Dhanuka teach all the features with respect to claim 8 as outlined above. Further, Jain, Leffert and Dhanuka teach that the non-transitory computer-readable medium of claim 8, wherein determining the modified alignment position comprises:
determining a first segment associated with the first object, a second segment associated with the second object, and a third segment associated with the third object (See Jain: Figs. 9A-B, and [0146], ''Although FIGS. 9A-9B illustrate particular angular snapping guide visual representations, the design guide system 112 can provide a variety of visual representations of angular snapping guides. For example, the design guide system 112 can provide visual representations of angular snapping guides at various snappable locations corresponding to a target angular linear segment. To illustrate, the design guide system 112 can provide a visual representation of an angular snapping guide both at the snappable location corresponding to a subject angular linear segment and extending from the target angular linear segment itself. Additionally, the design guide system 112 can provide visual representations of an angular snapping guide by varying line thickness, line color, or some other feature''; and Fig. 14, and [0178], ''As shown in FIG. 14, the series of acts 1400 includes an act 1406 for comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin. In particular, the act 1406 can include comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin comprising a first set of angular linear segments. Specifically, the act 1406 can include, in response to a user interaction with a subject digital design object comprising a subject angular linear segment, comparing an angle of the subject angular linear segment with the angular ranges to identify a target angular bin comprising a first set of angular linear segments. Additionally, the act 1406 can include wherein comparing the angle of the target angular linear segment, the angle of the subject angular linear segment, the joining angle, and the collinearity snapping tolerance comprises determining a first angular difference between the angle of the target angular linear segment and the angle of the subject angular linear segment, determining a second angular difference between the angle of the target angular linear segment and the joining angle, determining a third angular difference between the angle of the subject angular linear segment and the joining angle, and comparing the first angular difference, the second angular difference, and the third angular difference to the collinearity snapping tolerance''); and
determining a modified alignment such that the first segment is equally spaced from the second segment and the third segment (See Leffert: Figs. SA-P, and [0148], '' UI 500B (FIG. SB) illustrates that, after detecting the first portion of the first user gesture 507-1 in UI SOOA, the device displays some possible alignment guides in conjunction with the displayed objects circle 501, rectangle 502, and diamond 503 (i.e., attachment handles 501-a and 501-b with respect to circle 501; attachment handles 502-a and 502-b, and extended alignment guide 502-c with respect to rectangle 502; and attachment handles 503-a and 503-b, and extended alignment guides 503-c, 503-d, and 503-e with respect to diamond 503). Alignment guides 503-c, 503-d, and 503-e are configured with respective gravity variables configured to vary the attraction strength. In these exemplary user interface figures, the gravity variables for alignment guides 503-c, 503-d, and 503-e are set to 100%, 80%, and 100%, respectively. For purposes of illustration, these gravity variable values are displayed in conjunction with the reference numerals for alignment guides 503-c, 503-d, and 503-e''. Note that the guide with equal-distance in angular evenly distributed in a circle is mapped to ''equal distances along the angular alignment guide'').
Regarding claim 16, Jain, Leffert and Dhanuka teach all the features with respect to claim 1 as outlined above. Further, Jain, Leffert and Dhanuka teach that a system (See Jain: Fig. 1, and [0056], ''Additional detail regarding the design guide system will now be provided with reference to the figures. For example, FIG. 1 illustrates a schematic diagram of an example system environment 100 (or ''system 100'') for implementing a design guide system 112 in accordance with one or more embodiments. Specifically, FIG. 1 illustrates the system 100 including a client device 102, a client application 104, a network 106, server device(s) 108, a content management system 110, and a design guide system 112. Although FIG. 1 illustrates one client device, in alternative embodiments, the system 100 includes a different number of client devices and corresponding users. Similarly, although FIG. 1 illustrates a particular arrangement of the client device 102, the network 106, the server device(s) 108, and the third-party server(s), various arrangements are possible'') comprising:
at least one processor (See Jain: Fig. 13, and [0171], ''Each of the components 1302-1312 of the design guide system 112 can include software, hardware, or both. For example, the components 1302-1312 can include one or more instructions stored on a computer-readable storage medium and executable by processors of one or more computing devices, such as a client device or server device. When executed by the one or more processors, the computer-executable instructions of the design guide system 112 can cause the computing device(s) to perform the methods described herein. Alternatively, the components 1302-1312 can include hardware, such as a special-purpose processing device to perform a certain function or group of functions. Alternatively, the components 1302-1312 of the design guide system 112 can include a combination of computer-executable instructions and hardware''); and
at least one non-transitory computer-readable storage medium storing instructions that, when executed by the at least one processor, cause the system to perform operations (See Jain: Fig.13, and [0171], ''Each of the components 1302-1312 of the design guide system 112 can include software, hardware, or both. For example, the components 1302-1312 can include one or more instructions stored on a computer-readable storage medium and executable by processors of one or more computing devices, such as a client device or server device. When executed by the one or more processors, the computer-executable instructions of the design guide system 112 can cause the computing device(s) to perform the methods described herein. Alternatively, the components 1302-1312 can include hardware, such as a special-purpose processing device to perform a certain function or group of functions. Alternatively, the components 1302-1312 of the design guide system 112 can include a combination of computer-executable instructions and hardware'') comprising:
determining a set of snappable segments associated with a set of objects within a graphical user interface of a digital illustration application (See Jain: Figs. 9A-B, and [0146], ''Although FIGS. 9A-9B illustrate particular angular snapping guide visual representations, the design guide system 112 can provide a variety of visual representations of angular snapping guides. For example, the design guide system 112 can provide visual representations of angular snapping guides at various snappable locations corresponding to a target angular linear segment. To illustrate, the design guide system 112 can provide a visual representation of an angular snapping guide both at the snappable location corresponding to a subject angular linear segment and extending from the target angular Iinear segment itself. Additionally, the design guide system 112 can provide visual representations of an angular snapping guide by varying line thickness, line color, or some other feature''; and Fig. 14, and [0178], ''As shown in FIG. 14, the series of acts 1400 includes an act 1406 for comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin. In particular, the act 1406 can include comparing the user interaction with the angular ranges of the angular bins to identify a target angular bin comprising a first set of angular linear segments. Specifically, the act 1406 can include, in response to a user interaction with a subject digital design object comprising a subject angular linear segment, comparing an angle of the subject angular linear segment with the angular ranges to identify a target angular bin comprising a first set of angular linear segments. Additionally, the act 1406 can include wherein comparing the angle of the target angular linear segment, the angle of the subject angular linear segment, the joining angle, and the collinearity snapping tolerance comprises determining a first angular difference between the angle of the target angular linear segment and the angle of the subject angular linear segment, determining a second angular difference between the angle of the target angular linear segment and the joining angle, determining a third angular difference between the angle of the subject angular linear segment and the joining angle, and comparing the first angular difference, the second angular difference, and the third angular difference to the collinearity snapping tole range'');
receiving a user interaction to modify a first object (See Jain: Figs. 1-2, and [0064], ''For example, the design guide system 112 identifies a user interaction 208 indicating a rotation of a subject angular linear segment 210. When the user interaction 208 comes within a snapping tolerance of making the subject angular linear segment 210 parallel to the target angular linear segment 206, the design guide system 112 generates the angular snapping guide 212 and aligns the subject linear segment 210 to the angular snapping guide 212. As shown, the angular snapping guide 212 includes a visual representation that indicates a rotation of the subject angular linear segment 210 as well as the angular alignment of the target angular linear segment 206. Moreover, as illustrated, snapping the subject angular linear segment 210 to the angular snapping guide 212 makes the subject linear segment 210 parallel to the target angular linear segment 206'');
determining, based on the user interaction and the set of snappable segments, a modified alignment position for the first object that positions the first object in non-vertical and non-horizontal angular alignment with a second object and a third object (See Jain: Figs. 1 and 8, and [0138], ''Further the design guide system 112 rotates the object around a particular rotation point (e.g., the centroid or center of gravity of the shape) to align the subject angular linear segment parallel to the target angular linear segment. Thus, in one or more embodiments, the design guide system 112 tracks a point during the rotation to determine a modified location of the point and then projects this rotated point perpendicularly to the angular snapping guide. To illustrate, the design guide system 112 identifies a rotated endpoint 814b and projects the endpoint 814b of the subject angular linear segment 806 perpendicularly onto the angular snapping guide 808 to generate a projected point 814a. More specifically, the design guide system 112 determines a vector reflecting this projection. For example, the design guide system 112 determines the distance and angle between the rotated point and the projected point''; and [0062], ''As discussed above, in one or more embodiments, the design guide system 112 generates modified digital design documents based on user interaction with one or more angular snapping guides. FIG. 2 illustrates an overview of the process for modifying a digital design document utilizing angular snapping guides''; and Fig. 4, and [0070], ''As shown in FIG. 4, angular linear segments in the angular bin 402 having a representative angle of 26.2 degrees are illustrated with a circle icon. The angular linear segments in the angular bin 404 having a representative angle of 116 degrees are illustrated with a triangle icon. Additionally, angular linear segments in the angular bin 406 having a representative angle of 173.4 degrees are illustrated with a circle icon. Also, the angular linear segments in the angular bin 408 having a representative angle of 236 degrees are illustrated with no icon''. Note that the positioning enhancement and the same angles in the angular bins may be mapped to the equal distance alignment, however, a secondary art will be used to address his limitation explicitly) such that a first spacing between the first object and the second object (See Leffert: Figs. SA-P, and [0148], '' UI 500B (FIG. SB) illustrates that, after detecting the first portion of the first user gesture 507-1 in UI SOOA, the device displays some possible alignment guides in conjunction with the displayed objects circle 501, rectangle 502, and diamond 503 (i.e., attachment handles 501-a and 501-b with respect to circle 501; attachment handles 502-a and 502-b, and extended alignment guide 502-c with respect to rectangle 502; and attachment handles 503-a and 503-b, and extended alignment guides 503-c, 503-d, and 503-e with respect to diamond 503). Alignment guides 503-c, 503-d, and 503-e are configured with respective gravity variables configured to vary the attraction strength. In these exemplary user interface figures, the gravity variables for alignment guides 503-c, 503-d, and 503-e are set to 100%, 80%, and 100%, respectively. For purposes of illustration, these gravity variable values are displayed in conjunction with the reference numerals for alignment guides 503-c, 503-d, and 503-e''. Note that the guide with equal-distance in angular evenly distributed in a circle is mapped to ''equal distances along the angular alignment guide'') is equal to a second spacing between the second object and the third object (See Dhanuka: Fig. 5, and [0044], “FIG. 5 depicts an example of the placement position of a target graphical object 504 with respect to two reference graphical objects 502 and 506. In this example, the first reference graphical object 502 is on one side of the target graphical object 504 and the second reference graphical object 506 is on the other side of the target graphical object 504. The target graphical object 504 will be placed such that the distance 508 between the target graphical object 504 and the first reference graphical object 502 is the same as the distance 510 between the target graphical object 504 and the second graphical object 506”. Note that 510 is equal to 506); and
providing a snappable graphical user interface element in the graphical user interface that, upon selection, causes the first object to move into the modified alignment position . (See Jain: Figs. 1-8, and [0076], ''In one or more embodiments, the design guide system 112 determines a total number of angular bins based on a snapping tolerance. For example, in some embodiments, the design guide system 112 determines a number of angular bins for a digital design document based on the snapping tolerance for the digital design document relative to the slopes of angular linear segments in the digital design document. In particular, the design guide system 112 can divide an angular space value (e.g., the range of angles corresponding to segments in the digital design document or a different range such as 180) by the snapping tolerance. To illustrate, given a snapping tolerance of 5 degrees and an angle space value of 180, the design guide system 112 can generate 16 angular bins. Moreover, the design guide system can determine an angular range corresponding to each angular bin (e.g., 0 to 5 degrees, 5 to 10 degrees, 10 to 15 degrees, etc.). In some embodiments, the design guide system also determines a bin number corresponding to each bin (e.g., 0 to 5 degrees corresponds to bin O and 5 to 10 degrees corresponds to bin 1)''; [0137], ''Thus, as shown in FIG. 8, the design guide system 112 can snap an angular linear segment based on receiving a translation to the digital design object 802 by both translating and rotating the digital design object 802. In some embodiments, the design guide system 112 snaps the digital design object in part by snapping the subject angular linear segment 806 to be collinear with the angular snapping guide 808. Thus, in one or more embodiments, the design guide system 112 determines a snapping distance 816 to move the subject angular linear segment 806 into collinearity with the digital design object804''; and [0138], ''Further the design guide system 112 rotates the object around a particular rotation point (e.g., the centroid or center of gravity of the shape) to align the subject angular linear segment parallel to the target angular linear segment. Thus, in one or more embodiments, the design guide system 112 tracks a point during the rotation to determine a modified location of the point and then projects this rotated point perpendicularly to the angular snapping guide. To illustrate, the design guide system 112 identifies a rotated endpoint 814b and projects the endpoint 814b of the subject angular linear segment 806 perpendicularly onto the angular snapping guide 808 to generate a projected point 814a. More specifically, the design guide system 112 determines a vector reflecting this projection. For example, the design guide system 112 determines the distance and angle between the rotated point and the projected point'').
Regarding claim 17, Jain, Leffert and Dhanuka teach all the features with respect to claim 16 as outlined above. Further, Jain teaches that the system of claim 16, wherein determining a modified alignment position for the first object (See Jain: Fig. 13, and [0165], ''As shown in FIG. 13, the computing device 1300 includes the angular bin manager 1302. In one or more embodiments, the angular bin manager 1302 generates angular bins corresponding to a digital design document. Further, in some embodiments, the angular bin manager 1302 assigns angular linear segments to angular bins based on the slope of the angular linear segments. Additionally, in one or more embodiments, the angular bin manager 1302 updates angular bins for an angular linear segment in response to receiving user input transforming the angular linear segment'') comprises:
determining a first segment of the set of snappable segments associated with the first object having a first slope relative to a horizontal reference line (See Jain: Figs. 7A-C, and [0123], ''In one or more embodiments, the design guide system 112 checks for collinearity between two angular linear segments by determining a slope corresponding to each of the angular linear segments. Further, the design guide system 112 determines a joining angle corresponding to a line segment connecting the endpoints of the two angular linear segments. In some embodiments, the design guide system 112 determines whether the two angular linear segments are within a snapping tolerance of collinearity by determining an error between the slopes of the angular linear segments and an error between the slope of each angular linear segment and the joining angle. The design guide system 112 determines that if each error value satisfies a collinearity snapping tolerance, that the two angular linear segments are collinear or near collinear'');
generating a plurality of angular alignment bins comprising a first angular alignment bin that contains a subset of the set of snappable segments having a slope within a predetermined tolerance of the first slope relative to the horizontal reference line (See Jain: Fig. 14, and [0174], ''As shown in FIG. 14, the series of acts 1400 includes an act 1402 for assigning angular linear segments within a digital design document to angular bins. In particular, the act 1402 can include assigning angular linear segments corresponding to one or more digital design objects within a digital design document to angular bins corresponding to angular ranges. Specifically, the act 1402 can include sorting the angular linear segments of the angular bins based on the signed distances of the angular linear segments relative to a reference point in the digital design document. Further, the act 1402 can include sorting the angular linear segments of the angular bins based on the signed distances of the angular linear segments relative to a reference point in the digital design document''; and [0177], ''Additionally, in one or more embodiments, the act 1404 can include wherein the signed distance corresponding to the user interaction comprises a signed distance of the subject angular linear segment and further comprising instructions that, when executed by the at least one processor, further cause the computer system to select the target angular linear segment by comparing the signed distance of the subject angular linear segment to signed distances of the subset of angular linear segments that fall within the angular snapping range. Additionally, in some embodiments, the act 1404 includes selecting the target angular linear segment from the angular linear segments by identifying the user interaction as a translation of a digital design object of the one or more digital design objects, and identifying, from the first set of angular line segments, the target angular linear segment as a linear segment within a collinearity snapping tolerance to the digital design object''); and
determining, based on the plurality of angular alignment bins, the modified alignment position for the first object (See Jain: Fig. 14, and [0181], ''As shown in FIG. 14, the series of acts 1400 includes an act 1410 for providing an angular snapping guide corresponding to the target angular linear segment. In particular, the act 1410 can include providing, for display on the digital design document, an angular snapping guide corresponding to the target angular linear segment. Specifically, the act 1410 can include identifying the user interaction as a rotation of a subject digital design object of the one or more digital design objects comprising a subject angular linear segment, utilizing an angular snapping tolerance together with an angle of the subject angular linear segment to determine an angular snapping range, and identifying a subset of angular linear segments from the first set of angular linear segments that fall within the angular snapping range''; and [0182], ''As shown in FIG. 14, the series of acts 1400 includes an act 1410 for providing an angular snapping guide corresponding to the target angular linear segment. In particular, the act 1410 can include providing, for display on the digital design document, an angular snapping guide corresponding to the target angular linear segment. Specifically, the act 1410 can include identifying the user interaction as a rotation of a subject digital design object of the one or more digital design objects comprising a subject angular linear segment, utilizing an angular snapping tolerance together with an angle of the subject angular linear segment to determine an angular snapping range, and identifying a subset of angular linear segments from the first set of angular linear segments that fall within the angular snapping range'').
Regarding claim 18, Jain, Leffert and Dhanuka teach all the features with respect to claim 16 as outlined above. Further, Jain teaches that the system of claim 16, wherein determining the modified alignment position for the first object (See Jain: Fig. 13, and [0165], ''As shown in FIG. 13, the computing device 1300 includes the angular bin manager 1302. In one or more embodiments, the angular bin manager 1302 generates angular bins corresponding to a digital design document. Further, in some embodiments, the angular bin manager 1302 assigns angular linear segments to angular bins based on the slope of the angular linear segments. Additionally, in one or more embodiments, the angular bin manager 1302 updates angular bins for an angular linear segment in response to receiving user input transforming the angular linear segment'') comprises:
determining a first segment of the set of snappable segments associated with the first object having a slope relative to a horizontal reference line (See Jain: Figs. 7A-C, and [0123], ''In one or more embodiments, the design guide system 112 checks for collinearity between two angular linear segments by determining a slope corresponding to each of the angular linear segments. Further, the design guide system 112 determines a joining angle corresponding to a line segment connecting the endpoints of the two angular linear segments. In some embodiments, the design guide system 112 determines whether the two angular linear segments are within a snapping tolerance of collinearity by determining an error between the slopes of the angular linear segments and an error between the slope of each angular linear segment and the joining angle. The design guide system 112 determines that if each error value satisfies a collinearity snapping tolerance, that the two angular linear segments are collinear or near collinear'');
determining a signed distance tolerance based on a predetermined angle tolerance and the slope of the first object (See Jain: Fig. 14, and [0179], ''As shown in FIG. 14, the series of acts 1400 includes an act 1408 for comparing a signed distance corresponding to the user interaction with signed distances of the target angular bin. In particular, the act 1408 can include comparing a signed distance corresponding to the user interaction with signed distances of the first set of angular linear segments. Specifically, the act 1408 can include identifying a target angular linear segment by performing a search of sorted signed distances of the first set of angular linear segments utilizing a signed distance of the subject digital design object and applying a snapping tolerance'');
generating a subset of the set of snappable segments that fall within the signed distance tolerance (See Jain: Fig. 14, and [0181], ''As shown in FIG. 14, the series of acts 1400 includes an act 1410 for providing an angular snapping guide corresponding to the target angular linear segment. In particular, the act 1410 can include providing, for display on the digital design document, an angular snapping guide corresponding to the target angular linear segment. Specifically, the act 1410 can include identifying the user interaction as a rotation of a subject digital design object of the one or more digital design objects comprising a subject angular linear segment, utilizing an angular snapping tolerance together with an angle of the subject angular linear segment to determine an angular snapping range, and identifying a subset of angular linear segments from the first set of angular linear segments that fall within the angular snapping range''); and
determining the modified alignment position for the first object based on the subset of the set of snappable segments that fall within the signed distance tolerance (See Jain: Fig. 14, and [0181], ''As shown in FIG. 14, the series of acts 1400 includes an act 1410 for providing an angular snapping guide corresponding to the target angular linear segment. In particular, the act 1410 can include providing, for display on the digital design document, an angular snapping guide corresponding to the target angular linear segment. Specifically, the act 1410 can include identifying the user interaction as a rotation of a subject digital design object of the one or more digital design objects comprising a subject angular linear segment, utilizing an angular snapping tolerance together with an angle of the subject angular linear segment to determine an angular snapping range, and identifying a subset of angular linear segments from the first set of angular linear segments that fall within the angular snapping range''; and [0182], ''As shown in FIG. 14, the series of acts 1400 includes an act 1410 for providing an angular snapping guide corresponding to the target angular linear segment. In particular, the act 1410 can include providing, for display on the digital design document, an angular snapping guide corresponding to the target angular linear segment. Specifically, the act 1410 can include identifying the user interaction as a rotation of a subject digital design object of the one or more digital design objects comprising a subject angular linear segment, utilizing an angular snapping tolerance together with an angle of the subject angular linear segment to determine
an angular snapping range, and identifying a subset of angular linear segments from the first set of angular linear segments that fall within the angular snapping range'').
Allowable Subject Matter
Claim 6 is objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims. The best arts searched, Jain, etc. (US 20220130088 A1), Leffert, etc. (US 20110141142 A1) and Dhanuka, etc. (US 20190370931 A1), do not teach the claimed limitations of ''the computer-implemented method of claim 1, wherein providing the snappable graphical user interface element comprises: determining a second angle based on an angle of the second segment relative to a horizontal reference line and a third angle based on an angle of the third segment relative to the horizontal reference line; determining a reference angle based on the second angle and the third angle; and providing a snappable graphical user interface element in the graphical user interface that, upon selection, causes the first object to move into the modified alignment position such that the first object is oriented at the reference angle."
Claim 10 is objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims. The best arts searched, Jain, etc. (US 20220130088 A1), Leffert, etc. (US 20110141142 A1) and Dhanuka, etc. (US 20190370931 A1), do not teach the claimed limitations of ''the non-transitory computer-readable medium of claim 8, wherein determining the modified alignment position comprises: determining a subset of the set of snappable segments based on a maximum angle and a minimum angle based on a slope of the first object relative to a horizontal reference line; determining an optimal alignment triplet from the subset of the set of snappable segments; and determining the modified alignment position for the first object based on the optimal alignment triplet."
Claim 11 is objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims. The best arts searched, Jain, etc. (US 20220130088 A1), Leffert, etc. (US 20110141142 A1) and Dhanuka, etc. (US 20190370931 A1), do not teach the claimed limitations of ''the non-transitory computer-readable medium of claim 8, wherein determining the modified alignment position further comprises: determining an optimal alignment triplet from a subset of the set of snappable segments based on one or more of: a predetermined collinearity condition; a predetermined deflection tolerance; or a spacing between a first segment of the subset of the set of snappable segments and a second segment of the subset of the set of snappable segments; and determining the modified alignment position for the first object based on the optimal alignment triplet."
Claim 12 and 19-20 are objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims. The best arts searched, Jain, etc. (US 20220130088 A1), Leffert, etc. (US 20110141142 A1) and Dhanuka, etc. (US 20190370931 A1), do not teach the claimed limitations of ''the non-transitory computer-readable medium of claim 8, wherein determining the modified alignment position comprises: generating a left alignment bin that contains one or more objects disposed to a left side of the first object relative to a coordinate axis and a right alignment bin that contains one or more objects disposed to a right side of the first object relative to the coordinate axis; determining that the second object is located in the left alignment bin and the third object is located in the right alignment bin; and determining the modified alignment position for the first object based on the left alignment bin and the right alignment bin."
Claim 13 is objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims. The best arts searched, Jain, etc. (US 20220130088 A1), Leffert, etc. (US 20110141142 A1) and Dhanuka, etc. (US 20190370931 A1), do not teach the claimed limitations of ''the non-transitory computer-readable medium of claim 8, wherein determining the modified alignment position comprises: generating a left subset of the set of snappable segments based on positions of the set of snappable segments relative to the first object; generating a right subset of the set of snappable segments based on positions of the set of snappable segments relative to the first object; determining a left segment from the left subset that is positioned a first distance from the first object and a right segment from the right subset that is positioned a second distance from the first object equal to the first distance; and determining the modified alignment position for the first object based on the left segment and the right segment."
Claim 14 is objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims. The best arts searched, Jain, etc. (US 20220130088 A1), Leffert, etc. (US 20110141142 A1) and Dhanuka, etc. (US 20190370931 A1), do not teach the claimed limitations of ''the non-transitory computer-readable medium of claim 8, wherein causing the first object to move into the modified alignment position comprises: generating a reference collinear line in a middle location of a perpendicular height between the second object and the third object; generating a midpoint between a right endpoint of the second object and a left endpoint of the third object; and performing translation of the first object based on the reference collinear line and the midpoint such that the first object is equally spaced from the second object and the third object.''
Claim 15 is objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims. The best arts searched, Jain, etc. (US 20220130088 A1), Leffert, etc. (US 20110141142 A1) and Dhanuka, etc. (US 20190370931 A1), do not teach the claimed limitations of ''the non-transitory computer-readable medium of claim 8, wherein determining the modified alignment position comprises: generating a first subset of the set of snappable segments that comprises a plurality of segments of the set of snappable segments disposed to a left side of the first object relative to a coordinate axis; generating a second subset of the set of snappable segments that comprises a plurality of segments of the set of snappable segments disposed to a right side of the first object relative to the coordinate axis; and determining the modified alignment position for the first object based on a first snappable segment located within the first subset and a second snappable segment located within the second subset such that the first snappable segment and the second snappable segment are equally spaced relative to the first object."
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to GORDON G LIU whose telephone number is (571)270-0382. The examiner can normally be reached Monday - Friday 8:00-5:00.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Devona E Faulk can be reached at 571-272-7515. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/GORDON G LIU/Primary Examiner, Art Unit 2618