Freeform drawings are one of the quickest ways for a user to create content to graphically represent an image, idea or principle, because a user is free to provide an input without constraint. Freeform drawings are also referred to freehand drawing, sketching, and so on and are generally unconstrained inputs specified using freeform paths in a manner that mimics a user's ability to draw on a piece of paper using a pen or pencil. In computing devices, a user may define the freeform paths that is detected using touchscreen functionality of a display device (e.g., as a gesture, through use of a stylus), use of a cursor control device, and so on.
Although a user may quickly input these freeform paths to compose a drawing, the freeform paths are typically informal and thus not intended as a finished work. Conventional techniques have been developed to increase precision and look-and-feel of these freeform drawings, however these conventional techniques typically require detailed knowledge on the part of a user are involve a significant amount of time to perform.
Freeform drawing beautification techniques are described. An input is received by a computing device describing a freeform path drawn by a user as part of a drawing, the freeform path not formed solely as a circular arc or a circle (e.g., a fixed distance from a point) and including one or more curved elements. The drawing is examined by the computing device to locate another curved element in the drawing. One or more suggestions are constructed to adjust the freeform path by the computing device based on the located curved element in the drawing. The constructed one or more suggestions are output to adjust the freeform path by the computing device.
In one or more implementations, an input is received by a computing device describing the freeform path drawn by a user as part of a drawing. The drawing is examined by the computing device to locate other paths that already exist in the drawing. A likelihood is evaluated that the freeform path conforms individually to respective ones of a plurality of geometric rules, one or more of which consider the other paths that already exist in the drawing such that the evaluating performed by at least one said geometric rule causes output of a modification of the freeform path and a score representing a likelihood that the modification is correct. One or more suggestions are constructed to adjust the freeform path by the computing device based on the score generated by the rules and the constructed suggestions are output to adjust the freeform path by the computing device.
In one or more implementations, a system includes a freeform drawing module implemented at least partially in hardware, the freeform drawing module configured to receive an input describing a freeform path drawn by a user as part of a drawing. The freeform path may include one or more curved elements. The system also includes a beautification assistant module implemented at least partially in hardware. The beautification assistant module is configured to construct one or more suggestions to adjust the freeform path based on geometric principles such as straightness, circularity, parallelism, congruence, transformation, and curve offset, possible relative to paths previously included in the drawing.
A computing device includes one or more modules implemented at least partially in hardware. The one or more modules are configured to perform operations including receiving an input by the computing device describing a freeform path drawn by a user as part of a drawing and constructing one or more suggestions by the computing device to adjust the freeform path based on curve similarity or as a curve offset in reference to at least one located curved elements previously included in the drawing.
This Summary introduces a selection of concepts in a simplified form that are further described below in the Detailed Description. As such, this Summary is not intended to identify essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different instances in the description and the figures may indicate similar or identical items. Entities represented in the figures may be indicative of one or more entities and thus reference may be made interchangeably to single or plural forms of the entities in the discussion.
Freeform drawings such as sketching are one of the simplest ways to visualize ideas. One key advantage is that the user is not required to have specialized knowledge of particular drawing software nor any advanced drawing skills. In practice, however, these skills may become necessary to improve the visual fidelity of the resulting drawing. Conventional techniques used to make the freeform input look more precise and polished, however, require the user to have experience with drawing software. Even if the user has this experience, use of conventional drawing software could take even longer to perform than making the freeform input itself.
Freeform drawing beautification techniques are described that are used to bridge the gap between imprecise sketches and complicated use of conventional drawing software. These techniques convert an imprecise freeform input to a precise output by exploiting rules that are able to ascertain a likely intent of a user that provided the freeform input. The rules, for instance, are usable to construct suggestions that are straightened or made into arcs, or are perpendicular, parallel, offset, translated, scaled, or rotated to other paths already drawn by a user, if present. Considerations may also be made for document zoom level, distance from existing art (e.g., closer art influences the suggestions more than distance art), age of the art (e.g., recently drawn art influences suggestions more than older art), and so forth.
For example, suggestions may be made by a computing device for a newly created path by comparing it to existing paths. The set of suggestions takes into account parallelism, perpendicularity, coordinate snapping, path length, axis alignment, line reflection, circularity, curve offset, smooth curve tangents, and similarity to other paths.
To determine curve offset suggestions, a distance from a new path to existing paths is determined and situations are found where the distance is relatively constant. If the distance is relatively constant, a new path is suggested that is evenly offset.
A variety of techniques may be used to determine curve similarity. For example, an examined curve may be scaled and aligned in a way that the endpoints match the endpoints of an existing path. A distance metric is used to scale a length of the existing path, thus giving a scale independent distance. If the relative distance is sufficiently small, the examined curve is replaced with a scaled, rotated, and/or translated copy of the existing curve.
Additionally, zoom level may be considered using screen space for all distances, thereby making the suggestions scale independent. A variety of other examples are also contemplated, further discussion of which is contained in the following sections.
Techniques are also described to control adjustments made to the freeform path based on geometric rules. For example, a directed graph may be formed by a computing device by treating each of a plurality of geometric rules as an extensible set of self-contained geometric rules, each built as a black box and independent of other rules. Examples of geometric rules include endpoint snapping, end tangent alignment, line parallelism, line perpendicularity, line length equality, arc center snapping, curve offset, curve identify, curve rotation, or curve reflection. The geometric rules may be chained in the directed graph to support complex modifications of the input freeform path through successive application of the geometric rules to arrive at modifications and scores for those modifications by “walking” the directed graph using scores indicating a likelihood that a corresponding modification is correct to arrive at a final adjustment, further discussion of which is included in relation to
In the following discussion, an example environment is first described that may employ the techniques described herein. Example procedures are then described which may be performed in the example environment as well as other environments. Consequently, performance of the example procedures is not limited to the example environment and the example environment is not limited to performance of the example procedures.
Example Environment
The computing device 102 may be configured in a variety of ways. The computing device 102, for instance, may be configured as a desktop computer, a laptop computer, a mobile device (e.g., assuming a handheld configuration such as a tablet or mobile phone as illustrated), and so forth. Thus, the computing device 102 may range from full resource devices with substantial memory and processor resources (e.g., personal computers, game consoles) to a low-resource device with limited memory and/or processing resources (e.g., mobile devices). Additionally, although a single computing device 102 is shown, the computing device 102 may be representative of a plurality of different devices, such as multiple servers utilized by a business to perform operations “over the cloud” as further described in relation to
The computing device 102 is illustrated as including a freeform drawing module 106. The freeform drawing module 106 is representative of functionality of the computing device 102 to accept and process user inputs to form freeform drawings for display by the display device 104. A user, for example, may provide inputs using a cursor control device, gesture, stylus, and so on to define a freeform drawing for output. The freeform drawing module 106 is also illustrated as including a beautification assistant module 108 that is representative of functionality to automatically rectify a freeform drawing input by a user in a manner that maintains simplicity and speed of freeform sketching while still taking into account implicit geometric relations.
Examples of functionality of the beautification assistant module 108 are illustrated as a general curve assistant module 110 to support rectification of freeform drawings having general curves 112 (e.g., supports poly-curves composed of general cubic Bezier curves in addition to simple line segments and arcs), a curve offset module 114 to support freeform drawing of curve offsets 116, and an affine transformation module 118 that supports freeform drawings having affine transformations 120, e.g., by applying a linear combination of translation, rotation, scaling, reflection, and/or shearing. Other examples are also contemplated as further described in the following.
For example, a user initially draws input line 202, which remains as is because there are no other lines that serve as a basis for adjustment. Input line 204 is then drawn, which is adjusted by the beautification assistant module 108 to form adjusted line 204′ to form a mirror image of input line 202 through a process referred to as reflection. Input line 206 is then drawn by a user, which is then adjusted by the beautification assistant module 108 to have a symmetric curve as shown for adjusted line 206′ through arc fitting. Similarly, input line 208 is drawn by a user and adjusted by the beautification assistant module 108 to have a symmetric curve as shown for adjusted line 208′.
An input line 210 is then drawn to represent a plant leaf, which is sufficiently different from other lines and as such as not adjusted. Curve identity, reflection, and scaling are then used to adjust subsequent input lines 212, 214 to form adjusted lines 212′, 214′ that are based at least in part on adjusted line 210′ and as such mimic characteristics of the plant leaf.
Thus, as the freeform drawing continues, more suitable geometric constraints emerge and are applied by the beautification assistant module 108 as suggestions, such as curve identity (e.g., stages 2, 6, 7), reflection (e.g., stages 2 and 6) and arc fitting (stages 3,4). Thus, as is readily apparent through comparison with the input 218 and final output freeform art at the result 216 the beautification assistant module 108 supports efficient freeform drawing with results that are ready for sharing with others.
The beautification assistant module 108 treats each of these geometric rules 302, 304 as an extensible set of self-contained geometric rules, each built as a black box and independent of other rules. Each of the geometric rules 302, 304 represents a single geometric property, such as having an endpoint snapped or as being a reflected version of an existing path.
The input to each rule is an input path 306 including an end-to-end connected series of Bezier curves, and a set of existing resolved paths 308. The beautification assistant module 108, operating as a black box, evaluates the likelihood that the path conforms to the geometric property, considering the resolved paths. The beautification assistant module 108 then outputs zero or more modified path versions 310, 312. Each modified path version 310, 312 has a corresponding score 314, 316 representing a likelihood that the modification is correct. For example, a same-line-length rule would, for input that is a line segment, create output versions that are the same lengths as existing line segments, along with scores that indicate how close the segment's initial length was to the modified length. Thus, the scores may reflect an amount of adjustment performed by respective rules to achieve a respective suggestion.
Each geometric rule 302, 304 also has some threshold that determines that the score for a modification is too low, and in that case it does not output the path. The geometric rules 302, 304 also mark properties of the path that have become fixed and therefore can no longer be modified by future rules. For example, the endpoint-snapping rule marks one or both endpoint coordinates of a path as fixed. The same-line-length and parallel-line rules do not attempt to modify a segment with two fixed endpoints. Since the geometric rules 302, 304 do not depend on each other, new geometric rules may be readily added to support additional geometric traits.
In this example, the beautification assistant module 108 evaluates three geometric rules, endpoint snapping, perpendicularity, and length equality. An existing path 404 is fixed and a new path 406 is added, the combination of which becomes a root node 402 of an evaluation graph and the expansion begins by testing each of the rules on it. For child node 408, for instance, an endpoint snapping geometric rule is applied, for child node 410 a perpendicularity geometric rule is applied, and for child node 412 a length equality geometric rule is applied.
A likelihood score is calculated for each rule application, examples of which are illustrated as “1.0,” “0.5,” and “0.75,” respectively. The tree is expanded using a best-first search scheme, until leaf nodes are reached. An example of this is addition of grandchild nodes 414, 416 from child node 408 due to application of perpendicularity and length equality geometric rules, respectively. Great-grandchild node 418 is then formed through application of the perpendicularity rule to grandchild node 416. Thus, each branch of the tree corresponds to a unique ordered application of rules and the branch is given a weight corresponding to the rules scores of the branch. Therefore, to find a suitable transformations to a user input, the beautification assistant module 108 traverses down the tree and bases an adjustment on the corresponding scores.
Due to significant redundancy in the search space, leaf nodes may contain duplicate suggestions. Therefore, the beautification assistant module 108 is configured to prune the graph during the expansion step using information from nodes that were already reached, which is described in further detail in the following.
Formally, assume a node “ni” with Bezier path “pi”, the set of resolved paths “S,” and the set of all rules “rjϵR”, an output set “Pi={rj(pi,S)}.” A child node “nij” is created for each “pjiϵ{rj(pi, S)}”. If “Pi” is empty, “ni” is a leaf node. As previously described, each rule outputs a likelihood score for the transformed path. Since a comparison is performed among different rules, the likelihood score is normalized into the interval (0,1). All scores from the nodes visited are used while descending into a particular leaf node “n” to calculate an overall likelihood score for the chained transformation, an example of which follows although it should be readily apparent that other techniques are also usable to compute the score:
where “d” is the depth of “n” in the tree, “ak” is the kth ancestor of “n,” and (rj(ak,S)) denotes the likelihood score from applying rule “rj” to node ak.”
The search tree is expanded in a best-first search manner, where the order of visiting the child nodes is determined by the overall score of the node's path from Equation 1 above. While traversing the tree, a suggested set “Q” of leaf nodes are constructed, which is initially empty and is filled as the leaf nodes are encountered in the traversal. Once not empty, “Q” helps prune the search. Before a particular subtree is expanded, the geometric properties of its root is compared with the properties of each path “qϵQ”.
If each of the tested properties are found in some path “q,” the whole subtree can be omitted from further processing as shown in an example 500 of search graph pruning of
In one or more implementations, in order to keep a user from being exposed to too many suggestions, a size of “Q” is limited. For example, since the graph is traversed in a best-first manner, the search is stopped after finding some number of unique leaf nodes, e.g., ten.
Example Rules and Operations
Geometric transformations are evaluated by the beautification assistant module 108 by testing various properties of the new path and a set of previously drawn and processed paths. While testing of some properties are relatively simple to perform, others such as path matching involve more complex processing. The rules are first summarized as described in relation to
Line Detection
The straightness is estimated by measuring a ratio between length of a path and a distance between its endpoints.
Arc Detection
The approximate curvature is computed by calculating angles between tangents of successive path sample. A check is performed to determine whether it is sufficiently uniform and whether the angular span is within an expected range, to prevent treating slightly bent lines or spirals as circular arcs. When the span is close to 2 pi or the path is closed, it is replaced with a full circle.
Endpoint Snapping
A distance between each of the path endpoints and resolved endpoints is examined. Additionally, snapping to inner parts of the resolved paths is also examined. Specialized tests based on the properties of line segments and circular arcs lower the computational complexity of this operation.
End Tangent Alignment
If the path endpoint is snapped, the angle between its tangent and the tangent of the point to which it is attached is measured. If the tangents are sufficiently close, the path is adjusted to make the attachment smooth.
Line Parallelism and Perpendicularity
The angle between two line segment paths is compared with the angle needed to satisfy the parallelism or perpendicularity constraint. The distance is taken between the line segments is also taken into account to slightly increase the priority of nearby paths.
Line Length Equality
The ratio of length of both tested line segments is evaluated. As in the previous case, the mutual distance is incorporated into a final likelihood computation.
Arc and Circle Center Snapping
Similar to endpoint snapping, a distance between the current arc center and potential ones and potential ones are evaluated. In this case endpoints of other paths, other centers, centers of rotations, and centers of regular polygons composed from a series of line segments are evaluated.
Path Identity
To detect that two paths have similar shapes, the paths are aligned and their discrete Frechet distance used. Different scales are also taken into account, further discussion of this is included below in the Path Matching section.
Path Offset
Offset paths generalize line parallelism. To detect these paths, the beautification assistant module 108 progresses along the tested path and measures its distance to the reference path, additional discussion of which is included in the Offset Path Detection section below.
Path Rotational Symmetry
For a tested path “x” and resolved reference “y” path of the “same shape” (as determined by successful application of the path-identity rule), the optimal rotation matrix is found, i.e., center point “c” and angle of rotation “a” that transforms “y” to “y′”. Similarly to arc center snapping, an attempt is also made to adjust the position of the rotation center and snap it to some existing point. Since these techniques work in incremental fashion, the angle of rotation is adjusted to the nearest integer quotation of 2 pi, so that additional paths can be placed to form full n-fold rotational symmetry.
Path Reflection Symmetry
Similar to rotational symmetry, an axis is found that minimized the difference between the reflected version of an existing path “y” and the tested path “x.” Nearby existing reflection axes are tested, and an attempt is made the found axis parallel with a coordinate axis.
View-Space Distances
Testing paths for different geometric properties involves measuring lengths and distances. While many path attributes may be compared using relative values, absolute values are also necessary, e.g., for snapping endpoints. Using absolute values, however, leads to unexpected behavior when a user interface (e.g., canvas) is zoomed in and out. To eliminate this problem, distances are computed in view-space pixels, making all distance tests magnification-independent.
Path Sampling
Analytical work with cubic Bezier curves is challenging. Some practical tasks, such as finding a path's length or the minimal distance between two paths can only be solved using numerical approaches. Therefore, operations are performed on sampled paths. Since the resolved paths do not change, samples for resolved paths may be precomputed and stored, with sampling limited to new paths. Furthermore, to reduce the memory and computational complexity of different path comparisons, the sampling may be simplified, e.g., using a Ramer-Douglas-Peucker algorithm. For a polyline “p”, this finds a reduced version “p′” with fewer points within given tolerance “s”, i.e., all points of “p′” lie within the distance “s” of the original path as shown in an example implementation 600 of
Path Matching
Path matching involves resolving higher-level geometric relations like path rotational and reflection symmetry. To identify these relations, paths are first classified that are the “same shape,” e.g., paths that are different instances of the same “template.”
To evaluate the similarity between two sampled paths “pa” and “pb,” a similarity measure may be employed, such as a discrete variant of Frechet distances. Formally, it is defined as follows: let (M,d) be a metric space and let the path be defined as a continuous mapping “f:[a,b]→M,” where a, bϵ, a≤b. Given two paths “f:[a,b]→M,” and “g:[al,bl]→M”, the Frechet distance “δF” is defined as:
where “α” (resp. B) is an arbitrary continuous non-decreasing function from [0,1] onto “[a,b] resp. [a′,b′]”.
Intuitively, it is usually described using a leash metaphor: a man walks from the beginning to the end of one path while his dog on a leash walks from the beginning to the end of the other. They can vary their speeds but they cannot walk backwards. The Frechet distance is the length of the shortest leash that can allow them to successfully traverse the paths.
This can be computed for two point sets using a dynamic programming approach. The extension to point and line-segment sets at 704 is then straightforward. However, the measure takes into account the absolute positions of the sample points, while it is the relative distance that is desired.
At the third stage 806, bounding boxes 814, 816 of the respective first and second paths 810, 812 from the second stage 804 are scaled to match each other, which may be perform non-uniformly. The discrete Frechet distance is computed divided by the length of the tested path to obtain the relative similarity measure. Because the second path 812 (i.e., the “new” path) might be flipped and/or reversed version of the first path 810 (i.e., the “existing” path), four tests are performed between them to determine the correct match.
Thus, for the illustrated example of the first and second paths 810, 812, the endpoints of the paths are matched at the second stage 804 and are then scaled so that the bounding boxes match at the third stage 806. If the second “new” path 812 is then evaluated as being sufficiently similar to the first “existing” path 810, an adjusted path 818 is created as a properly-positioned instance of the first “existing” path 810 to replace the second path as shown at the fourth stage 808. This is but one of a variety of ways to perform path matching.
Offset Path Detection
Offset paths extend the concept of parallelism from line segments to paths. To detect them, a normal line is constructed from each sample of the new path. If the line hits an existing reference path, the distance is measured between the sample point and the closet point on the reference. Note that the distance between the sample point and the line-path intersection is not used, since this would require the user to precisely draw the approximate offset path.
The measured distance is stored along with its sign, i.e., on which side of the new path the hit occurred. The hit information is then sorted according to the distance, creating a cumulative distribution function, and two values corresponding to (50+/−n)-th percentiles, with “n” being twenty-five in an example implementation. By comparing the sign and the distance values of these samples, the likelihood of the new path being an offset path of the reference path is calculated.
Example Results
On top of this framework, a system is developed of self-contained rules representing different geometric transformations, which can be extended. Various rules are implemented that can work not only with simple primitives like line segments and circular arcs, but also with general Bezier curves, for which it showed how to detect previously unsupported relations such as curve identity or rotational and reflection symmetry. With the ability to process general curves, these techniques extend the range of applicability of freeform sketching, which was conventionally limited to drawings in specialized, highly-structured applications like forms or technical diagrams. This advantage is further promoted by the widespread adoption of touch-centric devices. Further discussion of these and other examples is contained in the following section.
Example Procedures
The following discussion describes techniques that may be implemented utilizing the previously described systems and devices. Aspects of each of the procedures may be implemented in hardware, firmware, or software, or a combination thereof. The procedures are shown as a set of blocks that specify operations performed by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks. In portions of the following discussion, reference will be made to
The drawing is examined by the computing device to locate another curved element in the drawing (block 1504). The beautification assistant module 108, for instance, may examine the drawing to locate previously input freeform paths or other paths that include curved elements.
One or more suggestions are constructed to adjust the freeform path by the computing device based on the located curved element in the drawing (block 1506). The suggestions may be based on a curve offset, curve similarity, and so on as described above. The constructed one or more suggestions are output to adjust the freeform path by the computing device (block 1508). The user may be provided with the suggestions in the user interface that are selectable, the suggestions may be used to automatically adjust the freeform path, and so forth.
A likelihood is evaluated that the freeform path conforms individually to respective ones of a plurality of geometric rules, one or more of which consider the other paths that already exist in the drawing such that the evaluation performed by at least one of the geometric rules causes output of a modification of the freeform path and a score representing a likelihood that the modification is correct (block 1606) The beautification assistant module 108, for instance, may form a directed graph as shown in
One or more suggestions are constructed to adjust the freeform path by the computing device based on the scores generated by the rules (block 1608). The one or more suggestions, for instance, may be based on the modifications and corresponding score representing the likelihood that the modification is correct. The constructed suggestions are then output to adjust the freeform path by the computing device (block 1610) and as such may act to beautify the paths in the drawing input by a user based on other paths that already exist in the drawing. A variety of other examples are also contemplated as described above.
Example System and Device
The example computing device 1702 as illustrated includes a processing system 1704, one or more computer-readable media 1706, and one or more I/O interface 1708 that are communicatively coupled, one to another. Although not shown, the computing device 1702 may further include a system bus or other data and command transfer system that couples the various components, one to another. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures. A variety of other examples are also contemplated, such as control and data lines.
The processing system 1704 is representative of functionality to perform one or more operations using hardware. Accordingly, the processing system 1704 is illustrated as including hardware element 1710 that may be configured as processors, functional blocks, and so forth. This may include implementation in hardware as an application specific integrated circuit or other logic device formed using one or more semiconductors. The hardware elements 1710 are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, processors may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)). In such a context, processor-executable instructions may be electronically-executable instructions.
The computer-readable storage media 1706 is illustrated as including memory/storage 1712. The memory/storage 1712 represents memory/storage capacity associated with one or more computer-readable media. The memory/storage component 1712 may include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). The memory/storage component 1712 may include fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., Flash memory, a removable hard drive, an optical disc, and so forth). The computer-readable media 1706 may be configured in a variety of other ways as further described below.
Input/output interface(s) 1708 are representative of functionality to allow a user to enter commands and information to computing device 1702, and also allow information to be presented to the user and/or other components or devices using various input/output devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, touch functionality (e.g., capacitive or other sensors that are configured to detect physical touch), a camera (e.g., which may employ visible or non-visible wavelengths such as infrared frequencies to recognize movement as gestures that do not involve touch), and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, tactile-response device, and so forth. Thus, the computing device 1702 may be configured in a variety of ways as further described below to support user interaction.
Various techniques may be described herein in the general context of software, hardware elements, or program modules. Generally, such modules include routines, programs, objects, elements, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. The terms “module,” “functionality,” and “component” as used herein generally represent software, firmware, hardware, or a combination thereof. The features of the techniques described herein are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
An implementation of the described modules and techniques may be stored on or transmitted across some form of computer-readable media. The computer-readable media may include a variety of media that may be accessed by the computing device 1702. By way of example, and not limitation, computer-readable media may include “computer-readable storage media” and “computer-readable signal media.”
“Computer-readable storage media” may refer to media and/or devices that enable persistent and/or non-transitory storage of information in contrast to mere signal transmission, carrier waves, or signals per se. Thus, computer-readable storage media refers to non-signal bearing media. The computer-readable storage media includes hardware such as volatile and non-volatile, removable and non-removable media and/or storage devices implemented in a method or technology suitable for storage of information such as computer readable instructions, data structures, program modules, logic elements/circuits, or other data. Examples of computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, tangible media, or article of manufacture suitable to store the desired information and which may be accessed by a computer.
“Computer-readable signal media” may refer to a signal-bearing medium that is configured to transmit instructions to the hardware of the computing device 1702, such as via a network. Signal media typically may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism. Signal media also include any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.
As previously described, hardware elements 1710 and computer-readable media 1706 are representative of modules, programmable device logic and/or fixed device logic implemented in a hardware form that may be employed in some embodiments to implement at least some aspects of the techniques described herein, such as to perform one or more instructions. Hardware may include components of an integrated circuit or on-chip system, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon or other hardware. In this context, hardware may operate as a processing device that performs program tasks defined by instructions and/or logic embodied by the hardware as well as a hardware utilized to store instructions for execution, e.g., the computer-readable storage media described previously.
Combinations of the foregoing may also be employed to implement various techniques described herein. Accordingly, software, hardware, or executable modules may be implemented as one or more instructions and/or logic embodied on some form of computer-readable storage media and/or by one or more hardware elements 1710. The computing device 1702 may be configured to implement particular instructions and/or functions corresponding to the software and/or hardware modules. Accordingly, implementation of a module that is executable by the computing device 1702 as software may be achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elements 1710 of the processing system 1704. The instructions and/or functions may be executable/operable by one or more articles of manufacture (for example, one or more computing devices 1702 and/or processing systems 1704) to implement techniques, modules, and examples described herein.
The techniques described herein may be supported by various configurations of the computing device 1702 and are not limited to the specific examples of the techniques described herein. This functionality may also be implemented all or in part through use of a distributed system, such as over a “cloud” 1714 via a platform 1716 as described below.
The cloud 1714 includes and/or is representative of a platform 1716 for resources 1718. The platform 1716 abstracts underlying functionality of hardware (e.g., servers) and software resources of the cloud 1714. The resources 1718 may include applications and/or data that can be utilized while computer processing is executed on servers that are remote from the computing device 1702. Resources 1718 can also include services provided over the Internet and/or through a subscriber network, such as a cellular or Wi-Fi network.
The platform 1716 may abstract resources and functions to connect the computing device 1702 with other computing devices. The platform 1716 may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the resources 1718 that are implemented via the platform 1716. Accordingly, in an interconnected device embodiment, implementation of functionality described herein may be distributed throughout the system 1700. For example, the functionality may be implemented in part on the computing device 1702 as well as via the platform 1716 that abstracts the functionality of the cloud 1714.
Although the invention has been described in language specific to structural features and/or methodological acts, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claimed invention.
Number | Name | Date | Kind |
---|---|---|---|
6459442 | Edwards | Oct 2002 | B1 |
20060227140 | Ramani | Oct 2006 | A1 |
20110038543 | Bhattacharyya | Feb 2011 | A1 |
20110164041 | Miura | Jul 2011 | A1 |
Entry |
---|
“Freeform User Interfaces for Graphical Computing” (A doctoral dissertation, Graduate School of Information Engineering, The University of Tokyo, Dec. 1999, by Takeo Igarashi). |
Igarashi,“Pegasus: A Drawing System for Rapid Geometric Design”, In Proceedings: CHI'98 Conference Summary on Human Factors in Computing Systems, 1998, 2 pages. |
Igarashi,“Interactiye Beautification: A Technique for Rapid Geometric Design”, UIST, Proceedings of the 10th annual ACM symposium on User Interface Software and Technology, 1997, 10 pages. |
Murugappan,“Towards Beautification of Freehand Sketches using Suggestions”, In Proceedings: The 6th EUROGRAPHICS Workshop on Sketch-Based Interfaces and Modeling, 2009, 8 pages. |
Number | Date | Country | |
---|---|---|---|
20160351170 A1 | Dec 2016 | US |