Patent Publication Number: US-10789735-B2

Title: Intelligent systems and methods for producing a dynamic color combination for a design output

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation-in-part (CIP) application of U.S. application Ser. No. 15/702,718 entitled “INTELLIGENT SYSTEMS AND METHODS FOR DYNAMIC COLOR HIERARCHY &amp; AESTHETIC DESIGN COMPUTATION” filed Sep. 12, 2017. The content of this application is hereby incorporated by reference in its entirety. 
    
    
     FIELD OF THE INVENTION 
     The invention is directed to systems and methods for selecting color design elements. More specifically, the invention is directed to analyzing color-palette data elements for producing a color combination in a design output by mapping color-palette elements to objects or components in a design output or final artifact. Methods and systems for selecting and generating color-palette data elements for a software program such as for example visual representations, and producing executable software based at least in part on the color palette data selected and generated. 
     BACKGROUND OF THE INVENTION 
     The creation of digital and non-digital design output using software is difficult. Various technical fields, such as industrial design, architecture, fashion, interior design, communications, marketing, and the arts use software to create various digital and non-digital designs and/or design outputs. These design outputs are used in various media such as magazines, newspapers, software applications, and of course, on websites on the internet. 
     Selecting colors and using appropriate colors that are aesthetically pleasing and achieve the desired result in a final artifact or design output is difficult. More specifically, once a set of colors is chosen to use in a design, such as from a company&#39;s existing brand guidelines, a color palette generator, colors extracted from a photo, etc., it is difficult to decide what objects within a design output should get which colors. For example, a website is comprised of dozens or more objects that create the entirety of the interface, or the design output. Prescribing colors to every object found in the interface is a tedious, time-consuming and highly specialized creative task. In fields such as website development and design, often it is very difficult to find an aesthetically pleasing color configuration that grabs the attention of users. Many websites suffer from disadvantages of having poor color choices. 
     Some existing tools and design software programs provide users an interface containing a visual of a design output which allows users to manipulate a single pre-mapped design output&#39;s object colors with inputs and toggles. For example, there could be a sample website landing page in a web browser where the primary blue color can be changed to any color the user desires. While it is helpful to visualize how manipulating a single color will impact the design, it does not aid designers or consumers in making the decision on how to apply colors appropriately. Neither does it provide inspiration for how colors can be used outside of what that user can produce themselves. Users also struggle knowing how to react when, after manipulating a single color, find that a separate predefined foreground color now lacks the appropriate contrast with the color just altered. Such tools are found frustrating and challenging to non-designers who are not familiar or skilled with aesthetic color design. 
     Alternatively, many tools offer pre-defined color themes, or sets of prescriptions on how colors can be applied to a design output globally. This can be very helpful to users who are not skilled in color theory but these solutions often lack the necessary level of customization needed by users. For example, a user might want to create a mobile application for an existing business. The interface might expose a selection of color themes to choose from. When selected, all objects are changed to match the pre-defined color theme. Solutions such as this typically leave users unsatisfied due to the fact that the they are forced to either settle for a color theme that does not match the company&#39;s existing brand, or they are compelled to attempt changing all color elements themselves, which they are not skilled or equipped to do. Even if the user is equipped and skilled enough to accomplish such a task, it is arduous and requires a lot of time. 
     Existing tools that help build websites, for example, suffer from the limitations on the skills of users and do not provide an adequate solution that allows users to create aesthetically pleasing websites that achieve desired results with professional looking color elements. This is because selecting professional-looking colors, or selecting colors to achieve a specific outcome in the final artifact is a complex process and color or color theory is a complex science. 
     Color may be defined as the characteristic of human visual perception described through categorizing those perceptions with names (in English) such as red, blue, yellow, green, orange, purple, and the like. This human color perception is the result of eye cone cell stimulation by a spectrum of electromagnetic radiation called “visible light”. 
     By scientifically defining a color space or model, colors can be identified numerically by coordinates or other criteria. For example, the RGB color model corresponds to human trichromacy and the three primary cone cell types that respond to three bands of light: long wavelengths, peaking near 564-580 nanometers (red); medium-wavelength, peaking near 534-545 nanometers (green); and short-wavelength light, near 420-440 nanometers (blue). However, there are also popular and divergent color space models which use more than three color dimensions in other defined color spaces, such as in the CMYK color model. To add a layer of complexity, besides standard color spaces such as sRGB, proprietary color space systems are also prevalent, such as Adobe® RGB, ProPhoto® RGB, and ColorMatch RGB. 
     Color science is also called chromatics, or colorimetry; and, includes the perception of color not just by the human eye but also the brain. Many medical researchers consider the eyes an extension of and integral part of the brain, and when considered together (eyes and brain) it has been estimated that humans can perceive and distinguish roughly ten-million different “colors”. 
     A designer having ten-million distinguishable colors with which to create a pleasing or inversely a shocking or attention getting interface may encounter “a creative problem” when having to pick colors or color elements for a digital and non-digital design output, and in particular a website or mobile application. 
     Thus, it is desired to provide a method and system to overcome the above-mentioned disadvantages in the prior art and to allow users to select color design elements to create an aesthetically pleasing color configuration that grabs the attention of users for websites, software, and digital and non-digital design outputs. 
     SUMMARY OF THE INVENTION 
     It is an object of the invention to provide methods and systems to select color design elements. 
     It is an object of the invention to provide methods and systems to select color design elements that are aesthetically pleasing and achieve desired results. 
     It is an object of the invention to produce color combinations, or specific prescriptions of color use in components or objects of a design output or final artifact. 
     It is an object of the invention to determine how, in a variety of ways, colors can be applied to objects in a design output, such as a button background in a website, text in a social media ad, navigation icons in a software UI, paragraph text in a mobile app UI, and the like. 
     It is an object of the invention to provide methods and systems to provide various sets of color design elements or color combinations for various output and media. 
     It is an object of the invention to provide methods of managing color combination rules, wherein a user can populate design output component names and assign color variables to component names from which color combination can be generated. 
     It is an object of the invention to produce color combinations by replacing color-palette elements assigned to design output component names in a color combination rule with at least one qualifying color-palette element provided to the system and system-generated colors, and mapping color combination rule design output component names to corresponding objects or components in a design output or a final artifact. 
     These and other objects of the invention are achieved by providing a system for producing color-palette data elements for a software program, the system comprising: a processor; and software executing on the processor configured to: receive at least one baseline color-palette element, calculate color combinations using at least one baseline color-palette element, produce a color combination by replacing color-palette elements assigned to design output component names in a color combination rule with at least one qualifying baseline color-palette element received by the system, including static colors, system-generated colors, or combinations thereof; map color combination rule design output component names to corresponding objects or components in a design output; and produce a design output. 
     In certain embodiments, the software calculates various color combinations using the baseline color-palette element by: assigning a digital value to the baseline color-palette element; generating a series of color-palette elements having attributes similar to the baseline color-palette element; and assigning digital values to the series of generated color-palette elements. 
     In certain embodiments, the design output includes a series of the digital values of the generated color-palette elements. 
     In certain embodiments, the attributes similar to the baseline color palette elements includes chroma and/or luma values of the baseline color-palette element. 
     In certain embodiments, the software generates a series of color-palette elements by: analyzing the chroma and/or luma values of the baseline element; increasing the chroma and/or luma values by adding white to the baseline element; and generating at least one color-palette element having a chroma and/or luma value greater than the baseline element. 
     In certain embodiments, the software generates a series of color-palette elements by: analyzing the chroma and/or luma values of the baseline element; decreasing the chroma and/or luma values by adding black to the baseline element; and generating at least one color-palette element having a chroma and/or luma value less than the baseline element. 
     In certain embodiments, the software generates a series of color-palette elements by generating a range of color-palette elements having a greater hue intensity and a lesser hue intensity that the baseline color-palette element. 
     In certain embodiments, the software comprises a rule to generate the series of color-palette elements, the rule comprising: mapping the chroma and/or luma values of the baseline color-palette element according to a chart from −20 to +20, −20 representing the lightest color ranking and +20 representing the darkest color ranging; generating a series of color-palette elements having chroma and/or luma values that are within a range of five color rankings. 
     In certain embodiments, the software receives a second baseline color-palette element, wherein the software generates a second series of digital values of generated color-palette elements similar to the second baseline color-palette element. 
     In certain embodiments, the system is automatic. 
     In certain embodiments, the design output is for a software code or for a software program. 
     In certain embodiments, the design output produced by the system is software code, an image, a design file formatted for various software-based design applications, an animation, a file, instructions on how to design a prescribed color design output, website code and/or static media content. 
     In certain embodiments, the color design output produced by the system is a modification to an existing color design output. 
     In certain embodiments, the digital values include hex values, rgb values, rgba values, or combinations thereof. 
     In certain embodiments, the system includes a user interface (UI) or a graphical user interface (GUI). 
     In certain embodiments, the user interface allows a user to input the baseline color-palette element. 
     In certain embodiments, the color provided to the system or method is defined by a user. 
     In certain embodiments, the color or colors provided can be any colors. 
     In certain embodiments, the color or colors provided to the system or inputted into the system is in a digital format, such as a hex value, rgb value, rgba value. 
     In certain embodiments, the design output is thumbnail representations of a design output, prescriptive instructions on how to apply colors to an object, computer code, design files, image files, various design outputs and real-world applications. 
     In certain embodiments, the design outputs can be rendered and previewed on a digital device, downloaded, or previewed in any way. 
     In certain embodiments, design outputs are displayed and arranged in various ways. Such ways comprise by one or more attributes of the outputs, one or more colors of the outputs, etc. 
     In certain embodiments, design outputs may or may not include every color of the color subset. In certain embodiments, design outputs may include colors not included in the subset. 
     In certain embodiments, the visual output of color combinations may include information regarding the color contrast of its prescribed foreground and background elements. Such information may be used in determining the legibility and visibility of a given color combination output&#39;s prescription of foreground and background colors within an output combination. 
     In certain embodiments, the system generates a weighted contrast score representative of the aggregate visibility of the output color combination&#39;s objects, wherein the score uses the visual contrast calculation between each of the color combination&#39;s objects and their immediate parent or background object. 
     In certain embodiments, the design output results can be filtered by traits of the system-produced color combinations found in the design outputs via the interface where the results are displayed. 
     In certain embodiments, the design output results can be previewed in more than one embodiment, such as a variety of image thumbnail types. 
     In certain embodiments, the criteria that dictates which color-palette elements will qualify for producing a color combination in a design output can be customized or changed. 
     Other objects of the invention are achieved by providing a method of and for mapping color-palette data elements for a software program, the method comprising the steps of: receiving a baseline color-palette element; calculating various color combinations using the baseline color-palette element to create a set of outputs of color-palette elements; and producing a design output including the set of color-palette elements. 
     In certain embodiments, the step of calculating comprises: assigning a digital value to the baseline color-palette element; generating a series of color-palette elements having attributes similar to the baseline color-palette element; and assigning digital values to the series of generated color-palette elements. 
     In certain embodiments, the design output includes a series of the digital values of the generated color-palette elements. 
     In certain embodiments, the step of receiving comprises a series of questions relating to color palettes, color application in a specimen, color flows, font preferences, image style preferences, icon style preferences, illustration style preferences and a combination thereof. 
     In certain embodiments, the method involves steps of generating a weighted contrast score representative of the aggregate visibility of the output color combination&#39;s objects, wherein the score uses the visual contrast calculation between each of the color combination&#39;s objects and their immediate parent or background object. 
     In certain embodiments, the method involves filtering design output results by traits of the system-produced color combinations found in the design outputs via an interface where the results are displayed. 
     In certain embodiments, the method involves previewing design output results in more than one embodiment, such as a variety of image thumbnail types. 
     In certain embodiments, the criteria that dictates which color-palette elements will qualify for producing a color combination in a design output can be customized or changed. 
     In certain embodiments, the design output is generated in real-time. 
     In certain embodiments, the design output is code for a website, an email, a mobile homepage, a user interface (UI), a software program, a pitch deck and social ad and a software dashboard, or combinations thereof. 
     In certain embodiments, the design output is generated based on rules using custom generated color preferences and is not based upon pre-existing templates or previously established colors. 
     In certain embodiments, the method is dynamic and wherein there are different sets of color-palette data elements presented to the user depending upon the previous color-palette data elements selected by the user. 
     In certain embodiments, the method includes providing an executable software program that performs the method steps. 
     In certain embodiments, the executable software program contains an interface, and wherein the interface is manipulated using a toggle control or a selector control. 
     In certain embodiments, the toggle control includes a right down arrow key, space bar, 4-way joystick. 
     In certain embodiments, the interface is hosted via a server or on a website. 
     In certain embodiments, the design output is code for a website, code for an email, a mobile homepage, a pitch deck and social ad and a software dashboard, or combinations thereof. 
     In certain embodiments, the design output is for a user interface (UI). 
     In certain embodiments, the design output is a software code output suitable for a software program. 
     Other objects of the invention are achieved by providing a method of and for mapping color-palette data elements for a software program, the method comprising the steps of: providing an executable software program that receives a baseline color-palette element; assigning a digital value to the baseline color-palette element; generating a series of color-palette elements having attributes similar to the baseline color-palette element; assigning digital values to the series of generated color-palette elements; and producing a design code of the series of the digital values of the generated color-palette elements. 
     In certain embodiments, the method involves steps of generating a weighted contrast score representative of the aggregate visibility of the output color combination&#39;s objects, wherein the score uses the visual contrast calculation between each of the color combination&#39;s objects and their immediate parent or background object. 
     In certain embodiments, the method involves filtering design output results by traits of the system-produced color combinations found in the design outputs via an interface where the results are displayed. 
     In certain embodiments, the method involves previewing design output results in more than one embodiment, such as a variety of image thumbnail types. 
     In certain embodiments, the criteria that dictates which color-palette elements will qualify for producing a color combination in a design output can be customized or changed. 
     Other objects of the invention are achieved by providing a method of and for generating color-palette data elements for a software program, the method comprising the steps of: providing an executable software program which presents to and prompts a user to select at least one color-palette element from a first set of color-palette elements displayed to the user; wherein upon the user selecting the at least one color-palette element within the set, the executable software program then generates a first value based upon a chroma value and a luma value corresponding to the at least one color-palette element; wherein the executable software program then generates a second value based upon a rule set, the executable software program then compares the first value and second value and generates a third value based upon the comparison; wherein the executable software program presents to the user for selection a preview of at least one user interface incorporating a third set of at color-palette elements based on the third value; whereby upon a selection of a preview of at least one user interface incorporating a second set of at color-palette elements by the user, the executable software program produces software code output in accordance with the user at least one color-palette data element and the user interface preview selections. 
     In certain embodiments, the method involves steps of generating a weighted contrast score representative of the aggregate visibility of the output color combination&#39;s objects, wherein the score uses the visual contrast calculation between each of the color combination&#39;s objects and their immediate parent or background object. 
     In certain embodiments, the method involves filtering design output results by traits of the system-produced color combinations found in the design outputs via an interface where the results are displayed. 
     In certain embodiments, the method involves previewing design output results in more than one embodiment, such as a variety of image thumbnail types. 
     In certain embodiments, the criteria that dictates which color-palette elements will qualify for producing a color combination in a design output can be customized or changed. 
     Other objects of the invention are achieved by providing a method of and for generating color-palette data elements for a software program, the method comprising the steps of: present to and prompt a user to select at least one color-palette element from a first set of color-palette elements; upon the user selecting the at least one color-palette element within the set, generate a first value based upon a chroma value and a luma value which corresponds to the at least one color-palette element; generate a second value based upon a rule set and compare the first value and second value and generate a third value based upon the comparison; present to and prompt a user to select a preview of at least one user interface based upon a third set of at color-palette elements corresponding to the third value; and produce software code output in accordance with the user selected at least one color-palette data element and the user interface preview. 
     In certain embodiments, the method involves steps of generating a weighted contrast score representative of the aggregate visibility of the output color combination&#39;s objects, wherein the score uses the visual contrast calculation between each of the color combination&#39;s objects and their immediate parent or background object. 
     In certain embodiments, the method involves filtering design output results by traits of the system-produced color combinations found in the design outputs via an interface where the results are displayed. 
     In certain embodiments, the method involves previewing design output results in more than one embodiment, such as a variety of image thumbnail types. 
     In certain embodiments, the criteria that dictates which color-palette elements will qualify for producing a color combination in a design output can be customized or changed. 
     Other objects of the invention are achieved by providing a non-transitory computer readable storage medium storing a computer program product for selecting color elements for a software program, the non-transitory computer readable storage medium comprising: present to and prompt a user to select at least one color-palette element from a first set of color-palette elements; upon the user selecting the at least one color-palette element within the set, generate a first value based upon a chroma value and a luma value which corresponds to the at least one color-palette element; generate a second value based upon a rule set and compare the first value and second value and generate a third value based upon the comparison; present to and prompt a user to select a preview of at least one user interface based upon a third set of at color-palette elements corresponding to the third value; and produce software code output in accordance with the user selected at least one color-palette data element and the user interface preview. 
     Other objects of the invention and its particular features and advantages will become more apparent from consideration of the following drawings and accompanying detailed description. It should be understood that the detailed description and specific examples, while indicating the preferred embodiment of the invention, are intended for purposes of illustration only and are not intended to limit the scope of the invention. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The patent or application file contains at least one drawing executed in color. Copies of this patent or patent application publication with color drawing(s) will be provided by the Office upon request and payment of the necessary fee. 
         FIG. 1  is a schematic flowchart of a method of an embodiment of the invention. 
         FIG. 2  is a schematic flowchart of a method of an embodiment of the invention. 
         FIG. 3  is a schematic flowchart of a method and system of an embodiment of the invention. 
         FIG. 4  is a chart showing a color matching of an embodiment of the invention. 
         FIG. 5  shows various results of the color matching of  FIG. 5   
         FIG. 6  is a chart showing a color matching of an embodiment of the invention. 
         FIG. 7  shows various results of the color matching of  FIG. 7 . 
         FIG. 8  shows a color grid that enables the mapping of colors across a color spectrum. 
         FIG. 9  is a detailed view of the system architecture of an embodiment of the invention. 
         FIG. 10  is a schematic flowchart of a method of an embodiment of the invention. 
         FIG. 11  is a schematic flowchart of a method of an embodiment of the invention. 
         FIG. 12  is a schematic flowchart of a method to defining and mapping color combination object names to design output objects. 
         FIG. 13  shows an interface where color combination rules are defined and managed. 
         FIG. 14  is a workflow to generate an aggregate contrast score for an output color combination. 
         FIG. 15  shows various results and how an interface can be made to display a variety of design output visualizations. 
         FIG. 16  shows a color combination type filter on a results page. 
         FIG. 17  shows a contrast score filter on a results page. 
         FIG. 18  shows various user interactions with a design output in an interface. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     This application herein incorporates by reference co-pending U.S. application Ser. No. 15/702,710 entitled “INTELLIGENT SYSTEMS AND METHODS OF PRODUCING DIGITAL AND NON-DIGITAL DESIGN OUTPUTS” filed on Sep. 12, 2017. 
     This application herein incorporates by reference U.S. application Ser. No. 15/702,718 entitled “INTELLIGENT SYSTEMS AND METHODS FOR DYNAMIC COLOR HIERARCHY &amp; AESTHETIC DESIGN COMPUTATION” filed Sep. 12, 2017. 
     In the following description, numerous details are set forth for the purpose of explanation. However, one of ordinary skill in the art will realize that the invention may be practiced without the use of these specific details. 
     For ease of understanding and conceptual visualization, the inventive method and system is directed to providing methods of dynamic color hierarchy &amp; aesthetic design computation. 
     Before this invention, the selection of color design elements and process thereof was almost exclusively done by hand. How colors could be applied to a design output was typically left up to the designer in charge of the design output to 1) conceive possible applications of the colors and 2) to manually apply the colors to a sample design output in the ways conceived. This is/was time intensive and often restricted creative options due to the laborious nature of the task. 
     The present invention involves an inventive system and method to assign colors to produce a design output. In certain embodiments of the invention, the method and system provides assigning color value attributes to any color that allow colors to be compared and mapped across color palettes. 
     In certain embodiments of the invention, the ability to add N number of color rules so that N possible applications of color for a given specimen could be produced, assuming matches to the colors occurs under the matching acceptance criteria defined in the system is satisfied. 
     In certain embodiments of the invention, the programmatic comparison of colors in a subset to the colors defined in a rule is used to determine possible applications of color. 
     In certain embodiments of the invention, the system and method produces high-quality design specimens that meet sound visual design standards by using a system with the ability to define and refine one or more output acceptance criteria. 
     In certain embodiments of the invention, the invention limits the manual work trying to conceive how colors could be applied to a given design specimen. 
     In certain embodiments, the system can be applied in a variety of applications and use-cases, including stand-alone applications or as a part of an external application. 
     Method and System for Using Questions to Create Color Output 
     In certain embodiments, the system provides a means to communicate the steps and hierarchy of question/topic structures for a given color design output to end users. 
     In certain embodiments, the system and method provides various questions or topics assist a user in choosing color design preferences for a color design output. The system and method creates a color design output, replaces digital assets for a color design output, configures external tools and resources to support the deployment of a color design output, and/or arranges color design output layouts. 
     In certain embodiments, the content, the system asks a series of questions to a user. In certain embodiments, the order or existence of system-generated questions or topics and their options may be influenced dynamically by previously-satisfied questions or topics provided to the user. 
     In certain embodiments, the questions or topics guide users to producing a website or web publishable content. 
     In certain embodiments, the color input types include an option to continue to the next question, a multiple-choice option, a text input and/or any other input type. 
     In certain embodiments, the value to satisfy a question or topic provided by the system for one or more questions or topics are system-generated. 
     In certain embodiments, the system provides a graphical user interface (GUI) that displays one or more topics or questions at a time to a user. 
     In certain embodiments, satisfying a question or topic automatically progresses the user to the next question or topic. 
     In certain embodiments, a user can preview options to a question or topic using a binary toggle and select an option with a selector. 
     In certain embodiments, the question or topics are satisfied by the input or selection of a single option from one or more options. 
     In certain embodiments, the system produces a visual representation of the color design output for the purpose of visualizing the context of one or more color design options for a given topic or question before and after a user finalizes on an answer of the question or topic at hand. 
     Progress Indicator 
     In certain embodiments, the system includes a progress indicator used to show the color output. The system produces a visual representation of the progress of the color design output in real-time as users satisfy each question or topic. 
     In certain embodiments, the progress indicator is a visual indicator of the progress made. The system provides users with a visual indicator of the progress made within a given sub-step or the progress in whole of generating a color design output. 
     Exemplary Flow 
     In certain embodiments of the invention, a user will enter a flow and the following may occur:
         1. User selects a subset of colors.   2. Colors are assigned a color value-agnostic color attributes.   3. A series of rules were added that:
           a. Were based on a subset of colors; (and)   b. Defined how colors could be applied in a given instance if comparable color were found in the user&#39;s subset of colors; (and)   c. Rule colors were also assigned color value-agnostic color attributes.   
           4. The color value-agnostic attribute of each color in the subset of colors to be applied to a design output are compared to each color value-agnostic attribute of each rule color.   5. The system will compute all possible design outputs within the acceptance parameters defined in the computation process.   6. For matches that meet acceptance criteria standards, the system produces a visual representation of the color application output within the given design output specimen.   7. The system shows all possible color application outputs.   8. The system produces a detailed color style guide for the application of color.   9. The system produces design style variable to be applied to pre-coded web component structures.       

     Optionally, the user might see a small representation of the final design output respond and change as the user makes selections down the flow. 
     As depicted in  FIG. 1 , an embodiment of the inventive method and system is shown.  FIG. 1  shows method ( 100 ) including the following steps: receive at least one baseline color-palette element ( 110 ); calculate various color combinations using the at least one baseline color-palette element to create a set of outputs of color-palette elements ( 120 ); and produce a design output including the set of color-palette elements ( 130 ). 
     As depicted in  FIG. 10 , an embodiment of the inventive method and system is shown.  FIG. 10  shows a method including the following steps: receive color(s) ( 1010 ); calculate color combination(s) ( 1020 ); produce combination with qualifying color(s) ( 1030 ); produce design output(s) with color combination ( 1040 ); and display results ( 1050 ). 
     As depicted in  FIG. 11 , an embodiment of the inventive method and system is shown.  FIG. 11  shows the system will receive at least one color ( 1110 ). When the system receives at least one color, the color can be in any digital format—hex, rgb, rgba, and the like ( 1120 ). The system will calculate the hue-agnostic color value of the color or colors submitted to the system ( 1130 ). The system will query for color combination rules ( 1140 ). Each combination rule will have at least one primary color ( 1150 ). The system will calculate the hue-agonistic color value of the primary color or colors associated with at least one color combination rule ( 1160 ). The system will determine if a match is feasible ( 1170 ) by verifying that the number of colors received by the system ( 1120 ) meets the minimum number of colors required by the color combination rule to produce an output ( 1175 ). If the minimum number of colors required is not satisfied by the color combination rule to produce an output ( 1176 ), an output will not be generated by this color combination rule with the submitted colors ( 1120 ). If the minimum number of colors required is satisfied by the color combination rule to produce an output ( 1175 ), the system will then compare the hue-agnostic value of the system-received color(s) ( 1120 ) and the hue-agnostic value of the primary color(s) ( 1160 ) of the color combination rule ( 1177 ). If the hue-agnostic value(s) of the received color(s) ( 1120 ) and primary color(s) ( 1170 ) match ( 1177 ), a color combination output can be generated. 
     Once a color combination output can be generated from a successful match ( 1170 ), the instances of the primary colors ( 1150 ) within the color combination rule ( 1140 ) will be replaced ( 1180 ) with the baseline color or colors ( 1120 ). Once the primary colors of a color combination rule are replaced ( 1180 ), an output combination is produced ( 1185 ). The system will provide a design output or design asset ( 1190 ) that will be recolored. The system will map color combination rule object names to design asset objects and will replace the current design asset&#39;s object colors ( 1195 ) with the correlated colors found in the newly generated output combination ( 1185 ). The system will display a visual representation of the results of the recolored design output(s) generated by the system ( 1196 ). A design output produced by the system can be software code, a software program file, an image, or combinations thereof. 
     Color Combination Rules 
       FIG. 12  is a schematic flowchart of a method to defining and mapping color combination object names to design output objects. A user can define component object names ( 1221 ) in a color combination rule ( 1220 ) by observing and defining the objects present in a design asset ( 1210 ). Once a user defines a set of rule object names ( 1221 ) within a color combination rule ( 1220 ), a user can begin assigning object names variable color values ( 1222 ). A user can define as many variations of color combination rules ( 1220 ) as they would like. When the system receives at least one baseline color ( 1230 ), and the color or color submitted qualify as a match to at least one color combination rule, the instances of variable color values ( 1222 ) in the color combination rule ( 1220 ) are replaced with the mapped baseline color or colors to produce a combination output ( 1240 ). The system will then map color combination objects names to correlating design asset objects and replace the current design asset color values with the newly-generated color combination output color values to produce a new design output ( 1250 ). 
     As depicted in  FIG. 13 , in an embodiment of the invention, an interface where color combination rules are defined and managed is shown. A user can populate an interface with the object or components names observed in a design asset ( 1310 ). A user can assign color variables to object names in a color combination rule ( 1320 ). The system shows a visual of the color combination rule ( 1330 ) as a user assigns color variables to rule object names. 
     Various iterations of these steps are possible as set forth in the claims of the invention. 
     As shown in  FIG. 2 , in an embodiment of the invention, a question/answer based flow is shown. In set (A), the user is prompted with a design question. In step (B) the user is presented with customized options. In step (C) the user selects an option to a design question. Afterwards, the user repeats steps (A)-(C) for all questions in the flow, and afterwards the system produces a final design output based upon the flow. 
     In certain embodiments, a preview of the final output is generated in real-time and made visible to the user. 
     In certain embodiments, the questions include questions relating to color palettes, color applications in a specimen, color flows, font preferences, icon style preference, illustration style preferences, and the like. 
     In certain embodiments, the final output is generated based on rules using custom generated design preferences, not on pre-existing templates or previously established design styles foreign to the user. 
     In certain embodiments, the interface can be manipulated successfully guiding users through the flow using on a toggle control and selector control. 
     In certain embodiments, such as with step (A), the right down arrow keys are for moving between question design options and the down arrow to select the option in focus and move to the next question. 
     In certain embodiments, step (B) involves using a 4-way joystick where right/left motion moves the user between question/design option and the down motion selects the option in focus and moves the user to the next question. 
     In certain embodiments, step (C) involves using the spacebar key in combination with the enter key, where the spacebar key moves the user through the question design options and the enter key selects the option in focus and moves the user to the next design question. 
     As depicted in  FIG. 3  in an embodiment of the invention a question/answer based color design flow is shown. 
     Sources of color palettes are presented to a user for selection (A). In certain embodiments, the sources of color palettes are generated via color palette generator, manually add/selected, colors extracted from an image, colors extracted from a website or combinations thereof. 
     In step (B), a user selects a subset of colors. 
     In step (C), selected colors are assigned color value agnostic attributes. 
     The color value agnostic attributes are compared to a rule set based upon the selected subset of colors, comparable colors available, and a second rule created accordingly (D &amp; E). 
     In Step (F), replacing or updating the second rule set with the resulting color subset and assigning color value agnostic attributes is performed. 
     In Steps (G) and H), computing and applying the color value agnostic attributes for and of the resulting color subset to a design output preview. 
     In Step (I), the method involves computing and providing a detailed color design guide for the application of color. 
     In Step (J), the method involves computing and providing a design style variable to be applied to pre-coded web component structures. 
     This inventive color design flow provides the ability to assign color value-agnostic attributes to any color and allows colors to be compared and mapped across color palettes. 
     Also, the ability to add N number of color rules so that N possible applications of color for a given design may be produced. 
     The inventive method and system provides and allows for the comparison of colors in a subset to a color defined in a rule set, to facilitate determining possible applications of that color. 
     The inventive method and system provides and allows for generating all possible applications of color for a given design from any color subset. 
     The inventive method and system provides and allows for generating high-quality color designs that meet sound visual design standards by defining and redefining one or more color output in accordance with a rule set criterion. 
     Process for Matching (Color Combination) 
     The invention involves a method for computing possible color combinations given that the system has one or more color combination models, a method for comparing color values across a color spectrum, and a process to compare a subset of colors to the color combination model. 
     Steps to generating a color combination model: 
     A system designed to support the input of a color combination model. 
     A color combination model is comprised of one or more colors, a design output type, granular inputs on assigning colors to a whole or part of a sample design output representing a design output type 
     The ability to add one or more colors. 
     The ability to apply colors to a sample design output. 
     The ability to apply various tactics on how one or more colors applies to a whole or part of a sample design output. 
     Evaluating Colors Across a Color Spectrum: 
     The system has defined a color spectrum. 
     The color spectrum represents a series of colors with a pure value. 
     The color spectrum is placed on a grid. 
     The color spectrum grid spans the width of the color spectrum. 
     The color grid has an x and y axis. 
     The color grid&#39;s x axis is the color spectrum. 
     The color grid&#39;s y axis ranges from 20 to −20. 
     The values of the y-axis of the color grid 0 represents a pure color. 
     The values of the y-axis of the color grid of 1 through 20 represent adding white to the pure hue at 5% increments until at a value of 20 the color on any given x-axis value is white. 
     The values of the y-axis of the color grid of −1 through −20 represent adding black to the pure hue at 5% increments until at a value of −20 the color on any given x-axis value is black. 
     The grid has two parts—one part represents color values, the second part represents non-color values or shades of desaturated color, where −20 represents black and 20 represent white, where all values between −20 and 20 on the non-color portion of the grid represent shades of desaturated colors evenly shaded between white (20) down to black (−20). 
     The system is provided any color value. 
     The system will them compare the provided color value to all points on the color grid. 
     The system will determine which color or non-color value on the color grid most closely represents the color being analyzed by the system. 
     Once the system maps any color value to a color or non-color value on the color grid, the system will assign the closest color or non-color value to the value being analyzed by the system. If the color being analyzed by the system is closest to a value on the color portion of the color grid, the color will be assigned a {c,#} coordinate, where the ‘c’ represents that the color is closest to a ‘color,’ and the # will represent the color&#39;s position relative to the color&#39;s shade (−19), purity (0), or tone (19). If the color being analyzed by the system is closest to a value on the non-color portion of the color grid, the color will be assigned a {n,#} coordinate, where the ‘n’ represents that the color is closest to a non-color, and the # will represent the non-color&#39;s position relative to the non-color&#39;s shade (−20), purity (0), or tone (20). This coordinate provides a color value-agnostic value that will allow colors from across the spectrum to be compared, regardless of what their individual color is. 
     Steps to Compare a Subset of Colors to a Color Combination Model: 
     The system receives one or more colors to analyze. 
     The system calculates the color grid coordinate for each color. 
     The system references the color grid coordinates for each color within a given color combination model. 
     The system compares color grid coordinates of the colors under analysis with each of the colors within a given color combination model. 
     Before an output for a given color combination model can be considered for a possible output, these criteria must be met for each color combination model: 
     1. For a given color combination model, there are a certain number of colors and non-colors. The subset being analyzed must contain at least the same amount or more color values than are contained in a given color combination model. If a subset has less colors than a color combination model requires, that color combination model is invalidated and does not produce a possible output for that color combination model. 
     2. If the subset does have enough color values to satisfy the color combination model, each color must then be within a system-defined minimum distance from the color combination model color value&#39;s color grid coordinates. If the distance between the color combination model color value&#39;s color grid coordinates and the color subset&#39;s color grid coordinates, the color combination model is invalidated and does not produce an output. 
     If a color subset has the requisite number of colors and each of the color subset value&#39;s color grid coordinates meets the minimum distance criteria as defined by the system relative to each color combination subset, the system will identify the given color combination model as a candidate for an output for the color subset under analysis. 
     The system will then calculate all possible color combination matches for a given color combination model. A single color combination model can produce more than one color combination output if one or more values of a subset meet the criteria for producing an output within a given color combination model for various color roles under a color combination model. 
     Once the system computes possible color combinations, the system will then produce the color combination outputs. 
     Matching Criteria 
     In certain embodiments, the system produces color palette elements based on matching criteria set forth in the color rule data. 
     One method includes providing any color palette elements from any source, irrespective of the individual color palette element attributes and then computes possible outcomes by comparing the attributes of the color palette element(s) to the attributes of the color palette elements stored in a color rule. Alternately, the system could produce one or more color palette elements guaranteed to match the criteria to produce an outcome based on the color palette element attributes stored in one or more color rules. 
     In certain embodiments, the system and method generates color rules based on the programmatic evaluation and extraction of colors and color applications from an existing design. 
     In certain embodiments, the system and method produces a range of color combination design outputs in the form of a thumbnail representation or final digital output for the purpose of visualizing a color combination in the context of its final application including but not limited to websites, blogs, computer software, mobile applications, graphic design, interior designs, architectural designs, flow charts, diagrams, illustrations, icons, brochures, advertisements, print media, digital advertisements, presentations, marketing collateral, contracts, emails, business cards, banners, automotive design, civil engineering designs, electrical designs, fashion design, fashion accessory design, motion design, construction, culinary arts, set design, stage design, and the like. 
     As shown in  FIG. 4 , the matching criteria is shown based upon a rule. Here, color palette items c-13, c-6, c-1 and c8 are provided. Colors c-6 and c-1 are matched with colors c-5 and c-8 respectively. The matching of these colors generates a thumbnail representation of color as shown in  FIG. 4 . 
     A system then selects various colors similar to the matches based upon a first rule.  FIG. 5  shows a set of color matches based upon the first rule. The rule involves comparing luma and chroma values and finding colors that are similar to the color table as shown in  FIG. 8 . Based upon the rule match, the colors are automatically generated and presented to a user as a set of color palette options. 
     The system is able to quickly create these color options, which according to the prior art was difficult and time consuming to create. 
       FIG. 6  shows a second rule match whereby c-13, c-6, c-1 and c8 are provided. Colors c-6 and c-1 are matched with colors c-5 and c-8 respectively, however, additional black −20 shades were added to the baseline colors c-6 and c-4, thus affecting the rule. 
     Based upon the rule, a different color match is provided and  FIG. 7  shows a set of color matches based upon the second rule as thumbnails to a user. In this embodiment, the background is white, while the colors are generated to contrast with white and pop based upon the white background. 
       FIG. 8  shows a color table whereby the values of the y-axis of the color grid 0 represents a pure color. The values of the y-axis of the color grid of 1 through 20 represent adding white to the pure hue at 5% increments until at a value of 20 the color on any given x-axis value is white. The values of the y-axis of the color grid of −1 through −20 represent adding black to the pure hue at 5% increments until at a value of −20 the color on any given x-axis value is black. The grid has two parts—one part represents color values, the second part represents non-color values or shades of desaturated color, where −20 represents black and 20 represent white, where all values between −20 and 20 on the non-color portion of the grid represent shades of desaturated colors evenly shaded between white (20) down to black (−20). 
     Generate a Contrast Score 
     As depicted in  FIG. 14 , in an embodiment of the invention, a workflow to generate an aggregate contrast score for an output color combination is shown. A color combination is under analysis by the system ( 1410 ). Output color combination object names are assigned color values ( 1420 ). Parent or background objects to all objects in an output color combination are defined ( 1430 ). In one embodiment of the invention, parent objects are assigned to objects in the color combination output by a user manually defining parent objects in a color combination rule. In another embodiment of the invention, parent objects are automatically assigned to objects in the color combination rule by the system calculating the relative position and order of all objects in a space. The contrast between each object and its immediate parent object is calculated ( 1440 ). The overall distribution of contrast score results of objects to their immediate parent object is calculated ( 1450 ). A final, aggregated score is determined based on the results of the output color combination&#39;s contrast distribution ( 1460 ). 
     Interacting with Results Produced by the System 
     As depicted in  FIG. 15 , in an embodiment of the invention, various results and how an interface can be made to display a variety of design output visualizations is shown. The system displays the results ( 1510 ). A user selects a dropdown displaying alternate visualizations of a design output ( 1520 ). A user selects a single alternate visualization and the results on a page are updated by the system ( 1530 ). A user selects a dropdown displaying alternate mediums and types of visualizations of a design output ( 1540 ). A user selects a single alternate visualization and the results on a page are updated by the system ( 1550 ). 
     As depicted in  FIG. 16 , in an embodiment of the invention, a color combination type filter on a results page is shown. A user can narrow the results by a single attribute of the design outputs produced by the system. 
     As depicted in  FIG. 17 , in an embodiment of the invention, a contrast score filter on a results page is shown. A user can narrow the results by the calculated contrast score of the design outputs produced by the system. 
     As depicted in  FIG. 18 , in an embodiment of the invention, various user interactions with a design output in an interface is shown. A user can see which baseline color or colors were used in the design output ( 1810 ). A user can see what type of category a given design output was assigned by the system ( 1820 ). A user can see what the contrast score is of the design output ( 1830 ). A user can save a design output ( 1840 ). A user can export or download a design output ( 1850 ). A user can select an alternate design output medium and type offered by the system ( 1860 ). 
     Computer System &amp; System Architecture 
     The invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Apparatus of the invention can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps in the invention can be performed by a programmable processor execution a program of instructions to perform functions of the invention by operating on input data and generating output. The invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in 50 assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language. 
     Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random-access memory. Generally, a computer will include one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits). 
       FIG. 10  conceptually illustrates a computer system with which some embodiments of the invention are implemented. The computer system  2100  includes a bus  2105 , a processor  2110 , a system memory  2115 , a read-only memory  2120 , a permanent storage device  2125 , input devices  2130 , and output devices  2135 . In some embodiments, the computer system also includes a graphic processing unit (GPU)  2175 . 
     The bus  2105  collectively represents all system, peripheral, and chipset buses that support communication among internal devices of the computer system  2100 . For instance, the bus  2105  communicatively connects the processor  2110  with the read-only memory  2120 , the system memory  2115 , and the permanent storage device  2125 . 
     From these various memory units, the processor  2110  (also referred to as central processing unit or CPU) retrieves instructions to execute and data to process in order to execute the processes of the invention. The read-only-memory (ROM)  2120  stores static data and instructions that are needed by the processor  2110  and other modules of the computer system. 
     The permanent storage device  2125 , on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instruction and data even when the computer system  2100  is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device  2125 . The permanent storage device  2125  may be a fully solid-state storage, a conventional “spinning magnetic pallet” storage (i.e. hard-drive), or combinations thereof. 
     Other embodiments may use a removable storage device (such as a USB flash drive or SD Memory Card) as a temporary storage or as the permanent storage device  2125 . 
     Like the permanent storage device  2125 , the system memory  2115  is a read and write memory device. However, unlike storage device  2125 , the system memory is a volatile read-and-write memory, such as a random-access memory. The system memory stores at least some of the instructions and data that the processor needs at runtime. 
     Instructions and/or data needed to perform processes of some embodiments are stored in the system memory  2115 , the permanent storage device  2125 , the read-only memory  2120 , or any combination of the three. For example, the various memory units may contain instructions for processing multimedia items in accordance with some embodiments. From these various memory units, the processor  2110  retrieves instructions to execute and data to process in order to execute the processes of some embodiments. 
     The bus  2105  also connects to the input and output devices  2130  and  2135 . The input devices enable the user to communicate information and select commands to the computer system. The input devices  2130  include alphanumeric keyboards, touch panels, and cursor controllers. The input devices  2130  also include scanners through which an image can be input to the computer system. The output devices  2135  display images generated by the computer system. The output devices may include printers, pen plotters, laser printers, ink-jet plotters, film recorders, and display devices, such as cathode ray tubes (CRT), liquid crystal displays (LCD), or electroluminescent displays. 
     As shown in  FIG. 10 , bus  2105  also couples computer  2100  to a network  2165  through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet) or a network of networks (such as the Internet). Finally, as shown in  FIG. 4 , the computer system in some embodiments also optionally includes a graphics processing unit (GPU)  2175 . A GPU (also referred to as a visual processing unit or a display processor) is a dedicated graphics rendering device which is very efficient in manipulating and displaying computer graphics. The GPU can be included in a video card (not shown) or can be integrated into the mother board of the computer system along with the processor  2110 . Also, the computer system  2100  may be used as a personal computer, a workstation, a game console, or the like. Any or all of the components of computer system  2100  may be used in conjunction with the invention. However, one of ordinary skill in the art will appreciate that any other system configuration may also be used in conjunction with the invention. 
     By using the term “combinations thereof”, “or combinations thereof”, and “and combinations thereof” in a list, is meant to include various embodiments, such that certain embodiments include each of the elements in the list individually, other embodiments included one or more of the elements of the list, and other embodiments include all of the elements of the list. This is meant to be inclusive such that all possibilities of the list individually and in combination are contemplated. 
     Having thus described several embodiments for practicing the inventive method, its advantages and objectives can be understood. Variations from the drawings and description can be made by one skilled in the art without departing from the scope of the invention, which is to be determined from the following claims. 
     Accordingly, this invention is not to be limited by the embodiments as shown in the drawings and/or as described in the description, since these are given by way of example only and not by way of limitation.