Many conventional approaches exist for providing custom-designed products such as business cards, T-shirts, mugs, among other items. In particular, there exist systems that permit a user to create new computer-based designs that may be printed on standard products, such as printing logos, text and images on such products. Further, there exist other systems that are capable of designing and producing other marketing materials, such as logos, banners, etc., that require the creation of a custom design by a user that may be incorporated within a logo, business cards, promotional products, online advertising, and/or other marketing materials.
It is realized that conventional approaches for creating custom designs are insufficient, as provided methods for manipulating image files associated with such designs are non-optimal. In particular, it is appreciated that the design experience for users is not user friendly for the average user of such systems. For instance, users typically need to perform many steps to create a custom design which is outside the capabilities of such users. In one example, a user needs to incorporate imported images, text, and other graphical features into a design which requires apriori knowledge of image files and how to manipulate and create designs with these types of files. Therefore, a more user-friendly interface for designing and producing custom designs would be advantageous. Further, in one implementation, it would be especially advantageous to produce designs that allow the designs to be scaled without human intervention to any particular output type without appreciable image loss.
In one embodiment, at least one print-ready output file is produced that is capable of being printed without any additional steps being performed (e.g., a quality control operator determining whether the output file is capable of being printed). Thus, user-based designs may be printed more economically, as the number of people needed to print the design is reduced. Further, in another example, the system is capable of producing a digital-ready output file which is capable of being displayed within a particular interface, saved in a particular restricted format, or provided in another form which does not require any additional steps. In this way, designs may be displayed, updated, saved, etc. without any additional quality control steps or special knowledge of the user.
According to one embodiment, a custom design system is provided that allows real-time design of products by a user. For example, in one implementation, it would be beneficial to allow real-time editing of design data within a client's web browser application, although it should be appreciated that any number of interface types and technologies may be used to render a client side real time editing application. According to one embodiment, is appreciated that if a custom design may be created within a web browser experience, a more seamless design experience may be created for the user. In particular, if design processing were offloaded to the client (e.g., within the web browser), delays in performing certain operations such as saves and updates would be reduced. Also, processing of image data would be offloaded from server-based systems, and performance of the application would be increased. To this end, and interface may be provided that allows the user to create the custom design within a client's web browser using such technologies including, but not limited to Flash and HTML5 programs that operate on image formats within the browser.
According to another implementation, it is appreciated that a custom design interface of a custom design system and outputs of that system may be improved by using vector-based images rather than raster files for creating and editing design images and text. For instance, there many drawbacks to using raster-based images for creating custom designs, such as, image quality loss, pixelation, and quality issues during printing (e.g., of a customized promotional product) or other type of rendering (e.g., in a display, advertisement, or other media type requiring an image rendering).
Also, it is appreciated that when the raster file needs to be used in another custom design, the raster files may need to be re-created by the user or resized, and thus real-time editing experiences using raster images are not practical or possible. Many times, the image file is unusable as the raster image is typically provided in a predetermined resolution and cannot be applied to different custom design applications.
According to one embodiment, vector-based image tools are used in a custom design system that allows a user to produce a design that overcomes some of the quality issues related to using raster based images. Further, is appreciated that vector-based images may be created once and applied to a number of custom designs without the need for the image to be re-edited or resized.
According to one embodiment, the design system produces a file that is infinitely scalable to one or more applications. For instance, in relation to design and production of custom products, the output file may be beneficial as it produces the same quality for different ranges of products or outputs, and is created at a level that would normally need extensive training or hiring of a graphic designer. Further, according to another implementation, a do-it-yourself website that creates such high-quality images for the design of custom designs would be helpful to a user.
In one embodiment, the well-known Scalable Vector Graphics (SVG) vector-based format may be used, and image data associated with a design may be manipulated within the browser using Flash, HTML5 or other programming method. Although SVG formatted design files may be used, it should be appreciated that other vector-based formats (e.g., Small Web Format (SWF), Encapsulated Postscript (EPS), Postscript (PS), among others) may be used for formatting designs. For instance, using an SVG-based design image, the user may user to produce a design that can be scaled to any size. This capability allows a user to create a design once and the design can be applied to any range of products without the need to be re-edited or resized without the loss of image quality.
According to another embodiment, additional user tools and interfaces are provided to the user to allow them to more easily create and edit custom products. For example, in one implementation, as a user is designing a product or logo (e.g., through a web-based interface), a real-time preview of the product that they are designing may be provided to the user. Also, the user may be presented a real-time preview of other products that are offered featuring the current design being edited. The real-time preview may include the ability to perform 3D transformations (e.g., showing a design curved on a mug/pen or perspective on a product that is laying on an angle). This may be accomplished through real-time image render rather just overlaying a design on the product being designed. As the design is being modified, the image can be updated in real-time rather than re-rendering the image after a brief delay, which would be required if raster-based images were used. Other advantages and capabilities of a vector-based custom product tool are possible and are described below with reference to the accompanying drawings.
Further, it is appreciated that a tool that can render a number of alternative products that are ready to be printed without any operator intervention would be preferable. More particularly, it is understood that the custom design printing process involves much overhead including operators and quality control personnel to review and print custom designs on custom products. It would be beneficial to have a system that allowed users to design their own custom products but yet performed quality and image checking such that review and checking by a printing company was reduced or eliminated. To this end, restrictions and quality checking of the design may be performed by the tool (e.g., to restrict operations using raster-based graphics), and by using vector-based images that have fewer print quality issues, a print-ready design may be produced that can be more easily applied to other custom product types or other image rendering situations (e.g., a display of an image within a digital advertisement).
According to one aspect of the present invention, a system is provided for creating a custom design. The system comprises a client system including at least one processor operatively connected to a memory, an interface configured to receive one or more inputs, the one or more inputs being used to create a design, the design including at least one vector-based design element, wherein the memory of the client system is adapted to store the at least one vector-based design element. The system further comprises a component adapted to modify the at least one vector-based design element and store the modification in the memory of the client system and a component adapted to render the modification of the at least one vector-based design element within the interface.
According to one embodiment, the component adapted to modify the at least one vector-based design element and store the modification in the memory of the client system and the component adapted to render the modification of the at least one vector-based design element within the interface are operable on the client without the need for server-based processing. In another embodiment, the at least one vector-based design element includes image information in at least one of a group of formats comprising Small Web Format (SWF), Scalable Vector Graphics (SVG), Encapsulated Postscript (EPS), and Postscript (PS). According to another embodiment, the interface is configured to accept from the user a design including the at least one vector-based design element includes a browser-based interface through which the at least one vector-based design element is created.
According to another embodiment, the at least one vector-based design element is manipulated using a browser-based editing component. According to another embodiment, the browser-based editing component is implemented using at least one of Flash programming and HTML5 programming. According to another embodiment, the system further comprises a preview interface that is adapted to display, in real-time, an update of the at least one vector-based design element in relation to a base custom product. According to another embodiment, the system further comprises a component adapted to apply a transformation to the at least one vector-based design element to display a modified at least one vector-based design element in relation to the base custom product.
According to another embodiment, the memory of the client system includes a cache that stores the at least one vector-based design element. According to another embodiment, operations performed within the interface of the client system are applied directly to the at least one vector-based design element and updates to a displayed representation of the at least one vector-based design are performed responsive to the operations performed within the interface of the client system without receiving updates from system other than the client system.
According to another embodiment, the system further comprises a plurality of custom product templates upon which the at least one vector-based design element may be rendered. According to another embodiment, at least one of the plurality of custom product templates includes information describing a surface of a custom product, and wherein the processor applies a transformation of the at least one vector-based design element to display the at least one vector-based design element on the surface of the custom product.
According to another embodiment, the system further comprises an interface that is adapted to display the at least one vector-based design element on the surface of the custom product to the user. According to another embodiment, the system further comprises a component adapted to import a raster-based image file and associating the raster-based image file with the at least one vector-based design element.
According to another embodiment, the component adapted to import the raster-based image file is configured to determine a maximum scaling size of the image file relative to an acceptable printing quality of a particular custom product. According to another embodiment, the transformation is performed independently by the client system. According to another embodiment, the system further comprises a component that automatically applies a transformation to the at least one vector-based design element to render an alternative custom product for presentation to the user within the interface.
According to another embodiment, the system further comprises a component adapted to sample one or more aspects of the at least one vector-based design element to render an alternative custom product for presentation to the user within the interface. According to another embodiment, the one or more aspects of the at least one vector-based design element include a color associated with the at least one vector-based design element.
According to another embodiment, the system further comprises a conversion component that is adapted to convert the at least one vector-based design element to an output file having a format. According to another embodiment, the output file format includes a file format that can be printed on a base product by a production system. According to another embodiment, the output file is capable of being downloaded to a client system. According to another embodiment, the output file may be displayed within an interface of a computer system. According to another embodiment, the file format includes at least one of a vector image format and a raster image format.
According to another embodiment, the one or more inputs include inputs provided by a user. According to another embodiment, the one or more inputs include at least one of a group comprising an image, a modification of an image, and a text input. According to another embodiment, the one or more inputs include inputs provided by a user. According to another embodiment, the one or more inputs are received automatically by the system. According to another embodiment, the conversion component operates without operator intervention.
According to another embodiment of the present invention, a method is provided for designing a custom product. The method comprises acts of receiving one or more inputs, creating, using the one or more inputs, a design of at least one custom product, the design including at least one vector-based design element, storing, in a memory of the client system, the at least one vector-based design element, modifying the at least one vector-based design element and storing the modification in the memory of the client system, and rendering the modification of the at least one vector-based design element within the client interface.
According to one embodiment, the acts of modifying the at least one vector-based design element, storing the modification in the memory of the client system and rendering the modification of the at least one vector-based design element within the client interface are operable on the client system without the need for server-based processing. According to another embodiment, the at least one vector-based design element includes image information in at least one of a group of formats comprising Small Web Format (SWF), Scalable Vector Graphics (SVG), Encapsulated Postscript (EPS), and Postscript (PS).
According to another embodiment, the client interface includes a browser-based interface through which the at least one vector-based design element is created. According to another embodiment, the method further comprises an act of manipulating the at least one vector-based design element using a browser-based editing component. According to another embodiment, the browser-based editing component is implemented using at least one of Flash programming and HTML5 programming.
According to another embodiment, the method further comprises an act of displaying, in real-time, an update of the at least one vector-based design element in relation to a base custom product. According to another embodiment, the method further comprises an act of applying a transformation to the at least one vector-based design element to display a modified at least one vector-based design element in relation to the base custom product. According to another embodiment, the method further comprises an act of storing, in a cache associated with the memory of the client system, the at least one vector-based design element.
According to another embodiment, the method further comprises applying operations performed within the interface of the client system directly to the at least one vector-based design element and updating a displayed representation of the at least one vector-based design responsive to the operations performed within the interface of the client system without receiving updates from system other than the client system. According to another embodiment, the method further comprises maintaining a plurality of custom product templates upon which the at least one vector-based design element may be rendered.
According to another embodiment, at least one of the plurality of custom product templates includes information describing a surface of a custom product, and wherein the method further comprises an act of applying a transformation of the at least one vector-based design element to display the at least one vector-based design element on the surface of the custom product. According to another embodiment, the method further comprises an act of displaying the at least one vector-based design element on the surface of the custom product to the user. According to another embodiment, the method further comprises an act of importing a raster-based image file and associating the raster-based image file with the at least one vector-based design element.
According to another embodiment, the method further comprises an act of determining a maximum scaling size of the raster-based image file relative to an acceptable printing quality of a particular custom product. According to another embodiment, the transformation is performed independently by the client system. According to another embodiment, the method further comprises an act of automatically applying a transformation to the at least one vector-based design element to render an alternative custom product for presentation to the user within the interface.
According to another embodiment, the method further comprises an act of sampling one or more aspects of the at least one vector-based design element to render an alternative custom product for presentation to the user within the interface. According to another embodiment, the one or more aspects of the at least one vector-based design element include a color associated with the at least one vector-based design element. According to another embodiment, the method further comprises an act of converting the at least one vector-based design element to an output file having a format.
According to another embodiment, the output file format includes a file format that can be printed on a base product by a production system. According to another embodiment, the output file may be downloaded to a client system. According to another embodiment, the method further comprises displaying the output file within an interface of a computer system. According to another embodiment, the file format includes at least one of a vector image format and a raster image format.
According to another embodiment, the one or more inputs include inputs provided by a user. According to another embodiment, the one or more inputs include at least one of a group comprising an image, a modification of an image, and a text input. According to another embodiment, the one or more inputs include inputs provided by a user. According to another embodiment, the one or more inputs are received automatically. According to another embodiment, the conversion component operates without operator intervention.
According to another aspect of the present invention, a system is provided for creating a custom design. The system comprises a client system including at least one processor operatively connected to a memory, an interface configured to accept from the user a design, the design including at least one vector-based design element wherein the memory of the client system is adapted to store the at least one vector-based design element. The system further comprises a component adapted to automatically scale the at least one vector-based design element without user intervention and a component adapted to render the scaled at least one vector-based design element dependent upon a respective output format.
According to one embodiment of the present invention, the respective output format is a print ready format. According to another embodiment, the print ready format is capable of being printed by a print production system. According to another embodiment, an output rendered by the component in a print ready format is capable of being printed by the print production system without user intervention. According to another embodiment, the respective output format is a digital ready output format. According to another embodiment, the digital ready output format is capable of being displayed in a particular client interface. According to another embodiment, the design includes design image data provided by the user.
According to another embodiment, the component adapted to automatically scale the at least one vector-based design element without user intervention is adapted to scale the design image data to ensure a quality level of the respective output format. According to another embodiment, the component adapted to render the scaled at least one vector-based design element dependent upon the output format is responsive to a predetermined resolution based upon the respective output format. According to another embodiment, the output format includes at least one of a group comprising a display format, a display type, a display area, a display orientation, an output printing format, and a printing substrate.
According to another embodiment, the component adapted to render the scaled at least one vector-based design element dependent upon the output format is responsive to a component adapted to determine a custom product type upon which the at least one vector-based design element is rendered. According to another embodiment, the component adapted to render the scaled at least one vector-based design element dependent upon the output format provides a plurality of scaled vector-based design elements for display on a plurality of custom products. According to another embodiment, the output format includes a defined bounded area identifying an area on a printed product. According to another embodiment, the output format includes an output format that depends upon an output media in which the scaled at least one vector-based design element is represented.
According to another embodiment, the at least one vector-based design element includes image information in at least one of a group of formats comprising Small Web Format (SWF), Scalable Vector Graphics (SVG), Encapsulated Postscript (EPS), and Postscript (PS). According to another embodiment, the interface configured to accept from the user a design including the at least one vector-based design element includes a browser-based interface through which the at least one vector-based design element is created.
According to another embodiment, the component adapted to automatically scale the at least one vector-based design element without user intervention and the component adapted to render the scaled at least one vector-based design element dependent upon the respective output format are operable on the client without the need for server-based processing. According to another embodiment, the interface configured to accept from the user a design including the at least one vector-based design element includes a browser-based interface through which the at least one vector-based design element is created.
According to another embodiment, the at least one vector-based design element is manipulated using a browser-based editing component. According to another embodiment, the browser-based editing component is implemented using at least one of Flash programming and HTML5 programming.
According to another embodiment, the system further comprises a preview interface that is adapted to display, in real-time, an update of the at least one vector-based design element in relation to a base custom product. According to another embodiment, the system further comprises a component adapted to apply a transformation to the at least one vector-based design element to display a modified at least one vector-based design element in relation to the base custom product.
According to another embodiment, the system further comprises a plurality of custom product templates upon which the at least one vector-based design element may be rendered. According to another embodiment, at least one of the plurality of custom product templates includes information describing a surface of a custom product, and wherein the processor applies a transformation of the at least one vector-based design element to display the at least one vector-based design element on the surface of the custom product.
According to another embodiment, the system further comprises an interface that is adapted to display the at least one vector-based design element on the surface of the custom product to the user. According to another embodiment, the system further comprises a component adapted to import a raster-based image file and associating the raster-based image file with the at least one vector-based design element.
According to another embodiment, the component adapted to import the raster-based image file is configured to determine a maximum scaling size of the image file relative to an acceptable printing quality of a particular custom product. According to another embodiment, the transformation is performed independently by the client system.
According to another embodiment, the system further comprises a component that automatically applies a transformation to the at least one vector-based design element to render an alternative custom product for presentation to the user within the interface. According to another embodiment, the system further comprises a component adapted to sample one or more aspects of the at least one vector-based design element to render an alternative custom product for presentation to the user within the interface.
According to another aspect of the present invention, a method is provided for creating a custom design. The method comprises acts of accepting from a user a design within a design interface of a client system, the design including at least one vector-based design element, storing, within a memory of the client system, the at least one vector-based design element, automatically scaling, by the client system, the at least one vector-based design element without user intervention, and rendering the scaled at least one vector-based design element dependent upon a respective output format.
According to another embodiment, the respective output format is a print ready format. According to another embodiment, the print ready format is capable of being printed by a print production system. According to another embodiment, an output rendered by the component in a print ready format is capable of being printed by the print production system without user intervention.
According to another embodiment, the respective output format is a digital ready output format. According to another embodiment, the digital ready output format is capable of being displayed in a particular client interface. According to another embodiment, the design includes design image data provided by the user.
According to another embodiment, the method further comprises an act of automatically scaling the design image data to ensure a quality level of the respective output format. According to another embodiment, the act of rendering the scaled at least one vector-based design element dependent upon the output format is responsive to a predetermined resolution based upon the respective output format.
According to another embodiment, the output format includes at least one of a group comprising a display format, a display type, a display area, a display orientation, an output printing format, and a printing substrate.
According to another embodiment, the act of rendering the scaled at least one vector-based design element dependent upon the output format is responsive to an act of determining a custom product type upon which the at least one vector-based design element is rendered. According to another embodiment, the act of rendering the scaled at least one vector-based design element dependent upon the output format includes providing a plurality of scaled vector-based design elements for display on a plurality of custom products.
According to another embodiment, the output format includes a defined bounded area identifying an area on a printed product. According to another embodiment, the output format includes an output format that depends upon an output media in which the scaled at least one vector-based design element is represented.
According to another embodiment, the at least one vector-based design element includes image information in at least one of a group of formats comprising Small Web Format (SWF), Scalable Vector Graphics (SVG), Encapsulated Postscript (EPS), and Postscript (PS). According to another embodiment, the design interface that accepts from the user a design including the at least one vector-based design element includes a browser-based interface through which the at least one vector-based design element is created.
According to another embodiment, the acts of automatically scaling, by the client system, the at least one vector-based design element without user intervention and rendering the scaled at least one vector-based design element dependent upon a respective output format is performed on the client system without the need for server-based processing. According to another embodiment, the design interface configured to accept from the user a design including the at least one vector-based design element includes a browser-based interface through which the at least one vector-based design element is created.
According to another embodiment, the method further comprises manipulating the at least one vector-based design element using a browser-based editing component. According to another embodiment, the browser-based editing component is implemented using at least one of Flash programming and HTML5 programming.
According to another embodiment, the method further comprises an act of displaying, within a preview interface in real-time, an update of the at least one vector-based design element in relation to a base custom product. According to another embodiment, the method further comprises applying a transformation to the at least one vector-based design element to display a modified at least one vector-based design element in relation to the base custom product. According to another embodiment, the method further comprises an act of rendering the at least one vector-based design element upon a plurality of custom product templates. According to another embodiment, at least one of the plurality of custom product templates includes information describing a surface of a custom product, and wherein the method further comprises an act of applying a transformation of the at least one vector-based design element to display the at least one vector-based design element on the surface of the custom product.
According to another embodiment, the method further comprises an act of displaying the at least one vector-based design element on the surface of the custom product to the user. According to another embodiment, the method further comprises an act of importing a raster-based image file and associating the raster-based image file with the at least one vector-based design element. According to another embodiment, the act of importing the raster-based image file includes determining a maximum scaling size of the image file relative to an acceptable printing quality of a particular custom product. According to another embodiment, wherein the transformation is performed independently by the client system.
According to another embodiment, the method further comprises an act of automatically applying a transformation to the at least one vector-based design element to render an alternative custom product for presentation to the user within the interface. According to another embodiment, the method further comprises an act of sampling one or more aspects of the at least one vector-based design element to render an alternative custom product for presentation to the user within the interface.
Still other aspects, embodiments, and advantages of these exemplary aspects and embodiments, are discussed in detail below. Any embodiment disclosed herein may be combined with any other embodiment in any manner consistent with at least one of the objects, aims, and needs disclosed herein, and references to “an embodiment,” “some embodiments,” “an alternate embodiment,” “various embodiments,” “one embodiment” or the like are not necessarily mutually exclusive and are intended to indicate that a particular feature, structure, or characteristic described in connection with the embodiment may be included in at least one embodiment. The appearances of such terms herein are not necessarily all referring to the same embodiment. The accompanying drawings are included to provide illustration and a further understanding of the various aspects and embodiments, and are incorporated in and constitute a part of this specification. The drawings, together with the remainder of the specification, serve to explain principles and operations of the described and claimed aspects and embodiments.
Various aspects of at least one embodiment are discussed below with reference to the accompanying figures, which are not intended to be drawn to scale. Where technical features in the figures, detailed description or any claim are followed by reference signs, the reference signs have been included for the sole purpose of increasing the intelligibility of the figures, detailed description, and claims. Accordingly, neither the reference signs nor their absence are intended to have any limiting effect on the scope of any claim elements. In the figures, each identical or nearly identical component that is illustrated in various figures is represented by a like numeral. For purposes of clarity, not every component may be labeled in every figure. The figures are provided for the purposes of illustration and explanation and are not intended as a definition of the limits of the invention. In the figures:
Examples of the methods, devices, and systems discussed herein are not limited in application to the details of construction and the arrangement of components set forth in the following description or illustrated in the accompanying drawings. The methods and systems are capable of implementation in other embodiments and of being practiced or of being carried out in various ways. Examples of specific implementations are provided herein for illustrative purposes only and are not intended to be limiting. In particular, acts, components, elements and features discussed in connection with any one or more examples are not intended to be excluded from a similar role in any other examples.
Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. Any references to examples, embodiments, components, elements or acts of the systems and methods herein referred to in the singular may also embrace embodiments including a plurality, and any references in plural to any embodiment, component, element or act herein may also embrace embodiments including only a singularity. References in the singular or plural form are not intended to limit the presently disclosed systems or methods, their components, acts, or elements. The use herein of “including,” “comprising,” “having,” “containing,” “involving,” and variations thereof is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. References to “or” may be construed as inclusive so that any terms described using “or” may indicate any of a single, more than one, and all of the described terms.
In one embodiment, the custom design system 101 is provided using one or more computer systems that are coupled to the user-based system by one or more communication networks. For instance, custom design system 101 may be web-based such that the user (e.g., user 102) may create a custom design within a web-based interface (e.g., interface 106). In one example implementation, the user may be permitted to design a custom product within the interface by placing one or more vector-based design elements (e.g., element 104) on a visual representation of one or more custom products (e.g., custom product 105).
As discussed above, the user may be provided better tools for creating and manipulating his/her designs, as is appreciated that vector-based design elements can be more easily scaled and manipulated, and may be part of an overall real-time design system. In one embodiment, a client system associated with the user maintains a copy of the vector-based design file in memory and allows the user to interact with the design on the client-side without the necessity to interact with the server. Because this client-based capability is provided, less delay is observed within the user interface responsive to changes in the design. That is, the vector-based design element does not need to be processed and re-rendered within the interface, or processed by server-based entities resulting in delays observed by the user within the editing interface.
In one embodiment, custom design system 101 includes one or more browser-based editing components (e.g. component 108). Such browser-based editing components may include one or more tools that, when rendered within a browser program, allow the user to create and manipulate vector-based images. Further, system 101 may include one or more custom product templates (e.g., custom product templates 109). For example, such templates may include-based products upon which one or more custom designs may be printed, such as mugs, T-shirts or other products. The templates themselves may include information regarding the products such as dimensions, print areas, curvature, background images or other information that may be used to render a visual representation of the product. Although browser-based interfaces can be used, it should be appreciated that other types of interfaces may be used, such as those available in a number of different systems, including, but not limited to iPhone, iPad, and Android interfaces.
System 101 may also include one or more vector based manipulation components (e.g., components 110) which may include one or more interface controls and/or software components that perform actions on vector-based images. Such components may include those that create and/or modify such images (e.g., rotation, stretching, etc.). Further, system 101 may include one or more color manipulation components (e.g., components 111) that perform color-based operations on the vector-based image.
System 101 may also include a recommendation engine (e.g., recommendation engine 113) that is configured to determine and display alternative custom products to the user within the display (e.g., within interface 106). Because system 101 is capable of using vector-based designs, it becomes simpler to determine and display alternative designs to the user on an as-needed basis. For instance, because vector-based designs may be used that can be infinitely scaled to particular products, a logo design intended for a business card may be scaled and displayed on a T-shirt, a curved product such as a pen, or other base product that has a particular requirement (e.g., design orientation). To this end, a vector-based design may be stored in manipulated local to the client to provide such alternate recommendations.
System 101 may also store one or more designs, custom products, and other information associated with the user in a user account data set (e.g., user account data 112). Such information may include vector-based image files 114. Although it is appreciated that such files may be stored in manipulated on a client, such information may be backed up and updated in a storage location may be accessed through a network. For instance, such files may be stored on a server-based system, cloud storage, virtual storage or other storage location.
Once designed, such vector-based designs may be printed on one or more base products such as, for example, business cards, mugs, T-shirts, pens, or other types of products upon which a custom design may be printed. To print on such base products, the vector images may be transmitted to one or more printing systems for rendering on the base product.
At block 204, the system generates a vector-based rendering of a custom product within the interface. For instance, as discussed above, the interface may be a browser-based client interface through which the user can design a custom product including one or more vector-based design elements. At block 205, the system receives a user modification of a design element within the interface (e.g., within the interface of the browser). At block 206, the system updates a display interface in real-time, and the display shows the updated information within the interface. As discussed above, because vector-based design images can be created and modified on the client-side, an interface may be provided that operates in real time, and the user experience is improved. At block 207, process 200 ends.
For example, this can be performed in the number different ways and using a number different features of the vector-based design element. For instance, a block 304, the system may sample the design element and then display alternative products based on the sampling (e.g., at block 305). For instance, the system may take one a portion of the design element (e.g., a logo) and render that element on alternative products. In another example, the system may sample color element within the logo and suggest alternative products that includes that sample color. Other types of processing may be used and repeated for use in an alternative product that is displayed to the user.
In another example, at block 306, the system may determine an alternative product. For instance, a mug other type of product may be determined. At block 307, the system performs a vector-based manipulation of the design element and renders a manipulated design element on the alternative product at block 308. For instance, a logo associated with a business card may be manipulated and displayed on a mug. The mug has a particular size and curvature associated with a viable printing area on a surface of the mug and therefore an appropriate manipulation that takes into account the curvature and resizing of the vector-based image may be performed. In this way, a more realistic representation of a customized product may be presented to the user which may cause that user to purchase the alternative product.
In another example, the system samples colors of the design element at block 309. At block 310, the system determines a color palette based on the sample from the design element, and then the determined color palette may be provided to the user as a tool (e.g. at block 311) for use in designing the current product or an alternative product.
At block 312, the user selects and saves the alternative product design. For example, the user may be presented an option for selecting, within the interface, an alternative design that may have been provided by the system automatically. Thus, the interface provides an easier way to create design additional products using one or more design elements. At block 313, process 300 ends.
At block 403, the system provides interface tools to permit the user to modify the design element. According to one embodiment, the tools operate on the vector-based design element in the client application responsive to user inputs. At block 404, the system modifies the vector-based design element responsive to the inputs.
A number of operations may be performed on the vector-based design element, such as, at block 405, rendering the modified design element in the browser, saving the vector-based design element to storage at block 406 (e.g., in some storage location), saving an intermediate vector representation in memory for manipulation within the browser program at block 407, or other operation or manipulation of the vector-based design element. Notably, the intermediate vector representation is manipulated at the client without necessity to contact a server or alternative storage for re-rendering of the design responsive to changes. At block 408, process 400 ends.
At block 504, the system may permit a user to apply a scale multiplier to text. In conventional systems, users may be restricted to discrete font sizes, and therefore designs having such restrictions may not be perfect. For instance, a capability may be provided to scale a font size via a multiplier (i.e., a 12 pt font multiplied by 1.2332442 that results in a specific size text on a business card). Also, an ability may be provided to allow a specific font size and multiplier to work together. For instance, a user can select a font size from a drop-down which sets a specific font size, and when the user stretches the text within the canvas, a scale multiplier may be applied to size the text exactly to how large the user desires. This capability allows text of any size and dimension, and the tool may not be constrained by standard font point sizes. The resizing capability, according to one embodiment, may allow users to revert to a standard font size after using the scale functionality. This capability allows users to go back and forth between sizing methods.
At block 505, the system permits a user to select and edit shapes and vectors inside the design and manipulate such selections. For instance, the user may select a particular aspect of the design and the user may select a color (e.g., from a color palette) by moving their selection tool (e.g., a mouse) over different areas of the color palette. Typical programs require user to select a color, preview the color which includes a separate rendering, and an application to the particular design being edited. Rather, by using vector-based images, the user, within the browser program may edit the design in real-time and any actions may be performed directly on the design image being displayed to the user. Further, by using vector-based images, the user may be provided an ability to select and edit individual shapes and vectors within the design, to modify images in real time, a rotate or spin images, or perform other operations or sub operations on the vector-based image.
At block 506, the system may programmatically determine additional layouts with vector-based permutations and text locations. As discussed above, the system may be configured to programmatically suggest additional layouts for logo with set permutations of a logo element and text field locations associated with it. Because elements of the design can be operated on individually (due to the image being a vector-based image having multiple component parts), more permutations of a design are possible, and can be configured as predetermined options for display to the user (e.g., as additional possible layouts, alternative products, etc.). This is helpful to a custom product provider, as the number and configuration of possible products and layouts provided to the user (i.e., a customer) is improved.
At block 507, the system may allow user to stretch a design element while maintaining an aspect ratio. For instance, the ability may be provided to allow the user to scale or stretch a logo while holding an aspect ratio to a constant value. Such capability is not typically provided for raster-based elements.
Further, the system may provide a number of color-based tools for creating and editing vector-based images. For example, at block 508, the system may dynamically modify color in a vector-based design in real time responsive to a hover operation performed on a color palette. In one example, the user may hover a pointing device over a particular color and the selected element within the vector-based design may change color responsive to the hover operation in real time. In this way, colors may be changed within the design dynamically, and various portions of the design may be edited for color individually by the user rather than operating on the entire design.
At block 509, system may permit the user to upload a raster image to a particular design using a scale of vector image. For instance, in one implementation, the system may allow user to upload a raster image file that can be embedded in the design, and which is ultimately saved within the vector graphics file. For example, in one implementation, at block 510, the system may permit the user to edit the raster image within the vector-based design.
At block 511, the system determines a maximum scaling size of an image without an unacceptable printing loss. In one embodiment, when a user uploads a raster image with a fixed resolution into an infinitely scalable vector image, the system may calculate a maximum size to which the image may be scaled without any resolution loss in printing. For instance, this maximum resolution may be a dynamic value and may be based on a particular product. For example, a maximum resolution per printing for a business card could be set at 300 DPI (dots per inch) and a T-shirt at 250 DPI. In one embodiment, the tool may allow the image to be physically larger on the T-shirt because the raster image can be stretched responsive to a determined DPI setting for printing.
According to one aspect of the present invention, the system may be adapted to monitor resolution used in different contexts in real time. According to one implementation, different resolutions may be determined for different applications (e.g., display, printing) and limitations may be enforced within the design application to ensure that quality may be preserved. For instance, in printing, a specific resolution may be used, for example 300 DPI (dots per inch). On an electronic device, however, a different display resolution may be used that corresponds to display pixels, and every device has a PPI (pixels per inch). For example, desktop screens usually have a display pixel value of 72 PPI.
Because, the physical size is known for a particular product (e.g., in inches), the number of pixels may be determined for a particular product in order to keep the density at a desired level. For instance, for a printed product, the resolution is typically 300 PPI. In one concrete example, an image of 600×300 pixels is used. At a 300 DPI print requirement, the display resolution translates to 300 PPI in the display. The image, in this case, may be acceptable for covering only 2×1 inches of the printed product. According to one embodiment, the system may prohibit the user within the design interface for adjusting the image out of a particular tolerance level. For instance, the system may limit the user to expand the image beyond a particular size (e.g., the system determines a maximum area that the user can expand the image based on the maximum permitted image size allowed for printing).
Because the system is capable of recalculating in real-time, the system can impose restrictions on image controls in real-time when the user tries to stretch an image over the maximum image size. In one implementation, this checking may be performed based on inputs by the user when performing editing operations that cause a recalculation and screen update. Conventional design systems allow the user to scale to any size and can only provide an error later, or incorrectly print an inferior product, as such systems do not analyze and limit user operations (e.g., stop the user from stretching the image within the interface) in real-time.
Further, at block 512, the system may permit the user to save uploaded images to user-based design element groupings. For instance, when a user uploads a raster image to place in a specific design, the system may also load that raster image into a portfolio of saved designs so that the image may be used later. For instance, the image may be used by the user in different designs without the necessity to upload the image, may be used by the system to show alternative designs of other products having that image placed on the products. Such placement is important, as a user may typically only want a design portion (e.g., a logo) to appear on an alternative product that might be suggested to the user.
At block 513, the system renders a vector-based design in the user interface. For example, the vector-based design may be displayed to the user in a display window such as a preview window or a real-time editing window for design the product. Also, in an alternative embodiment, the system may provide recommendations for custom products in real time based on previous designs at block 514. For instance, as a user is editing a logo for a business card, that logo may be shown within another interface for an alternative product. Such alternative products may be selected based on user behavior, information within the design, text within related areas of the design, information regarding the user, or other behavioral, environmental, or user-based information.
Other capabilities may be provided that allows the user to more easily and create designs for custom products. For instance in one embodiment, designs may include templates behind them that includes areas for elements to be auto populated and/or auto fitted. Examples include adding an email address on a business card and changing the font size automatically to automatically fit that email address in an allotted area. Another example includes labeling an area on a business card for logo or image and when the user uploads or picks a logo, the system auto scales and places the logo so that the user does not need to make any adjustments.
Further examples include an ability to tie specific user data to specific locations for render by default in a design. For example, the system may be capable of indicating a location to place data from a user in a design and automatically place that specific data from the user (e.g., responsive to user input or data previously stored in a database) when the user loads the design. Other examples include the ability to set vector-based elements as movable or non-movable in the design, the ability to set elements and editable or non-editable in the design, among other abilities to operate on separate elements of the design.
In yet another embodiment, the capability may be provided to show a live preview of the design of one or more physical products in real time as the design is being edited with near zero lag. For example, if a user starts moving an element in a particular design, the view of the edited design is updated in real time, and there is no appreciable waiting until the user has finished moving the design to update the interface. In one example implementation, the visible view is updated as the user moves an element pixel by pixel.
Such abilities may also be used to apply 3-D transformations of the designer real time as the design is being edited by the user. For example, if the user starts moving an element in the design and the system applies a curvature to show what the design would look like on the product (e.g., a mug) the system may apply the curvature in real time to show the image as the user is moving it. Therefore, there is no delay in updating the design if the user would like to see a rendering of an image in a particular location. Also, in ability with is provided to flip to a different side of a design directly within the editor without needing to reload page information or data. Most conventional products require a “move to back” function that loads a different page or reloads the page, both of which are not real-time views responsive to changes.
As discussed, one advantage of working with vector-based images includes having designs that can be infinitely scalable. The value in this is that a user is permitted to create one design of any size that will be guaranteed to work without any loss of quality or resolution in any other size. One example includes having a design for business card that can be instantly scaled to a letterhead format without the necessity to resample the design.
One implementation that may facilitate such ability may include a hybrid design of both vector and raster elements while keeping each design within specifications for print purposes. For instance, an editor function to be provided that is capable of manipulating a raster image within a vector-based image design and limiting how much the raster image can be scaled in physical print size (e.g. based upon a printed product).
A web interface may be provided that works with such image formats within a browser window. For instance, in intermediate vector-based file format may be used to manipulate and design images. For instance, a vector-based format may be used as an intermediate format. In one implementation, and SVG format may be converted to SWF and an SVG file may be created upon a save operation. In HTML5, SVG elements may be converted to JavaScript/HTML5 elements which allow editing, and then the elements are converted to an SVG file format on a save operation.
As shown in
As discussed above, one browser implementation on a client side (e.g., 522) may be programmed using HTML5 (e.g., system 532) and another implementation may be programmed using Flash (e.g., system 533). In an HTML5 implementation, there may be a component (e.g., element 535) that requests an SVG design from storage (e.g., storage 531). Another component (e.g., element 536) may be provided that receives the SVG design from storage (for instance, a combination template and image, or template and image referenced separately). According to one implementation, the SVG design may be rendered as JavaScript elements by a component that executes within the browser (e.g., element 537). Notably, as a user (e.g., user 534A) may interact with the design as rendered within the browser, and updates in real time may be processed on the client and stored locally by the client (e.g., within client-side storage 540). For instance, as a result of a save operation 539, the design may be stored local to the client.
In a similar way, a Flash version (e.g., system 533) of a browser application may be provided that allows a user (e.g., user 534B) to perform updates in real time on a client system. System 533 may also include a component (e.g., element 542) that requests an SVG design from storage (e.g., storage 531). Another component (e.g., element 543) may be provided that receives the SVG design from storage (for instance, a combination template and image, or template and image referenced separately). According to one implementation, the SVG design may be rendered as sprites in Flash by a component that executes within the browser (e.g., element 545). Notably, as a user (e.g., user 534B) may interact with the design as rendered within the browser, and updates in real time may be processed on the client and stored locally by the client (e.g., within client-side storage 540). For instance, as a result of a save operation 541, the design may be stored local to the client.
Also, it should be appreciated that by saving design information in SVG format, a capability to provide highly customer suggestions may be possible. For example when someone designs the logo, the system may easily analyze color usage and use the most popular colors to suggest business card designs with alternative colors to match the logo. Such a process is advantageous, as this operation can be done without user intervention, may result in alternative product sales, and can be customized for a particular user. In another example, an ability may be provided to import vector files by converting them to Flash/SWF, which can be converted to an SVG file on a save operation.
In a typical implementation, users are provided a preset color theme including matching color values. In such a situation, users conventionally pick a particular color theme when setting up a design (e.g., from a template provided by the system). According to one aspect of the present invention, the system analyzes the color usage in a user-created design in real time, and provides alternatives to the user or otherwise reacts to color-based usage information as it changes in the user's design.
In one implementation, an image rendering engine may be provided that allows a user's design to be rendered without the need for caching or a content delivery network (CDN). In one embodiment, and image rendering API may be provided that takes a vector-based design image (e.g., in SVG format) and creates a raster rendering at a specific size and sends the rendered image directly to the user's browser application. In one embodiment, the API may be capable of displaying recommendations for products using a user's specific design. In one implementation, the system may implement an algorithm for searching and determining recommendations for products, and may call the API to render specific images within the interface. In another implementation, a process may provide a cookie to a user system that uniquely identifies users, their preferences, and may identify any designs that they have used or created, and the API may be called to render such designs to the user.
In another implementation, the image rendering API may be called to render unique images to be included in directed emails to particular users. Because the emails may be generated based on user-specific data (including any design data), such emails may be customized for particular users. This feature is beneficial, as in direct email marketing campaigns, custom images can be generated on-the-fly without the need to store or access such images in a CDN. Also, because users are associated with certain designs, it follows that security measures may be used for accessing certain designs (e.g., by user, IP address, password, or other security information, either alone or in combination).
Further, it is appreciated that custom images may be generated on-the-fly without the need for storage, such technology may be used by other applications. For instance, email marketing systems may include such technology for generating custom images for marketing to particular consumers. Such images may be specifically targeted to individual and/or groups of consumer users based on information known about such users including demographics information, behavioral data, data regarding other users, among other information.
Also, it is appreciated that such images need not be cached by email service providers (e.g., gmail, Yahoo! Mail, hotmail, etc.) Also, because email service providers do not cache images, it may be possible to track open rates and other behavioral data that is not possible when static images are used. Further, the images may be generated dynamically when they are accessed by a user, so a previously sent email may have different image data generated when the email is accessed.
As shown in
If the file is found on remote storage, raster images may be generated at block 613, the image rendering process is executed at 623, and the image is provided to a calling program in a response at 624. In one embodiment, each API may place any new generated files into the HotCache (e.g., at block 614). At the same time, a main file storage server may be notified by an API call (e.g., at block 615) that there is a new file ready to store. The main file storage server retrieves a copy of the file from the HotCache at 616, then the server posts a message into the messaging queue. This message is processed by workers from the auxiliary storage servers having the result of getting also a copy of the file from the HotCache on each backup server defined. The server then posts a message into the messaging queue that is processed by a dedicated worker responsible for pushing a copy of critical files to remote locations (e.g., like a Riak cluster at 621 and Amazon S3 at 622).
In summary, when a file is requested by any of the APIs, the first place which is inspected is the HotCache. If the file is older than a predetermined time (e.g., 1 hour), the main storage server is notified to push a copy of the file into the HotCache. If for some reason the file is not located in the storage and is not a critical file, the SVG file is pushed into the HotCache. Based on the file, any needed files are generated again. The notification system works as described above to ensure distribution of files across all storage backup servers. SVG files are retrieved from local storage if found, if not from one of the two remote backup locations (Riak cluster or Amazon S3). In case of a failure of main storage, the balancer routes all API storage requests to one of the backup servers left active. This will ensure read/write operations and keep a website associated with the tool operational.
Regarding the API and image processing flow, the process may begin with a loading of an image in vector image format. In one implementation, the vector images may be then converted to an SWF file format (Flash file format), which is also a vector format file. In this case, all information from the initial vector image file may be stored within the SWF file. The newly-created SWF file is converted to SVG, and then provided for review, adjustments, among other additional settings. When complete, the changes are saved as a new SVG image. This is the point where the first SVG image used as a model in created. At the same time, a raster image may be created but without the sample text on the design (e.g., only a background with an icon) at a standard view resolution. This image may be used to generate image previews in a later selection process.
In the case of generating logos by an API to publish, an API call may be made to an API render server (e.g., an API that renders an image). Each request like this, will make the API to locate the desired logo identifier, retrieve the background raster image (e.g., an empty copy of an SVG design file), apply the user input text over it, then send the image to be rendered. Positioning info may be provided that determines where the text should be placed.
Once a logo is selected, the editor loads into the page, then it makes a series of calls back to servers or other system types to load: a specified logo SVG file, an XML file for initial text positioning and some editor other settings, a list of available fonts and a small sample image that shows how font looks like (font preview) and an active font file is loaded into the editor. According to one implementation, actions the user is making from this point forward may be handled entirely by the editor on the client side. As discussed, such actions may be implemented by programming (e.g., in Flash and/or HTML5) on the client side. In one specific embodiment, nothing the user does requires a background call to the server and no raster images are used at this point (except for the uploaded user files).
Once the user finishes any changes, all transformations that were performed are converted to SVG instructions, new SVG headers are created and the entire structure is sent back to a server or other storage location to be saved. At the same time, the editor (both HTML5 and Flash) sends to the server also the preview raster image. This system allows for the showing of a real time preview without the need to do a server call that creates the raster image, and all operations, according to one embodiment, are performed on the client system. Once the new SVG and raster image are loaded to the server, they are stored for future use.
In one embodiment, an Internet site (e.g., the freelogoservices site accessed at a number of locations such as LogoMix.com, FreeLogoServices.com and PrintingNow.com) can be configured with a step-based approach to purchasing a custom product/creating a logo design. In the first step, the user can provide descriptive information on the custom product the user would like to create. For example, various text input fields can be presented to elicit information regarding a logo the current user wishes to design.
In some embodiments, the user interfaces may vary based on whether a new user is creating a logo (e.g.,
Alternatively, user may access account information by selecting “Your Account” in the header bar 952.
Returning to
In one embodiment, UI 1120 is responsive to a hover action by users. For example, if a user places a mouse pointer over a particular design option, that design option will be rendered with a selection/edit border 1126. Within the border 1126, the user may select “Save Now” at 1128, which results in the system saving the logo design and transition the user to purchase displays. Alternatively, the user can select “Edit Now” at 1130 to access design editing functions.
Not readily apparent, each action taken by the user can be stored, for example, on the system hosting freelogoservices.com (or other site location). The user actions, user information, and optionally scores for the action can be associated with the logo being designed, as well as any logo text, or logo search terms entered. As discussed above, the accumulation of user actions can be used to influence subsequent displays of logo designs.
According to one embodiment, responsive to selection of 1130, the system can display an overlay screen 1200 as shown in
At 1314, display 1300 includes file management functions. The file management functions provides for saving a design, accessing design tips, accessing a preview image, undoing edits, redoing edits, and resetting a logo to original format, among other options. Additionally, a user can access a preview of their design responsive to selection of 1316. The system saves any edit to the logo design responsive to selection of 1318 in interface 1300. According to one embodiment, any saved products that a user has designed, saved, and/or purchased can be displayed as part of the editing screen 1300. For example, at 1320, images of previously saved logo designs can be displayed. Additionally, recommendations for products (e.g., novelty items, coffee mugs, hats, t-shirts, etc.) incorporating the current logo design and/or prior logo designs can be displayed within the saved products display area 1320. Not shown, the saved products display area can include functions for purchasing the displayed product or logo as well as functions to edit the displayed product or logo. In some embodiments, each of the displayed products and/or logos can also be scored based on prior user interactions as discussed above, for example, with respect to content items and logo designs.
In some embodiments, selection of save logo at 1318 triggers the system to display a preview of the logo design. The preview window requests that the user confirm the layout of the logo design prior to saving. If the user is satisfied (e.g., selects save in the preview display), the system saves the logo.
According to another embodiment, the system can be configured to present custom products to the user responsive to saving of a logo design or other action. In one implementation, the logo design may be saved in memory when changes are made to the design by a user. According to one example, an overlay display 1400
Various embodiments can implements various ones of the example user interfaces discussed. Other embodiments can implement different user interfaces that provide similar functionality.
Various aspects and functions described herein, in accord with aspects of the present invention, may be implemented as hardware, software, or a combination of hardware and software on one or more computer systems. There are many examples of computer systems currently in use. Some examples include, among others, network appliances, personal computers, workstations, mainframes, networked clients, servers, media servers, application servers, database servers, web servers, and virtual servers. Other examples of computer systems may include mobile computing devices, such as cellular phones, laptops, tablets, and personal digital assistants, and network equipment, such as load balancers, routers and switches. Additionally, aspects in accord with the present invention may be located on a single computer system or may be distributed among one or more computer systems connected to one or more communication networks.
For example, various aspects and functions may be distributed among one or more computer systems configured to provide a service to one or more client computers, or to perform an overall task as part of a distributed system. Additionally, aspects may be performed on a client-server or multi-tier system that includes components distributed among one or more server systems that perform various functions. Thus, the invention is not limited to executing on any particular system or group of systems. Further, aspects may be implemented in software, hardware or firmware, or any combination thereof. Thus, aspects in accord with the present invention may be implemented within methods, acts, systems, system components using a variety of hardware and software configurations, and the implementation is not limited to any particular distributed architecture, network, or communication protocol. Furthermore, aspects in accord with the present invention may be implemented as specially-programmed hardware and/or software.
Computer systems 1802, 1804 and 1806 may include mobile devices such as cellular telephones. The communication network may further employ one or more mobile access technologies including 2nd (2G), 3rd (3G), 4th (4G or LTE) generation radio access for cellular systems, WLAN, Wireless Router (WR) mesh, and other communication technologies. Access technologies such as 2G, 3G, 4G and LTE and future access networks may enable wide area coverage for mobile devices. For example, the network may enable a radio connection through a radio network access such as Global System for Mobil communication (GSM), General Packet Radio Services (GPRS), Enhanced Data GSM Environment (EDGE), Wideband Code Division Multiple Access (WCDMA), among other communication standards. Network may include any wireless communication mechanism by which information may travel between the devices 1804 and other computing devices in the network.
To ensure data transfer is secure, the computer systems 1802, 1804 and 1806 may transmit data via the network 1808 using a variety of security measures including TSL, SSL or VPN, among other security techniques. While the distributed computer system 1800 illustrates three networked computer systems, the distributed computer system 1800 may include any number of computer systems, networked using any medium and communication protocol.
Various aspects and functions in accord with the present invention may be implemented as specialized hardware or software executing in one or more computer systems including the computer system 1802 shown in
The memory 1812 may be used for storing programs and data during operation of the computer system 1802. Thus, the memory 1812 may be a relatively high performance, volatile, random access memory such as a dynamic random access memory (DRAM) or static memory (SRAM). However, the memory 1812 may include any device for storing data, such as a disk drive or other non-volatile storage device, such as flash memory or phase-change memory (PCM). Various embodiments in accord with the present invention can organize the memory 1812 into particularized and, in some cases, unique structures to perform the aspects and functions disclosed herein.
Components of the computer system 1802 may be coupled by an interconnection element such as the bus 1814. The bus 1814 may include one or more physical busses (for example, busses between components that are integrated within a same machine), and may include any communication coupling between system placements including specialized or standard computing bus technologies such as IDE, SCSI, PCI and InfiniBand. Thus, the bus 1814 enables communications (for example, data and instructions) to be exchanged between system components of the computer system 1802.
Computer system 1802 also includes one or more interfaces 1816 such as input devices, output devices and combination input/output devices. The interface devices 1816 may receive input, provide output, or both. For example, output devices may render information for external presentation. Input devices may accept information from external sources. Examples of interface devices include, among others, keyboards, mouse devices, trackballs, microphones, touch screens, printing devices, display screens, speakers, network interface cards, etc. The interface devices 1816 allow the computer system 1802 to exchange information and communicate with external entities, such as users and other systems.
Storage system 1818 may include a computer-readable and computer-writeable nonvolatile storage medium in which instructions are stored that define a program to be executed by the processor. The storage system 1818 also may include information that is recorded, on or in, the medium, and this information may be processed by the program. More specifically, the information may be stored in one or more data structures specifically configured to conserve storage space or increase data exchange performance. The instructions may be persistently stored as encoded signals, and the instructions may cause a processor to perform any of the functions described herein. A medium that can be used with various embodiments may include, for example, optical disk, magnetic disk or flash memory, among others. In operation, the processor 1810 or some other controller may cause data to be read from the nonvolatile recording medium into another memory, such as the memory 1812, that allows for faster access to the information by the processor 1810 than does the storage medium included in the storage system 1818. The memory may be located in the storage system 1818 or in the memory 1812. The processor 1810 may manipulate the data within the memory 1812, and then copy the data to the medium associated with the storage system 1818 after processing is completed. A variety of components may manage data movement between the medium and the memory 1812, and the invention is not limited thereto.
Further, the invention is not limited to a particular memory system or storage system. Although the computer system 1802 is shown by way of example as one type of computer system upon which various aspects and functions in accord with the present invention may be practiced, aspects of the invention are not limited to being implemented on the computer system, shown in
The computer system 1802 may include an operating system that manages at least a portion of the hardware placements included in computer system 1802. A processor or controller, such as processor 1810, may execute an operating system which may be, among others, a Windows-based operating system (for example, Windows 7 or Windows 8) available from the Microsoft Corporation, a MAC OS System X operating system available from Apple Computer, one of many Linux-based operating system distributions (for example, the Enterprise Linux operating system available from Red Hat Inc.), or a UNIX operating systems available from various sources. Many other operating systems may be used, and embodiments are not limited to any particular operating system.
The processor and operating system together define a computing platform for which application programs in high-level programming languages may be written. These component applications may be executable, intermediate (for example, C# or JAVA bytecode) or interpreted code which communicate over a communication network (for example, the Internet) using a communication protocol (for example, TCP/IP). Similarly, functions in accord with aspects of the present invention may be implemented using an object-oriented programming language, such as JAVA, C++, or C# (C-Sharp). Other object-oriented programming languages may also be used. Alternatively, procedural, scripting, or logical programming languages may be used.
Additionally, various functions in accord with aspects of the present invention may be implemented in a non-programmed environment (for example, documents created in HTML, XML or other format that, when viewed in a window of a browser program, render aspects of a graphical-user interface or perform other functions). Further, various embodiments in accord with aspects of the present invention may be implemented as programmed or non-programmed placements, or any combination thereof. For example, a web page may be implemented using HTML while a data object called from within the web page may be written in C++. Thus, the invention is not limited to a specific programming language and any suitable programming language could also be used.
It is to be appreciated that embodiments of the methods and apparatuses discussed herein are not limited in application to the details of construction and the arrangement of components set forth in the following description or illustrated in the accompanying drawings. The methods and apparatuses are capable of implementation in other embodiments and of being practiced or of being carried out in various ways. Examples of specific implementations are provided herein for illustrative purposes only and are not intended to be limiting. In particular, acts, elements and features discussed in connection with any one or more embodiments are not intended to be excluded from a similar role in any other embodiments.
Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. Any references to embodiments or elements or acts of the systems and methods herein referred to in the singular may also embrace embodiments including a plurality of these elements, and any references in plural to any embodiment or element or act herein may also embrace embodiments including only a single element. References in the singular or plural form are not intended to limit the presently disclosed systems or methods, their components, acts, or elements. The use herein of “including,” “comprising,” “having,” “containing,” “involving,” and variations thereof is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. References to “or” may be construed as inclusive so that any terms described using “or” may indicate any of a single, more than one, and all of the described terms.
Having thus described several aspects of at least one embodiment of this invention, it is to be appreciated that various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description and drawings are by way of example only.