Editing on a touchscreen

A touchscreen device is configured to facilitate editing on a touchscreen. The touchscreen device determines a position of a guide device on the touchscreen and determines an axis of the guide device on the touchscreen. The touchscreen device displays a first line on the touchscreen parallel to the axis of the guide device, while the touchscreen displays a second line on the touchscreen. The touchscreen device detects movement of the guide device on the touchscreen and moves the first line on the touchscreen based on the detected movement. The touchscreen device moves the first line to coincide with the second line in response to a determination that the first line is within the threshold distance of the second line. The touchscreen device then indicates that the second line is selected for potential editing.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to the processing of data. Specifically, the present disclosure addresses systems and methods to facilitate editing on a touchscreen.

BACKGROUND

A touchscreen device may include a touchscreen (e.g., a touch-sensitive display screen) that is configured to both present (e.g., display) visual information and receive touch input from a user (e.g., one or more touches on the touchscreen). The visual information (e.g., visual content) may be displayed using a graphical user interface (e.g., within one or more windows or full-screen within the edges of the touchscreen). The user input may be submitted by a user of the touchscreen device, for example, by contacting (e.g., touching) the touchscreen with a body part (e.g., a fingertip) or with a stylus. Examples of a touchscreen device include a tablet computer (e.g., iPad® by Apple Inc.), a smart phone (e.g., iPhone)® by Apple Inc.), a laptop computer (e.g., configured with a touchscreen), a kiosk computer (e.g., configured with a touchscreen), and any suitable combination thereof.

In some situations, a touchscreen device may be used to create and edit drawings on the touchscreen. However, it may be problematic to provide a convenient or intuitive user interface for selecting one or more parts of a drawing displayed on the touchscreen. For example, it may be problematic to provide a user interface that quickly and easily allows a user to select a part of a drawing. As another example, it may be problematic to provide a user interface that automatically selects a part of a drawing for potential editing.

DETAILED DESCRIPTION

A touchscreen device includes a touchscreen and is configured to facilitate editing on the touchscreen. In particular, the touchscreen device is configured to determine a position of a guide device on the touchscreen, as well as determine an axis of the guide device on a touchscreen. As configured, the touchscreen device displays a first line (e.g., a guide line) on the touchscreen, and the first line may be displayed parallel to the axis of the guide device. Moreover, the first line may be displayed while the touchscreen displays a second line (e.g., a previously drawn line) on the touchscreen. The touchscreen device detects movement of the guide device on the touchscreen and moves the first line on the touchscreen based on the detected movement. The touchscreen device is further configured to move the first line to coincide with the second line in response to a determination (e.g., made by the touchscreen device) that the first line is within a threshold distance of the second line. As configured, the touchscreen device indicates that the second line (e.g., coincident with the moved first line) is selected (e.g., automatically selected) for potential editing. For example, this may include highlighting (e.g., by displaying a marker or using a different color) one or more points on the second line to indicate that the second line has been automatically selected.

As used herein, the phrase “guide device” refers to any device (e.g., a companion device for the touchscreen device) configured to trigger a set of one or more contact signals on a touchscreen of a touchscreen device. For example, the guide device may be or include a straightedge device (e.g., a device that resembles a straightedge or ruler). In some example embodiments, the guide device has at least one straight side that is parallel with an axis (e,g., the longitudinal axis) of the guide device. For clarity, a guide device in the example form of a rectangular straightedge device is discussed below and illustrated in the accompanying drawings. However, the guide device may take any of various other forms, including being circular, oval, triangular, star-shaped, irregularly shaped, or any suitable combination thereof.

FIG. 1is a network diagram illustrating a network environment100suitable for editing on a touchscreen, according to some example embodiments. The network environment100includes a server machine110, a database115, a touchscreen device130, and a stylus150, all communicatively coupled to each other via a network190. The server machine110, the database115, the touchscreen device130, a guide device140, and the stylus150may each be implemented in a suitably sized computer system, in whole or in part, as described below with respect toFIG. 17. Moreover, the guide device140, the stylus150, or both, may be configured to interoperate with the touchscreen device130. For example, the guide device140may be built or adapted to trigger one or more contact signals on a touchscreen of the touchscreen device130, when the guide device140is placed fully or partially on the touchscreen of the touchscreen device130. As another example, the stylus150may be built or adapted to trigger a contact signal on the touchscreen of the touchscreen device130.

