The subject technology relates generally to user interfaces. More specifically, the subject technology relates to presenting a free-form drawing.
Oftentimes, a user making a drawing using a pen and paper can easily draw smooth lines and curves. However, making a smooth drawing using a touch screen or other electronic device (e.g., a mouse operating in conjunction with a non-touch screen) may be more difficult as some touch screens may receive touch input at low resolution (e.g., 60 frames per second), making curves or lines input to the touch screen not appear smooth or continuous.
In some aspects, a computer-implemented method for presenting a free-form drawing is provided. The method includes receiving a first point, a second point, and a third point from an input curve in the free-form drawing. The method includes determining a first quadratic Bezier curve, where a control point of the first quadratic Bezier curve includes the second point and endpoints of the first quadratic Bezier curve include the first point and the third point. The method includes providing for display of a first portion of the first quadratic Bezier curve, where endpoints of the first portion of the first quadratic Bezier curve include the first point and a second terminal point, and where the first portion of the first quadratic Bezier curve does not include the third point. The method includes receiving a fourth point from the input curve. The method includes determining a second control point, the second control point including an intersection of a first line and a second line, the first line including a control point of the first portion of the first quadratic Bezier curve and the second terminal point, the second line including the third point and the fourth point. The method includes determining a second quadratic Bezier curve, where a control point of the second quadratic Bezier curve includes the second control point and endpoints of the second quadratic Bezier curve include the second terminal point and the fourth point. The method includes providing for display of a first portion of the second quadratic Bezier curve, where endpoints of the first portion of the second quadratic Bezier curve include the second terminal point and a third terminal point, and where the first portion of the second quadratic Bezier curve does not include the fourth point.
In some aspects, a non-transitory computer-readable medium for presenting a free-form drawing is provided. The computer-readable medium includes instructions. The instructions include code for receiving a first point, a second point, and a third point from an input curve in the free-form drawing. The instructions include code for determining a first quadratic Bezier curve, where a control point of the first quadratic Bezier curve includes the second point and endpoints of the first quadratic Bezier curve include the first point and the third point. The instructions include code for providing for display of a first portion of the first quadratic Bezier curve, where endpoints of the first portion of the first quadratic Bezier curve include the first point and a second terminal point, and where the first portion of the first quadratic Bezier curve does not include the third point.
In some aspects, a system for presenting a free-form drawing is provided. The system includes one or more processors and a memory. The memory includes instructions. The instructions include code for receiving a first point, a second point, and a third point from an input curve in the free-form drawing. The instructions include code for determining a first quadratic Bezier curve, where a control point of the first quadratic Bezier curve includes the second point and endpoints of the first quadratic Bezier curve include the first point and the third point. The instructions include code for providing for display of a first portion of the first quadratic Bezier curve, where endpoints of the first portion of the first quadratic Bezier curve include the first point and a second terminal point, and where the first portion of the first quadratic Bezier curve does not include the third point. The instructions include code for receiving a fourth point from the input curve. The instructions include code for determining a second control point, the second control point including an intersection of a first line and a second line, the first line including a control point of the first portion of the first quadratic Bezier curve and the second terminal point, the second line including the third point and the fourth point. The instructions include code for determining a second quadratic Bezier curve, where a control point of the second quadratic Bezier curve includes the second control point and endpoints of the second quadratic Bezier curve include the second terminal point and the fourth point. The instructions include code for providing for display of a first portion of the second quadratic Bezier curve, where endpoints of the first portion of the second quadratic Bezier curve include the second terminal point and a third terminal point, and where the first portion of the second quadratic Bezier curve does not include the fourth point.
The foregoing discussion will be understood more readily from the following detailed description of the invention, when taken in conjunction with the accompanying drawings, in which:
As set forth above, a new approach for presenting a free-form drawing that is input using an input device and presented on a screen or other display device may be desirable.
The subject technology provides techniques for presenting a curve that is input within a free-form drawing entered using an input device and presented on a screen or other display device. The screen can be a touch screen or screen operated in conjunction with a mouse, a joystick, or any other input device. As used herein, the term “curve” encompasses its plain and ordinary meaning including, but not limited to a path displayed via a display device (e.g., a screen) derived based on a time series of points received via operation of an input device (e.g., a finger, a stylus, or a mouse) while entering a drawing, a straight line, a crooked line, a shape, etc. In some aspects, while drawing a curve, the input device may not be taken or lifted off the screen or a “mousedown” may not be terminated. A displayed curve may appear as a path from a beginning point to an ending point. The displayed curve may be represented, in memory, as a continuous Bezier curve, but may be displayed on discrete pixels via rasterization. As used herein, the term “mousedown” encompasses its plain and ordinary meaning including but not limited to a primary mouse button being held down (e.g., by a finger). The primary mouse button may be, for example, a single button on a single button mouse or a button configured to be operated by a right index finger of a user in a right handed mouse with multiple buttons.
According to some aspects, a computer receives, via an input device, a first point, a second point, and a third point from an input curve in a free-form drawing. The input curve may correspond to a path taken by an input device (e.g., a finger, a stylus, or a mouse). Each point may correspond to one or more pixels or a location on the screen. The first point may be entered before the second point, which may be entered before the third point. The computer determines a first quadratic Bezier curve having a control point at the second point and endpoints at the first point and the third point. The computer provides for display, on the screen, of a first half of the first quadratic Bezier curve, which extends from the first point to a second terminal point, approximately halfway along the first quadratic Bezier curve between the first point and the third point. As used herein, the phrase “approximately halfway” encompasses its plain and ordinary meaning including but not limited to between 35% and 65% of the way.
The computer receives a fourth point from the input curve. The computer determines a second control point. The second control point is at an intersection of a first line and a second line. The first line includes the control point of the first half of the first quadratic Bezier curve and the second terminal point. The second line includes the third point and the fourth point. The computer determines a second quadratic Bezier curve. The second quadratic Bezier curve has a control point at the second control point and endpoints at the second terminal point and the fourth point. The computer provides for display, on the screen, of a first half of the second quadratic Bezier curve, which extends from the second terminal point to a third terminal point, halfway along the second quadratic Bezier curve between the second terminal point and the fourth point.
As used herein, the phrase “quadratic Bezier curve” encompasses its plain and ordinary meaning, including but not limited to a curve that can be expressed according to equations (1) or (2) below, where equation (1) defines the quadratic Bezier curve and equation (2) is derived from and equivalent to equation (1).
B(t)=(1−t)[(1−t)P0+tP1]+t[(1−t)P1+tP2],tε[0,1] (1)
B(t)=(1−t)2P0+2(1−t)P1+t2P2,tε[0,1]. (2)
In equations (1) and (2), t is a parameterization variable between 0 and 1. B(t) represents the quadratic Bezier curve. P0 and P2 are the endpoints of the quadratic Bezier curve. P1 is the control point of the quadratic Bezier curve. A first derivative B′(t) of the quadratic Bezier curve B(t) can be expressed according to equation (3) below.
B′(t)=2(1−t)(P1−P0)+2t(P2−P1). (3)
Based on equation (3), the tangents to the curve B(t) at P0 and P2 intersect at P1. As t increases from 0 to 1, the curve B(t) departs from P0 in the direction of P1, then bends to arrive at P2 in the direction from P1.
Advantageously, the subject technology provides a real-time and online technique for presenting a curve in a free-form drawing, improving the user experience and making the user experience of drawing on a screen device with a finger or stylus similar to that of drawing on a paper with a pen. As used herein, the term “real-time” encompasses its plain and ordinary meaning including, but not limited to that the curve is displayed shortly after the curve is input by the user, without any intentional delay by the processing system (but accounting for delay due to limited processing speed of the hardware). As used herein, the term “online” encompasses its plain and ordinary meaning including, but not limited to not displaying a temporary portion of the curve that is later replaced by a different portion of the curve. In other words, once a portion of the curve is displayed on the screen, the portion is not replaced unless the user erases or takes another affirmative action to remove the portion.
According to some aspects, the presented curve is C1 continuous. As used herein, the class C0 includes each continuous function. The class C1 is the class of functions whose first derivative is a function in the class C0. Thus, in other words, the presented curve has a continuous first derivative. In some aspects, the presented curve may not be C1 continuous or may have one or more breaks in C1 continuity. In some aspects, a user may intentionally draw a curve that is not C1 continuous. For example, the user may draw a perfect “V.”
The free-form drawing 100 may be entered, for example, by a user providing input for a screen with an input device (e.g., a finger, a stylus, or a mouse) at points 105.1, 105.2, and 105.3. The user may make a continuous path with the input device and the driver for a component of a computer (e.g., a touch screen or a mouse) receiving the input via the input device may provide indications that the path taken by the input device includes the points 105.1, 105.2, and 105.3. In some cases, the driver for the component of the computer may be inaccurate, causing imperfections in the displayed curve as described above. In response, a computer generates a quadratic Bezier curve from point 105.1 to point 105.3 with a control point at point 105.2. The approximate midpoint of the quadratic Bezier curve is point 110.2. As a result of these input points, the part of the quadratic Bezier curve from point 105.1 to point 110.2 is drawn on the screen, as illustrated by the filled-in line from point 105.1 to point 110.2.
As used herein, the phrase “approximate midpoint of the quadratic Bezier curve,” encompasses its plain and ordinary meaning including but not limited to the point on the Bezier curve B(t), where t=0.5, t≈0.5, or 0.35≦t≦0.65. The parameterization variable t of the Bezier curve B(t) varies between 0 and 1 along the curve B(t).
As shown, in
Vector 120.1 extends from the third input point 105.3 of the curve to the fourth input point 105.4 of the curve. Vector 120.2 extends from the new control point 115.2 to the fourth input point 105.4 of the curve. If the dot product of vectors 120.1 and 120.2 is less than zero, the curve completion technique described in conjunction with
Vector 120.3 extends from the third input point 105.3 of the curve to the second terminal point 110.2. Vector 120.4 extends from the new control point 115.2 to the second terminal point 110.2. If the dot product of vectors 120.3 and 120.4 is less than zero, the curve completion technique described in conjunction with
Vector 120.5 extends from the second terminal point 110.2 to the control point 115.1 of the quadratic Bezier curve from point 105.1 to point 110.2. Vector 120.6 extends from the new control point 115.2 to the second terminal point 110.2. If the dot product of vectors 120.5 and 120.6 is less than zero, the curve completion technique described in conjunction with
Distance 125.1 represents a distance between the new control point 115.2 and the third point 105.3. Distance 125.2 represents the distance between the second terminal point 110.2 and the fourth point 105.4. If the distance 125.1 exceeds the distance 125.2, the curve completion technique described in conjunction with
As shown, in
In
As shown, the computing device 200 includes a central processing unit (CPU) 202, a network interface 204, a touch screen 206, and a memory 208. The CPU 202 includes one or more processors. The CPU 202 is configured to execute computer instructions that are stored in a computer-readable medium, for example, the memory 208. The network interface 204 is configured to allow the computing device 200 to transmit and receive data in a network, e.g., the Internet, a wired network, or a wireless network. The network interface 204 may include one or more network interface cards (NICs). The touch screen 206 is configured to receive input via touch. The touch can be completed by an input device, for example, a finger or a stylus. The touch screen 206 may have a single touch interface or a multi-touch interface. The touch screen 206 is also configured to display visual output. The touch screen 206 can be internal to the computing device 200 or the computing device 200 may be coupled with an external touch screen 206. The memory 208 stores data or instructions. The memory 208 may be one or more of a cache unit, a storage unit, an internal memory unit, or an external memory unit. As illustrated, the memory 208 includes a touch screen driver 210 and a drawing application 212. The computing device 200 is described in conjunction with
The touch screen driver 210 includes instructions for interfacing with the touch screen 206. For example, the touch screen driver 210 is configured to cause touch data to be input to the computing device 200 via the touch screen 206 and to cause visual output or images to be displayed via the touch screen 206.
The drawing application 212 is an application for drawing image(s) via the touch screen 206. For example, a user could move a finger or a stylus along the touch screen 206 similarly to how a user moves a pen to draw or write on a sheet of paper. The drawing application 212 receives, via the touch screen driver 210, representations of point(s) where the user touches the touch screen 206 and provides an output, via the touch screen, responsive to the received representations of point(s). For example, the drawing application 212 may display a curve connecting the point(s).
As illustrated, the drawing application 212 includes an input curve presentation module 214. The input curve presentation module 214 is configured to receive point(s) touched by the user on the touch screen 206 and to provide for display, via the touch screen 206, a curve corresponding to the point(s) touched by the user. In some examples, the input curve presentation module 214 may operate according to the process 300 described in conjunction with
As shown in
In step 304, the computer determines a first quadratic Bezier curve. The control point of the first quadratic Bezier curve is the second point. The endpoints of the first quadratic Bezier curve are the first point and the third point.
In step 306, the computer provides for display, on a screen, of a first portion of the first quadratic Bezier curve. The endpoints of the first portion of the first quadratic Bezier curve include the first point and a second terminal point (e.g., point 110.2). The first portion of the first quadratic Bezier curve does not include the third point. In some aspects, the second terminal point is the approximate midpoint of the first quadratic Bezier curve.
In step 308, the computer receives a fourth point (e.g., point 105.4) from the input curve from the screen. The fourth point can correspond to a touch on the screen.
In step 310, the computer defines a first line including the control point (e.g., point 115.1) of the first portion of the first quadratic Bezier curve and the second terminal point (e.g., point 110.2).
In step 312, the computer defines a second line including the third point and the fourth point.
As shown in
In step 316, the computer determines a second control point (e.g., point 115.2). The second control point is at the intersection of the first line and the second line.
In step 318, the computer defines a first vector (e.g., vector 120.1) from the third point to the fourth point.
In step 320, the computer defines a second vector (e.g., vector 120.2) from the second control point to the fourth point.
In step 322, the computer defines a third vector (e.g., vector 120.3) from the third point to the second terminal point.
In step 324, the computer defines fourth vector (e.g., vector 120.4 or vector 120.6) from the second control point to the second terminal point.
In step 326, the computer defines a fifth vector (e.g., vector 120.5) from the second terminal point to the control point (e.g., point 115.1) of the first portion of the first portion of the first quadratic Bezier curve.
As shown in
In step 330, the computer determines whether the dot product of the third vector and the fourth vector is less than zero. If so, the process 300 continues to step 336 of
In step 332, the computer determines whether the dot product of the fifth vector and the fourth vector is less than zero. If so, the process 300 continues to step 336 of
As shown in
In step 336, the computer determines a second prime control point (e.g., point 115.2-p). The second prime control point is at the intersection of a first prime line and the second line. The first prime line includes the control point (e.g., point 115.1) of the first portion of the first quadratic Bezier curve and the second point (e.g., point 105.2). The second line, as defined in step 312 of
In step 338, the computer determines a second prime quadratic Bezier curve. The control point of the second prime quadratic Bezier curve is the second prime control point (e.g., point 115.2-p). Endpoints of the second prime quadratic Bezier curve include the second terminal point (e.g., point 110.2) and the fourth point.
In step 340, the computer provides for display, on the screen, of a first portion of the second prime quadratic Bezier curve. The endpoints of the first portion of the second prime quadratic Bezier curve are the second terminal point and a third prime rendered point (e.g., point 110.3-p). The first portion of the second prime quadratic Bezier curve does not include the fourth point. In some aspects, the third prime rendered point is the approximate midpoint of the second prime quadratic Bezier curve. After step 340, the process 300 ends.
As shown in
In step 344, the computer provides for display, on the screen, of a first portion of the second quadratic Bezier curve. The endpoints of the first portion of the second quadratic Bezier curve are the second terminal point and a third terminal point (e.g., point 110.3). The first portion of the second quadratic Bezier curve does not include the fourth point. In some aspects, the third terminal point is the approximate midpoint of the second quadratic Bezier curve. After step 344, the process 300 ends.
The process 300 is described in
The steps 302-344 of the process 300 are described as being carried out in series according to a certain order. However, in some aspects, two or more of the steps of the process 300 may be carried out in parallel or the steps of the process 300 may be carried out in any order.
Furthermore, according to some aspects, one or more of the steps 302-344 of the process 300 may be skipped. For example, the process 300 can implement steps 302-312 of FIG. 3A, then skip directly to steps 342-344 of
According to some aspects, one or more of the steps 302-344 of the process 300 may be repeated multiple times. For example, after the fourth point from the input curve is received in step 308 of
The bus 405 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system 400. For instance, the bus 405 communicatively connects the processing unit(s) 410 with the read-only memory 420, the system memory 415, and the permanent storage device 425.
From these various memory units, the processing unit(s) 410 retrieves instructions to execute and data to process in order to execute the processes of the subject technology. The processing unit(s) can be a single processor or a multi-core processor in different aspects.
The read-only-memory (ROM) 420 stores static data and instructions that are needed by the processing unit(s) 410 and other modules of the electronic system. The permanent storage device 425, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the electronic system 400 is off. Some aspects of the subject technology use a mass-storage device (for example a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 425.
Other aspects use a removable storage device (for example a floppy disk, flash drive, and its corresponding disk drive) as the permanent storage device 425. Like the permanent storage device 425, the system memory 415 is a read-and-write memory device. However, unlike storage device 425, the system memory 415 is a volatile read-and-write memory, such a random access memory. The system memory 415 stores some of the instructions and data that the processor needs at runtime. In some aspects, the processes of the subject technology are stored in the system memory 415, the permanent storage device 425, or the read-only memory 420. For example, the various memory units include instructions for presenting a free-form drawing in accordance with some aspects. From these various memory units, the processing unit(s) 410 retrieves instructions to execute and data to process in order to execute the processes of some aspects.
The bus 405 also connects to the input and output device interfaces 430 and 435. The input device interface 430 enables the user to communicate information and select commands to the electronic system. Input devices used with input device interface 430 include, for example, alphanumeric keyboards and pointing devices (also called “cursor control devices”). Output device interfaces 435 enables, for example, the display of images generated by the electronic system 400. Output devices used with output device interface 435 include, for example, printers and display devices, for example cathode ray tubes (CRT) or liquid crystal displays (LCD). Some aspects include devices for example a screen that functions as both input and output devices.
Finally, as shown in
The above-described features and applications can be implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium). When these instructions are executed by one or more processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.
In this specification, the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage or flash storage, for example, a solid-state drive, which can be read into memory for processing by a processor. Also, in some aspects, multiple software technologies can be implemented as sub-parts of a larger program while remaining distinct software technologies. In some aspects, multiple software technologies can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software technology described here is within the scope of the subject technology. In some aspects, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
These functions described above can be implemented in digital electronic circuitry, in computer software, firmware or hardware. The techniques can be implemented using one or more computer program products. Programmable processors and computers can be included in or packaged as mobile devices. The processes and logic flows can be performed by one or more programmable processors and by one or more programmable logic circuitry. General and special purpose computing devices and storage devices can be interconnected through communication networks.
Some aspects include electronic components, for example microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media can store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, for example is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.
While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some aspects are performed by one or more integrated circuits, for example application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some aspects, such integrated circuits execute instructions that are stored on the circuit itself.
As used in this specification and any claims of this application, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification and any claims of this application, the terms “computer readable medium” and “computer readable media” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals.
To provide for interaction with a user, aspects of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
The subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an aspect of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some aspects of the disclosed subject matter, a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interaction) can be received from the client device at the server.
It is understood that any specific order or hierarchy of steps in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged, or that all illustrated steps be performed. Some of the steps may be performed simultaneously. For example, in certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components illustrated above should not be understood as requiring such separation, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
Various modifications to these aspects will be readily apparent, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, where reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (e.g., his) include the feminine and neuter gender (e.g., her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the subject technology.
A phrase, for example, an “aspect” does not imply that the aspect is essential to the subject technology or that the aspect applies to all configurations of the subject technology. A disclosure relating to an aspect may apply to all configurations, or one or more configurations. A phrase, for example, an aspect may refer to one or more aspects and vice versa. A phrase, for example, a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology. A disclosure relating to a configuration may apply to all configurations, or one or more configurations. A phrase, for example, a configuration may refer to one or more configurations and vice versa.
The word “exemplary” is used herein to mean “serving as an example or illustration.” Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs.