Dynamic adjustment of planograms on electronic door displays of refrigerated display cases
12541297 ยท 2026-02-03
Assignee
Inventors
- Adrian Rodriguez (Santa Clarita, CA, US)
- Pedro Almaguer (North Hills, CA, US)
- Francisco Flores (Valencia, CA, US)
Cpc classification
H04N13/383
ELECTRICITY
F25D23/028
MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
G03H1/2294
PHYSICS
G06F3/0488
PHYSICS
F25D23/021
MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
F25D2700/04
MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
F25D2400/361
MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
International classification
G06F3/0488
PHYSICS
F25D23/02
MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
G03H1/00
PHYSICS
G06F3/14
PHYSICS
Abstract
Methods and systems are disclosed for dynamic adjustment of planograms on electronic door displays of refrigerated display cases. A display system for a refrigerated display case includes: a movable door configured to provide access to the refrigerated display case; a touchscreen display mounted to the door; at least one processor in electronic communication with the touchscreen display and configured to perform operations comprising: providing, for presentation by the touchscreen display, first image data, wherein the first image data depicts one or more products stored within the refrigerated display case; detecting user input at a first location of the touchscreen display, wherein the user input includes a selection of a product stored within the refrigerated display case; and in response to detecting the user input, providing second image data for presentation in addition to the first image data, wherein the second image data depicts information related to the selected product.
Claims
1. A display system for a refrigerated display case, comprising: a movable door configured to provide access to the refrigerated display case; a touchscreen display mounted to the door, the touchscreen spanning a majority of a front surface of the door; at least one processor in electronic communication with the touchscreen display; and a data store coupled to the at least one processor having instructions stored thereon which, when executed by the at least one processor, causes the at least one processor to perform operations comprising: providing, for presentation by the touchscreen display, first image data, wherein the first image data depicts a planogram representing a respective location of one or more products stored within the refrigerated display case relative to the door; detecting user input at a first location of the touchscreen display, wherein the user input includes a selection of a product stored within the refrigerated display case; determining a location of the user relative to the touchscreen display; and in response to detecting the user input: providing second image data for presentation in addition to the first image data, wherein the second image data depicts information related to the selected product, and adjusting the presentation of the first image data representing the planogram based on the location of the user relative to the touchscreen display such that the user is not obstructing a view of the first image data by another user.
2. The display system of claim 1, the operations comprising: in response to detecting the user input: providing the second image data for presentation by the touchscreen display in a first area of the touchscreen display that includes the first location; and wherein adjusting the presentation of the first image data comprises providing the first image data for presentation by the touchscreen display in a second area of the touchscreen display that excludes the first location.
3. The display system of claim 2, wherein providing the first image data for presentation by the touchscreen display in the second area of the touchscreen display that excludes the first area comprises reducing a display size of the first image data.
4. A display system for a refrigerated display case, comprising: a movable door configured to provide access to the refrigerated display case; a touchscreen display mounted to the door; at least one processor in electronic communication with the touchscreen display; and a data store coupled to the at least one processor having instructions stored thereon which, when executed by the at least one processor, causes the at least one processor to perform operations comprising: providing, for presentation by the touchscreen display, first image data, wherein the first image data depicts one or more products stored within the refrigerated display case; detecting user input at a first location of the touchscreen display, wherein the user input includes a selection of a product stored within the refrigerated display case; and in response to detecting the user input, providing second image data for presentation in addition to the first image data, wherein the second image data depicts information related to the selected product, and wherein the second image data is provided for presentation by a second, different display in communication with the at least one processor.
5. A display system for a refrigerated display case, comprising: a movable door configured to provide access to the refrigerated display case; a touchscreen display mounted to the door; at least one processor in electronic communication with the touchscreen display; and a data store coupled to the at least one processor having instructions stored thereon which, when executed by the at least one processor, causes the at least one processor to perform operations comprising: providing, for presentation by the touchscreen display, first image data, wherein the first image data depicts one or more products stored within the refrigerated display case; detecting user input at a first location of the touchscreen display, wherein the user input includes a selection of a product stored within the refrigerated display case; and in response to detecting the user input providing second image data for presentation in addition to the first image data, wherein the second image data depicts information related to the selected product, and wherein the second image data is provided for presentation by the touchscreen display, and wherein the first image data is provided for presentation by a second, different display in communication with the at least one processor.
6. The display system of claim 1, wherein the touchscreen display includes a holographic projector, the operations comprising providing the second image data for presentation by the holographic projector.
7. The display system of claim 1, the operations comprising: detecting an electromagnetic signal from a mobile device; and in response to detecting the electromagnetic signal from the mobile device, providing the second image data for presentation by a display of the mobile device.
8. The display system of claim 1, wherein the touchscreen display comprises an autostereoscopic display configured to present multiple different images at respective multiple different viewing angles.
9. The display system of claim 8, the operations comprising: in response to detecting the user input, determining a viewing angle of the user.
10. The display system of claim 9, the operations comprising: providing the second image data for presentation by the touchscreen display, wherein the second image data is visible at the viewing angle of the user; and providing the first image data for presentation by the touchscreen display, wherein the first image data is not visible at the viewing angle of the user.
11. The display system of claim 9, the operations comprising: providing the second image data for presentation by the touchscreen display, wherein: the second image data is visible within a cone of viewing angles relative to the touchscreen display, the cone of viewing angles including the viewing angle of the user; and the second image data is not visible outside of the cone of viewing angles.
12. The display system of claim 9, the operations comprising: determining the viewing angle of the user based on the first location of the touchscreen display at which the user input was detected.
13. The display system of claim 9, comprising a sensor configured to generate sensor data indicating a user location, the operations comprising: obtaining sensor data generated by the sensor; and determining the viewing angle of the user based on the sensor data.
14. The display system of claim 13, wherein the sensor comprises at least one of a camera, an infrared sensor, a radar sensor, an ultrasonic sensor, and a motion sensor.
15. The display system of claim 1, the operations comprising: detecting a second user input at a second location of the touchscreen display, wherein the second user input includes a selection of a second product stored within the refrigerated display case; and in response to detecting the second user input, providing third image data for presentation in addition to the first image data and the second image data, wherein the third image data depicts information related to the second product.
16. The display system of claim 15, the operations comprising: in response to detecting the second user input: providing the third image data for presentation by the touchscreen display in a second area of the touchscreen display that includes the second location; and providing the first image data for presentation by the touchscreen display in a third area of the touchscreen display that excludes the first location and the second location.
17. The display system of claim 1, wherein: an internal volume of the refrigerated display case holds an inventory including the one or more products; and the first image data includes a planogram representing the inventory.
18. The display system of claim 1, wherein the movable door comprises an insulated panel.
19. The display system of claim 1, comprising a second display separate from the door and mounted next to the door, the second display in communication with the at least one processor, and wherein the operations comprise, in response to detecting the user input: providing the second image data for presentation by the touchscreen display; and providing the first image data for presentation by the second display.
20. The display system of claim 19, wherein the second display is mounted above the door.
21. The display system of claim 5, wherein the second display is separate from the door and mounted next to the door.
Description
DESCRIPTION OF DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14) Like reference numbers and designations in the various drawings indicate like elements.
DETAILED DESCRIPTION
(15)
(16) The refrigerated display case system 10 includes a container 12. Container 12 includes a top wall 14, a bottom wall 16, a left side wall 18, a right side wall 20, a rear wall (not shown), and a front portion 22 defining a temperature-controlled space. The container 12 encloses an internal volume of the refrigerated display case. The internal volume of the container 12 is configured to hold an inventory of products.
(17) Front portion 22 includes an opening into the temperature-controlled space. A thermal frame 24 can be mounted at least partially within the opening. The thermal frame 24 includes a plurality of perimeter frame segments (i.e., a header or top frame segment 26, a sill or bottom frame segment 28, a left side frame segment 30, and a right side frame segment 32) forming a closed shape along a perimeter of the opening. In some implementations, the thermal frame 24 includes one or more mullion frame segments 34 dividing the opening into multiple smaller openings. For example,
(18) Refrigerated display case system 10 includes one or more movable doors. The movable doors are configured to provide access to the internal volume of the refrigerated display case system 10. In some examples, display case doors 100 are pivotally mounted on the thermal frame 24 by hinges 38. In some implementations, the display case doors 100 are sliding doors configured to open and close by sliding relative to the thermal frame 24. The example display case doors 100 illustrated in
(19)
(20) The display case door 100 include an electronic display assembly 102 that is coupled to door frame 106 by way of mounting blocks 108. Electronic display assembly 102 can be mounted to door frame 106 so as to overlay all or a majority of insulated panel assembly 104. Electronic display assembly 102 includes electronic display 110. The electronic display assembly 102 can be mounted in front of an insulated panel assembly (e.g., a glass insulated panel assembly or an opaque foam panel assembly) in a door frame secured to an edge of the insulated panel assembly.
(21) The electronic display 110 can be a touchscreen display. A touchscreen display includes a touch-sensitive surface to detect user input through a touch. A touchscreen display uses sensors (e.g., capacitive touch sensors, optical sensors, resistive sensors) to detect touch input. In some examples, touchscreen panels are overlaid on top of display plates to enable both touch screen and display functionalities.
(22) The electronic display assembly 102 can include, e.g., a video display in electronic communication with control circuitry configured to display video and/or images including, but not limited to, images of products contained in a display case, advertisements, and nutritional information. In some examples, the electronic display is configured to present a planogram representing inventory held within the internal volume of the refrigerated display case. A planogram is a visual representation of the placement of retail products displayed for sale. For example, a planogram can depict the placement of merchandise on shelves within the refrigerated display case.
(23) In some implementations, a display case door includes one or more bezels. The bezels can cover all or a portion of the mounting blocks and other components for mounting the electronic display assembly 102 to the movable door. The bezels can create a recognized UL wireway.
(24) Insulated panel assembly 104 can include one or more panes of glass. In some implementations, insulated panel assembly 104 includes two or more layers of transparent panes bounding a sealed space in between, forming a sealed glass unit (SGU). Door frame 106 extends around and is secured to a peripheral edge of insulated panel assembly 104. As further described in detail below, door frame 106 defines a channel or tunnel that receives one or more power cables that provide electrical power to the electronic display assembly. In some implementations, insulated panel assembly 104 can be opaque. For example, insulated panel assembly can include a foam panel, e.g., formed by spray foam formed to an interior shape of the door frame.
(25) Display case door 100 can include a single electronic display or multiple electronic displays. For example, display case door 100 can include two or more electronic displays vertically stacked and together covering the insulated panel assembly 104.
(26) Electronic display 110 can include, but is not limited to, a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, a field emission display (FED), a plasma display panel (PDP), or an electroluminescent (EL) display. For example, electronic display 110 can be a smart television with streaming capabilities for receiving content over a wireless network (e.g., a Wi-Fi network). Electronic display 110 is generally opaque and, when mounted to the movable display case door 100 partially or completely obstructs the view through the insulated panel assembly 104. In some implementations, electronic display 110 can be a custom sized display configured to correspond with dimensions of the display case door 100. In some implementations, electronic display 110 can be a commercial off the shelf (COTS) display.
(27) In some implementations, electronic display 110 is a touchscreen display. A touchscreen display is an electronic display screen that is also an input device. A user interacts with the display screen by using hand gestures and fingertip movements to tap pictures, move elements, and type words on the screen. Touchscreens can be pressure-sensitive and/or contact sensitive. Touchscreens can be used or manipulated using, for example, fingers or a stylus.
(28)
(29) Display case door 100 includes handle 130. Electronic display assembly 102 includes circuitry module 132, top sensor 134, and handle-side sensor 136. The outside edges of circuitry module 132 are secured to left rail 206 and right rail 208 of door frame 106. Left bezel 124 and right bezel 128 can be attached to their respective rails. Top sensor 134 passes through an opening or cutout in top bezel 126. Handle-side sensor 136 is accessible through a corresponding aperture in right bezel 128.
(30) The sensors 134, 136 can include, but are not limited to, a contact sensor (e.g., contact switch), a movement sensor (e.g., accelerometer, gyroscope, rheostat), a proximity sensor (e.g., optical sensor, infrared sensor, ultrasonic sensor, capacitive sensor, inductive sensor, magnetic sensor), or any combination thereof. In some examples, the sensors 134, 136 include multiple different types of sensors integrated into a single device.
(31) Although top sensor 134 is shown as being located at a top of the door 100, and handle-side sensor 136 is shown as being located at a side of the door 100, the sensors 134, 136 can be located at other locations. For example, the sensors 134, 136 can be attached at another position of the door such a bottom corner or at an edge of the door 100 away from a corner, or coupled to the hinge 38. In some examples, the sensors 134, 136 are attached to a surface of the door 100. In some examples, the sensors 134, 136 are attached to a container (e.g., container 12 of the display case system 10). In some examples, the refrigerated display case system includes multiple sensors. The multiple sensors can be co-located or can be located in multiple different locations of the refrigerated display case system.
(32) In some implementations, the sensors 134, 136 can detect conditions including, but not limited to, light levels, temperature, and humidity levels. The sensors 134, 136 can be configured to share data with media players and/or personal computers through a universal serial bus (USB) connection. In some implementations, the sensors 134, 136 are attached to a device that has a wireless Internet connection (i.e., Wi Fi enabled device), and can send signals to remote computing devices using the wireless Internet connection.
(33) Hold open bracket 138 is provided on a top edge of display case door 100. One end of hold open bracket 138 is pivotally coupled to door frame 106. In service, hold open bracket 138 can be used to maintain door in a desired open position.
(34) Circuitry module 132 can be positioned in the door 100 itself. For example, circuitry module 132 can be positioned in a bottom portion of door frame 106. Circuitry module 132 overlays a portion of insulated panel assembly 104. Circuitry module 132 can be attached to electronic display 110 such that, with electronic display 110 releasably coupled to door frame 106, circuitry module 132 is releasably coupled to door frame 106. Circuitry module 132 can include a processor configured to perform operations including providing information for presentation on the display 110. Circuitry module 132 can include a media player in electronic communication with electronic display 110 to control media content presented on electronic display 110.
(35) In various implementations, door frame 106 has a width and thickness that allows display case door 100 to be installed and operated in an existing refrigerated display case without the need of retrofitting the display case. Display case door 100 can be operated with or without electronic display 110.
(36)
(37)
(38) The process 600 includes detecting user input at a first location of the touchscreen display (604). For example, referring to
(39) The process 600 includes identifying a product selected by the user input at the first location (606). For example, referring to
(40) The process 600 includes depicting the products on the touchscreen display in an area that excludes the first location (608). For example, referring to
(41) In some examples, the image data is adjusted such that the depiction of the products 501 is a different size and/or orientation when the display system 500 presents the information about the selected product 505, compared to when the display system 500 does not present the information about the selected product. For example, referring to
(42) The process 600 includes depicting the selected product on the touchscreen display in an area that includes the first location (610). For example, referring to
(43) The process 600 includes detecting user input at a second location of the touchscreen display (612). For example, referring to
(44) The process 600 includes identifying a product selected by the user input at the second location (614). For example, referring to
(45) The process 600 includes depicting the products on the touchscreen display in an area that excludes the first location and the second location (616). For example, referring to
(46) The process 600 includes depicting the selected product on the touchscreen display in an area that includes the second location (618). For example, referring to
(47) The process 600 can be performed by a computing system including one or more computers, e.g., circuitry module 132. The order of steps in the process 600 is illustrative only, and the steps can be performed in different orders and/or in parallel. In some implementations, the process 600 can include additional steps, fewer steps, or some of the steps can be divided into multiple steps. In some examples, the steps of the process 600 can be performed by different components of the disclosed systems.
(48) By dynamically adjusting planograms in response to receiving touch input, information about selected products can be presented to a customer interacting with the touchscreen while reducing impact to customer experience of other customers. For example, a customer can view information about a particular can of soda on part of the touchscreen, while other customers can view depictions of other beverages that are available inside the refrigerated display case.
(49)
(50) The display system 700 can include a processor or processors in electronic communication with a touchscreen display 710. In some examples, a data store is coupled to the processor. The data store can store instructions that, when executed by the processor, cause the processor to perform operations, such as the operations described with respect to the flow chart of
(51) In some examples, the touchscreen display is configured to present multiple different images at multiple different viewing angles. For example, the touchscreen display can be a stereoscopic display or an autostereoscopic display. In some examples, the touchscreen display includes an array of lenticular lenses, such that when viewed from slightly different angles, different parts of an image are shown. In some examples, the touchscreen display includes a polarizer such that the image appears different from different viewing perspectives.
(52) In some examples, the display system 700 uses eye tracking techniques to track eye movement of a viewer and adjusts the image presented on the touchscreen display such that the viewer sees a particular image on the touchscreen display, while another viewer may view a different image. The display system 700 can include sensors that detect the location of a viewer and/or a location of the viewer's eye. The sensors can be, for example, the sensors 134, 136 as shown in
(53)
(54) The process 800 includes detecting user input to the touchscreen display (804). For example, referring to
(55) The process 800 includes identifying a product selected by the user input (806). For example, referring to
(56) The process 800 includes determining a viewing angle of the user (808). For example, referring to
(57) In some examples, the display system 700 determines the viewing angle of the user based on the location of the touchscreen display at which the user input was detected. The display system 700 can store data that associates touch locations with predicted viewing angles. In some examples, the display system 700 determines the viewing angle of the user based on sensor data generated by a sensor. The sensor data can include, for example, visible light images or infrared images of the customer 711.
(58) The process 800 includes identifying a viewing cone including the viewing angle of the user (810). A viewing cone can be a two-dimensional or three-dimensional range of angles that includes the viewing angle. For example, referring to
(59) The process 800 includes depicting the products on the touchscreen display such that the products are visible outside of the viewing cone (812). For example, referring to
(60) The process 800 includes depicting information related to the selected product on the touchscreen display such that the selected product is visible within the viewing cone (814). For example, referring to
(61) In some examples, as shown in
(62) In some examples, as shown in
(63) The process 800 can be performed by a computing system including one or more computers, e.g., circuitry module 132. The order of steps in the process 800 is illustrative only, and the steps can be performed in different orders and/or in parallel. In some implementations, the process 800 can include additional steps, fewer steps, or some of the steps can be divided into multiple steps. In some examples, the steps of the process 800 can be performed by different components of the disclosed systems.
(64) By dynamically adjusting planograms in response to receiving touch input, information about selected products can be presented to a customer interacting with the touchscreen while reducing impact to customer experience of other customers. For example, a customer viewing the display 710 from one angle can view information about a particular package of eggs, while other customers viewing the display 710 from different angles can view depictions of other packages of eggs that are available inside the refrigerated display case.
(65)
(66)
(67) Referring to
(68) The process 1000a includes detecting user input to the first display (1004). For example, referring to
(69) The process 1000a includes identifying a product selected by the user input (1006). For example, referring to
(70) The process 1000a includes depicting the products on the display (1008). For example, referring to
(71) The process 1000a includes depicting information related to the selected product on a second display (1010). For example, referring to
(72) The process 1000a can be performed by a computing system including one or more computers, e.g., circuitry module 132. The order of steps in the process 1000a is illustrative only, and the steps can be performed in different orders and/or in parallel. In some implementations, the process 1000a can include additional steps, fewer steps, or some of the steps can be divided into multiple steps. In some examples, the steps of the process 1000a can be performed by different components of the disclosed systems.
(73) By dynamically adjusting planograms in response to receiving touch input, information about selected products can be presented to a customer interacting with the touchscreen while reducing impact to customer experience of other customers. For example, a customer can view information about a particular frozen dessert on the display 902, the display 904, or both, while other customers can view, on the display 910, depictions of other frozen desserts that are available inside the refrigerated display case.
(74) Referring to
(75) The process 1000b includes detecting user input to the first display (1014). For example, referring to
(76) The process 1000b includes identifying a product selected by the user input (1016). For example, referring to
(77) The process 1000b includes depicting information related to the selected product on the first display (1018). For example, referring to
(78) The process 1000b includes depicting the products on a second display (1020). For example, referring to
(79) The process 1000b can be performed by a computing system including one or more computers, e.g., circuitry module 132. The order of steps in the process 1000b is illustrative only, and the steps can be performed in different orders and/or in parallel. In some implementations, the process 1000b can include additional steps, fewer steps, or some of the steps can be divided into multiple steps. In some examples, the steps of the process 1000b can be performed by different components of the disclosed systems.
(80) By dynamically adjusting planograms in response to receiving touch input, information about selected products can be presented to a customer interacting with the touchscreen while reducing impact to customer experience of other customers. For example, a customer can view information about a particular frozen dessert on the display 910, while other customers can view, on the display 902, 904, or both, depictions of other frozen desserts that are available inside the refrigerated display case.
(81)
(82)
(83) The process 1200 includes detecting user input to the touchscreen display (1204). For example, referring to
(84) The process 1200 includes identifying a product selected by the user input (1206). For example, referring to
(85) The process 1200 includes detecting an electromagnetic signal from a mobile device (1208). For example, referring to
(86) The process 1200 includes sending a request to provide image data to the mobile device (1210). For example, referring to
(87) The process 1200 includes determining whether the request is approved (1212). In some examples, the mobile device 1101 can be configured to automatically approve certain requests. For example, a user associated with the mobile device 1101 can opt-in to receiving image data from display systems at selected retail stores or store chains. The mobile device 1101 can then automatically approve a received request at the selected stores. In some examples, upon receiving the request from the display system 1100, the mobile device 1101 can present the request on a user interface. The mobile device 1101 can then receive, through the user interface, user input indicating approval or disapproval of the request.
(88) The process 1200 includes, in response to determining that the request is not approved, depicting information related to the selected product on the touchscreen display (1214). For example, the mobile device 1101 can reject the request to provide image data to the mobile device 1101. The display system 1100 can then present the information related to the selected product on the touchscreen display 1110, as previously described with respect to
(89) The process 1200 includes, in response to determining that the request is approved, providing image data depicting information related to the selected product for presentation on a display of the mobile device (1216). For example, referring to
(90) The process 1200 can be performed by a computing system including one or more computers, e.g., circuitry module 132. The order of steps in the process 1200 is illustrative only, and the steps can be performed in different orders and/or in parallel. In some implementations, the process 1200 can include additional steps, fewer steps, or some of the steps can be divided into multiple steps. In some examples, the steps of the process 1200 can be performed by different components of the disclosed systems.
(91) By communicating product information to mobile devices, information about selected products can be presented to a customer interacting with the touchscreen while reducing impact to customer experience of other customers. For example, a customer can select a product on the touchscreen and then view the product information on their personal device. Another customer can then interact with the touchscreen and view product information on the touchscreen or on their personal device, without the customers interfering with each other.
(92) Implementations of the subject matter and the operations described in this specification can be realized in analog or digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be realized using one or more computer programs, i.e., one or more modules of computer program instructions, encoded on computer storage medium for execution by, or to control the operation of, data processing apparatus. A computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Moreover, while a computer storage medium is not a propagated signal; a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or be included in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).
(93) The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
(94) The term data processing apparatus encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
(95) 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 can, 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.
(96) The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
(97) Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
(98) Thus, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing can be advantageous.
(99) While a number of examples have been described for illustration purposes, the foregoing description is not intended to limit the scope of the invention, which is defined by the scope of the appended claims. There are and will be other examples and modifications within the scope of the following claims. Furthermore, one of skill in the art would appreciate that features described in reference to a specific embodiment are not limited to that embodiment and can be interchanged with features of other embodiments.