Also shown inFIG. 1is a user132of the touchscreen device130. The user132may be a human user (e.g., a human being), a machine user (e.g., a computer-controlled robot configured by a software program to interact with the touchscreen device130, the guide device140, and the stylus150, for example, to mimic a human user), or any suitable combination thereof (e.g., a human assisted by a machine or a machine supervised by a human). The user132is not part of the network environment100, but corresponds to the touchscreen device130and may be a user of the touchscreen device130, a user of the guide device140, a user of the stylus150, or any suitable combination thereof. For example, the touchscreen device130may be or include a desktop computer, a vehicle computer, a tablet computer, a navigational device, a portable media device, or a smart phone belonging to the user132.

The server machine110, with or without the database115, may form all or part of a network-based system105(e.g., a cloud-based creativity support system). The server machine110may store files and settings that correspond to the user132(e.g., files that belong to the user132, files that the user132is authorized to access, or a profile of preferences set by the user132). For example, the server machine110may store one or more files and settings (e.g., a profile of preferences) of the user132in the database115for subsequent access and retrieval (e.g., downloading to the touchscreen device130). An example of such a file is a previously saved drawing generated by the user132, or a portion of such a drawing, such as a user-generated shape.

The touchscreen device130has a touchscreen and may be used by the user132to draw one or more objects (e.g., lines or shapes, in various colors) on the touchscreen. The touchscreen device130may be configured to interoperate with the stylus150, which may be configured to access the server machine110and retrieve one or more files or settings of the user132. For example, the stylus150may be configured (e.g., with suitable hardware and software) to wirelessly communicate with the touchscreen device130(e.g., via the network190, or via another network, such as a Bluetooth network). This may have the effect of allowing the user132to access his files, settings, or both, on any touchscreen device (e.g., touchscreen device130) by bringing the stylus150to any touchscreen device and using the stylus150with that touchscreen device.

The network190may be any network that enables communication between or among machines, databases, and devices (e.g., the server machine110and the touchscreen device130). Accordingly, the network190may be a wired network, a wireless network (e.g., a mobile or cellular network), or any suitable combination thereof. The network190may include one or more portions that constitute a private network, a public network (e.g., the Internet), or any suitable combination thereof. Accordingly, the network190may include one or more portions that incorporate a local area network (LAN), a wide area network (WAN), the Internet, a mobile telephone network (e.g., a cellular network), a wired telephone network (e.g., a plain old telephone system (POTS) network), a wireless data network (e.g., a WiFi network or WiMax network), or any suitable combination thereof. Any one or more portions of the network190may communicate information via a transmission medium. As used herein, “transmission medium” refers to any intangible medium that is capable of storing, encoding, or carrying instructions for execution by a machine, and includes digital or analog communication signals or other intangible media to facilitate communication of such software.

FIG. 2is a block diagram illustrating components of the touchscreen device130, according to some example embodiments. The touchscreen device130includes a touchscreen210, which may be or include a touch-sensitive display screen and which may be configured to display visual information (e.g., one or more drawn objects, images, video, elements of a graphical user interface, or other visual content) and receive touch input generated by the user132(e.g., contact signals resulting from touches of the stylus150or a fingertip of the user132). The touchscreen device130is shown as including the touchscreen210, a touch module220, an analysis module230, and an output module240, all configured to communicate with each other (e.g., via a bus, shared memory, or a switch). As shown inFIG. 2, the touch module220, the analysis module230, and the output module240may form all or part of an application250(e.g., a drawing application or a mobile app for making and editing drawings) that is executable by the touchscreen device130.

The touch module220is configured to detect touches on the touchscreen210and distinguish touches by the guide device140from other touches on the touchscreen210(e.g., by the stylus150or by a fingertip of the user132). The touch module220may detect a set of one or more locations at which placement of the guide device140on the touchscreen210triggers a corresponding set of one or more contact points on the touchscreen210.

The analysis module230is configured to determine the position of the guide device140on the touchscreen210and the orientation (e.g., angular orientation) of the guide device140on the touchscreen210. The analysis module230may determine the position and the orientation of the guide device140by determining an axis (e.g., the longitudinal axis) of the guide device140(e.g., based on the set of locations detected by the touch module220).

The output module240is configured to display one or more lines, one or more shapes, or both, on the touchscreen210. The output module240may cause the touchscreen210to display one or more lines (e.g., guide lines) or shapes, based on the determined position and orientation of the guide device140(e.g., as determined by the analysis module230).

Any one or more of the modules described herein may be implemented using hardware (e.g., a processor of a machine) or a combination of hardware and software. For example, any module described herein may configure a processor to perform the operations described herein for that module. Moreover, any two or more of these modules may be combined into a single module, and the functions described herein for a single module may be subdivided among multiple modules. Furthermore, according to various example embodiments, modules described herein as being implemented within a single machine, database, or device may be distributed across multiple machines, databases, or devices.

FIG. 3is a top plan view of the touchscreen device130, illustrating the guide device140, the stylus150, and a body part (e.g., a body member, such as a fingertip) of the user132in contact with the touchscreen device130, according to some example embodiments. As shown, the touchscreen device130encompasses the touchscreen210, on which may be placed the guide device140, the stylus150, the body part of the user132, or any suitable combination thereof. Accordingly, one or more of the guide device140, the stylus150, and the body part of the user132may be placed in contact with the touchscreen210and accordingly trigger one or more contact signals on the touchscreen210. Each of the triggered contact signals may have a corresponding location on the touchscreen210. Moreover, moving (e.g., dragging) the placed guide device140, stylus150, or body part of the user132across the touchscreen210may trigger one or more different contact signals that correspond to different locations on the touchscreen210.

FIG. 4is a top plan view of the touchscreen device130, illustrating the guide device140, an axis440of the guide device140, and guide lines410and420being displayed on the touchscreen210of the touchscreen device130, according to some example embodiments. The guide device140is shown as having been placed on the touchscreen210. The axis440may be a longitudinal axis of the guide device140(e.g., an axis along or parallel to the longest dimension of the guide device140), an axis of symmetry of the guide device140, or both. The touch module220may detect a set of locations that correspond to the guide device140in contact with the touchscreen210, and the axis440may be determined by the analysis module230based on this set of locations. The output module240may display one or both of the guide lines410and420on the touchscreen210(e.g., by causing the touchscreen210to display one or both of the guide lines410and420). The guide lines410and420may be displayed based on (e.g., parallel to) the axis440of the guide device140.

As shown inFIG. 4, one or both of the guide lines410and420may be displayed parallel to the axis440of the guide device140. Moreover, one or both of the guide lines410and420may be displayed at a distance apart (e,g., separated by the distance, which may be a fixed distance) from the guide device140.FIG. 4illustrates the guide lines410and420extending to the edges of the touchscreen210, though in various example embodiments one or both of the guide lines410and420do not extend to the edges of the touchscreen210.

FIG. 5is a top plan view of the touchscreen device130, illustrating the guide device140, the guide lines410and420, and a drawn line510, according to some example embodiments. The drawn line510may be all or part of a previously drawn set of lines, shapes, or any suitable combination thereof (e.g., previously drawn by the user132on the touchscreen210). In the example shown inFIG. 5, both of the guide lines410and420are beyond a threshold distance of the drawn line510.

FIG. 6is a top plan view of the touchscreen device130, illustrating the guide device140and the guide lines410and420all being moved closer (e.g., together and in unison) to the drawn line510so that the guide line410is within a threshold distance501(e.g., a predetermined threshold distance) of the drawn line510, according to some example embodiments. For example, the threshold distance501may be defined as a quantity of pixels (e.g., 300 pixels), a physical distance (e.g., 1 inch), or any suitable combination thereof, on the touchscreen210. The fact that the guide line410is within the threshold distance501of the drawn line510may be determined by detecting that a point (e.g., a first point) on the guide line410is within the threshold distance501of a point (e.g., a second point) on the drawn line510.

FIG. 7is a top plan view of the touchscreen device130, illustrating the guide line410being automatically moved to coincide with the drawn line510, which may indicate that the drawn line510is automatically selected for potential editing, according to some example embodiments. As shown by the curved arrows inFIG. 7, the guide line410has moved towards the drawn line510by an amount equal to the threshold distance501from its former position depicted inFIG. 6. InFIG. 7, the guide line410now coincides with the drawn line510. Moreover, as shown inFIG. 7, one or more endpoints701and702(e.g., collinear endpoints) of the drawn line510may be highlighted (e.g., to further indicate that the drawn line510is automatically selected for potential editing). In particular, the endpoints701and702may be highlighted by displaying markers (e.g., icons) on the endpoints701and702, and such markers may be wider than the drawn line510, colored differently from the drawn line510, or any suitable combination thereof. In situations where a marker is wider than the drawn line510, the marker may be called a “bumper.”

FIG. 7also illustrates a menu710of edits, which may be displayed on the touchscreen210in response to the automatic selection of the drawn line510for potential editing (e.g., as a result of, or in response to, the guide line410moving to coincide with the drawn line510). In some example embodiments, however, the menu710of edits is presented as part of the automatic selection of the drawn line510. The menu710of edits presents one or more available editing operations that may be selected for application to the selected drawn line510or any segment thereof.FIG. 7depicts the menu710of edits as offering a “move” function (e.g., for moving the drawn line510elsewhere on the touchscreen210), a “copy” function (e.g., for copying the drawn line510into a buffer memory), a “delete” function (e,g., for deleting or erasing the drawn line510from the touchscreen210), and a “properties” function (e.g., for editing one or more properties of the drawn line510). According to various example embodiments, however, the menu710of edits may offer fewer, more, or different operations. In some example embodiments, the user132may select an available editing operation (e.g., the “move” function) by activating a control (e.g., by touching an offered function within the menu710of edits, or by pressing a hardware button on the guide device140), and the activation of the control may indicate that subsequent movement of the guide device140is input for performing the selected editing operation (e.g., the “move” function).

FIG. 8is atop plan view of the touchscreen device130, illustrating the guide device140, the guide lines410and420, and the selected drawn line510(e.g., with highlighted endpoints701and702) being moved together (e.g., in unison), according to some example embodiments. For example, supposing that the user132selected the “move” function from the menu710of edits (e.g., shown inFIG. 7), movement of the guide device140by the user132may cause the guide lines410and420and the drawn line510to be moved together and in unison. As shown by the curved arrows inFIG. 8, the guide device140, the guide lines410and420, and the drawn line510may be moved as a group to another location on the touchscreen210.

FIG. 9is a top plan view of the touchscreen device130, illustrating the guide device140, the guide lines410and420, and drawn lines510,910,920, and930, according to some example embodiments. The drawn lines510,910,920, and930may be all or part of a previously drawn set of lines, shapes, or any suitable combination thereof (e.g., previously drawn by the user132on the touchscreen210). As shown inFIG. 9, both of the guide lines410and420are beyond the threshold distance501of the drawn lines510,910,920, and930.

FIG. 10is a top plan view of the touchscreen device130, illustrating the guide device140and the guide lines410and420all being moved closer (e.g., together and in unison) to the drawn lines510,910,920, and930so that the guide line410is within the threshold distance501of the drawn lines510,910,920, and930, according to some example embodiments. For example, as noted above, the threshold distance501may be defined as a quantity of pixels (e.g., 400 pixels), a physical distance (e.g., 1.3 inches), or any suitable combination thereof, on the touchscreen210. The fact that the guide line410is within the threshold distance501of the drawn lines510,910,920, and930may be determined by detecting that a point (e.g., a first point) on the guide line410is within the threshold distance501of a point (e.g., a second point) on the drawn line510, a point (e.g., a third point) on the drawn line910, a point (e.g., a fourth point) on the drawn line920, a point (e.g., a fifth point) on the drawn line930, or any suitable combination thereof.

FIG. 11is a top plan view of the touchscreen device130, illustrating the guide line410being automatically moved to coincide with the drawn line510, which may indicate that the drawn line510is automatically selected for potential editing, according to some example embodiments. As shown inFIG. 11, the drawn line510intersects the drawn line910at the endpoint701of the drawn line510. Similarly, the drawn line510intersects the drawn line920at point901(e.g., a point that is collinear with the endpoints701and702), and the drawn line510intersects the drawn line930at the endpoint702of the drawn line510. As shown by the curved arrows inFIG. 11, the guide line410has moved towards the drawn line510by an amount equal to the threshold distance501from its former position depicted inFIG. 10. InFIG. 11, the guide line410now coincides with the drawn line510and intersects the drawn lines910,920, and930.

Moreover, as shown inFIG. 11, one or more of the endpoints701and702of the drawn line510may be highlighted (e.g., to further indicate that the drawn line510is automatically selected for potential editing). Likewise, the point901at which the guide line410intersects the drawn line920may also be highlighted. In particular, the endpoints701and702and the point901may be highlighted by displaying markers (e.g., icons) on the endpoints701and702and the point901. Such markers may be wider than the drawn lines510,910,920, and930, colored differently from the drawn lines510,910,920, and930, or any suitable combination thereof. In situations where a marker is wider than the drawn lines510,910,920, and930, the marker may be called a “bumper.”

FIG. 12is a top plan view of the touchscreen device130, illustrating the guide device140, the guide lines410and420, and the selected drawn line510(e.g., with highlighted endpoints701and702) being moved together (e.g., in unison), according to some example embodiments. For example, with the drawn line510automatically selected (e.g., for a “move” function), movement of the guide device140by the user132may cause the guide lines410and420and the drawn line510to be moved together and in unison. As shown by the curved arrows inFIG. 12, the guide device140, the guide lines410and420, and the drawn line510may be moved as a group to another location on the touchscreen210.

Furthermore, this movement of the drawn line510may modify the lengths of the drawn lines910,920, and930(e.g., by stretching or shrinking). In the example shown inFIG. 12, the lengths of the drawn lines910,920, and930are increased (e.g., stretched) by moving the endpoints701and702and the point901, where the drawn lines910,930, and920respectively intersect the selected drawn line510, as the drawn line510is being moved in accordance with movement of the guide device140.

FIG. 13is a top plan view of the touchscreen device130, illustrating a modification (e.g., a deletion) of a first segment (e.g., between the endpoint701and the point901) of the selected drawn line510, without modifying a second segment (e.g., between the point901and the endpoint702) of the selected drawn line510, according to some example embodiments. For example, automatic selection of the drawn line510(e.g., for a “delete” function) may automatically select the first and second segments individually (e.g., for the same “delete” function). Accordingly, a touch input (e.g., by the stylus150or a fingertip of the user132) on the first segment may cause the first segment to be modified (e.g., deleted) without modifying (e.g., deleting) the second segment.

FIGS. 14-16are flowcharts illustrating operations of the touchscreen device130in performing a method1400of editing on the touchscreen210, according to some example embodiments. Operations in the method1400may he performed using modules described above with respect toFIG. 2. As shown inFIG. 14, the method1400includes operations1410,1420,1430, and1440.

In operation1410, the analysis module230determines a position of the guide device140on the touchscreen210and also determines the axis440of the guide device140. This determination may be made based on one or more touches (e.g., touch input) detected by the touch module220. For example, the touch module220may detect a set of one or more locations at which placement of the guide device140on the touchscreen210triggers a corresponding set of one or more contact points on the touchscreen210, and the analysis module230may determine the position and the axis440of the guide device140based on the set of locations detected b the touch module220.

In operation1420, the output module240displays the guide line410(e.g., a first line) on the touchscreen210. As noted above, the guide line410may be displayed parallel to the axis440of the guide device140. Furthermore, the guide line410may be displayed on the touchscreen210white the touchscreen210displays the drawn line510(e.g., a second line).

In operation1430, the output module240moves the guide line410(e.g., the first line) to coincide with the drawn line510(e.g., the second line). This movement may be in response to a determination that the guide line410is within the threshold distance501of the drawn line510.

In operation1440, the output module240indicates that the drawn line510(e.g., the second line), which is now coincident with the moved guide line410(e.g., the first line), is selected (e.g., automatically) for potential editing. This may be indicated by highlighting the drawn line510, presenting the menu710of edits, or both.

As shown inFIG. 15, the method1400may also include one or more of operations1520,1522,1524,1530,1532,1540,1542,1544,1550, and1560. Operation1520may be performed as part (e.g., a precursor task, a subroutine, or a portion) of operation1420, in which the output module240displays the guide line410. In operation1520, the output module240causes the guide line410(e.g., the first line) to span multiple edges of the touchscreen210. For example, the guide line410may extend from a left edge of the touchscreen210to a right edge of the touchscreen210(e.g., as shown inFIG. 5). As additional examples, the guide line410may stretch between any edge (e.g., left, top, right, or bottom) of the touchscreen210and any other edge of the touchscreen210. This may have the effect of enabling the guide line410to remain at least partially visible on the touchscreen210(e.g., to the user132), whether or not it is displayed coincident with the drawn line510. In situations where the drawn line510is wider than the guide line410or overlaid upon the guide line410this may have the effect of enabling the drawn line510to remain at least partially visible on the touchscreen210(e.g., to the user132).

Operations1522and1524may be performed prior to operation1430, in which the output module240moves the guide line410(e.g., the first line) to coincide with the drawn line510(e.g., the second line). In operation1522, the analysis module230detects movement of the guide device140on the touchscreen210. This determination may be made based on movement of one or more touches (e.g., touch input) detected by the touch module220. For example, the touch module220may detect changes in one or more locations at which placement of the guide device140on the touchscreen210triggers a corresponding set of one or more contact points on the touchscreen210, and the analysis module230may determine that the guide device140is moving on the touchscreen210.

In operation1524, the output module240moves the guide line410based on the detected movement of the guide device140. This may have the effect of moving the guide line410in accordance with the guide device140(e.g., staying parallel to the axis440of the guide device140and displayed at a distance apart from the guide device140).

Operation1530may be performed as part of operation1430, in which the output module240moves the guide line410to coincide with the drawn line510. In operation1530, the analysis module230makes a determination that the guide line410is within the threshold distance501of the drawn line510. According to various example embodiments, this determination may be performed in response to operation1524, in which the guide line410is moved based on the detected movement of the guide device140.

As shown inFIG. 15, operation1532may be performed as part of operation1530. In operation1532, the analysis module230detects that a point (e.g., a first point) on the guide line410is within the threshold distance501of a point (e.g., a second point) on the drawn line510. According to various example embodiments, this detection may be performed in response to operation1524, in which the guide line410is moved based on the detected movement of the guide device140.

Operation1540may be performed as part of operation1440, in which the output module240indicates that the drawn line510(e.g., the second line) is selected. In operation1540, the output module240highlights one or more points (e.g., collinear points) on the selected drawn line510, which at this point is coincident with the moved guide line410(e.g., the first line). For example, the output module240may highlight the endpoints701and702of the drawn line510(e.g., as shown inFIG. 7). As another example, the endpoints701and702, as well as the point901, may be highlighted (e.g., as shown inFIG. 11).

One or more of operations1542and1544may be performed as part of operation1540, in which the output module240highlights one or more points (e.g., collinear points) on the selected drawn line510(e.g., the second line in operation1542, the output module240highlights a point (e.g., endpoint701, endpoint702, or point901) by displaying a marker (e.g., an icon) that is wider than the selected drawn line510. In operation1544, the output module240highlights a point (e.g., endpoint701, endpoint702, or point901) by displaying a marker that is colored differently than the selected drawn line510at the highlighted point. Examples of the combined effects of operations1542and1544are illustrated inFIGS. 7 and 11.

Operation1550may be performed after operation1440(e.g., in response to operation1440). In some example embodiments, however, operation1550is performed as part of operation1440. In operation1550, the output module240causes the touchscreen210to present the menu710of edits (e.g., as shown inFIG. 7). As discussed above, the menu710of edits may present one or more editing operations that are available to be selected for application to the selected drawn line510or any segment thereof.

In some situations, performance of operation1440results in the highlighting of the endpoint701(e.g., a first collinear point), the point901(e.g., a second collinear point), and the endpoint702(e.g., a third collinear point), all on the selected drawn line510(e.g., the second line). As noted above, a first segment of the drawn line510may be defined between the endpoint701and the point901, and a second segment of the drawn line510may be defined between the point901and the endpoint702. In operation1560, the output module240modifies (e.g., deletes) only the first segment of the drawn line510(e.g., without modifying the second segment of the drawn line510). Such a situation is discussed above with respect toFIG. 13. According to various example embodiments, this modification may be performed in accordance with a selection by the user132of an editing operation (e.g., presented in the menu710of edits) that is available for application to the selected drawn line510or any segment thereof.

As shown inFIG. 16, the method1400may also include one or more of operations1650,1660,1662, and1664. In operation1650, the analysis module230detects activation of a control (e.g., by the user132touching an offered function within the menu710of edits, or by the user132pressing a hardware button on the guide device140) followed by movement of the guide device140on the touchscreen210. As noted above, the activation of the control may indicate that the subsequent movement of the guide device1.40is input for performing a selected editing operation (e.g., a “move” function) on the selected drawn line510(e.g., the second line) or a segment thereof. For example, the activation of the control may indicate that the detected movement is input for moving the selected drawn line510on the touchscreen210.

In operation1660, the output module240moves the guide line410(e.g., the first line) and the selected drawn line510(e.g., the second line) in unison together based on the detected movement of the guide device140(e.g., as detected in operation1650). For example, this unison movement may be part of moving the guide device140, the guide lines410and420, and the drawn line510as a group to another location on the touchscreen210.

According to some example embodiments, operation1662may be performed as part of operation1660. In operation1662, the movement of the drawn line510accordingly modifies one or more lengths of the drawn lines910,920, and930(e.g., by stretching or shrinking). As noted above with respect toFIG. 12, the lengths of the drawn lines910,920, and930may be increased (e.g., stretched) by moving the endpoints701and702and the point901, where the drawn lines910,930, and920respectively intersect the selected drawn line510, as the drawn line510is being moved in accordance with movement of the guide device140. Similarly, the lengths of the drawn lines910,920, and930may be decreased (e.g., shrunk) by moving the endpoints701and702and the point901, as the drawn line510is being moved in accordance with movement of the guide device140.

According to certain example embodiments, operation1664may be performed as part of operation1662. In operation1664, the output module240moves the guide lines410and420and the drawn line510as a single group in accordance with the movement of the guide device140(e.g., as detected in operation1650). This may have the effect or appearance of allowing the user132to move the guide device140, the guide lines410and420, the drawn line510, along with the endpoints701and702and the point901(e.g., where the drawn lines910,930, and920respectively intersect the selected drawn line510), altogether and in unison, as a single group from one location to another location on the touchscreen210.

According to various example embodiments, one or more of the methodologies described herein may facilitate editing on a touchscreen. Moreover, one or more of the methodologies described herein may facilitate automatic selection of a previously drawn line, which may include an endpoint of an intersecting line, for potential editing. Hence, one or more of the methodologies described herein may facilitate provision of a convenient or intuitive user interface for selecting one or more parts of a drawing that is displayed on the touchscreen. Moreover, one or more of the methodologies described herein may facilitate provision of a user interface that quickly and easily allows a user to select a part of a drawing. Furthermore, one or more the methodologies described herein may facilitate provision of a user interface that automatically selects a part of a drawing for potential editing.

When these effects are considered in aggregate, one or more of the methodologies described herein may obviate a need for certain efforts or resources that otherwise would be involved in editing on a touchscreen, providing a convenient and intuitive user interface for automatic or manual selection of one or more parts of a drawing displayed on the touchscreen. Efforts expended by a user in creating and editing drawings on a touchscreen may be reduced by one or more of the methodologies described herein. Computing resources used by one or more machines, databases, or devices (e.g., within the network environment100) may similarly be reduced. Examples of such computing resources include processor cycles, network traffic, memory usage, data storage capacity, power consumption, and cooling capacity.

FIG. 17is a block diagram illustrating components of a machine1700, according to some example embodiments, able to read instructions1724from a machine-readable medium1722(e.g., a non-transitory machine-readable medium, a machine-readable storage medium, a computer-readable storage medium, or any suitable combination thereof) and perform any one or more of the methodologies discussed herein, in whole or in part. Specifically,FIG. 17shows the machine1700in the example form of a computer system (e.g., a computer) within which the instructions1724(e,g., software, a program, an application, an applet, an app, or other executable code) for causing the machine1700to perform any one or more of the methodologies discussed herein may be executed, in whole or in part.

The machine1700includes a processor1702(e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio-frequency integrated circuit (RFIC), or any suitable combination thereof), a main memory1704, and a static memory1706, which are configured to communicate with each other via a bus1708. The processor1702may contain microcircuits that are configurable, temporarily or permanently, by some or all of the instructions1724such that the processor1702is configurable to perform any one or more of the methodologies described herein, in whole or in part. For example, a set of one or more microcircuits of the processor1702may be configurable to execute one or more modules (e,g., software modules) described herein.

The machine1700may further include a graphics display1710(e.g., a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, a cathode ray tube (CRT), or any other display capable of displaying graphics or video). The machine1700may also include an alphanumeric input device1712(e.g., a keyboard or keypad), a cursor control device1714(e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, an eye tracking device, or other pointing instrument), a storage unit1716, an audio generation device1718(e.g., a sound card, an amplifier, a speaker, a headphone jack, or any suitable combination thereof), and a network interface device1720.

The storage unit1716includes the machine-readable medium1722(e.g., a tangible and non-transitory machine-readable storage medium) on which are stored the instructions1724embodying any one or more of the methodologies or functions described herein. The instructions1724may also reside, completely or at least partially, within the main memory1704, within the processor1702(e.g., within the processor's cache memory), or both, before or during execution thereof by the machine1700. Accordingly, the main memory1704and the processor1702may be considered machine-readable media (e,g., tangible and non-transitory machine-readable media). The instructions1724may be transmitted or received over the network190via the network interface device1720. For example, the network interface device1720may communicate the instructions1724using any one or more transfer protocols (e.g., hypertext transfer protocol (HTTP)).

As used herein, the term “memory” refers to a machine-readable medium able to store data temporarily or permanently and may be taken to include, but not be limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, and cache memory. While the machine-readable medium1722is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e,g., a centralized or distributed database, or associated caches and servers) able to store instructions. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, that is capable of storing the instructions1724for execution by the machine1700, such that the instructions1724, when executed by one or more processors of the machine1700(e.g., processor1702), cause the machine1700to perform any one or more of the methodologies described herein, in whole or in part. Accordingly, a “machine-readable medium” refers to a single storage apparatus or device, as well as cloud-based storage systems or storage networks that include multiple storage apparatus or devices. The term. “machine-readable medium” shall accordingly be taken to include, but not be limited to, one or more tangible (e.g., non-transitory) data repositories in the form of a solid-state memory, an optical medium, a magnetic medium, or any suitable combination thereof.

Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute software modules (e.g., code stored or otherwise embodied on a machine-readable medium or in a transmission medium), hardware modules, or any suitable combination thereof A “hardware module” is a tangible (e.g., non-transitory) unit capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.

Accordingly, the phrase “hardware module” should be understood to encompass a tangible entity, and such a tangible entity may be physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where a hardware module comprises a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different special-purpose processors (e.g., comprising different hardware modules) at different times. Software (e.g., a software module) may accordingly configure one or more processors, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.