[go: up one dir, main page]

WO2023111111A2 - Computer-implemented method for identifying errors - Google Patents

Computer-implemented method for identifying errors Download PDF

Info

Publication number
WO2023111111A2
WO2023111111A2 PCT/EP2022/086000 EP2022086000W WO2023111111A2 WO 2023111111 A2 WO2023111111 A2 WO 2023111111A2 EP 2022086000 W EP2022086000 W EP 2022086000W WO 2023111111 A2 WO2023111111 A2 WO 2023111111A2
Authority
WO
WIPO (PCT)
Prior art keywords
design
rules
design rules
identifiable
rule
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/EP2022/086000
Other languages
French (fr)
Other versions
WO2023111111A3 (en
Inventor
Wilfred KASEKENDE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of WO2023111111A2 publication Critical patent/WO2023111111A2/en
Publication of WO2023111111A3 publication Critical patent/WO2023111111A3/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image

Definitions

  • Design programs are used to create designs which can then be viewed on screen or, in some instances, printed out for the viewer. These designs can be considered to be visual arrangements, perceptual layouts, graphic designs, digital designs, digital images or graphical illustrations and layouts. While design programs have enabled more people to become involved in design, a user of these programs may fail to take into account design aspects that ensure the design is suitable for a diverse audience. For example, a designer may fail to take into account how a design will appear to a viewer who is colour blind. This can lead to designs where a viewer who is colour blind is unable to distinguish between elements of the design.
  • a designer may fail to consider whether a design that will be viewed on screen will harm a viewer who has epilepsy or aggravate a headache of a viewer with a migraine.
  • the user of a design program may fail to take into account how a change in scale will change the cognitive burden of a user viewing the design either due to alignment issues or issues with colour combinations that are difficult to perceive at certain scales. This has become more of an issue as screen/di splay sizes used can vary widely between viewers since designs may be viewed on everything from a mobile phone to an electronic billboard.
  • a user of design programs may wish to understand different aspects of their design to enable them to put their design in context and understand how their design relates to other designs. However, currently, users of design programs may not have the ability to do this.
  • the present application relates to a system and method for implementing a design rule checker, a design classifier, and a design evaluator that aims to address some of the above issues.
  • a computer-implemented method of detecting design errors in a design comprises storing a first set of design rules, the first set of design rules defining limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden.
  • the method then comprises receiving a new design from a user, identifying identifiable aspects of the new design, and determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules. If one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, the method comprises providing the user with details of the identifiable aspects that violate the first set of design rules.
  • a computer-implemented method of categorizing a design comprises storing design information.
  • the design information comprises at least one of: an identification of one or more genres and an indication of identifiable aspects of a design associated with each of the one or more genres; or an identification of one or more timeframes and an indication of identifiable aspects of a design associated with each of the one or more timeframes.
  • the method also comprises receiving a new design from a user, identifying identifiable aspects in the new design, and comparing the identifiable aspects of the new design with the identifiable aspects associated with the one or more genres and/or timeframes to identify the genre and/or timeframe that has the most identifiable aspects in common with the new design.
  • the method then comprises at least one method of outputting an indication of a design genre for the new design wherein the design genre is the genre that has the most identifiable aspects in common with the new design or outputting an indication of a timeframe for the new design wherein the timeframe is the timeframe that has the most identifiable aspects in common with the new design. Additionally, in some examples, this embodiment would be able to display which identifiable aspects are not in common with the design and the genre (e.g. your design does not look like an ad for infant food because it uses an aggressive font).
  • a computer-implemented method for evaluating how different identifiable aspects of a new design contribute to a uniqueness of the new design comprises receiving the new design from a user, identifying identifiable aspects of the new design, and determining how at least one of the identifiable aspects contribute to the uniqueness of the design.
  • the methods described herein may be performed by software in machine readable form on a tangible storage medium e.g. in the form of a computer program comprising computer program code means adapted to perform all the steps of any of the methods described herein when the program is run on a computer and where the computer program may be embodied on a computer readable medium.
  • tangible (or non-transitory) storage media include disks, thumb drives, memory cards etc and do not include propagated signals.
  • the software can be suitable for execution on a parallel processor or a serial processor such that the method steps may be carried out in any suitable order, or simultaneously.
  • firmware and software can be valuable, separately tradable commodities. It is intended to encompass software, which runs on or controls “dumb” or standard hardware, to carry out the desired functions. It is also intended to encompass software which “describes” or defines the configuration of hardware, such as HDL (hardware description language) software, as is used for designing silicon chips, or for configuring universal programmable chips, to carry out desired functions.
  • HDL hardware description language
  • FIG. l is a flowchart showing an example rule checker system for detecting design errors in a design.
  • FIG. 2 is a flowchart showing an example rule checker system for detecting design errors based on selected design rules.
  • FIG. 3 is a flowchart showing an example rule checker system that selectively detects identifiable aspects that have been updated when a design is updated.
  • FIG. 4 is a flowchart showing an example rule checker system for a multipage design.
  • FIG. 5 is a flowchart showing an example rule checker system that uses the frequency of occurrence of design rule violations in previous designs to determine an order in which to process design rules.
  • FIG. 6 is a flowchart showing an example rule checker that groups design rules to improve the efficiency of the rule checker.
  • FIG 7. is a flowchart showing an example rule checker that extracts data from designs to create an up-to-date design metric that can be used to determine a remarkability of a design.
  • FIG 8. is a flowchart showing an example rule checker that aids the visualization of design rule violations by grouping error instances based on relationships between identifiable aspects of the new design.
  • FIG 9. is a flowchart showing an example rule checker that identifies whether a new design rule being added to a set of design rules conflicts with any of the previous design rules in the set.
  • FIG 10A is a flowchart showing an example rule checker that merges two sets of design rules and identifies overlapping design rules.
  • FIG 10B shows two sets of design rules, set A, 1100, and set B, 1200, and the overlapping design rules 1300.
  • FIG 11. is a flowchart showing an example rule checker that identifies potential solutions/fixes to a design rule violation and provides these to a user.
  • FIG 12. is a flowchart showing an example rule checker that uses the features of a design application/program used when creating a design to determine which identifiable aspects in a design to detect/process.
  • FIG 13. is a flowchart showing an example rule checker that uses image context to determine the relevant design rules to process.
  • FIG 14. is a flowchart showing an example rule checker that determines an order in which to process design rules based on how often an individual user violates each design rule.
  • FIG 15. is a flowchart showing an example method for determining the uniqueness of a design and how individual aspects of the design contribute to the uniqueness.
  • FIG 16. is an example flowchart showing a computer-implemented method of categorizing a design.
  • FIG. 17 illustrates an exemplary computing-based device in which embodiments of the invention are implemented.
  • This application relates to computer-based analysis for designs in order to identify errors in the designs, determine the uniqueness of the designs and/or to classify the designs.
  • the designs being analysed comprise digital designs such as graphical illustrations and layouts, digital images, perceptual layouts and visual arrangements.
  • the designs can be for documents such as web pages, posters, books, packaging etc. In some cases the design may be intended for printing before use but in other cases the designs may be intended for viewing digitally.
  • the designs can be analysed to check for design errors that may increase the cognitive burden of a user viewing the design.
  • the designs can be analysed to check that the colours used in the design can be suitably distinguished by a user who is colour blind or to check that the design of a web page does not contain colour/light combinations that are known to be difficult to view by migraine sufferers.
  • the invention relates to a computer-implemented method for detecting design errors in a design.
  • the method may be performed by a computer-implemented rule checker such as the rule checker shown in Figure 1 wherein the rule checker in Figure 1 comprises a submission system, 115, a processing system 125, and a feedback system 135.
  • the rule checker may be a server system that is remote from client devices and receives the designs from client devices remotely.
  • the rule checker is designed to process digital designs that are intended to be viewed on a display screen. Viewing a design on a screen can constitute always viewing the design on a same size screen e.g., a specific sized electronic billboard or situations where different viewers may view the design on different sized screens. In other examples the rule/design checker can also be used on designs intended for printing before viewing.
  • the method comprises storing a first set of design rules wherein the first set of design rules provide constraints or otherwise defines limitations on identifiable aspects of a design to ensure the design can be viewed by a user without undue cognitive burden.
  • These design rules can be encoded/pre-programed or otherwise provided and reflect objective design rules indicating how various aspects of a design should be limited to ensure ease of viewing of the design and/or scalability of the design.
  • the design rules can provide limitation on colours of design that should be used in combination.
  • the design rules can provide limitations on the colours that should be placed next to each other/on top of each other based on colours that are known to look similar to users/viewers who suffer from colour blindness such as monochromacy, dichromacy and anomalous trichromacy.
  • the design rules can provide limitations on the colours of text and background based on combinations that are known to be difficult to read for a general user.
  • the design rules can provide limitations on the brightness/luminosity/intensity of colours for a website to ensure the colours are suitable to be viewed by a viewer suffering from a migraine.
  • the design rules can relate to alignment and can be alignment rules that ensure objects in the design are correctly aligned. It can be difficult for a user to notice when objects are slightly misaligned, but this can increase the cognitive burden on a viewer of the design as the viewer can be drawn to the error in alignment without understanding why.
  • a design of for example a digital poster, may be viewed by the designer on a screen at a significantly smaller scale than when the design is displayed, for example on a digital billboard. Therefore, a design creator viewing the design may not notice alignment errors at this smaller scale that become obvious when the design is displayed at a larger scale. Thus, checking for errors in alignment rules enables easier scaling of designs.
  • design rules include contrast, legibility, font size inconsistency, whether aspects/elements of the design are outside a crop area based on a document size and congestion. The skilled person would understand that other suitable design rules can also be considered.
  • the method also comprises receiving a new design from a user.
  • the new design can be received by submission system 115.
  • the design checker may be an online design checker or other remote server system and the new design can be received in various suitable ways such as via a chat client, via an email client, via a URL (universal resource locator) for the design, or via direct upload to the online design checker.
  • the design checker can be run locally on the user’ s machine and the new design can be accessed from the user’ s machine.
  • the design can be received from a chat client (WhatsApp, Microsoft Teams, Slack) or email client.
  • the method comprises identifying identifiable aspects or features of the new design.
  • This operation can be performed by processing system 125 of rule checker which can parse the new design to identify design features that correspond to identifiable aspects.
  • the identifiable aspects or features of the new design can comprise any aspects or features of the new design that relate to design rules in the first set of design rules.
  • the identifiable aspects/features of a design can thus comprise elements of the design that can be compared with design rules to establish whether the design rules are being followed or violated.
  • Identifiable aspects can relate to a layout of elements in the design, a colour of elements in the design, a form of elements in the design (e.g. is the element, text, an image etc.) or aspects of text or font in the design (e.g. font size, shape of paragraph) or a group of aspects (e.g.
  • the design checker/method can use pixels to identify the identifiable aspects/features of the new design rather than any pre-existing manipulatable vectors that may be in the new design. This can help ensure the processing of the new design is accurate by analysing a most visually accurate representation of the new design.
  • the method then comprises determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules.
  • This may comprise the processing system 125 of the rule checker loading the first set of design rules and then using the first set of design rules to check for design errors against predefined objectives contained in the design rules.
  • the design rules may specify limitations or constraints on the identifiable aspects of the design and determining whether an identifiable aspect violates a design rule comprises determining the identifiable aspect is not within the limitations or constraints defined by the design rule.
  • a design rule may specify objects have to either be horizontally aligned or have a horizontally separation greater than a threshold value (e.g., 10 pixel horizontal separation threshold).
  • An identifiable aspect may comprise the horizontal separation between two objects and the design rule may be considered violated if the horizontal separation is only 3px.
  • a design rule may specify that objects that are layered must have colours that are distinguishable by general viewers and a user/viewer with colour-blindness.
  • the identifiable aspect may comprise the colours of two-layered objects and the design rule may be violated if the two objects would appear similar in colour to a general viewer and/or a user/viewer with colour-blindness.
  • the method may comprise determining the extent of any of the identifiable aspects of the new design, according to design rules in the first set of design rules. In the case that those rules that have a threshold, determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules.
  • determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises first determining whether any of the identifiable aspects of the new design are governed by the any of the design rules in the first set of design rules and then, if one or more of the identifiable aspects of the new design are governed by any of the design rules in the first set of design rules, identifying whether any of the one or more identifiable aspects of the new design violate one or more of the design rules in the first set of design rules
  • the method further comprises providing information to the user detailing either the identifiable aspect that violated the design rule and/or the design rule violated by the identifiable aspect.
  • This can be performed by feedback system 135 of the rule checker in Figure 1.
  • This information may be provided as a list that accompanies the new design. However, in other examples, as described later, this information may be provided on the new design itself to enable the user/designer to easily determine where the design rule violation occurred. This makes it easier for the user/designer to determine errors in their new design and thus correct the identified errors.
  • providing to the user details of the identifiable aspects that violate the design rules comprises superimposing an indication of a design rule violation on the new design at a position of the design rule violation. In some examples this can involve returning an indication if any design rules were violated. In other examples, this can involve returning single or multiple images which indicate single or multiple identifiable aspects which violated a single or multiple design rules. In other examples this can involve returning a link to a web page or application which indicates whether the identifiable aspects within the design violated any of the design rules. In other examples, this can involve providing a notification on the user’s device.
  • the invention relates to lowering the amount of cognitive effort involved in finding design rule violations by using a design rule violation checker to detect, visualise, suggest improvements and correct errors in designs.
  • a method for guiding a user to the elements most likely to be involved in design rule violations is provided.
  • a user uploads a design to a processing server which contains predefined design rules.
  • the server uses predefined design rules to check for design rule violations.
  • the server sends the errors back to a client’ s local device.
  • the local device presents the errors to the user by superimposing a visual representation of the errors on the design. Potential solutions to the design errors may also be suggested.
  • an indication of the rule set which a design rule belongs to may be indicated.
  • an indication of the author of the rule or rule set may be indicated.
  • the first set of design rules may not be universally applicable.
  • the first set of design rules further comprises exception parameters for one or more of the design rules from the first set of design rules wherein the exception parameters define a specific situation in which the design rule corresponding to the exception parameter does not apply.
  • a design rule can be considered to have parameters that govern when the design rule is violated.
  • Exception parameters can be additional conditions that specify when a design rule is not violated even if it is considered violated based on the design rule parameters.
  • “exception parameters” may be added to each design rule. Exception parameters are specific situations where the design rule is not applied (e.g. “don't apply geometry rules on text”).
  • Exceptions are evaluated to detect if an exception to the design rule is present.
  • Each exception parameter may have a class, comparison operator and value that could be considered to be similar to other rule parameter conditions. If a design rule is violated but a valid exception is found, the rule violation is disregarded. This allows a user to add exceptions to a design rule. Adding this exception feature to design rules may make it possible to build broader-reaching design rules that can handle specific situations where they are not applicable and avoid tightly-scoped parameter conditions for design rules wherein tightly scoped parameter conditions result in a large number of rules being required to account for a wide variety of design issues while avoiding false positives.
  • a user may choose which rules from the first set of design rules they wish the design checker/computer-implemented method to consider.
  • the user can provide an indication of this set of rules with the design.
  • the user may provide an indication of a subset of the first set of design rules or an indication of individual rules.
  • the user may also provide an indication in which order the design rules should be processed when determining whether any of the identifiable aspects violate any of the design rules.
  • Determining whether any of the identifiable aspects violate any of the design rules may comprise only determining whether any of the identifiable aspects violate any of the design rules specified by the user. The determining may occur in an order specified by the user or there may be limitations imposed by the rule author (e.g., you must determine text position before using its alignment).
  • a user may wish to limit the rules processed to have the rule checker work more efficiently.
  • the rule checker may receive the new design in the form of image data and may also receive a rule request limiting the rules from the first set of design rules that should be processed.
  • this limited set of design rules is loaded into the rule checker.
  • identifiable aspects related to the limited set of design rules is determined.
  • the method may further comprise selective detection of identifiable aspects of a design to reduce the processing requirements of processing a design when the design is updated.
  • the method further comprises receiving an updated version of the new design from the user/ design er.
  • the method then comprises comparing the updated version of the new design and the original version of the new design to identify differences between the updated version and the original version.
  • data relating to any identifiable aspects/design rule violations that are identical between the original version and the updated version of the new design can be imported from the original version for later display. Therefore, any design rule violations that are the same in the updated version as the original version of the new design can be easily determined without processing all the identifiable aspects of the updated version of the new design.
  • this data may be ignored to avoid providing unnecessary information to a user.
  • Identifiable aspects of the updated version of the design that are the same as identifiable aspects of the original version can then be ignored in further analysis of the updated version of the new design as shown in block 345.
  • the method then comprises determining identifiable aspects of the differences between the updated version and the original version based on design rules from the first set of design rules.
  • the method then comprises determining whether any of the identifiable aspects of the differences violate any of the design rules in the first set of design rules.
  • the method then comprises providing to the user details of the identifiable aspects that violate the first set of design rules if one or more of the identifiable aspects of the differences violate one or more of the design rules in the first set of design rules.
  • the method comprises loading historical data related to the identifiable aspects of a design, comparing pixel values between two images to determine which regions have changed and storing the locations of these regions, searching through the historical data related to the identifiable aspects of a design and deleting them if their location overlaps with the location of any of the changed image regions, only detecting the identifiable aspects of a design for the changed design regions, searching through the design rules and checking for instances of rule violations in the identifiable aspects of a design, and sending the errors back to a client’s local device. This means a user can version an image and only see new errors.
  • the method may further be performed on a multipage design. Multiple page documents can have identical elements. The cost of analysing the same element on each page is a waste of computing resources and elongates the feedback loop.
  • the methods further comprise performing the above method for the first page of the multi-page design. The method then comprises for each subsequent page of the design: comparing the pixel values and/or element data to the pixel values and/or element data of the previous pages of the design to identify identical regions, as shown in block 415. The method then further comprises providing, to the user, the details of the identifiable aspects that violate the first set of design rules in identical regions from the previous pages.
  • the method then comprises: identifying identifiable aspects on the subsequent page of the new design in accordance with block 425, determining whether any of the identifiable aspects violate any of the design rules in the first set of design rules in accordance with block 435; and if one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, providing to the user details of the identifiable aspects that violate the first set of design rules as shown in block 445.
  • This provides efficient detection of the identifiable aspects of a design across a multiple page document. It is noted that while in the above example a user is provided with feedback related to identical regions on every page, in some examples feedback with respect to these regions is only provided on a single page such as the first page of the document.
  • the method results in efficient detection of the identifiable aspects of a design across a multiple page document.
  • multiple page documents can have identical elements.
  • the cost of analysing the same element on each page is a waste of computing resources and elongates the feedback loop.
  • a method for efficiently detecting identifiable aspects of a design across a multiple page document comprises searching through the pages and cross comparing the pixel values and or element data between the pages to determine which regions are identical and storing their locations.
  • the method further comprises using the locations of the identical regions to selectively filter out identical regions during the process of detecting identifiable aspects of a design.
  • the method also comprises copying and adjusting the detected identifiable aspects of a design to map them to the identical regions across the pages.
  • the method further comprises searching through the design rules and checking for instances of rule violations in the identifiable aspects of a design.
  • the method also comprises sending the errors back to a client’s local device. This results in less wastage of computing resources.
  • the method described with respect to other figures may further comprise storing information about a set of previous designs wherein the information comprises a list of design rules and for each design rule in the list an indication of a number of occurrences of a violation of that design rule in the previous set of designs.
  • this information may be loaded into the rule checker.
  • the operation of identifying whether any of the one or more identifiable aspects violate one or more design rules may then comprises processing design rules based on the number of occurrences of violations so that design rules that have more occurrences of a violation are processed before design rules with a lower number of occurrences of a violation.
  • the analysis is augmented with remarkability data as shown in block 525.
  • Remarkability/remarkability data can be considered to be a combined measure of quality and uniqueness of a design. However, in some examples the remarkability may just cover uniqueness. Either way, remarkability can be considered a measure of how distinct the design would appear to a user. As with the above methods, and as shown in block 535, the details of violated design rules may then be returned to the user/design in accordance with the methods described above. In some examples, as shown in block 545, the information about a set of previous designs may be updated with information about design rules violated by the new design to keep this information up-to- date.
  • a method for prioritising the order in which design rules are checked comprises uploading a design to a remote processing server which contains predefined design rules.
  • the method also comprises using the predefined design rules to check for design rule violations.
  • the method further comprises loading a remarkability structure.
  • a remarkability structure is a data structure containing data about the frequency of occurrence of design rule violations and/or the identifiable aspects of a design.
  • the method comprises sorting the predefined design rules so that the most frequently occurring design rules within the remarkability structure are run first.
  • the method also comprises searching through the design rules and checking for instances of rule violations.
  • the method comprises sending the errors back to a client’s local device.
  • the method also comprises presenting the errors to the user by superimposing a visual representation of the errors on the design.
  • the method may comprise grouping design rules to improve the efficiency of the rule checker.
  • the methods described above may further comprise determining, for each design rule, any measurements or functions that need to be performed on the design to identify the relevant identifiable aspects of the design that need to be analysed to detect a violation of the design rule.
  • the method then comprises grouping the design rules by the measurements or functions that need to be performed on the design such that the design rules in each group have overlapping measurements or functions.
  • the rule checker/method may then check the design rules in batches. This may comprise processing the design rules in groups.
  • the method comprises determining whether any of the identifiable aspects of the new design violate any of the design rules by performing the measurements or functions necessary to identify the identifiable aspects that need to be analysed to detect any violations of design rules in the group, and identifying whether any of the one or more identifiable aspects of the new design violate any of the design rules in the group.
  • the method may comprise sorting the measurements or functions based on a time taken to perform each measurement or function, and processing groups of design rules that depend on measurements or functions that take less time to perform before processing groups of design rules that depend on measurements or functions that take more time to perform.
  • the measurements or functions that need to be performed on the new design to identify the relevant identifiable aspects comprises determining the measurements or functions using a function dependency data structure wherein the function dependency data structure comprises an identifier for each design rule and a data structure indicating whether each measurement or function is a dependency of the design rule identified in the identifier.
  • Each rule requires measurement data to be generated prior to the rule being able to check for a violation. Previously users had to wait for the identifiable aspects of a design to be detected prior to any rule violations being checked for.
  • a method for efficiently performing rule violation checks is provided. The method involves loading the design rules that will be required to check for rule violations. The method also comprises using a function dependency data structure to determine which functions must be run to generate the measurement data necessary to perform a rule violation check.
  • the function dependency data structure consists of rule identifiers and a structure stating whether a particular function is a dependency of a particular rule. The method also comprises finding instances in the function dependency data structure where rules share function dependencies and creating groups of rule identifiers.
  • the method further comprises searching through the groups of rule identifiers.
  • the method comprises performing the functions necessary to produce the measurement data needed to perform the rule violation checks within a group. Additionally, the method comprises performing the rule violation checks defined in a group.
  • the method comprises returning the rule violations to the user as they are detected.
  • the method provides an asynchronous batched rule checking pipeline which allows the user to get the results of the design rule violation checks faster. A user does not have to wait for all the design rule violation checks to be performed before receiving feedback and means it is possible to return feedback to the user faster.
  • the method further comprises extracting data from designs to create an up-to-date design metric that can be used to determine a remarkability of a design.
  • the method comprises iteratively repeating the operations of the methods described above with multiple new designs. The method therefore comprises, for each design, identifying the identifiable aspects as shown in block 710 and identifying design rule violations as shown in block 715. The method then comprises generating/updating remarkability data as shown in block 720.
  • the method can comprise for each new design storing data indicating the identifiable aspects identified in the new design and/or the design rule violations found for the new design and using the stored data to determine a number of occurrences of at least one identifiable aspect and/or at least one design rule violation across multiple designs.
  • This remarkability data can then be used for example by receiving a further new design from a user, identifying the identifiable aspects in the further new design, determining a frequency of occurrence of at least one identifiable aspect of the further new design based on the number of occurrences of the at least one identifiable aspect stored in the stored data, and providing the frequency of occurrence information to the user.
  • this remarkability can be used by receiving a further new design from a user, identifying the identifiable aspects in the further new design, determining whether any of the identifiable aspects of the further new design violate any of the design rules in the first set of design rules, determining a frequency of occurrence of at least one design rule violation of the further new design based on the number of occurrences of the at least one design rule violation stored in the stored data, and providing the frequency of occurrence information to the user. In some examples, this can involve tracking the frequency of occurrence of the at least one identifiable aspect/at least one design rule violation over time or across design genres.
  • the method can involve computing, updating and tracking the frequency of occurrence of identifiable aspects and design rule violations.
  • the frequency of occurrence can be tracked over time and it can be contextualized to specific design genres/tags. Different identifiable aspects or design rule violations can be tracked.
  • a method for collecting design metric data is provided.
  • the method comprises a user uploading a design to a remote processing server which contains predefined design rules; using the predefined design rules to check for design rule violations; searching through the design rules and checking for instances of rule violations; accumulating the design rule violations and identifiable aspects of the design; storing remarkability data about the frequency of occurrence of design rule violations and/or the identifiable aspects of a design; persisting the remarkability information; sending the errors back to a client’s local device; and presenting the errors to the user by superimposing a visual representation of the errors on the design.
  • the remarkability data about a design is accumulated as the design is checked for rule violations.
  • the crowd-sourced remarkability data can then be used to assess the remarkability of other designs. This creates an up-to date design metric that can be used to determine the remarkability of a design.
  • an adaptation of the above method can be used to provide a global measure of a design’s remarkability relative to other designs around the world.
  • designers are uncertain about the global remarkability of a design. This lack of knowledge only gives designers a partial picture about how their design is likely to be perceived.
  • a method for providing design remarkability feedback comprises uploading a design to a remote processing server, loading remarkability data about the frequency of occurrence of design rule violations and/or the identifiable aspects of a design.
  • This remarkability data may have been harvested by aggregation from other designs that have been submitted for testing.
  • the method then comprises searching and assigning a remarkability score to design rule violations and/or the identifiable aspects of a design.
  • the remarkability score is a function of the number of previous designs which have at least one instance of a design rule violation or identifiable aspect of a design as a proportion of the number of previous designs.
  • the method then comprises sending the remarkability score back to a client’s local device. As such, a user would receive additional data about how similar their design and the identifiable aspects are to other designs.
  • the method can further comprise ranking design rule violation instances when displaying them.
  • the first set of design rules may further comprise a criticality score for each design rule wherein the criticality score is a measure of a degree to which a violation of the design rule would increase the cognitive burden to the user.
  • the methods described above may then further comprise, for each identifiable aspect that violates a design rule from the first set of design rules, determining a magnitude score for the design rule violation wherein the magnitude score is computed based on a size of the design rule violation relative to a size of the design, and calculating a priority score for the design rule violation wherein the priority score is a function of a multiplication of the magnitude score for the design rule violation and the criticality score for the design rule violation.
  • the above mentioned operation of providing to the user details of the identifiable aspects that violate the first set of design rules may comprise providing an indication of at least one of the design rule violations wherein the provided indications are visually ranked based on the priority score associated with the design rule violation. This can improve the guidance for users when exploring rule violations since previously when displaying multiple design rule violation instances to a user, it was difficult to know which ones to prioritise showing.
  • the method may comprise for each identifiable aspect which is beyond a threshold of a design rule from the first set of design rules: determining a magnitude score for the identifiable aspect wherein the magnitude score is computed based on a size of the identifiable aspect relative to a size of the design; and calculating a priority score for the identifiable aspect wherein the priority score is a function of a multiplication of the magnitude score for the identifiable aspect and the criticality score for the identifiable aspect.
  • the method may comprise receiving design rule violations instances, searching through design rule violations instances and computing a priority score for each of them wherein the priority score is a function of the rule violation instances' magnitude score multiplied by its criticality score and the magnitude score is the area of the rule violation instance’s error.
  • the criticality score can be a predefined value attributed to each design rule e.g. a text alignment rule violation instance with an error size of 20 pixels will have a lower rank than an error with the same criticality score but, with an error size of 400 pixels.
  • the prominence scores of each design rule violation instance will be used to visually rank the design rule violation instances. This means a user can more easily discern higher priority design rule violation instances as they are more salient.
  • the method may also comprise clearly visualising design rule violations by grouping error instances based on relationships between identifiable aspects of the new design.
  • This method can use the design rule violations mentioned above which may be received as error data in block 815.
  • the method then further comprise grouping the design rule violations wherein design rule violations are grouped if they occur within a threshold distance of each other on the design as shown in block 825.
  • the above-described operation of providing to the user details of the identifiable aspects that violate the design rules then comprise superimposing an indication of each group of design rule violations on the new design.
  • the method may comprise providing an indication of design rule violations with a priority score above a threshold in addition to providing an indication of each group of design rule violations.
  • the method may also comprise adjusting a number of indications provided based on a zoom level at which the design is being viewed by the user.
  • This can also involve adjusting the number of indications by adjusting the size of the groups so there are fewer indications per group and more groups as the zoom level increases.
  • this can also involve adjusting the number of indications by only providing indications for design rule violations that have a size below a threshold minimum size and wherein the threshold minimum size is reduced as the zoom level increases. This improves rule violation visibility within an interactive interface since multiple instances of a design rule violation within close proximity leads to visual clutter.
  • a method for clearly visualising design rule violations may be provided.
  • the method may comprise receiving design rule violations instances, searching through design rule violation instances and grouping them together.
  • the grouping can be based on different criteria. E.g. computing the distance between rule violation marker coordinates and the similarity of the design rules. Marker coordinates consist of x and y values indicating where a marker will be placed. If the distance between markers is within a threshold and violated design rules are similar, the method comprises visually grouping the violation instances together into an expandable group.
  • the method can comprise ensuring that the most critical rule violations are still salient regardless of visual grouping e.g. making the critical rule violations’ markers a more salient colour or placing them above less critical rule violation’s markers in visual hierarchy. Additionally, a condition of the design rule violation instances having shared elements can be added to the grouping criteria. This results in less visual clutter due to errors being grouped together.
  • a method for improving rule violation visibility within an interactive interface may comprise receiving design rule violations instances, and grouping them together on different zoom levels.
  • the zoom level grouping can be based on different criteria such as the dimensions of the region of interest of the rule violation instance, relative to the dimensions of the design e.g. a rule violation instance which has a region of interest with an area which is greater than 50% of the area of the design will be placed in the zoom level group 1.
  • Zoom level group visibility will be dependent on the degree to which a user has zoomed into a design e.g. a user zoomed in 0% - 20% can view the rule violation instances in zoom level group 1, a user zoomed in 21% - 40% can view the rule violation instances in zoom level group 2. This enables a user to hierarchically explore errors and prevents multiple design rule violations within close proximity which can lead to visual clutter.
  • the above examples have focused on a first set of design rules wherein the first set of design rules define limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden.
  • a user may wish to also check the design meets a second set of design rules.
  • This second set of design rules may reflect design rules that can change between designs and users.
  • the second set of design rules may take into account cognitive aspects of the design. For example, material produced for sufferers of migraines may require use of a muted colour scheme, particular for material designed to be viewed on a computer, to ensure a viewer’s migraine is not aggravated by the design.
  • This second set of design rules could also take into account limitations of a display device with which the design will be viewed, or limitations imposed by an organization responsible for the design to ensure conformity between designs. The skilled person would understand other uses of a second set of design rules are also possible.
  • the methods described above may further comprise receiving a second set of design rules wherein the second set of design rules utilising user preferences for identifiable aspects of a design.
  • the methods then comprise determining whether any of the identifiable aspects of the new design violate any of the design rules in the second set of design rules, and if one or more of the identifiable aspects violate one or more of the second set of design rules, providing to the user details of the identifiable aspects that violate the second set of design rules.
  • each design rule in the first set of design rules and the second set of design rules can be considered to identify an identifiable aspect of the design and parameters governing that identifiable aspect of the design.
  • the method further for combining sets of design rules may then comprise comparing the design rules in the first set of design rules and the second set of design rules to confirm that for each design rule in the second set of design rules a set of parameters exist that satisfy both that design rule and all of the design rules in the first set of design rules. If a design rule exists in the second set of design rules where no parameters can satisfy both that design rule and all of the design rules in the first set of design rules, the method comprises indicating that design rule to the user.
  • a similar process to the one described above may also be used when adding a new rule to either the first set of design rules or the second set of design rules.
  • Each design rule in the first set of design rules or second set of design rules can be considered to specify an identifiable aspect of the design and parameters governing that identifiable aspect of the design.
  • the methods mentioned above can then further comprise receiving a new design rule to be added to either the first set of design rules or the second set of design rules as shown in block 910.
  • the first set of design rules and/or second set of can then be loaded as shown in block 915.
  • the methods then comprise comparing the new design rule to the design rules in either the first set of design rules or the second set of design rules to confirm that a set of parameters exist which satisfy both the new design rule and all of the design rules in the first set of design rules or second set of design rules, as shown in block 925.
  • the methods comprise adding the new design rule to the relevant set of design rules.
  • the method comprises indicating that new design rule to the user.
  • the method involves loading the design rules that will check for rule violations, then comparing the parameters of the design rules to find contradicting design rules.
  • the parameters are a list of conditions which must all be satisfied for a rule to be violated.
  • Each condition has a “class” (e.g. classes: font-size, font-weight, colour and background colour), “comparison operator” (e.g. comparison operators: equal to, not equal to, less than.) and “value” (e.g. values: 16, “bold”, “regular”, “255_255_255”, 0, 1.).
  • a search is performed between rules which have identical or linked classes.
  • the method comprises searching to check that a combination of values exists which could satisfy all the comparison operator and value set conditions. If no combination of values exists that could satisfy all rule conditions, the rules are considered “contradictory”. If contradicting design rules are found, they are flagged to the user.
  • the search for contradicting rules ensures that any error reported can be solved. This prevents unknown contradicting rules from existing in a design rule violation checker such as combinations of rules that have no possible solution (e.g. rule 1 says “it must be blue” and rule 2 says “it can’t be blue”).
  • Figure 10A shows a flowchart of a method for merging rules while Figure 10B shows the rules to be identified.
  • Figure 10B shows a first set of design rules 1100 and a second set of design rules 1200 and a common set of design rules 1300.
  • the methods described above can further comprise identifying the design rules 1300 that are common between the first set of design rules 1100 and the second set of design rules 1200 so these rules are only processed a single time.
  • each design rule in the first set of design rules and the second set of design rules can be considered to specify an identifiable aspect of the design and parameters governing that identifiable aspect of the design.
  • the method can further comprise the operations from the flowchart in Figure 10B.
  • the method can comprise merging the design rules as shown in block 1025. This can comprise comparing the design rules in the first set of design rules and the second set of design rules to identify design rules in the second set of design rules that have a similar design rule in the first set of design rules wherein a design rule in the second set of design rules has a similar design rule in the first set of design rules when the design rule in the second set of design rules relates to the same identifiable aspect and has more than a threshold degree of overlap in parameters with a design rule in the first set of design rules.
  • the method can then comprise when a design rule in the second set of design rules has a similar design rule in the first set of design rules, merging the design rules to form a new design rule in only one of the first or second set of design rules. This eliminates redundant duplicated rule violation checks.
  • a method for identifying similar rules and merging them begins by loading a list of design rules and comparing the design rules to find parts of the rules that have identical conditions.
  • a pair of similar design rules are identified by the degree of overlap between their parameter conditions.
  • the overlapping rules are merged together.
  • the merging process involves the overlapping rules becoming a separate entity that is run only once, and the results used for both rules. This means fewer redundant or duplicate errors would be flagged, error visualisations would be less cluttered, and less computation effort is wasted on duplicate rules.
  • the first set of design rules and the second set of design rules may comprise an importance score for each design rule.
  • the method may then comprise combining the first set of design rules and the second set of design rules to form a third set of design rules wherein the third set of design rules are ordered by the importance score of each design rule.
  • the determining whether any of the identifiable aspects violate any of the design rules in the first and second set of design rules may comprise determining whether any of the identifiable aspects violate any of the design rules in the third set of design rules.
  • the providing details to a user may comprise providing the details of the identifiable aspects that violate design rules with a higher importance score before identifiable aspects with a lower importance score.
  • Each design rule set only specifies errors, so total errors are a simple collection of the errors in both sets of design rules.
  • a method for establishing the importance of rules can be provided.
  • Each rule set may have an importance score for each of its rules, which allows the most important rule violations to be presented first. But when two rule-sets are combined, the relative rule importance must be established between the two relative rules. This is done by specifying that all rules on an absolute scale (e.g. 0-1), so rules from any set can be simply combined.
  • a method for detecting contradictory solutions can be provided, so the solutions can be harmonized.
  • Each potential solution to a rule is passed by all of the rules in both rule sets, so that only solutions that pass all rules may be proposed.
  • local and global rules can be harmoniously combined into one non-contradictory set, and any solutions proposed by a rule satisfy the entire rule set.
  • This allows a custom/local set of design rules to co-exist with a global set of design rules, without contradiction, so that both sets of rules can be applied to new designs, without contradicting each other. This also ensures a local set of rules does not contradict the global set of rules, leading to conflict.
  • the methods described above may further comprise storing a set of candidate solutions each candidate solution defining a potential fix for a particular violation of a particular design rule.
  • the method may then comprise determining a particular violation of a particular design rule caused by each of the one or more identifiable aspects that violate the one or more design rules of the first set of design rules as shown in block 1115, identifying one or more potential candidate solutions from the set of candidate solutions for each identifiable aspect that violates the one or more design rules of the first set of design rules wherein the one or more potential candidate solutions define a potential fix for the particular violation of the particular design rule as shown in block 1125, and providing the potential candidate solutions to the user as shown in block 1135. This provides constructive feedback on design rule violations.
  • each candidate solution of the set of candidate solutions is associated with a suggestion type wherein the suggestion type indicates the form of design rule violation being fixed by the candidate solution.
  • the method may then further comprise storing a suggestion order data structure wherein the suggestion order data structure comprises an indication of the order in which suggestion types should be applied, using the suggestion order data structure and the suggestion type of each candidate solution of the set of candidate solutions to order the candidate solutions, and providing the candidate solutions to the user along with an indication of the order in which the candidate solutions should be applied. This may improve the client’s speed in implementing suggested/candidate solutions.
  • the order of the candidate solutions may be modified depending on their effect on the other rules. So solutions that cause the least decrease in other scores may be presented first (e.g. if a potential solution for aligning text would cause colour balance scores to decrease, then reduce the solution rank of that potential solution).
  • a method for generating suggested or candidate solutions comprises loading predefined suggested solution candidates for a specific violated design rule.
  • a suggested solution candidate is a potential fix to a specific violated design rule and contains a text description of how to fix the violation and the necessary conditions which must be present in the identifiable aspects of a design. If all of the listed conditions are present within the identifiable aspects of a design the suggested solution candidate is applicable.
  • the method comprises searching through suggested solution candidates and storing the applicable ones, e.g. a suggested solution candidate to change the colour of a body of text from red to white could have a condition that the background of the body of text is not white.
  • the method also comprises displaying the suggestions alongside the corresponding design rule violations. This ensures a user would be able to explore suggested fixes for the rule violations flagged by the design rule violation checker.
  • the order in which suggested solutions are incorporated into a design affects how efficiently the changes are made. Incorporating suggested solutions in the wrong order can lead to the user having to backtrack e.g. implementing an alignment solution before a spacing solution would require the user to perform the alignment again after fixing the spacing.
  • a method for improving the order efficiency of incorporating suggested solutions is thus provided.
  • the method comprises loading a suggestion order data structure which contains combinations of suggestion types and the predefined order in which the suggestions should be incorporated.
  • the method also comprises using the suggestion order data structure to sort which order a set of suggested solutions should be incorporated in and returning the suggested solutions to a user with additional information about the order in which they should be incorporated. This reduces the amount of backtracking in the design process thanks to designer friendly ordered suggested solutions. Saving the user time in the process of incorporating feedback into their designs.
  • one more of the candidate solution from the set of candidate solutions further comprises a condition indicating identifiable aspects of the design for which the candidate solution is not valid.
  • the method may then further comprise excluding from the potential candidate solutions any candidate solutions whose condition indicates it is not valid for the identifiable aspect that resulted in the particular violation of the particular design rule.
  • the solutions can also be adjusted to reflect the design.
  • the method may further comprise extracting local themes from the identifiable aspects of the new design wherein the local themes comprise at least one of colours, colour combinations, dimensions of elements, font weights, spacing and visual patterns used in the new design and adapting the one or more potential candidate solutions based on the local themes so that the candidate solutions more closely match the local themes. This generates suggestions for improving a design whilst maintaining the local themes and styling within it. This is useful since designs can have intentional styling and generalised suggestions would steer the design away from its intended aesthetic.
  • a method for determining the themes a design working within and using them to shape and filter out suggestions comprises loading predefined suggestion candidates for a specific violated design rule.
  • a suggestion candidate is a potential fix to a specific violated design rule containing a description of how to fix the violation and the conditions which must be met for the suggestion candidate to be applicable.
  • the method may comprise searching through suggestion candidates and storing valid suggestions.
  • a suggestion candidate is considered to be valid, when its validity conditions are present in the identifiable aspects of a design e.g. a candidate suggestion to change the colour of a body of text from red to white could have a condition that the background of the body of text is not white.
  • the method comprises extracting local themes from the identifiable aspects of a design, e.g.
  • the method may comprise updating the suggestion to present dark green as a replacement text colour instead of blue.
  • the method then comprises displaying the suggestions alongside the corresponding design rule violations.
  • the method in accordance with Figure 11 may also comprise generating a relationship structure between the identifiable aspects of the design.
  • generating the relationship structure comprises storing a set of relationship categories wherein each relationship category in the set of relationship categories defines a link between at least two identifiable aspects of a design, and searching through the identifiable aspects of the new design and identifying any identifiable aspects that are referenced by the relationship categories.
  • Identifying one or more potential candidate solutions then comprises identifying whether each of the one or more candidate solutions results in a breaking of a link between identifiable aspects of the design contained in the relationship structure.
  • the method then comprises if one or more potential candidate solution results in a breaking of a link between identifiable aspects of the design providing an indication to the user of the relationship category that would be broken as a result of the potential candidate solution.
  • candidate solutions that break more than a threshold number of relationships can be filtered out.
  • the above method reduces compute resource consumption. This is because when computing a suggested solution to a design error, additional computation is required to perform error checks on the post-fix state of a design. This is done to determine no new errors would be created because of the fix (e.g. size-related suggested solutions have side -effects on alignment relationships. So an alignment relationship would need to be flagged).
  • a relationship structure is a data structure which contains references to the identifiable aspects of a design and the nature of the relationships between them. These relationships can be identified by searching through the identifiable aspects of a design and identifying instances of predefined relationship categories.
  • the server When generating a suggested solution for correcting an error, the server performs a check that the elements involved in the solution are not linked to any relationships which would be broken as a result of incorporating the suggested solution. It flags to the user the suggested solutions which have side-effects and details the side-effects.
  • Example design metrics may include a uniqueness of a design (e.g., a score indicating how distinct a design is relative to other designs); a quality of a design (e.g., how visually balanced a design is); a proximity of a design to a specific design genre (e.g., a degree to which a design looks like a design for baby food); a colour ratio of a design (e.g., a ratio of colour elements to grayscale elements); a text ratio of a design (e.g., a value indicating a percentage of a design which is text); and a negative space ratio of a design (e.g., a ratio of elements to empty space within a design).
  • a uniqueness of a design e.g., a score indicating how distinct a design is relative to other designs
  • a quality of a design e.g., how visually balanced a design is
  • a proximity of a design to a specific design genre e.g., a degree to
  • the method may then comprise providing the user with a delta wherein the delta represents data which indicates how the metric of the new design would change upon incorporation of the potential candidate solution.
  • the method comprises providing the user with data which indicates how the metrics of their design would change due to incorporating the candidate solution.
  • These indications could be presented as deltas between the attributes of the current design and the attributes of the design after incorporating the candidate solution. This involves providing the user with a single or multiple indication about how metrics of their design would change based on incorporating a candidate solution.
  • the method can comprise using a previously uploaded design’s identifiable aspects to compute the change (delta) in the attributes (e.g. colour ratio, text ratio, negative space ratio, uniqueness, genre) of the new design and returning an indication of how the design attributes changed from the previous version alongside an indication of whether the identifiable aspects within the new design violate any of the design rules.
  • the delta being considered may relate to remarkability.
  • Providing suggested solution improvements for a design based purely on design rules can have a side-effect of lowering the remarkability of a design or its identifiable aspects. Therefore, using a delta related to remarkability can enable a user to steer their design or identifiable aspects of their design towards or away from current trends.
  • a method for generating suggested solutions which account for trends is provided. The method comprises loading predefined suggested solution candidates for a specific violated design rule.
  • a suggested solution candidate is a potential fix to a specific violated design rule and contains a text description of how to fix the violation and the necessary conditions which must be present in the identifiable aspects of a design.
  • the method comprises searching through the suggested solution candidates and storing the applicable ones, e.g. a suggested solution candidate to change the colour of a body of text from red to white could have a condition that the background of the body of text is not white.
  • the method then comprises searching and assigning a remarkability score to suggested solutions.
  • the remarkability score is a function of the number of previous designs which have at least one instance of a design rule violation or identifiable aspect of a design as a proportion of the number of previous designs.
  • the method then comprises displaying the suggestions alongside the corresponding design rule violations.
  • Figure 12 shows a method that can be used with the above-described methods. This method comprises, in block 1215 receiving from a user a list of features of a graphic editor program that have been used on the new design.
  • the above discussed operation of determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules then comprises, based on the features of the graphic editor program that have been used, identifying one or more design rules from the first set of design rules that relate to identifiable aspects of the new design that result from the features of the graphic editor program, as shown in block 1225; and determining whether the identifiable aspects of the new design violate any of the identified one or more design rules, as shown in block 1235.
  • This can reduce the amount of compute resources required in detecting errors.
  • a design’s identifiable aspects can be changed through application methods, e.g. changing the colour of a body of text.
  • the above can be considered a method of determining which design rules to check based on the application methods used, e.g. if the text colour is changed, run text colour to background saliency related design rule checks.
  • a method for determining which design rule violation checks to run comprises receiving a design and a list of application methods from a graphic editor application/program.
  • the method also comprises determining the rules which need to be checked by extracting and grouping the data from a predefined data structure.
  • the predefined data structure contains lists of rules which need to be run in response to different application methods.
  • the method further comprises detecting the identifiable aspects of a design, searching through the design rules and checking for instances of rule violations in the identifiable aspects of a design, and sending the errors back to a client’s local device. This means less compute resources are used.
  • the relevant design rules may be determined around image context to ensure relevant design rules are identified.
  • different design rules may be relevant.
  • website designs, product user interfaces, posters, word documents and presentation slides all have differing relevant design rules. Checking for design rule violations without taking the context of the design into account can lead to irrelevant design rule violations being detected or relevant design rules not being checked.
  • the method may further comprise storing a rule guide data structure as shown in block 1315.
  • the rule guide data structure comprises a list of classifications for designs and for each classification in the list of classifications, a list of design rules relevant to that classification.
  • the method then comprises determining a classification for the new design wherein the classification of the new design comprises a use of the new design.
  • the method then comprises determining, using the rule guide data structure, relevant design rules from the first set of design rules wherein the relevant design rules are design rules relevant to the classification of the new design.
  • the previously mentioned operation of determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules then comprises determining whether any of the identifiable aspects of the new design violate any of the relevant design rules, as shown in block 1345. This provides a way to efficiently determine the relevant design rules to check for rule violations.
  • Figure 13 shows a method for scoping the design rules checked within a design rule violation checker.
  • the method involves loading the design rules that will check for rule violations.
  • the method then involves classifying a design to determine its context(s) e.g., website design, product user interface, poster, word document or presentation slide.
  • its classification data would be used with a predefined design rule guide data structure to add additional relevant design rules and filter out irrelevant design rules from the loaded design rules list.
  • the design rule guide data structure contains references to various design classifications. For each classification there is a list containing the design rules which are relevant to the classification and a separate list with rules which are not.
  • the method comprises detecting the identifiable aspects of a design, searching through the design rules and checking for instances of rule violations in the identifiable aspects of a design and sending the errors back to a client’s local device. This means the design rules checked are more likely to be relevant to the context of the design.
  • the methods mentioned above can further comprise prioritising design rules as shown in Figure 14.
  • the method can comprise storing, for each user, a list of design rules previously violated by the user and an indication of the number of times the user has violated each design rule in the list of design rules.
  • the method then comprises receiving an indication of which user created the new design.
  • the method continues at block 1435 which defines ordering the design rules in the first set of design rules based on the number of times the user has violated each design rule in the first set of design rules.
  • the method comprises, when determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules, processing the design rules in order such that the design rule that the user has previously violated the most number of times is processed first. While in the above example the rules are ordered in a user specific fashion, in other examples the sorting can be over a group of users or over all users. In all cases, this sorting can improve the likelihood that the errors checked for will be present in a design.
  • Figure 14 provides a method for tracking the frequency of occurrence of rule violations for an individual user and adjusting the order in which rule violations are checked for. The method comprises loading pre-existing user rule violation metrics and using the metrics to see which rule violations occur the most in a user’s designs.
  • Rule violation metrics is a data structure containing rule identifiers and frequency of occurrence data.
  • the method also comprises loading a list of design rules and sorting the list of design rules based on the user’s rule violation metrics, so that the most frequently occurring rule violations are at the start of the list.
  • the method then comprises detecting identifiable aspects of a design, searching through the design rules and checking for instances of rule violations in the identifiable aspects of a design, updating the user’s rule violation metrics by incrementing a rule identifier’s occurrence value by the amount of new occurrence, and sending the errors back to a client’s local device.
  • a method for prioritising the order in which design rules are checked comprises uploading a design to a remote processing server which contains predefined design rules.
  • the method then comprises using the predefined design rules to check for design rule violations.
  • the method can then comprise loading a remarkability structure wherein a remarkability structure is a data structure containing data about the frequency of occurrence of design rule violations and/or the identifiable aspects of a design.
  • the method then comprises sorting the predefined design rules so that the most frequently occurring design rules within the remarkability structure are run first.
  • the methods then comprise searching through the design rules and checking for instances of rule violations, sending the errors back to a client’s local device, and presenting the errors to the user by superimposing a visual representation of the errors on the design.
  • utilising remarkability data can help prioritise checking for the design rule violations which are most common first. This also improves the likelihood that the errors checked for will be present in a design.
  • the above-discussed methods can be performed by a server device. However, the user may view the results of the methods on a client device. In addition, it is possible that the rules in the first set of design rules may change.
  • the method may comprise, at the server: receiving updates to the first set of design rules; based on the updates identifying any design rules from the first set of designs rules that are no longer valid; and sending an indication to the client device which design rules from the first set of design rules are no longer valid.
  • the method may further comprise further comprising, at the client device: providing to the user a visual indication of the identifiable aspects that violate the first set of design rules; receiving from the server an indication of the design rules that are no longer valid; and removing any visual indications that relate to the violation of design rules that are no longer valid.
  • the design checker can comprise a “client process” which is a process which could exist in a remote server that communicates with a user’s local device and a “design rule checker process” which is a process which could exist in a remote server which contains the state of my design rules that have been applied to the client’s display.
  • client process which is a process which could exist in a remote server that communicates with a user’s local device
  • design rule checker process which is a process which could exist in a remote server which contains the state of my design rules that have been applied to the client’s display.
  • a negotiation is performed between a client process and server design rule checker process, to register each client process.
  • a design rule checker process is updated on the server, it then sends all registered client processes updates.
  • a client process uses the updates to determine which design rules have been invalidated.
  • the client process will remove any invalidated errors from the design’s list of errors and submit a new request for the updated design rules to be checked. Changes in the client process will be reflected on the user's local device. This means, the visualiser used to view designs, would automatically update to show the user the most up to date state.
  • the invention relates to a computer-implemented method of evaluating how different identifiable aspects of a new design contribute to the uniqueness of the new design.
  • the concept of identifiable aspects of a design has been described above.
  • the uniqueness of a design is a measure of how different or interesting a viewer of the design would consider the design when compared to other designs.
  • the uniqueness can be within a field of design e.g. within the field of confectionary, cosmetics etc. or can be across fields. Different identifiable aspects have different relative contributions to the uniqueness based on how perceptually important the identifiable aspect is.
  • a computer- implemented method determines which identifiable aspects are perceptually important in establishing uniqueness, such that the relative contribution of the identifiable aspects is optimised. This may involve a computer-implemented method which determines which identifiable aspect are perceptually important in establishing uniqueness, such that the measured factors can be combined with different multipliers to ensure that relative contribution of the identifiable aspect is optimised.
  • the second example comprises a computer-implemented method for evaluating how different identifiable aspects of a new design contribute to a uniqueness of the new design.
  • the method comprises receiving the new design from a user.
  • the method further comprises identifying identifiable aspects of the new design.
  • the method also comprises determining how at least one of the identifiable aspects contribute to the uniqueness of the design.
  • the determining how at least one of the identifiable aspects contribute to the uniqueness of the new design may comprise determining a weighting for each identifiable aspect wherein the weighting for each identifiable aspect corresponds to a degree to which the respective identifiable aspect contributes to uniqueness of the new design.
  • the weightings can be determined based on at least one of a size of the identifiable aspect relative to a size of the new design; a size of any design rule violation associated with the identifiable aspect divided by a size of the new design; a degree to which the identifiable aspect violates a design rule; a percentage of designs from the set of previous designs that have an instance of the identifiable aspect; and a human noticeability of an identifiable aspect.
  • the human noticeability of an identifiable aspect determines the degree to which a design rule associated with the identifiable aspect must be violated before it is considered significant.
  • the method may also comprise storing information about a set of previous designs wherein the information comprises an identification of identifiable aspects in the set of previous designs and, for each identified identifiable aspect, data indicating a number of occurrences of that identifiable aspect in the set of previous designs.
  • This information can be generated through an iterative process which involves receiving a new design from a user; calculating the remarkability score for the new design; and updating the data indicating a number of occurrences of each identifiable aspect in the set of previous designs based on the identifiable aspects in the new design.
  • a uniqueness score can be determined for either all, some, or even just one of the identifiable aspects wherein the uniqueness score for each identifiable aspects of interest is a function of a number of previous designs which have at least one instance of an identifiable aspect of a design as a proportion of the number of previous designs.
  • this uniqueness score can be presented or otherwise returned to the user.
  • a computer-implemented method for calculating the uniqueness of a design as a whole comprises storing information about a set of previous designs wherein the information comprises an identification of identifiable aspects in the set of previous designs and, for each identified identifiable aspect, data indicating a number of occurrences of that identifiable aspect in the set of previous designs. This information can be determined as described above. The method then comprises calculating a uniqueness score for the new design by calculating the uniqueness score as a function of the weighted sum or median of the uniqueness scores of the identifiable aspects within the new design.
  • the uniqueness score of an identifiable aspect being the number of previous designs which have at least one instance of an identifiable aspect of a design as a proportion of the number of previous designs wherein a degree to which each identifiable aspect contributes to the uniqueness score is determined using the weighting for each identifiable aspect.
  • the method may also involve tracking the uniqueness score of the new design over time or across design genres as described in more detail with respect to the third example of the invention below.
  • the uniqueness determinations above may be used in conjunction with the first example of the invention.
  • the methods may further comprise storing a first set of design rules, the first set of design rules defining limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden; and determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules.
  • the skilled person would then understand that other examples with respect to the first invention may be used in combination with the uniqueness system by processing the design rules and design rule violations determined as part of the uniqueness system in accordance with the methods described with respect to the first invention.
  • the invention relates to a computer-implemented method of categorizing a design. This can enable a user or designer to determine how their design corresponds to other designs and to determine a design genre or timeframe for their design.
  • a design genre can be a use of the design e.g., a website, a word document, a poster etc.
  • a timeframe can represent a period of time in which previous designs were used or in which the current design will be used.
  • the timeframe could represent a period of days, weeks, months etc., dependent upon how fast design trends for a design genre are changing.
  • the methods described with respect to the third example can also be used by a designer to assess whether their design fits in with other designs for an intended audience. In particular, this enables a designer to see how their design fits with global trends in their target design genre.
  • a computer-implemented method of categorizing a design comprises storing design information.
  • the design information comprising at least one of either an identification of one or more genres and an indication of identifiable aspects of a design associated with each of the one or more genres; or an identification of one or more timeframes and an indication of identifiable aspects of a design associated with each of the one or more timeframes.
  • the method then comprises receiving a new design from a user.
  • the method comprises identifying identifiable aspects in the new design. The idea of identifiable aspects has been discussed above with respect to the first example of the invention.
  • the method then comprises comparing the identifiable aspects of the new design with the identifiable aspects associated with the one or more genres and/or timeframes to identify the genre and/or timeframe that has the most identifiable aspects in common with the new design.
  • the method then comprises at least one of outputting an indication of a design genre for the new design wherein the design genre is the genre that has the most identifiable aspects in common with the new design; or outputting an indication of a timeframe for the new design wherein the timeframe is the timeframe that has the most identifiable aspects in common with the new design.
  • the returned indication of genre is accompanied with an example design which best exemplifies the genre.
  • the example design could be sourced by searching for publicly displayable images (e.g. an image library or web search).
  • This information may then be used by the user. This can involve for example, receiving an indication from the user that the new design should not conform to the design genre or timeframe; and in response to receiving the indication from the user, outputting to the user an indication of the identifiable aspects that occur in both the new design and the design genre or timeframe.
  • this can involve receiving from the user an indication of a target genre or timeframe for the new design; comparing the identifiable aspects of the new design with the identifiable aspects associated with the target genre or timeframe stored in the information; and providing an indication to the user which identifiable aspects of the new design should be modified to make the identifiable aspects of the new design more closely conform to the identifiable aspects of the target genre or timeframe.
  • the user may provide the indication of the desired or undesired genre using a URI (universal resource identifier), by email, by a chat client, or by any other suitable means.
  • a user provides a new design and a target genre/ timeframe. The difference between the new design and the target genre/ timeframe is computed and indicated to the user.
  • a metric or score could be provided to indicate the degree of conformity of a new design relative a genre/ timeframe [00103]
  • the design genre may change over time and thus reflect trends.
  • the genre information further comprises information identifying how the identifiable aspects associated with each genre change over time.
  • the method further comprises: comparing the identifiable aspects of the new design with the identifiable aspects of the design genre over time; and, as shown in block 1675, providing, to the user, an indication of a time at which the new design and the design genre had the most identifiable aspects in common.
  • the method may further comprise: receiving from a user one or more target genres; comparing the identifiable aspects of the new design with the identifiable aspects of the one or more target genres over time; and providing, to the user, an indication of how many identifiable aspects the new design has in common with the one or more target genres over time.
  • the computer-implemented method may further comprise generation of the design information.
  • the design information is related to design genres
  • this can involve storing information about a set of previous designs.
  • the information comprises: metadata or other information indicating a genre for each design in the set of previous designs; and an identification of identifiable aspects that occur in each design in the set of previous designs.
  • the method then comprises grouping the designs in the previous set of designs by genre such that designs from the previous set of designs that have a same genre are placed in the same group; for each group of designs, identifying the identifiable aspects that occur most frequently in the designs in the group; and storing information linking the design genre to the identifiable aspects that occur most frequently in the designs in the group.
  • the design information is related to timeframes, this can involve storing information about a set of previous designs.
  • the information comprises: metadata or other information indicating a timeframe for each design in the set of previous designs; and an identification of identifiable aspects that occur in each design in the set of previous designs.
  • the method further comprises grouping the designs in the previous set of designs by timeframe such that designs from the previous set of designs that have a same timeframe are placed in the same group; for each group of designs, identifying the identifiable aspects that occur most frequently in the designs in the group; and storing information linking the timeframe to the identifiable aspects that occur most frequently in the designs in the group.
  • the information about the set of previous designs is obtained from publicly available images on the web; and/or the metadata or other information is obtained from metadata about each publicly available image; and identifiable aspects are obtained by analysing each publicly available image to identify the identifiable aspects.
  • the information can be obtained from previous designs uploaded to be processed by the designer checker/method.
  • group discovery e.g., finding which groups of designs exist and which group a design belongs to (e.g. from meta-information about who each design targets)
  • this can involve detecting the identifiable aspects of a design; aspect discovery e.g., finding features of the design (e.g. colours, fonts, boldness, borders) and also metadata about the design that are combined to categorise the design; trend capture e.g., what rules and features can be found
  • this can involve method for discovering whether a design is trendy and can involve comparing the identifiable aspects of a design to past designs data to discover where the identifiable aspects of a design fall within a trend curve; trend display e.g., displaying the design trend data in a graph and showing where the identifiable aspects of a design sit on the trend curve and in what category
  • - trend display may also be used to explore trends (e.g. what trends exist) by genre or by proximity to a submitted design; exemplifying e.g, exemplifying examples of a design trend by searching for publicly displayable images (e.g. an image library or web search) search and showing one that rates highly for this trend - previously submitted designs, may not be shown for privacy's sake, or may be available in private checkers when privacy is not an issue (e.g. within a company department).
  • exemplifying e.g, exemplifying examples of a design trend by searching for publicly displayable images (e.g. an image library or web search) search and showing one that rates highly for this trend - previously submitted designs, may not be shown for privacy's sake, or may be available in private checkers when privacy is not an issue (e.g. within a company department).
  • the Exemplification and trend display can be used together to browse and explore design trends, based on an initial design or without an initial design, by using text categories or metadata; and showing differences e.g, the rules that define a genre can be used to illustrate how a submitted design can be modified to conform to that genre, or to avoid conforming to it.
  • a designer can recognize global trends in their target design genre, and see how their design can be changed to fit (or avoid conforming to) those trends.
  • a designer may also use this tool to: deliberately modify their design to partially conform to another genre (e.g. a brand of tissues may hint at skincare); see which other genres their design may inadvertently be conforming to (e.g. a brand of pet food should not look like detergent); and see where in fashion/time their design language belongs (e.g. hint at traditional products or at next-generation ones) within a design genre, locally and globally.
  • example identifiable aspects include layout considerations, colour considerations, form considerations and text considerations.
  • Example layout identifiable aspects include the coordinates of an element on the page, the area of an element, the aspect ratio of an element, if the element touches the boundary of the image, if the element has children, the amount of directional changes in the element's contour, the horizontal/ vertical alignment points on an element, if the element is part of a row/ column, and the distance between elements.
  • Example colour identifiable aspects include the colour of an element, the background colour of an element, if the element is grayscale, if the element is coloured (e.g.
  • Example form identifiable aspects include if the element is an image, if the element is text, if the element is an icon, the pixel size at which the element is pixelated, the extent to which the image has artefacts, if the element is a square, circle, rectangle, triangle, etc., if the corners of the element are round, and if the contour of the element matches set criteria (e.g. top left corner of the element is round).
  • Example text identifiable aspects include text element font size, text element weight/boldness, if the element is part of a row of text, if the element is part of a paragraph, and the shape of the paragraph.
  • design rule violations can relate to layout considerations, colour considerations, form considerations and text considerations.
  • Example layout rule violations include element is misaligned by a fixed number of pixels (e.g., 3px) on one edge (e.g., on its left), element's have slightly different aspect ratios, element is too close to the border of the image, element draws the user's attention (saliency) to the gap, element's contour is not homogeneous with other similar elements, paragraph is horizontally misaligned with other paragraphs, content is congested thus making it unsightly, and elements outside of a crop area (e.g., an A4 crop area).
  • a crop area e.g., an A4 crop area
  • Example colour design rule violations include garish colour combination, forbidden Colours (individual garish colour, e.g. neon colours), too many colours (call to actions in too many colours make it hard for a user to prioritise), inconsistent gradient directions, and bad colour hierarchy (a lot of colours fighting for a user's attention).
  • Example form identifiable aspects include elements are not homogeneous (round forms and square forms do not flow), varying pixel resolutions (differing quality images looks unprofessional), image artefacts (image compression artefacts), and inconsistent contour styling (e.g. rounded corners and square corners).
  • Example text identifiable aspects include illegible text (WCAG aa contrast, WCAG aaa contrast), illegible text when viewed on a projector, too small text, bad visual hierarchy, badly shaped paragraph (paragraphs should taper), orphaned paragraph text (last row of paragraph is a orphaned word or words), wall of text (lowers the likelihood a viewer shall read the contents), high density paragraph (lines are close together, lowers the likelihood a user shall read the contents).
  • Figure 17 illustrates various components of an exemplary computing-based device 1700 which may be implemented as any form of a computing and/or electronic device, and in which embodiments of the above method may be implemented.
  • Computing-based device 1700 comprises one or more processors 1702 which may be microprocessors, controllers or any other suitable type of processors for processing computer executable instructions to control the operation of the device in order to perform the methods described above.
  • the processors 1702 may include one or more fixed function blocks (also referred to as accelerators) which implement a part of the method above in hardware (rather than software or firmware).
  • Platform software comprising an operating system 1704 or any other suitable platform software may be provided at the computing-based device to enable application software 1706 to be executed on the device.
  • Computer-readable media may include, for example, computer storage media such as memory 1708 and communications media.
  • Computer storage media, such as memory 1708 includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
  • Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information for access by a computing device.
  • communication media may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave, or other transport mechanism.
  • computer storage media does not include communication media.
  • the computer storage media memory 1708
  • the storage may be distributed or located remotely and accessed via a network or other communication link (e.g. using communication interface 1710).
  • the computing-based device 1700 also comprises an input/output interface 1712 arranged to output display information to a display 1714 which may be separate from or integral to the computing-based device 1700.
  • the display information may provide a graphical user interface.
  • the input/output interface 1712 is also arranged to receive and process input from one or more devices, such as a user input device 1716 (e.g. a mouse or a keyboard). This user input may be used to receive any of the user inputs described above.
  • the display 1714 may also act as the user input device 1716 if it is a touch sensitive display device.
  • the input/output interface 1712 may also output data to devices other than the display device, e.g. a locally connected printing device (not shown in FIG. 17).
  • the term 'computer' is used herein to refer to any device with processing capability such that it can execute instructions. Those skilled in the art will realize that such processing capabilities are incorporated into many different devices and therefore the term 'computer' includes PCs, servers, mobile telephones, personal digital assistants and many other devices.
  • a remote computer may store an example of the process described as software.
  • a local or terminal computer may access the remote computer and download a part or all of the software to run the program.
  • the local computer may download pieces of the software as needed, or execute some software instructions at the local terminal and some at the remote computer (or computer network).
  • a dedicated circuit such as a DSP, programmable logic array, or the like.
  • Any reference to 'an' item refers to one or more of those items.
  • the term 'comprising' is used herein to mean including the method blocks or elements identified, but that such blocks or elements do not comprise an exclusive list and a method or apparatus may contain additional blocks or elements.
  • Clause 1 A computer-implemented method of detecting design errors in a design, the method comprising: storing a first set of design rules, the first set of design rules defining limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden; receiving a new design from a user; identifying identifiable aspects of the new design; determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules; and if one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, providing to the user details of the identifiable aspects that violate the first set of design rules.
  • Clause 2 The method of clausel further comprising: receiving an updated version of the new design from the user; comparing the updated version of the new design and the original version of new design to identify differences between the updated version and the original version; determining identifiable aspects of the differences between the updated version and the original version; determining whether any of the identifiable aspects of the differences violate any of the design rules in the first set of design rules; and if one or more of the identifiable aspects of the differences violate one or more of the design rules in the first set of design rules, providing to the user details of the identifiable aspects that violate the first set of design rules.
  • Clause 3 The method of clause 1 or 2 wherein the design is a multi-page design and the method further comprises: performing the method of clause 1 or 2 for the first page of the multi-page design; and for each subsequent page of the design: comparing the pixel values and/or element data to the pixel values and/or element data of the previous pages of the design to identify identical regions; providing, to the user, the details of the identifiable aspects that violate the first set of design rules in identical regions from the previous pages; and for regions that are not identical to a previous page: identifying identifiable aspects on the subsequent page of the new design; determining whether any of the identifiable aspects violate any of the design rules in the first set of design rules; and if one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, providing to the user details of the identifiable aspects that violate the first set of design rules.
  • Clause 4 The method of any of clauses 1 to 3 further comprising: storing information about a set of previous designs wherein the information comprises a list of design rules and for each design rule in the list an indication of a number of occurrences of a violation of that design rule in the previous set of designs; and identifying whether any of the one or more identifiable aspects violate one or more design rules comprises processing design rules based on the number of occurrences of violations so that design rules that have more occurrences of a violation are processed before design rules with a lower number of occurrences of a violation.
  • Clause 5 The method of any of clauses 1 to 4 further comprising: determining, for each design rule, any measurements or functions that need to be performed on the design to identify the relevant identifiable aspects of the design that need to be analysed to detect a violation of the design rule; grouping the design rules by the measurements or functions that need to be performed on the design such that the design rules in each group have overlapping measurements or functions; and wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules, comprises, for each group of design rules: performing the measurements or functions necessary to identify the identifiable aspects that need to be analysed to detect any violations of design rules in the group; and identifying whether any of the one or more identifiable aspects of the new design violate any of the design rules in the group.
  • Clause 6 The method of clause 5 wherein determining, for each design rule, any measurements or functions that need to be performed on the new design to identify the relevant identifiable aspects of the design comprises: determining the measurements or functions using a function dependency data structure wherein the function dependency data structure comprises an identifier for each design rule and a data structure indicating whether each measurement or function is a dependency of the design rule identified in the identifier.
  • Clause 7 The method of clause 5 or 6 further comprising: sorting the measurements or functions based on a time taken to perform each measurement or function; and processing groups of design rules that depend on measurements or functions that take less time to perform before processing groups of design rules that depend on measurements or functions that take more time to perform.
  • Clause 8 The method of any of clauses 1 to 7 further comprising: iteratively repeating the operations of any of clauses 1 to 7 with multiple new designs; for each new design storing data indicating the identifiable aspects identified in the new design and/or the design rule violations found for the new design; and using the stored data to determine a number of occurrences of at least one identifiable aspect and/or at least one design rule violation across multiple designs.
  • Clause 9 The method of clause 8 further comprising: receiving a further new design from a user; identifying the identifiable aspects in the further new design; determining a frequency of occurrence of at least one identifiable aspect of the further new design based on the number of occurrences of the at least one identifiable aspect stored in the stored data; and providing the frequency of occurrence information to the user.
  • Clause 10 The method of clause 8 further comprising: receiving a further new design from a user; identifying the identifiable aspects in the further new design; determining whether any of the identifiable aspects of the further new design violate any of the design rules in the first set of design rules; determining a frequency of occurrence of at least one design rule violation of the further new design based on the number of occurrences of the at least one design rule violation stored in the stored data; and providing the frequency of occurrence information to the user.
  • Clause 11 The method of clause 9 to 10 further comprising: tracking the frequency of occurrence of the at least one identifiable aspect/at least one design rule violation over time or across design genres.
  • Clause 12 The method of any of clauses 1 to 11 wherein providing to the user details of the identifiable aspects that violate the design rules comprises: superimposing an indication of a design rule violation on the new design at a position of the design rule violation.
  • Clause 13 The method of any of clauses 1 to 12 wherein the first set of design rules further comprises a criticality score for each design rule wherein the criticality score is a measure of a degree to which a violation of the design rule would increase the cognitive burden to the user, the method further comprising: for each identifiable aspect that violates a design rule from the first set of design rules: determining a magnitude score for the design rule violation wherein the magnitude score is computed based on a size of the design rule violation relative to a size of the design; and calculating a priority score for the design rule violation wherein the priority score is a function of a multiplication of the magnitude score for the design rule violation and the criticality score for the design rule violation; and wherein providing to the user details of the identifiable aspects that violate the
  • Clause 14 The method of any of clauses 1 to 13 further comprising: grouping the design rule violations wherein design rule violations are grouped if they occur within a threshold distance of each other on the design; wherein providing to the user details of the identifiable aspects that violate the design rules comprises superimposing an indication of each group of design rule violations on the new design.
  • Clause 15 The method of clause 14 further comprising: providing an indication of design rule violations with a priority score above a threshold in addition to providing an indication of each group of design rule violations.
  • Clause 16 The method of any previous clause wherein providing to the user details of the identifiable aspects that violate the first set of design rules comprises: providing to the user indications of the design rule violations; and adjusting a number of indications provided based on a zoom level at which the design is being viewed by the user wherein the number of indications is adjusted by only providing indications for design rule violations that have a size below a threshold minimum size and wherein the threshold minimum size is reduced as the zoom level increases.
  • Clause 17 The method of any of clauses 1 to 16 further comprising: receiving a second set of design rules, the second set of design rules utilising user preferences for identifiable aspects of a design; determining whether any of the identifiable aspects of the new design violate any of the design rules in the second set of design rules; and if one or more of the identifiable aspects violate one or more of the second set of design rules, providing to the user details of the identifiable aspects that violate the second set of design rules.
  • each design rule in the first set of design rules and the second set of design rules specifies an identifiable aspect of the design and parameters governing that identifiable aspect of the design
  • the method further comprises: comparing the design rules in the first set of design rules and the second set of design rules to confirm that for each design rule in the second set of design rules a set of parameters exist that satisfy both that design rule and all of the design rules in the first set of design rules; and if a design rule exists in the second set of design rules where no parameters can satisfy both that design rule and all of the design rules in the first set of design rules, indicating that design rule to the user.
  • each design rule in the first set of design rules and the second set of design rules specifies an identifiable aspect of the design and parameters governing that identifiable aspect of the design
  • the method further comprises: comparing the design rules in the first set of design rules and the second set of design rules to identify design rules in the second set of design rules that have a similar design rule in the first set of design rules wherein a design rule in the second set of design rules has a similar design rule in the first set of design rules if the design rule in the second set of design rules relates to the same identifiable aspect and has more than a threshold degree of overlap in parameters with a design rule in the first set of design rules; and if a design rule in the second set of design rules has a similar design rule in the first set of design rules, merging the design rules to form a new design rule in only one of the first or second set of design rules.
  • Clause 20 The method of any of clauses 17 to 19 wherein the first set of design rules and the second set of design rules comprise an importance score for each design rule, and the method further comprises: providing the details of the identifiable aspects that violate design rules with a higher importance score before identifiable aspects with a lower importance score.
  • Clause 21 The method of clause 20 further comprising: combining the first set of design rules and the second set of design rules to form a third set of design rules wherein the third set of design rules are ordered by the importance score of each design rule; and wherein: determining whether any of the identifiable aspects violate any of the design rules in the first and second set of design rules comprises determining whether any of the identifiable aspects violate any of the design rules in the third set of design rules.
  • Clause 22 The method of any of clauses 1 to 21 further comprising: storing a set of candidate solutions each candidate solution defining a potential fix for a particular violation of a particular design rule; and if one or more of the identifiable aspects violate one or more design rules of the first set of design rules: determining a particular violation of a particular design rule caused by each of the one or more identifiable aspects that violate the one or more design rules of the first set of design rules; identifying one or more potential candidate solutions from the set of candidate solutions for each identifiable aspect that violates the one or more design rules of the first set of design rules wherein the one or more potential candidate solutions define a potential fix for the particular violation of the particular design rule; and providing the potential candidate solutions to the user.
  • Clause 23 The method of clause 22 wherein each candidate solution of the set of candidate solutions is associated with a suggestion type wherein the suggestion type indicates the form of design rule violation being fixed by the candidate solution, and the method further comprises: storing a suggestion order data structure wherein the suggestion order data structure comprises an indication of the order in which suggestion types should be applied; using the suggestion order data structure and the suggestion type of each candidate solution of the set of candidate solutions to order the candidate solutions; and providing the candidate solutions to the user along with an indication of the order in which the candidate solutions should be applied.
  • Clause 24 The method of clause 22 or 23 wherein: one or more candidate solution from the set of candidate solutions further comprises a condition indicating identifiable aspects of the design for which the candidate solution is not valid; and identifying one or more potential candidate solutions further comprises excluding from the potential candidate solutions any candidate solutions whose condition indicates it is not valid for the identifiable aspect that resulted in the particular violation of the particular design rule.
  • Clause 25 The method of any of clauses 22 to 23 further comprising: extracting local themes from the identifiable aspects of the new design wherein the local themes comprise at least one of colours, colour combinations, dimensions of elements, font weights, spacing and visual patterns used in the new design; adapting the one or more potential candidate solutions based on the local themes so that the candidate solutions more closely match the local themes.
  • Clause 26 The method of any of clauses 22 to 25 further comprising: generating a relationship structure between the identifiable aspects of the design wherein generating the relationship structure comprises: storing a set of relationship categories wherein each relationship category in the set of relationship categories defines a link between at least two identifiable aspects of a design; and searching through the identifiable aspects of the new design and identifying any identifiable aspects that are referenced by the relationship categories; and wherein identifying one or more potential candidate solutions further comprises identifying whether each of the one or more candidate solutions results in a breaking of a link between identifiable aspects of the design contained in the relationship structure; and the method further comprises: if one or more potential candidate solution results in a breaking of a link between identifiable aspects of the design providing an indication to the user of the relationship category that would be broken as a result of the potential candidate solution.
  • Clause 27 The method of any of clauses 22 to 26 further comprising: determining how each potential candidate solution would change a metric of the new design; and providing the user with a delta wherein the delta represents data which indicates how the metric of the new design would change upon incorporation of the potential candidate solution.
  • Clause 28 The method of clause 27 wherein the metric comprises at least one of: a uniqueness of a design; a quality of a design; a proximity of a design to a specific design genre; a colour ratio of a design; a text ratio of a design; and a negative space ration of a design.
  • Clause 29 The method of any of clauses 1 to 28 further comprising: receiving from a user a list of features of a graphic editor program that have been used on the new design; and wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises: based on the features of the graphic editor program that have been used identifying one or more design rules from the first set of design rules that relate to identifiable aspects of the new design that result from the features of the graphic editor program; and determining whether the identifiable aspects of the new design violate any of the identified one or more design rules.
  • Clause 30 The method of any of clauses 1 to 29 wherein the first set of design rules further comprises exception parameters for one or more of the design rules from the first set of design rules wherein the exception parameters define a specific situation in which the design rule corresponding to the exception parameter does not apply.
  • Clause 31 The method of any of clauses 1 to 30 further comprising: storing a rule guide data structure wherein the rule guide data structure comprises a list of classifications for designs and for each classification in the list of classifications, a list of design rules relevant to that classification; determining a classification for the new design wherein the classification of the new design comprises a use of the new design; determining, using the rule guide data structure, relevant design rules from the first set of design rules wherein the relevant design rules are design rules relevant to the classification of the new design; and wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises determining whether any of the identifiable aspects of the new design violate any of the relevant design rules.
  • Clause 32 The method of cany of clauses 1 to 31 further comprising: storing, for each user, a list of design rules previously violated by the user and an indication of the number of times the user has violated each design rule in the list of design rules; receiving an indication of which user created the new design; ordering the design rules in the first set of design rules based on the number of times the user has violated each design rule in the first set of design rules; and wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises processing the design rules in order such that the design rule that the user has previously violated the most number of times is processed first.
  • Clause 33 The method of any of clauses 1 to 32 wherein the method is performed by a server device and wherein the user views the design on a client device wherein the method further comprises, at the server: receiving updates to the first set of design rules; based on the updates identifying any design rules from the first set of designs rules that are no longer valid; and sending an indication to the client device which design rules from the first set of design rules are no longer valid.
  • Clause 34 The method of clause 33 further comprising, at the client device: providing to the user a visual indication of the identifiable aspects that violate the first set of design rules; receiving from the server an indication of the design rules that are no longer valid; and removing any visual indications that relate to the violation of design rules that are no longer valid.
  • each design rule in the first set of design rules specifies an identifiable aspect of the design and parameters governing that identifiable aspect of the design
  • the method further comprises: receiving a new design rule to be added to the first set of design rules; comparing the new design rule to the design rules in the first set of design rules to confirm that a set of parameters exist which satisfy both the new design rule and all of the design rules in the first set of design rules; and if parameters exist that satisfy both the new design rule and all of the design rules in the first set of design rules, adding the new design rule to the first set of design rules; else if no parameters exist that satisfy both the new design rule and all of the design rules in the first set of design rules, flagging that new design rule to the user.
  • Clause 36 The method of any of clauses 1 to 35 wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises: determining whether any of the identifiable aspects of the new design are governed by the any of the design rules in the first set of design rules; and if one or more of the identifiable aspects of the new design are governed by any of the design rules in the first set of design rules, identifying whether any of the one or more identifiable aspects of the new design violate one or more of the design rules in the first set of design rules.
  • a computer-implemented method of categorizing a design comprising: storing design information, the design information comprising at least one of: an identification of one or more genres and an indication of identifiable aspects of a design associated with each of the one or more genres; or an identification of one or more timeframes and an indication of identifiable aspects of a design associated with each of the one or more timeframes; receiving a new design from a user; identifying identifiable aspects in the new design; comparing the identifiable aspects of the new design with the identifiable aspects associated with the one or more genres and/or timeframes to identify the genre and/or timeframe that has the most identifiable aspects in common with the new design; and at least one of outputting an indication of a design genre for the new design wherein the design genre is the genre that has the most identifiable aspects in common with the new design; or outputting an indication of a timeframe for the new design wherein the timeframe is the timeframe that has the most identifiable aspects in common with the new design.
  • Clause 38 The method of clause 37 further comprising determining the genre information by: storing information about a set of previous designs wherein the information comprises: metadata or other information indicating a genre for each design in the set of previous designs; and an identification of identifiable aspects that occur in each design in the set of previous designs; grouping the designs in the previous set of designs by genre such that designs from the previous set of designs that have a same genre are placed in the same group; for each group of designs, identifying the identifiable aspects that occur most frequently in the designs in the group; and storing information linking the design genre to the identifiable aspects that occur most frequently in the designs in the group.
  • Clause 39 The method of clause 37 further comprising determining the timeframe information by: storing information about a set of previous designs wherein the information comprises: metadata or other information indicating a timeframe for each design in the set of previous designs; and an identification of identifiable aspects that occur in each design in the set of previous designs; grouping the designs in the previous set of designs by timeframe such that designs from the previous set of designs that have a same timeframe are placed in the same group; for each group of designs, identifying the identifiable aspects that occur most frequently in the designs in the group; and storing information linking the timeframe to the identifiable aspects that occur most frequently in the designs in the group.
  • Clause 40 The method of clause 38 or 39 wherein: the information about the set of previous designs is obtained from publicly available images on the web; and/or the metadata or other information is obtained from metadata about each publicly available image; and identifiable aspects are obtained by analysing each publicly available image to identify the identifiable aspects.
  • Clause 41 The method of any of clauses 37 to 40 further comprising: receiving an indication from the user that the new design should not conform to the design genre or timeframe; and in response to receiving the indication from the user, outputting to the user an indication of the identifiable aspects that occur in both the new design and the design genre or timeframe.
  • Clause 42 The method of clauses 37 to 41 further comprising: receiving from the user an indication of a target genre or timeframe for the new design; comparing the identifiable aspects of the new design with the identifiable aspects associated with the target genre or timeframe stored in the information; and providing an indication to the user which identifiable aspects of the new design should be modified to make the identifiable aspects of the new design more closely conform to the identifiable aspects of the target genre or timeframe.
  • Clause 43 The method of clauses 37 to 42 wherein: the genre information further comprises information identifying how the identifiable aspects associated with each genre change over time; and the method further comprises: comparing the identifiable aspects of the new design with the identifiable aspects of the design genre over time; and providing, to the user, an indication of a time at which the new design and the design genre had the most identifiable aspects in common.
  • Clause 44 The method of clauses 37 to 43 wherein: the genre information further comprises information identifying how the identifiable aspects associated with each genre change over time; and the method further comprises: receiving from a user one or more target genres; comparing the identifiable aspects of the new design with the identifiable aspects of the one or more target genres over time; and providing, to the user, an indication of how many identifiable aspects the new design has in common with the one or more target genres over time.
  • Clause 45 A computer-implemented method for evaluating how different identifiable aspects of a new design contribute to a uniqueness of the new design, the method comprising: receiving the new design from a user; identifying identifiable aspects of the new design; and determining how at least one of the identifiable aspects contribute to the uniqueness of the design.
  • Clause 46 The computer-implemented method of clause 45, further comprising: storing a first set of design rules, the first set of design rules defining limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden; and determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules.
  • Clause 47 The computer-implemented method of clause 45 or 46 further comprising: storing information about a set of previous designs wherein the information comprises an identification of identifiable aspects in the set of previous designs and, for each identified identifiable aspect, data indicating a number of occurrences of that identifiable aspect in the set of previous designs.
  • Clause 48 The computer-implemented method of clause 47, further comprising: generating the information about the set of previous designs by: receiving a new design from a user; calculating the remarkability score for the new design; and updating the data indicating a number of occurrences of each identifiable aspect in the set of previous designs based on the identifiable aspects in the new design.
  • Clause 49 The computer-implemented method of clause 47 or 48 further comprising: calculating a uniqueness score for at least one identifiable aspect of the new design wherein calculating the uniqueness score comprises calculating the uniqueness score as a function of a number of previous designs which have at least one instance of the at least one identifiable aspect as a proportion of the number of previous designs; and providing the uniqueness score to the user.
  • Clause 50 The computer-implemented method of any of clauses 45 to 49 wherein determining how each of the identifiable aspects contribute to the uniqueness of the new design comprises: determining a weighting for each identifiable aspect wherein the weighting for each identifiable aspect corresponds to a degree to which the respective identifiable aspect contributes to uniqueness of the new design.
  • Clause 51 The computer-implemented method of clause 50 wherein the weightings are determined based on at least one of: a size of the identifiable aspect relative to a size of the new design; a size of any design rule violation associated with the identifiable aspect divided by a size of the new design; a degree to which the identifiable aspect violates a design rule; a percentage of designs from the set of previous designs that have an instance of the identifiable aspect; and a human noticeability of an identifiable aspect.
  • Clause 52 The computer-implemented method of clause 51, wherein: the human noticeability of an identifiable aspect determines a degree to which a design rule associated with the identifiable aspect must be violated before it is considered significant.
  • Clause 53 The computer-implemented method of any of clauses 50 to 52 further comprising: storing information about a set of previous designs wherein the information comprises an identification of identifiable aspects in the set of previous designs and, for each identified identifiable aspect, data indicating a number of occurrences of that identifiable aspect in the set of previous designs; calculating a uniqueness score for the new design by calculating the uniqueness score as a function of a weighted sum or median of uniqueness scores of the identifiable aspects within the new design wherein the uniqueness score of an identifiable aspect is a number of previous designs which have at least one instance of the identifiable aspect as a proportion of a number of previous designs wherein a degree to which each identifiable aspect contributes to the uniqueness score is determined using the weighting for each identifiable aspect; and providing the uniqueness score to the user.
  • Clause 54 The method of clause 53 further comprising: tracking the uniqueness score of the new design over time or across design genres.
  • Clause 55 One or more device-readable media with device-executable instructions that, when executed by a computing system, direct the computing system to perform for performing operations comprising the methods of any of clauses 1 to 54.
  • Clause 56 A computerized system comprising: one or more processors; and computer storage memory having computer-executable instructions stored thereon which, when executed by the one or more processors, implement a method in accordance with any of clauses 1 to 54.
  • Clause 57 An apparatus comprising: at least one processor; a memory storing instructions that, when executed by the at least one processor, perform a method in accordance with any of clauses 1 to 54.

Landscapes

  • Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Stored Programmes (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

A computer-implemented method of detecting design errors in a design is defined. The method comprises storing a first set of design rules, the first set of design rules defining limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden; receiving a new design from a user; identifying identifiable aspects of the new design; determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules; and if one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, providing to the user details of the identifiable aspects that violate the first set of design rules.

Description

COMPUTER-IMPLEMENTED METHOD FOR IDENTIFYING ERRORS
BACKGROUND
[0001] Today design programs are used to create designs which can then be viewed on screen or, in some instances, printed out for the viewer. These designs can be considered to be visual arrangements, perceptual layouts, graphic designs, digital designs, digital images or graphical illustrations and layouts. While design programs have enabled more people to become involved in design, a user of these programs may fail to take into account design aspects that ensure the design is suitable for a diverse audience. For example, a designer may fail to take into account how a design will appear to a viewer who is colour blind. This can lead to designs where a viewer who is colour blind is unable to distinguish between elements of the design. In other examples, a designer may fail to consider whether a design that will be viewed on screen will harm a viewer who has epilepsy or aggravate a headache of a viewer with a migraine. In addition, the user of a design program may fail to take into account how a change in scale will change the cognitive burden of a user viewing the design either due to alignment issues or issues with colour combinations that are difficult to perceive at certain scales. This has become more of an issue as screen/di splay sizes used can vary widely between viewers since designs may be viewed on everything from a mobile phone to an electronic billboard. In other examples, a user of design programs may wish to understand different aspects of their design to enable them to put their design in context and understand how their design relates to other designs. However, currently, users of design programs may not have the ability to do this.
[0002] The present application relates to a system and method for implementing a design rule checker, a design classifier, and a design evaluator that aims to address some of the above issues.
SUMMARY
[0003] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
[0004] In one embodiment of the application, a computer-implemented method of detecting design errors in a design is provided. The method comprises storing a first set of design rules, the first set of design rules defining limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden. The method then comprises receiving a new design from a user, identifying identifiable aspects of the new design, and determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules. If one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, the method comprises providing the user with details of the identifiable aspects that violate the first set of design rules.
[0005] In another embodiment of this application, a computer-implemented method of categorizing a design is provided. The method comprises storing design information. The design information comprises at least one of: an identification of one or more genres and an indication of identifiable aspects of a design associated with each of the one or more genres; or an identification of one or more timeframes and an indication of identifiable aspects of a design associated with each of the one or more timeframes. The method also comprises receiving a new design from a user, identifying identifiable aspects in the new design, and comparing the identifiable aspects of the new design with the identifiable aspects associated with the one or more genres and/or timeframes to identify the genre and/or timeframe that has the most identifiable aspects in common with the new design. The method then comprises at least one method of outputting an indication of a design genre for the new design wherein the design genre is the genre that has the most identifiable aspects in common with the new design or outputting an indication of a timeframe for the new design wherein the timeframe is the timeframe that has the most identifiable aspects in common with the new design. Additionally, in some examples, this embodiment would be able to display which identifiable aspects are not in common with the design and the genre (e.g. your design does not look like an ad for infant food because it uses an aggressive font).
[0006] In yet another embodiment of this application, a computer-implemented method for evaluating how different identifiable aspects of a new design contribute to a uniqueness of the new design is provided. The method comprises receiving the new design from a user, identifying identifiable aspects of the new design, and determining how at least one of the identifiable aspects contribute to the uniqueness of the design.
[0007] The methods described herein may be performed by software in machine readable form on a tangible storage medium e.g. in the form of a computer program comprising computer program code means adapted to perform all the steps of any of the methods described herein when the program is run on a computer and where the computer program may be embodied on a computer readable medium. Examples of tangible (or non-transitory) storage media include disks, thumb drives, memory cards etc and do not include propagated signals. The software can be suitable for execution on a parallel processor or a serial processor such that the method steps may be carried out in any suitable order, or simultaneously.
[0008] This acknowledges that firmware and software can be valuable, separately tradable commodities. It is intended to encompass software, which runs on or controls “dumb” or standard hardware, to carry out the desired functions. It is also intended to encompass software which “describes” or defines the configuration of hardware, such as HDL (hardware description language) software, as is used for designing silicon chips, or for configuring universal programmable chips, to carry out desired functions.
[0009] The preferred features may be combined as appropriate, as would be apparent to a skilled person, and may be combined with any of the aspects in the invention.
DESCRIPTION OF DRAWINGS
[0010] Embodiments of the invention will be described, by way of example, with reference to the following drawings, in which:
[0011] FIG. l is a flowchart showing an example rule checker system for detecting design errors in a design.
[0012] FIG. 2 is a flowchart showing an example rule checker system for detecting design errors based on selected design rules.
[0013] FIG. 3 is a flowchart showing an example rule checker system that selectively detects identifiable aspects that have been updated when a design is updated.
[0014] FIG. 4 is a flowchart showing an example rule checker system for a multipage design.
[0015] FIG. 5 is a flowchart showing an example rule checker system that uses the frequency of occurrence of design rule violations in previous designs to determine an order in which to process design rules.
[0016] FIG. 6 is a flowchart showing an example rule checker that groups design rules to improve the efficiency of the rule checker.
[0017] FIG 7. is a flowchart showing an example rule checker that extracts data from designs to create an up-to-date design metric that can be used to determine a remarkability of a design.
[0018] FIG 8. is a flowchart showing an example rule checker that aids the visualization of design rule violations by grouping error instances based on relationships between identifiable aspects of the new design.
[0019] FIG 9. is a flowchart showing an example rule checker that identifies whether a new design rule being added to a set of design rules conflicts with any of the previous design rules in the set.
[0020] FIG 10A. is a flowchart showing an example rule checker that merges two sets of design rules and identifies overlapping design rules.
[0021] FIG 10B. shows two sets of design rules, set A, 1100, and set B, 1200, and the overlapping design rules 1300.
[0022] FIG 11. is a flowchart showing an example rule checker that identifies potential solutions/fixes to a design rule violation and provides these to a user. [0023] FIG 12. is a flowchart showing an example rule checker that uses the features of a design application/program used when creating a design to determine which identifiable aspects in a design to detect/process.
[0024] FIG 13. is a flowchart showing an example rule checker that uses image context to determine the relevant design rules to process.
[0025] FIG 14. is a flowchart showing an example rule checker that determines an order in which to process design rules based on how often an individual user violates each design rule.
[0026] FIG 15. is a flowchart showing an example method for determining the uniqueness of a design and how individual aspects of the design contribute to the uniqueness.
[0027] FIG 16. is an example flowchart showing a computer-implemented method of categorizing a design.
[0028] FIG. 17 illustrates an exemplary computing-based device in which embodiments of the invention are implemented.
[0029] Common reference numerals are used throughout the figures to indicate similar features.
DETAILED DESCRIPTION
[0030] Embodiments of the present invention are described below by way of example only. These examples represent the best ways of putting the invention into practice that are currently known to the Applicant although they are not the only ways in which this could be achieved. The description sets forth the functions of the example and the sequence of steps for constructing and operating the example. However, the same or equivalent functions and sequences may be accomplished by different examples.
[0031] Although the present examples are described and illustrated herein as being implemented in a rule checker system, the system described is provided as an example and not a limitation. As those skilled in the art will appreciate, the present examples are suitable for application in a variety of different types of computing systems.
[0032] This application relates to computer-based analysis for designs in order to identify errors in the designs, determine the uniqueness of the designs and/or to classify the designs. The designs being analysed comprise digital designs such as graphical illustrations and layouts, digital images, perceptual layouts and visual arrangements. The designs can be for documents such as web pages, posters, books, packaging etc. In some cases the design may be intended for printing before use but in other cases the designs may be intended for viewing digitally. The designs can be analysed to check for design errors that may increase the cognitive burden of a user viewing the design. For example, the designs can be analysed to check that the colours used in the design can be suitably distinguished by a user who is colour blind or to check that the design of a web page does not contain colour/light combinations that are known to be difficult to view by migraine sufferers. [0033] In one example, the invention relates to a computer-implemented method for detecting design errors in a design. The method may be performed by a computer-implemented rule checker such as the rule checker shown in Figure 1 wherein the rule checker in Figure 1 comprises a submission system, 115, a processing system 125, and a feedback system 135. The rule checker may be a server system that is remote from client devices and receives the designs from client devices remotely. This enables the rule checker to be used for designs from several designers and enables the rule checker to accumulate information from multiple designs and multiple designers. In some examples the rule checker is designed to process digital designs that are intended to be viewed on a display screen. Viewing a design on a screen can constitute always viewing the design on a same size screen e.g., a specific sized electronic billboard or situations where different viewers may view the design on different sized screens. In other examples the rule/design checker can also be used on designs intended for printing before viewing.
[0034] The method comprises storing a first set of design rules wherein the first set of design rules provide constraints or otherwise defines limitations on identifiable aspects of a design to ensure the design can be viewed by a user without undue cognitive burden. These design rules can be encoded/pre-programed or otherwise provided and reflect objective design rules indicating how various aspects of a design should be limited to ensure ease of viewing of the design and/or scalability of the design.
[0035] In one example, the design rules can provide limitation on colours of design that should be used in combination. For example, the design rules can provide limitations on the colours that should be placed next to each other/on top of each other based on colours that are known to look similar to users/viewers who suffer from colour blindness such as monochromacy, dichromacy and anomalous trichromacy. Similarly, the design rules can provide limitations on the colours of text and background based on combinations that are known to be difficult to read for a general user. In another example, the design rules can provide limitations on the brightness/luminosity/intensity of colours for a website to ensure the colours are suitable to be viewed by a viewer suffering from a migraine. In another example, the design rules can relate to alignment and can be alignment rules that ensure objects in the design are correctly aligned. It can be difficult for a user to notice when objects are slightly misaligned, but this can increase the cognitive burden on a viewer of the design as the viewer can be drawn to the error in alignment without understanding why. In addition, a design, of for example a digital poster, may be viewed by the designer on a screen at a significantly smaller scale than when the design is displayed, for example on a digital billboard. Therefore, a design creator viewing the design may not notice alignment errors at this smaller scale that become obvious when the design is displayed at a larger scale. Thus, checking for errors in alignment rules enables easier scaling of designs. This also ensures a single design can be viewed at multiple scales or zoom levels reflecting the diversity of screen sizes used by viewers of a design. Other examples of design rules include contrast, legibility, font size inconsistency, whether aspects/elements of the design are outside a crop area based on a document size and congestion. The skilled person would understand that other suitable design rules can also be considered.
[0036] The method also comprises receiving a new design from a user. The new design can be received by submission system 115. The design checker may be an online design checker or other remote server system and the new design can be received in various suitable ways such as via a chat client, via an email client, via a URL (universal resource locator) for the design, or via direct upload to the online design checker. In other examples, the design checker can be run locally on the user’ s machine and the new design can be accessed from the user’ s machine. In some examples, the design can be received from a chat client (WhatsApp, Microsoft Teams, Slack) or email client. [0037] Once the new design has been received from the user, the method comprises identifying identifiable aspects or features of the new design. This operation can be performed by processing system 125 of rule checker which can parse the new design to identify design features that correspond to identifiable aspects. The identifiable aspects or features of the new design can comprise any aspects or features of the new design that relate to design rules in the first set of design rules. The identifiable aspects/features of a design can thus comprise elements of the design that can be compared with design rules to establish whether the design rules are being followed or violated. Identifiable aspects can relate to a layout of elements in the design, a colour of elements in the design, a form of elements in the design (e.g. is the element, text, an image etc.) or aspects of text or font in the design (e.g. font size, shape of paragraph) or a group of aspects (e.g. 5 images, 3 bold paragraphs, 3 rows or text). A non-limiting list of example identifiable aspects is provided later. The design checker/method can use pixels to identify the identifiable aspects/features of the new design rather than any pre-existing manipulatable vectors that may be in the new design. This can help ensure the processing of the new design is accurate by analysing a most visually accurate representation of the new design.
[0038] The method then comprises determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules. This may comprise the processing system 125 of the rule checker loading the first set of design rules and then using the first set of design rules to check for design errors against predefined objectives contained in the design rules. In this regard, the design rules may specify limitations or constraints on the identifiable aspects of the design and determining whether an identifiable aspect violates a design rule comprises determining the identifiable aspect is not within the limitations or constraints defined by the design rule. For example, a design rule may specify objects have to either be horizontally aligned or have a horizontally separation greater than a threshold value (e.g., 10 pixel horizontal separation threshold). An identifiable aspect may comprise the horizontal separation between two objects and the design rule may be considered violated if the horizontal separation is only 3px. In another example, a design rule may specify that objects that are layered must have colours that are distinguishable by general viewers and a user/viewer with colour-blindness. The identifiable aspect may comprise the colours of two-layered objects and the design rule may be violated if the two objects would appear similar in colour to a general viewer and/or a user/viewer with colour-blindness. The skilled person would understand that these examples are purely exemplary, and that other design rules, identifiable aspects and design rule violations can also be considered. A non-limiting list of possible design rule violations is provided later in the application. Additionally the method may comprise determining the extent of any of the identifiable aspects of the new design, according to design rules in the first set of design rules. In the case that those rules that have a threshold, determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules.
[0039] In some examples, determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises first determining whether any of the identifiable aspects of the new design are governed by the any of the design rules in the first set of design rules and then, if one or more of the identifiable aspects of the new design are governed by any of the design rules in the first set of design rules, identifying whether any of the one or more identifiable aspects of the new design violate one or more of the design rules in the first set of design rules
[0040] If it is determined that one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, the method further comprises providing information to the user detailing either the identifiable aspect that violated the design rule and/or the design rule violated by the identifiable aspect. This can be performed by feedback system 135 of the rule checker in Figure 1. This information may be provided as a list that accompanies the new design. However, in other examples, as described later, this information may be provided on the new design itself to enable the user/designer to easily determine where the design rule violation occurred. This makes it easier for the user/designer to determine errors in their new design and thus correct the identified errors. In some examples providing to the user details of the identifiable aspects that violate the design rules comprises superimposing an indication of a design rule violation on the new design at a position of the design rule violation. In some examples this can involve returning an indication if any design rules were violated. In other examples, this can involve returning single or multiple images which indicate single or multiple identifiable aspects which violated a single or multiple design rules. In other examples this can involve returning a link to a web page or application which indicates whether the identifiable aspects within the design violated any of the design rules. In other examples, this can involve providing a notification on the user’s device.
[0041] Given the above, in one example, the invention relates to lowering the amount of cognitive effort involved in finding design rule violations by using a design rule violation checker to detect, visualise, suggest improvements and correct errors in designs. To this end, a method for guiding a user to the elements most likely to be involved in design rule violations is provided. In this method: a user uploads a design to a processing server which contains predefined design rules. The server uses predefined design rules to check for design rule violations. The server sends the errors back to a client’ s local device. The local device presents the errors to the user by superimposing a visual representation of the errors on the design. Potential solutions to the design errors may also be suggested. Additionally, an indication of the rule set which a design rule belongs to may be indicated. Furthermore, an indication of the author of the rule or rule set may be indicated.
[0042] In some examples, the first set of design rules may not be universally applicable. As such, the first set of design rules further comprises exception parameters for one or more of the design rules from the first set of design rules wherein the exception parameters define a specific situation in which the design rule corresponding to the exception parameter does not apply. For example, a design rule can be considered to have parameters that govern when the design rule is violated. Exception parameters can be additional conditions that specify when a design rule is not violated even if it is considered violated based on the design rule parameters. In other words, “exception parameters” may be added to each design rule. Exception parameters are specific situations where the design rule is not applied (e.g. “don't apply geometry rules on text”). Exceptions are evaluated to detect if an exception to the design rule is present. Each exception parameter may have a class, comparison operator and value that could be considered to be similar to other rule parameter conditions. If a design rule is violated but a valid exception is found, the rule violation is disregarded. This allows a user to add exceptions to a design rule. Adding this exception feature to design rules may make it possible to build broader-reaching design rules that can handle specific situations where they are not applicable and avoid tightly-scoped parameter conditions for design rules wherein tightly scoped parameter conditions result in a large number of rules being required to account for a wide variety of design issues while avoiding false positives.
[0043] In other examples, a user may choose which rules from the first set of design rules they wish the design checker/computer-implemented method to consider. Thus, the user can provide an indication of this set of rules with the design. This means the user may provide an indication of the design rules that the design should be checked against. This can involve providing a URI (universal resource identifier) identifying the rules from the first set of design rules that should be used for the check. The user may provide an indication of a subset of the first set of design rules or an indication of individual rules. The user may also provide an indication in which order the design rules should be processed when determining whether any of the identifiable aspects violate any of the design rules. Determining whether any of the identifiable aspects violate any of the design rules may comprise only determining whether any of the identifiable aspects violate any of the design rules specified by the user. The determining may occur in an order specified by the user or there may be limitations imposed by the rule author (e.g., you must determine text position before using its alignment).
[0044] As shown in Figure 2, in some examples, a user may wish to limit the rules processed to have the rule checker work more efficiently. To this end, as shown in block 215, in some examples, the rule checker may receive the new design in the form of image data and may also receive a rule request limiting the rules from the first set of design rules that should be processed. In block 225, this limited set of design rules is loaded into the rule checker. In block 235, identifiable aspects related to the limited set of design rules is determined. In block 245, it can be determined whether any of the related identifiable aspects violate any of the limited set of design rules. If the related identifiable aspects violate any of the limited set of design rules, an output can be provided to the user/design as described above.
[0045] As shown in Figure 3, the method may further comprise selective detection of identifiable aspects of a design to reduce the processing requirements of processing a design when the design is updated. To this end, in some examples the method further comprises receiving an updated version of the new design from the user/ design er. As shown in block 310 and 315, the method then comprises comparing the updated version of the new design and the original version of the new design to identify differences between the updated version and the original version. In some examples data relating to any identifiable aspects/design rule violations that are identical between the original version and the updated version of the new design can be imported from the original version for later display. Therefore, any design rule violations that are the same in the updated version as the original version of the new design can be easily determined without processing all the identifiable aspects of the updated version of the new design. In other examples, this data may be ignored to avoid providing unnecessary information to a user. Identifiable aspects of the updated version of the design that are the same as identifiable aspects of the original version can then be ignored in further analysis of the updated version of the new design as shown in block 345. As shown in block 355 and 365, the method then comprises determining identifiable aspects of the differences between the updated version and the original version based on design rules from the first set of design rules. As shown in block 375, the method then comprises determining whether any of the identifiable aspects of the differences violate any of the design rules in the first set of design rules. As shown in block 385, the method then comprises providing to the user details of the identifiable aspects that violate the first set of design rules if one or more of the identifiable aspects of the differences violate one or more of the design rules in the first set of design rules. [0046] Given the above, the method reduces the amount of compute resources required for giving feedback on versioned designs. This prevents the need for identifiable aspects of a design to be redetected between different versions of a design. To this end a method for computing the difference between the image iterations and detecting the identifiable aspects of a design is provided. The method comprises loading historical data related to the identifiable aspects of a design, comparing pixel values between two images to determine which regions have changed and storing the locations of these regions, searching through the historical data related to the identifiable aspects of a design and deleting them if their location overlaps with the location of any of the changed image regions, only detecting the identifiable aspects of a design for the changed design regions, searching through the design rules and checking for instances of rule violations in the identifiable aspects of a design, and sending the errors back to a client’s local device. This means a user can version an image and only see new errors.
[0047] As shown in Figure 4, in some examples, the method may further be performed on a multipage design. Multiple page documents can have identical elements. The cost of analysing the same element on each page is a waste of computing resources and elongates the feedback loop. As such, in some examples, the methods further comprise performing the above method for the first page of the multi-page design. The method then comprises for each subsequent page of the design: comparing the pixel values and/or element data to the pixel values and/or element data of the previous pages of the design to identify identical regions, as shown in block 415. The method then further comprises providing, to the user, the details of the identifiable aspects that violate the first set of design rules in identical regions from the previous pages. For regions that are not identical to a previous page, the method then comprises: identifying identifiable aspects on the subsequent page of the new design in accordance with block 425, determining whether any of the identifiable aspects violate any of the design rules in the first set of design rules in accordance with block 435; and if one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, providing to the user details of the identifiable aspects that violate the first set of design rules as shown in block 445. This provides efficient detection of the identifiable aspects of a design across a multiple page document. It is noted that while in the above example a user is provided with feedback related to identical regions on every page, in some examples feedback with respect to these regions is only provided on a single page such as the first page of the document.
[0048] Given the above, the method results in efficient detection of the identifiable aspects of a design across a multiple page document. In particular, multiple page documents can have identical elements. The cost of analysing the same element on each page is a waste of computing resources and elongates the feedback loop. To this end, a method for efficiently detecting identifiable aspects of a design across a multiple page document is provided. The method comprises searching through the pages and cross comparing the pixel values and or element data between the pages to determine which regions are identical and storing their locations. The method further comprises using the locations of the identical regions to selectively filter out identical regions during the process of detecting identifiable aspects of a design. The method also comprises copying and adjusting the detected identifiable aspects of a design to map them to the identical regions across the pages. The method further comprises searching through the design rules and checking for instances of rule violations in the identifiable aspects of a design. The method also comprises sending the errors back to a client’s local device. This results in less wastage of computing resources.
[0049] As shown in Figure 5, the method described with respect to other figures may further comprise storing information about a set of previous designs wherein the information comprises a list of design rules and for each design rule in the list an indication of a number of occurrences of a violation of that design rule in the previous set of designs. As shown in block 515, this information may be loaded into the rule checker. The operation of identifying whether any of the one or more identifiable aspects violate one or more design rules may then comprises processing design rules based on the number of occurrences of violations so that design rules that have more occurrences of a violation are processed before design rules with a lower number of occurrences of a violation. As such, the analysis is augmented with remarkability data as shown in block 525. Remarkability/remarkability data can be considered to be a combined measure of quality and uniqueness of a design. However, in some examples the remarkability may just cover uniqueness. Either way, remarkability can be considered a measure of how distinct the design would appear to a user. As with the above methods, and as shown in block 535, the details of violated design rules may then be returned to the user/design in accordance with the methods described above. In some examples, as shown in block 545, the information about a set of previous designs may be updated with information about design rules violated by the new design to keep this information up-to- date.
[0050] Not knowing which errors frequently occur in a design means that the order in which rules are checked may be inefficiently organised. This increases the time taken to perform relevant error checks. To this end, in accordance with Figure 5, and as described above, a method for prioritising the order in which design rules are checked is provided. The method comprises uploading a design to a remote processing server which contains predefined design rules. The method also comprises using the predefined design rules to check for design rule violations. The method further comprises loading a remarkability structure. A remarkability structure is a data structure containing data about the frequency of occurrence of design rule violations and/or the identifiable aspects of a design. The method comprises sorting the predefined design rules so that the most frequently occurring design rules within the remarkability structure are run first. The method also comprises searching through the design rules and checking for instances of rule violations. The method comprises sending the errors back to a client’s local device. The method also comprises presenting the errors to the user by superimposing a visual representation of the errors on the design.
[0051] As shown in Figure 6, the method may comprise grouping design rules to improve the efficiency of the rule checker. As shown in block 615, to this end, the methods described above may further comprise determining, for each design rule, any measurements or functions that need to be performed on the design to identify the relevant identifiable aspects of the design that need to be analysed to detect a violation of the design rule. As shown in block 620, the method then comprises grouping the design rules by the measurements or functions that need to be performed on the design such that the design rules in each group have overlapping measurements or functions. As shown in boxes 625, 630, 635 and 640, the rule checker/method may then check the design rules in batches. This may comprise processing the design rules in groups. When batching is used, for each group of design rules the method comprises determining whether any of the identifiable aspects of the new design violate any of the design rules by performing the measurements or functions necessary to identify the identifiable aspects that need to be analysed to detect any violations of design rules in the group, and identifying whether any of the one or more identifiable aspects of the new design violate any of the design rules in the group. As part of this process, the method may comprise sorting the measurements or functions based on a time taken to perform each measurement or function, and processing groups of design rules that depend on measurements or functions that take less time to perform before processing groups of design rules that depend on measurements or functions that take more time to perform.
[0052] In some examples, the measurements or functions that need to be performed on the new design to identify the relevant identifiable aspects comprises determining the measurements or functions using a function dependency data structure wherein the function dependency data structure comprises an identifier for each design rule and a data structure indicating whether each measurement or function is a dependency of the design rule identified in the identifier.
[0053] Each rule requires measurement data to be generated prior to the rule being able to check for a violation. Previously users had to wait for the identifiable aspects of a design to be detected prior to any rule violations being checked for. To this end, and in accordance with Figure 6, a method for efficiently performing rule violation checks is provided. The method involves loading the design rules that will be required to check for rule violations. The method also comprises using a function dependency data structure to determine which functions must be run to generate the measurement data necessary to perform a rule violation check. The function dependency data structure consists of rule identifiers and a structure stating whether a particular function is a dependency of a particular rule. The method also comprises finding instances in the function dependency data structure where rules share function dependencies and creating groups of rule identifiers. The method further comprises searching through the groups of rule identifiers. The method comprises performing the functions necessary to produce the measurement data needed to perform the rule violation checks within a group. Additionally, the method comprises performing the rule violation checks defined in a group. The method comprises returning the rule violations to the user as they are detected. As such, the method provides an asynchronous batched rule checking pipeline which allows the user to get the results of the design rule violation checks faster. A user does not have to wait for all the design rule violation checks to be performed before receiving feedback and means it is possible to return feedback to the user faster.
[0054] As shown in Figure 7, in some examples, the method further comprises extracting data from designs to create an up-to-date design metric that can be used to determine a remarkability of a design. To this end, and as shown in blocks 710 and 715, in some examples, the method comprises iteratively repeating the operations of the methods described above with multiple new designs. The method therefore comprises, for each design, identifying the identifiable aspects as shown in block 710 and identifying design rule violations as shown in block 715. The method then comprises generating/updating remarkability data as shown in block 720. For example, the method can comprise for each new design storing data indicating the identifiable aspects identified in the new design and/or the design rule violations found for the new design and using the stored data to determine a number of occurrences of at least one identifiable aspect and/or at least one design rule violation across multiple designs.
[0055] This remarkability data can then be used for example by receiving a further new design from a user, identifying the identifiable aspects in the further new design, determining a frequency of occurrence of at least one identifiable aspect of the further new design based on the number of occurrences of the at least one identifiable aspect stored in the stored data, and providing the frequency of occurrence information to the user. In another example this remarkability can be used by receiving a further new design from a user, identifying the identifiable aspects in the further new design, determining whether any of the identifiable aspects of the further new design violate any of the design rules in the first set of design rules, determining a frequency of occurrence of at least one design rule violation of the further new design based on the number of occurrences of the at least one design rule violation stored in the stored data, and providing the frequency of occurrence information to the user. In some examples, this can involve tracking the frequency of occurrence of the at least one identifiable aspect/at least one design rule violation over time or across design genres.
[0056] Therefore, in accordance with Figure 7, the method can involve computing, updating and tracking the frequency of occurrence of identifiable aspects and design rule violations. The frequency of occurrence can be tracked over time and it can be contextualized to specific design genres/tags. Different identifiable aspects or design rule violations can be tracked. To this end a method for collecting design metric data is provided. The method comprises a user uploading a design to a remote processing server which contains predefined design rules; using the predefined design rules to check for design rule violations; searching through the design rules and checking for instances of rule violations; accumulating the design rule violations and identifiable aspects of the design; storing remarkability data about the frequency of occurrence of design rule violations and/or the identifiable aspects of a design; persisting the remarkability information; sending the errors back to a client’s local device; and presenting the errors to the user by superimposing a visual representation of the errors on the design. As a result, when a design is submitted for review, the remarkability data about a design is accumulated as the design is checked for rule violations. The crowd-sourced remarkability data can then be used to assess the remarkability of other designs. This creates an up-to date design metric that can be used to determine the remarkability of a design.
[0057] In some examples an adaptation of the above method can be used to provide a global measure of a design’s remarkability relative to other designs around the world. In particular, currently designers are uncertain about the global remarkability of a design. This lack of knowledge only gives designers a partial picture about how their design is likely to be perceived. To this end, a method for providing design remarkability feedback is provided. The method comprises uploading a design to a remote processing server, loading remarkability data about the frequency of occurrence of design rule violations and/or the identifiable aspects of a design. This remarkability data may have been harvested by aggregation from other designs that have been submitted for testing. The method then comprises searching and assigning a remarkability score to design rule violations and/or the identifiable aspects of a design. The remarkability score is a function of the number of previous designs which have at least one instance of a design rule violation or identifiable aspect of a design as a proportion of the number of previous designs. The method then comprises sending the remarkability score back to a client’s local device. As such, a user would receive additional data about how similar their design and the identifiable aspects are to other designs.
[0058] In some examples, the method can further comprise ranking design rule violation instances when displaying them. To this end, the first set of design rules may further comprise a criticality score for each design rule wherein the criticality score is a measure of a degree to which a violation of the design rule would increase the cognitive burden to the user. The methods described above may then further comprise, for each identifiable aspect that violates a design rule from the first set of design rules, determining a magnitude score for the design rule violation wherein the magnitude score is computed based on a size of the design rule violation relative to a size of the design, and calculating a priority score for the design rule violation wherein the priority score is a function of a multiplication of the magnitude score for the design rule violation and the criticality score for the design rule violation. The above mentioned operation of providing to the user details of the identifiable aspects that violate the first set of design rules may comprise providing an indication of at least one of the design rule violations wherein the provided indications are visually ranked based on the priority score associated with the design rule violation. This can improve the guidance for users when exploring rule violations since previously when displaying multiple design rule violation instances to a user, it was difficult to know which ones to prioritise showing. In additional examples the method may comprise for each identifiable aspect which is beyond a threshold of a design rule from the first set of design rules: determining a magnitude score for the identifiable aspect wherein the magnitude score is computed based on a size of the identifiable aspect relative to a size of the design; and calculating a priority score for the identifiable aspect wherein the priority score is a function of a multiplication of the magnitude score for the identifiable aspect and the criticality score for the identifiable aspect.
[0059] Given the above, the method may comprise receiving design rule violations instances, searching through design rule violations instances and computing a priority score for each of them wherein the priority score is a function of the rule violation instances' magnitude score multiplied by its criticality score and the magnitude score is the area of the rule violation instance’s error. The criticality score can be a predefined value attributed to each design rule e.g. a text alignment rule violation instance with an error size of 20 pixels will have a lower rank than an error with the same criticality score but, with an error size of 400 pixels. The prominence scores of each design rule violation instance will be used to visually rank the design rule violation instances. This means a user can more easily discern higher priority design rule violation instances as they are more salient. [0060] As shown in Figure 8, the method may also comprise clearly visualising design rule violations by grouping error instances based on relationships between identifiable aspects of the new design. This method can use the design rule violations mentioned above which may be received as error data in block 815. The method then further comprise grouping the design rule violations wherein design rule violations are grouped if they occur within a threshold distance of each other on the design as shown in block 825. The above-described operation of providing to the user details of the identifiable aspects that violate the design rules then comprise superimposing an indication of each group of design rule violations on the new design. In some examples the method may comprise providing an indication of design rule violations with a priority score above a threshold in addition to providing an indication of each group of design rule violations. As shown in block 835, the method may also comprise adjusting a number of indications provided based on a zoom level at which the design is being viewed by the user. This can also involve adjusting the number of indications by adjusting the size of the groups so there are fewer indications per group and more groups as the zoom level increases. In other examples, this can also involve adjusting the number of indications by only providing indications for design rule violations that have a size below a threshold minimum size and wherein the threshold minimum size is reduced as the zoom level increases. This improves rule violation visibility within an interactive interface since multiple instances of a design rule violation within close proximity leads to visual clutter.
[0061] Given the above, a method for clearly visualising design rule violations may be provided. The method may comprise receiving design rule violations instances, searching through design rule violation instances and grouping them together. The grouping can be based on different criteria. E.g. computing the distance between rule violation marker coordinates and the similarity of the design rules. Marker coordinates consist of x and y values indicating where a marker will be placed. If the distance between markers is within a threshold and violated design rules are similar, the method comprises visually grouping the violation instances together into an expandable group. The method can comprise ensuring that the most critical rule violations are still salient regardless of visual grouping e.g. making the critical rule violations’ markers a more salient colour or placing them above less critical rule violation’s markers in visual hierarchy. Additionally, a condition of the design rule violation instances having shared elements can be added to the grouping criteria. This results in less visual clutter due to errors being grouped together.
[0062] In addition, a method for improving rule violation visibility within an interactive interface may be provided. The method may comprise receiving design rule violations instances, and grouping them together on different zoom levels. The zoom level grouping can be based on different criteria such as the dimensions of the region of interest of the rule violation instance, relative to the dimensions of the design e.g. a rule violation instance which has a region of interest with an area which is greater than 50% of the area of the design will be placed in the zoom level group 1. Zoom level group visibility will be dependent on the degree to which a user has zoomed into a design e.g. a user zoomed in 0% - 20% can view the rule violation instances in zoom level group 1, a user zoomed in 21% - 40% can view the rule violation instances in zoom level group 2. This enables a user to hierarchically explore errors and prevents multiple design rule violations within close proximity which can lead to visual clutter.
[0063] The above examples have focused on a first set of design rules wherein the first set of design rules define limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden. However, in some situation, a user may wish to also check the design meets a second set of design rules. This second set of design rules may reflect design rules that can change between designs and users. The second set of design rules may take into account cognitive aspects of the design. For example, material produced for sufferers of migraines may require use of a muted colour scheme, particular for material designed to be viewed on a computer, to ensure a viewer’s migraine is not aggravated by the design. This second set of design rules could also take into account limitations of a display device with which the design will be viewed, or limitations imposed by an organization responsible for the design to ensure conformity between designs. The skilled person would understand other uses of a second set of design rules are also possible.
[0064] Given the above, the methods described above may further comprise receiving a second set of design rules wherein the second set of design rules utilising user preferences for identifiable aspects of a design. In these examples, the methods then comprise determining whether any of the identifiable aspects of the new design violate any of the design rules in the second set of design rules, and if one or more of the identifiable aspects violate one or more of the second set of design rules, providing to the user details of the identifiable aspects that violate the second set of design rules.
[0065] When multiple sets of design rules are used, it is useful to first check that there is no contradiction between the sets of design rules. In this regard, each design rule in the first set of design rules and the second set of design rules can be considered to identify an identifiable aspect of the design and parameters governing that identifiable aspect of the design. The method further for combining sets of design rules may then comprise comparing the design rules in the first set of design rules and the second set of design rules to confirm that for each design rule in the second set of design rules a set of parameters exist that satisfy both that design rule and all of the design rules in the first set of design rules. If a design rule exists in the second set of design rules where no parameters can satisfy both that design rule and all of the design rules in the first set of design rules, the method comprises indicating that design rule to the user.
[0066] In the example shown in Figure 9, a similar process to the one described above may also be used when adding a new rule to either the first set of design rules or the second set of design rules. Each design rule in the first set of design rules or second set of design rules can be considered to specify an identifiable aspect of the design and parameters governing that identifiable aspect of the design. The methods mentioned above can then further comprise receiving a new design rule to be added to either the first set of design rules or the second set of design rules as shown in block 910. The first set of design rules and/or second set of can then be loaded as shown in block 915. The methods then comprise comparing the new design rule to the design rules in either the first set of design rules or the second set of design rules to confirm that a set of parameters exist which satisfy both the new design rule and all of the design rules in the first set of design rules or second set of design rules, as shown in block 925. As shown in block 955 if parameters exist that satisfy both the new design rule and all of the design rules in the first set of design rules or second set of design rules, the methods comprise adding the new design rule to the relevant set of design rules. In contrast, as shown in boxes 935 and 945, if no parameters exist that satisfy both the new design rule and all of the design rules in the first set of design rules or the second set of design rules, the method comprises indicating that new design rule to the user.
[0067] Thus as described above a method for preventing contradicting design rules is provided. The method involves loading the design rules that will check for rule violations, then comparing the parameters of the design rules to find contradicting design rules. The parameters are a list of conditions which must all be satisfied for a rule to be violated. Each condition has a “class” (e.g. classes: font-size, font-weight, colour and background colour), “comparison operator” (e.g. comparison operators: equal to, not equal to, less than.) and “value” (e.g. values: 16, “bold”, “regular”, “255_255_255”, 0, 1.). A search is performed between rules which have identical or linked classes. The method comprises searching to check that a combination of values exists which could satisfy all the comparison operator and value set conditions. If no combination of values exists that could satisfy all rule conditions, the rules are considered “contradictory”. If contradicting design rules are found, they are flagged to the user. The search for contradicting rules ensures that any error reported can be solved. This prevents unknown contradicting rules from existing in a design rule violation checker such as combinations of rules that have no possible solution (e.g. rule 1 says “it must be blue” and rule 2 says “it can’t be blue”).
[0068] As shown in Figure 10, when multiple sets of design rules are used, it can be beneficial to merge the sets of design rules so that rules which appear in both sets of design rules are only processed once. This is because, in situations where multiple sets of design rules are present, many of the rules are partially or completely duplicates, leading to redundant testing for rule violations. Redundant testing is when multiple design rules are searching for or flagging the same issue.
[0069] Figure 10A shows a flowchart of a method for merging rules while Figure 10B shows the rules to be identified. Figure 10B shows a first set of design rules 1100 and a second set of design rules 1200 and a common set of design rules 1300. In some examples, the methods described above can further comprise identifying the design rules 1300 that are common between the first set of design rules 1100 and the second set of design rules 1200 so these rules are only processed a single time. As discussed above, each design rule in the first set of design rules and the second set of design rules can be considered to specify an identifiable aspect of the design and parameters governing that identifiable aspect of the design. When the set of design rules are merged and the method can further comprise the operations from the flowchart in Figure 10B. In particular, as well as the methods described above which are shown in boxes 1015, 1035 and 1045, the method can comprise merging the design rules as shown in block 1025. This can comprise comparing the design rules in the first set of design rules and the second set of design rules to identify design rules in the second set of design rules that have a similar design rule in the first set of design rules wherein a design rule in the second set of design rules has a similar design rule in the first set of design rules when the design rule in the second set of design rules relates to the same identifiable aspect and has more than a threshold degree of overlap in parameters with a design rule in the first set of design rules. The method can then comprise when a design rule in the second set of design rules has a similar design rule in the first set of design rules, merging the design rules to form a new design rule in only one of the first or second set of design rules. This eliminates redundant duplicated rule violation checks.
[0070] Thus, as described above a method for identifying similar rules and merging them is provided. The method begins by loading a list of design rules and comparing the design rules to find parts of the rules that have identical conditions. A pair of similar design rules are identified by the degree of overlap between their parameter conditions. Based on a predefined threshold for the degree of overlap, the overlapping rules are merged together. The merging process involves the overlapping rules becoming a separate entity that is run only once, and the results used for both rules. This means fewer redundant or duplicate errors would be flagged, error visualisations would be less cluttered, and less computation effort is wasted on duplicate rules.
[0071] When combining two or more sets of design rules, different rules may have different levels of importance. To this end, the first set of design rules and the second set of design rules may comprise an importance score for each design rule. The method may then comprise combining the first set of design rules and the second set of design rules to form a third set of design rules wherein the third set of design rules are ordered by the importance score of each design rule. The determining whether any of the identifiable aspects violate any of the design rules in the first and second set of design rules may comprise determining whether any of the identifiable aspects violate any of the design rules in the third set of design rules. Similarly, the providing details to a user may comprise providing the details of the identifiable aspects that violate design rules with a higher importance score before identifiable aspects with a lower importance score.
[0072] Given the above, a method for combining design rule sets is provided. Each design rule set only specifies errors, so total errors are a simple collection of the errors in both sets of design rules. A method for establishing the importance of rules can be provided. Each rule set may have an importance score for each of its rules, which allows the most important rule violations to be presented first. But when two rule-sets are combined, the relative rule importance must be established between the two relative rules. This is done by specifying that all rules on an absolute scale (e.g. 0-1), so rules from any set can be simply combined. A method for detecting contradictory solutions can be provided, so the solutions can be harmonized. Each potential solution to a rule is passed by all of the rules in both rule sets, so that only solutions that pass all rules may be proposed. As such, local and global rules can be harmoniously combined into one non-contradictory set, and any solutions proposed by a rule satisfy the entire rule set. This allows a custom/local set of design rules to co-exist with a global set of design rules, without contradiction, so that both sets of rules can be applied to new designs, without contradicting each other. This also ensures a local set of rules does not contradict the global set of rules, leading to conflict.
[0073] Providing a user with unconstructive feedback e.g., an indication so errors is only a partial solution to the problem of design rule violations. A user will still need to think of fixes for the flagged violations. To this end, in some examples, as shown in Figure 11, the methods described above may further comprise storing a set of candidate solutions each candidate solution defining a potential fix for a particular violation of a particular design rule. If one or more of the identifiable aspects violate one or more design rules of the first set of design rules the method may then comprise determining a particular violation of a particular design rule caused by each of the one or more identifiable aspects that violate the one or more design rules of the first set of design rules as shown in block 1115, identifying one or more potential candidate solutions from the set of candidate solutions for each identifiable aspect that violates the one or more design rules of the first set of design rules wherein the one or more potential candidate solutions define a potential fix for the particular violation of the particular design rule as shown in block 1125, and providing the potential candidate solutions to the user as shown in block 1135. This provides constructive feedback on design rule violations.
[0074] In some examples each candidate solution of the set of candidate solutions is associated with a suggestion type wherein the suggestion type indicates the form of design rule violation being fixed by the candidate solution. The method may then further comprise storing a suggestion order data structure wherein the suggestion order data structure comprises an indication of the order in which suggestion types should be applied, using the suggestion order data structure and the suggestion type of each candidate solution of the set of candidate solutions to order the candidate solutions, and providing the candidate solutions to the user along with an indication of the order in which the candidate solutions should be applied. This may improve the client’s speed in implementing suggested/candidate solutions. Additionally or alternatively, the order of the candidate solutions may be modified depending on their effect on the other rules. So solutions that cause the least decrease in other scores may be presented first (e.g. if a potential solution for aligning text would cause colour balance scores to decrease, then reduce the solution rank of that potential solution).
[0075] In other words, a method for generating suggested or candidate solutions is provided. The method comprises loading predefined suggested solution candidates for a specific violated design rule. A suggested solution candidate is a potential fix to a specific violated design rule and contains a text description of how to fix the violation and the necessary conditions which must be present in the identifiable aspects of a design. If all of the listed conditions are present within the identifiable aspects of a design the suggested solution candidate is applicable. The method comprises searching through suggested solution candidates and storing the applicable ones, e.g. a suggested solution candidate to change the colour of a body of text from red to white could have a condition that the background of the body of text is not white. The method also comprises displaying the suggestions alongside the corresponding design rule violations. This ensures a user would be able to explore suggested fixes for the rule violations flagged by the design rule violation checker.
[0076] The order in which suggested solutions are incorporated into a design affects how efficiently the changes are made. Incorporating suggested solutions in the wrong order can lead to the user having to backtrack e.g. implementing an alignment solution before a spacing solution would require the user to perform the alignment again after fixing the spacing. A method for improving the order efficiency of incorporating suggested solutions is thus provided. The method comprises loading a suggestion order data structure which contains combinations of suggestion types and the predefined order in which the suggestions should be incorporated. The method also comprises using the suggestion order data structure to sort which order a set of suggested solutions should be incorporated in and returning the suggested solutions to a user with additional information about the order in which they should be incorporated. This reduces the amount of backtracking in the design process thanks to designer friendly ordered suggested solutions. Saving the user time in the process of incorporating feedback into their designs.
[0077] In other examples in accordance with Figure 11 one more of the candidate solution from the set of candidate solutions further comprises a condition indicating identifiable aspects of the design for which the candidate solution is not valid. The method may then further comprise excluding from the potential candidate solutions any candidate solutions whose condition indicates it is not valid for the identifiable aspect that resulted in the particular violation of the particular design rule. The solutions can also be adjusted to reflect the design. To this end, the method may further comprise extracting local themes from the identifiable aspects of the new design wherein the local themes comprise at least one of colours, colour combinations, dimensions of elements, font weights, spacing and visual patterns used in the new design and adapting the one or more potential candidate solutions based on the local themes so that the candidate solutions more closely match the local themes. This generates suggestions for improving a design whilst maintaining the local themes and styling within it. This is useful since designs can have intentional styling and generalised suggestions would steer the design away from its intended aesthetic.
[0078] As such, a method for determining the themes a design working within and using them to shape and filter out suggestions is provided. The method comprises loading predefined suggestion candidates for a specific violated design rule. A suggestion candidate is a potential fix to a specific violated design rule containing a description of how to fix the violation and the conditions which must be met for the suggestion candidate to be applicable. The method may comprise searching through suggestion candidates and storing valid suggestions. A suggestion candidate is considered to be valid, when its validity conditions are present in the identifiable aspects of a design e.g. a candidate suggestion to change the colour of a body of text from red to white could have a condition that the background of the body of text is not white. The method comprises extracting local themes from the identifiable aspects of a design, e.g. colours, colour combinations, dimensions of elements, font weights, spacing and visual patterns, and using the local theme data to steer a suggestion towards a more local theme aligned improvement e.g. a candidate suggestion to change the colour of a body of text from red to blue to improve legibility, however red, white and dark green are the text colour local themes within the design thus, in this example the method may comprise updating the suggestion to present dark green as a replacement text colour instead of blue. The method then comprises displaying the suggestions alongside the corresponding design rule violations. Thus, a user would have their design suggestions tailored to account for their stylistic preferences on an image-by-image basis.
[0079] The method in accordance with Figure 11 may also comprise generating a relationship structure between the identifiable aspects of the design. In this scenario, generating the relationship structure comprises storing a set of relationship categories wherein each relationship category in the set of relationship categories defines a link between at least two identifiable aspects of a design, and searching through the identifiable aspects of the new design and identifying any identifiable aspects that are referenced by the relationship categories. Identifying one or more potential candidate solutions then comprises identifying whether each of the one or more candidate solutions results in a breaking of a link between identifiable aspects of the design contained in the relationship structure. The method then comprises if one or more potential candidate solution results in a breaking of a link between identifiable aspects of the design providing an indication to the user of the relationship category that would be broken as a result of the potential candidate solution. In some examples candidate solutions that break more than a threshold number of relationships can be filtered out.
[0080] The above method reduces compute resource consumption. This is because when computing a suggested solution to a design error, additional computation is required to perform error checks on the post-fix state of a design. This is done to determine no new errors would be created because of the fix (e.g. size-related suggested solutions have side -effects on alignment relationships. So an alignment relationship would need to be flagged).
[0081] In other words, a method for tracking the relationships between the identifiable aspects of a design and using those relationships to predict side-effects is provided by using a relationship structure. A relationship structure is a data structure which contains references to the identifiable aspects of a design and the nature of the relationships between them. These relationships can be identified by searching through the identifiable aspects of a design and identifying instances of predefined relationship categories. When generating a suggested solution for correcting an error, the server performs a check that the elements involved in the solution are not linked to any relationships which would be broken as a result of incorporating the suggested solution. It flags to the user the suggested solutions which have side-effects and details the side-effects. This results in a reduced need for post-fix error checks saves the user time re-submitting designs and saves compute resources. A user can then be informed of the side-effects of suggested solutions and decide whether to incorporate them. The relationship structure could also be used to filter out suggested solutions with too many side-effects. This is done by counting the number of relationships that are linked to the elements involved in a suggested solution. In this way it can find the simplest solution to a design error.
[0082] In some examples, the method described in accordance with Figure 11 may further comprise determining how each potential candidate solution would change a metric of the new design. Example design metrics may include a uniqueness of a design (e.g., a score indicating how distinct a design is relative to other designs); a quality of a design (e.g., how visually balanced a design is); a proximity of a design to a specific design genre (e.g., a degree to which a design looks like a design for baby food); a colour ratio of a design (e.g., a ratio of colour elements to grayscale elements); a text ratio of a design (e.g., a value indicating a percentage of a design which is text); and a negative space ratio of a design (e.g., a ratio of elements to empty space within a design). The method may then comprise providing the user with a delta wherein the delta represents data which indicates how the metric of the new design would change upon incorporation of the potential candidate solution. As such, the method comprises providing the user with data which indicates how the metrics of their design would change due to incorporating the candidate solution. These indications could be presented as deltas between the attributes of the current design and the attributes of the design after incorporating the candidate solution. This involves providing the user with a single or multiple indication about how metrics of their design would change based on incorporating a candidate solution. In addition, if the user resubmits a design, the method can comprise using a previously uploaded design’s identifiable aspects to compute the change (delta) in the attributes (e.g. colour ratio, text ratio, negative space ratio, uniqueness, genre) of the new design and returning an indication of how the design attributes changed from the previous version alongside an indication of whether the identifiable aspects within the new design violate any of the design rules.
[0083] In some examples the delta being considered may relate to remarkability. Providing suggested solution improvements for a design based purely on design rules can have a side-effect of lowering the remarkability of a design or its identifiable aspects. Therefore, using a delta related to remarkability can enable a user to steer their design or identifiable aspects of their design towards or away from current trends. To this end, a method for generating suggested solutions which account for trends is provided. The method comprises loading predefined suggested solution candidates for a specific violated design rule. A suggested solution candidate is a potential fix to a specific violated design rule and contains a text description of how to fix the violation and the necessary conditions which must be present in the identifiable aspects of a design. If all of the listed conditions are present within the identifiable aspects of a design the suggested solution candidate is applicable. The method comprises searching through the suggested solution candidates and storing the applicable ones, e.g. a suggested solution candidate to change the colour of a body of text from red to white could have a condition that the background of the body of text is not white. The method then comprises searching and assigning a remarkability score to suggested solutions. The remarkability score is a function of the number of previous designs which have at least one instance of a design rule violation or identifiable aspect of a design as a proportion of the number of previous designs.. The method then comprises displaying the suggestions alongside the corresponding design rule violations. This means a user could decide between suggestions based on how the suggestion will affect their overall remarkability or erroneous score. [0084] Figure 12 shows a method that can be used with the above-described methods. This method comprises, in block 1215 receiving from a user a list of features of a graphic editor program that have been used on the new design. The above discussed operation of determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules then comprises, based on the features of the graphic editor program that have been used, identifying one or more design rules from the first set of design rules that relate to identifiable aspects of the new design that result from the features of the graphic editor program, as shown in block 1225; and determining whether the identifiable aspects of the new design violate any of the identified one or more design rules, as shown in block 1235. This can reduce the amount of compute resources required in detecting errors. In particular, within a graphic editor application/program, a design’s identifiable aspects can be changed through application methods, e.g. changing the colour of a body of text. To this end, the above can be considered a method of determining which design rules to check based on the application methods used, e.g. if the text colour is changed, run text colour to background saliency related design rule checks.
[0085] Given the above, a method for determining which design rule violation checks to run is provided. The method comprises receiving a design and a list of application methods from a graphic editor application/program. The method also comprises determining the rules which need to be checked by extracting and grouping the data from a predefined data structure. The predefined data structure contains lists of rules which need to be run in response to different application methods. The method further comprises detecting the identifiable aspects of a design, searching through the design rules and checking for instances of rule violations in the identifiable aspects of a design, and sending the errors back to a client’s local device. This means less compute resources are used.
[0086] As shown in Figure 13, in some examples of the above methods, the relevant design rules may be determined around image context to ensure relevant design rules are identified. Dependent on the context of a design, different design rules may be relevant. In particular, website designs, product user interfaces, posters, word documents and presentation slides all have differing relevant design rules. Checking for design rule violations without taking the context of the design into account can lead to irrelevant design rule violations being detected or relevant design rules not being checked.
[0087] Given the above, as shown in Figure 13, the method may further comprise storing a rule guide data structure as shown in block 1315. The rule guide data structure comprises a list of classifications for designs and for each classification in the list of classifications, a list of design rules relevant to that classification. As shown in block 1325, the method then comprises determining a classification for the new design wherein the classification of the new design comprises a use of the new design. As shown in block 1335, the method then comprises determining, using the rule guide data structure, relevant design rules from the first set of design rules wherein the relevant design rules are design rules relevant to the classification of the new design. The previously mentioned operation of determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules then comprises determining whether any of the identifiable aspects of the new design violate any of the relevant design rules, as shown in block 1345. This provides a way to efficiently determine the relevant design rules to check for rule violations.
[0088] In other words, Figure 13 shows a method for scoping the design rules checked within a design rule violation checker. The method involves loading the design rules that will check for rule violations. The method then involves classifying a design to determine its context(s) e.g., website design, product user interface, poster, word document or presentation slide. After classifying the design, its classification data would be used with a predefined design rule guide data structure to add additional relevant design rules and filter out irrelevant design rules from the loaded design rules list. The design rule guide data structure contains references to various design classifications. For each classification there is a list containing the design rules which are relevant to the classification and a separate list with rules which are not. As with the above methods, the method comprises detecting the identifiable aspects of a design, searching through the design rules and checking for instances of rule violations in the identifiable aspects of a design and sending the errors back to a client’s local device. This means the design rules checked are more likely to be relevant to the context of the design.
[0089] When there are a large number of design rules in the first set of design rules, the time taken to process the design rules can be considerable. Not knowing which errors frequently occur in a design means that the order in which rules are checked may be inefficiently organised. This increases the time taken to perform relevant error checks. In some examples it may thus help to prioritise design rules that are more likely to give useful feedback to a user. One way to do this is to consider the previous actions of the user. As such, the methods mentioned above can further comprise prioritising design rules as shown in Figure 14. In particular, as shown in block 1415 the method can comprise storing, for each user, a list of design rules previously violated by the user and an indication of the number of times the user has violated each design rule in the list of design rules. As shown in block 1425, the method then comprises receiving an indication of which user created the new design. The method continues at block 1435 which defines ordering the design rules in the first set of design rules based on the number of times the user has violated each design rule in the first set of design rules. Finally, as shown in block 1445, the method comprises, when determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules, processing the design rules in order such that the design rule that the user has previously violated the most number of times is processed first. While in the above example the rules are ordered in a user specific fashion, in other examples the sorting can be over a group of users or over all users. In all cases, this sorting can improve the likelihood that the errors checked for will be present in a design.
[0090] Different users have different levels of skills, which makes the process of prioritising which errors to check for difficult. This elongates the amount of time a user must wait before they get relevant rule violation checks run on their design. As a user develops their skill, the likelihood of them repeating the same mistake will change. As such, Figure 14 provides a method for tracking the frequency of occurrence of rule violations for an individual user and adjusting the order in which rule violations are checked for. The method comprises loading pre-existing user rule violation metrics and using the metrics to see which rule violations occur the most in a user’s designs. Rule violation metrics is a data structure containing rule identifiers and frequency of occurrence data. The method also comprises loading a list of design rules and sorting the list of design rules based on the user’s rule violation metrics, so that the most frequently occurring rule violations are at the start of the list. The method then comprises detecting identifiable aspects of a design, searching through the design rules and checking for instances of rule violations in the identifiable aspects of a design, updating the user’s rule violation metrics by incrementing a rule identifier’s occurrence value by the amount of new occurrence, and sending the errors back to a client’s local device. As a result, a user would benefit from the most likely errors appearing being prioritised as less time is dedicated to checking for likely non-existent errors.
[0091] As mentioned above, in other examples the prioritisation of design rules may not be user specific. In particular, not knowing which errors frequently occur in designs means that the order in which rules are checked may be inefficiently organised. This increases the time taken to perform relevant error checks. In these examples a method for prioritising the order in which design rules are checked is provided. The method comprises uploading a design to a remote processing server which contains predefined design rules. The method then comprises using the predefined design rules to check for design rule violations. The method can then comprise loading a remarkability structure wherein a remarkability structure is a data structure containing data about the frequency of occurrence of design rule violations and/or the identifiable aspects of a design. The method then comprises sorting the predefined design rules so that the most frequently occurring design rules within the remarkability structure are run first. As with the above, the methods then comprise searching through the design rules and checking for instances of rule violations, sending the errors back to a client’s local device, and presenting the errors to the user by superimposing a visual representation of the errors on the design. Thus, utilising remarkability data can help prioritise checking for the design rule violations which are most common first. This also improves the likelihood that the errors checked for will be present in a design. [0092] The above-discussed methods can be performed by a server device. However, the user may view the results of the methods on a client device. In addition, it is possible that the rules in the first set of design rules may change. Therefore, it may be helpful to improve the updatability and responsiveness of a design rule violation checker and ensure that the errors presented by it are always up to date. This is because design rules may evolve over time that can lead to historically identified errors no longer being considered errors or to errors being overlooked in previously checked designs. To this end, the method may comprise, at the server: receiving updates to the first set of design rules; based on the updates identifying any design rules from the first set of designs rules that are no longer valid; and sending an indication to the client device which design rules from the first set of design rules are no longer valid. The method may further comprise further comprising, at the client device: providing to the user a visual indication of the identifiable aspects that violate the first set of design rules; receiving from the server an indication of the design rules that are no longer valid; and removing any visual indications that relate to the violation of design rules that are no longer valid.
[0093] In other words, a method for maintaining an up-to-date judgement on a design is provided. The design checker can comprise a “client process” which is a process which could exist in a remote server that communicates with a user’s local device and a “design rule checker process” which is a process which could exist in a remote server which contains the state of my design rules that have been applied to the client’s display. In order to keep the design rules that are displayed on the client updated in real-time, a negotiation is performed between a client process and server design rule checker process, to register each client process. When a design rule checker process is updated on the server, it then sends all registered client processes updates. A client process uses the updates to determine which design rules have been invalidated. The client process will remove any invalidated errors from the design’s list of errors and submit a new request for the updated design rules to be checked. Changes in the client process will be reflected on the user's local device. This means, the visualiser used to view designs, would automatically update to show the user the most up to date state.
[0094] In a second example, shown in Figure 15 the invention relates to a computer-implemented method of evaluating how different identifiable aspects of a new design contribute to the uniqueness of the new design. The concept of identifiable aspects of a design has been described above. The uniqueness of a design is a measure of how different or interesting a viewer of the design would consider the design when compared to other designs. The uniqueness can be within a field of design e.g. within the field of confectionary, cosmetics etc. or can be across fields. Different identifiable aspects have different relative contributions to the uniqueness based on how perceptually important the identifiable aspect is. Therefore, in the second example, a computer- implemented method is provided that determines which identifiable aspects are perceptually important in establishing uniqueness, such that the relative contribution of the identifiable aspects is optimised. This may involve a computer-implemented method which determines which identifiable aspect are perceptually important in establishing uniqueness, such that the measured factors can be combined with different multipliers to ensure that relative contribution of the identifiable aspect is optimised.
[0095] Given the above, the second example comprises a computer-implemented method for evaluating how different identifiable aspects of a new design contribute to a uniqueness of the new design. As shown in block 1515, the method comprises receiving the new design from a user. As shown in block 1525, the method further comprises identifying identifiable aspects of the new design. As shown in block 1535, the method also comprises determining how at least one of the identifiable aspects contribute to the uniqueness of the design.
[0096] The determining how at least one of the identifiable aspects contribute to the uniqueness of the new design may comprise determining a weighting for each identifiable aspect wherein the weighting for each identifiable aspect corresponds to a degree to which the respective identifiable aspect contributes to uniqueness of the new design. The weightings can be determined based on at least one of a size of the identifiable aspect relative to a size of the new design; a size of any design rule violation associated with the identifiable aspect divided by a size of the new design; a degree to which the identifiable aspect violates a design rule; a percentage of designs from the set of previous designs that have an instance of the identifiable aspect; and a human noticeability of an identifiable aspect. The human noticeability of an identifiable aspect determines the degree to which a design rule associated with the identifiable aspect must be violated before it is considered significant.
[0097] To enable uniqueness to be determined from an indication of how each identifiable aspect contributes to uniqueness, further information may be stored. To this end, the method may also comprise storing information about a set of previous designs wherein the information comprises an identification of identifiable aspects in the set of previous designs and, for each identified identifiable aspect, data indicating a number of occurrences of that identifiable aspect in the set of previous designs. This information can be generated through an iterative process which involves receiving a new design from a user; calculating the remarkability score for the new design; and updating the data indicating a number of occurrences of each identifiable aspect in the set of previous designs based on the identifiable aspects in the new design. When this information is stored, a uniqueness score can be determined for either all, some, or even just one of the identifiable aspects wherein the uniqueness score for each identifiable aspects of interest is a function of a number of previous designs which have at least one instance of an identifiable aspect of a design as a proportion of the number of previous designs. When a uniqueness score for an identifiable aspect is determined, this uniqueness score can be presented or otherwise returned to the user.
[0098] As well as determining uniqueness for an identifiable aspect, it may be useful to determine the uniqueness of a design as a whole. This process uses the weightings mentioned above. A computer-implemented method for calculating the uniqueness of a design as a whole comprises storing information about a set of previous designs wherein the information comprises an identification of identifiable aspects in the set of previous designs and, for each identified identifiable aspect, data indicating a number of occurrences of that identifiable aspect in the set of previous designs. This information can be determined as described above. The method then comprises calculating a uniqueness score for the new design by calculating the uniqueness score as a function of the weighted sum or median of the uniqueness scores of the identifiable aspects within the new design. The uniqueness score of an identifiable aspect being the number of previous designs which have at least one instance of an identifiable aspect of a design as a proportion of the number of previous designs wherein a degree to which each identifiable aspect contributes to the uniqueness score is determined using the weighting for each identifiable aspect. Once the uniqueness score has been calculated it can be provided to the user. In some examples, the method may also involve tracking the uniqueness score of the new design over time or across design genres as described in more detail with respect to the third example of the invention below.
[0099] In some examples, the uniqueness determinations above may be used in conjunction with the first example of the invention. As such, the methods may further comprise storing a first set of design rules, the first set of design rules defining limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden; and determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules. The skilled person would then understand that other examples with respect to the first invention may be used in combination with the uniqueness system by processing the design rules and design rule violations determined as part of the uniqueness system in accordance with the methods described with respect to the first invention.
[00100] Designers want their design to use a style that is coming into fashion (e.g. "I want this to look like the next generation of computers”), or is characteristic of a genre (e.g. I want this to look like a chocolate advertisement"/ "like a modern book for children"). Thus, in a third example, the invention relates to a computer-implemented method of categorizing a design. This can enable a user or designer to determine how their design corresponds to other designs and to determine a design genre or timeframe for their design. A design genre can be a use of the design e.g., a website, a word document, a poster etc. or a category or subject for the design e.g., confectionary, cosmetics, toiletries, pet food, food etc. A timeframe can represent a period of time in which previous designs were used or in which the current design will be used. The timeframe could represent a period of days, weeks, months etc., dependent upon how fast design trends for a design genre are changing. The methods described with respect to the third example can also be used by a designer to assess whether their design fits in with other designs for an intended audience. In particular, this enables a designer to see how their design fits with global trends in their target design genre.
[00101] Given the above, as shown in Figure 16, a computer-implemented method of categorizing a design is provided. As shown in block 1645 the method comprises storing design information. The design information comprising at least one of either an identification of one or more genres and an indication of identifiable aspects of a design associated with each of the one or more genres; or an identification of one or more timeframes and an indication of identifiable aspects of a design associated with each of the one or more timeframes. The method then comprises receiving a new design from a user. As shown in block 1615, the method comprises identifying identifiable aspects in the new design. The idea of identifiable aspects has been discussed above with respect to the first example of the invention. As shown in block 1635, the method then comprises comparing the identifiable aspects of the new design with the identifiable aspects associated with the one or more genres and/or timeframes to identify the genre and/or timeframe that has the most identifiable aspects in common with the new design. As shown in block 1665, the method then comprises at least one of outputting an indication of a design genre for the new design wherein the design genre is the genre that has the most identifiable aspects in common with the new design; or outputting an indication of a timeframe for the new design wherein the timeframe is the timeframe that has the most identifiable aspects in common with the new design. In some examples, the returned indication of genre is accompanied with an example design which best exemplifies the genre. The example design could be sourced by searching for publicly displayable images (e.g. an image library or web search).
[00102] This information may then be used by the user. This can involve for example, receiving an indication from the user that the new design should not conform to the design genre or timeframe; and in response to receiving the indication from the user, outputting to the user an indication of the identifiable aspects that occur in both the new design and the design genre or timeframe. Alternatively, this can involve receiving from the user an indication of a target genre or timeframe for the new design; comparing the identifiable aspects of the new design with the identifiable aspects associated with the target genre or timeframe stored in the information; and providing an indication to the user which identifiable aspects of the new design should be modified to make the identifiable aspects of the new design more closely conform to the identifiable aspects of the target genre or timeframe. In either case, the user may provide the indication of the desired or undesired genre using a URI (universal resource identifier), by email, by a chat client, or by any other suitable means. Additionally, an embodiment can be considered wherein a user provides a new design and a target genre/ timeframe. The difference between the new design and the target genre/ timeframe is computed and indicated to the user. Furthermore, a metric or score could be provided to indicate the degree of conformity of a new design relative a genre/ timeframe [00103] As shown in Figure 16, when design genre is being considered, the design genre may change over time and thus reflect trends. Thus, as shown in block 1655, the genre information further comprises information identifying how the identifiable aspects associated with each genre change over time. In such a case, the method further comprises: comparing the identifiable aspects of the new design with the identifiable aspects of the design genre over time; and, as shown in block 1675, providing, to the user, an indication of a time at which the new design and the design genre had the most identifiable aspects in common. In another example, when the design genre changes over time, the method may further comprise: receiving from a user one or more target genres; comparing the identifiable aspects of the new design with the identifiable aspects of the one or more target genres over time; and providing, to the user, an indication of how many identifiable aspects the new design has in common with the one or more target genres over time. [00104] In some examples, the computer-implemented method may further comprise generation of the design information. When the design information is related to design genres, this can involve storing information about a set of previous designs. The information comprises: metadata or other information indicating a genre for each design in the set of previous designs; and an identification of identifiable aspects that occur in each design in the set of previous designs. The method then comprises grouping the designs in the previous set of designs by genre such that designs from the previous set of designs that have a same genre are placed in the same group; for each group of designs, identifying the identifiable aspects that occur most frequently in the designs in the group; and storing information linking the design genre to the identifiable aspects that occur most frequently in the designs in the group. When the design information is related to timeframes, this can involve storing information about a set of previous designs. The information comprises: metadata or other information indicating a timeframe for each design in the set of previous designs; and an identification of identifiable aspects that occur in each design in the set of previous designs. The method further comprises grouping the designs in the previous set of designs by timeframe such that designs from the previous set of designs that have a same timeframe are placed in the same group; for each group of designs, identifying the identifiable aspects that occur most frequently in the designs in the group; and storing information linking the timeframe to the identifiable aspects that occur most frequently in the designs in the group. In both cases in some examples the information about the set of previous designs is obtained from publicly available images on the web; and/or the metadata or other information is obtained from metadata about each publicly available image; and identifiable aspects are obtained by analysing each publicly available image to identify the identifiable aspects. In other examples, the information can be obtained from previous designs uploaded to be processed by the designer checker/method.
[00105] As such, with respect to the third example of the invention, computer implemented methods are provided that can provide: group discovery e.g., finding which groups of designs exist and which group a design belongs to (e.g. from meta-information about who each design targets)
- this can involve detecting the identifiable aspects of a design; aspect discovery e.g., finding features of the design (e.g. colours, fonts, boldness, borders) and also metadata about the design that are combined to categorise the design; trend capture e.g., what rules and features can be found
- this can involve method for discovering whether a design is trendy and can involve comparing the identifiable aspects of a design to past designs data to discover where the identifiable aspects of a design fall within a trend curve; trend display e.g., displaying the design trend data in a graph and showing where the identifiable aspects of a design sit on the trend curve and in what category
- trend display may also be used to explore trends (e.g. what trends exist) by genre or by proximity to a submitted design; exemplifying e.g, exemplifying examples of a design trend by searching for publicly displayable images (e.g. an image library or web search) search and showing one that rates highly for this trend - previously submitted designs, may not be shown for privacy's sake, or may be available in private checkers when privacy is not an issue (e.g. within a company department). The Exemplification and trend display can be used together to browse and explore design trends, based on an initial design or without an initial design, by using text categories or metadata; and showing differences e.g, the rules that define a genre can be used to illustrate how a submitted design can be modified to conform to that genre, or to avoid conforming to it.
[00106] As a result in accordance with the third example of the invention a designer can recognize global trends in their target design genre, and see how their design can be changed to fit (or avoid conforming to) those trends. A designer may also use this tool to: deliberately modify their design to partially conform to another genre (e.g. a brand of tissues may hint at skincare); see which other genres their design may inadvertently be conforming to (e.g. a brand of pet food should not look like detergent); and see where in fashion/time their design language belongs (e.g. hint at traditional products or at next-generation ones) within a design genre, locally and globally. [00107] As mentioned above, example identifiable aspects include layout considerations, colour considerations, form considerations and text considerations. Example layout identifiable aspects include the coordinates of an element on the page, the area of an element, the aspect ratio of an element, if the element touches the boundary of the image, if the element has children, the amount of directional changes in the element's contour, the horizontal/ vertical alignment points on an element, if the element is part of a row/ column, and the distance between elements. Example colour identifiable aspects include the colour of an element, the background colour of an element, if the element is grayscale, if the element is coloured (e.g. if the element is chromic), the contrast ratio of the element against its background, if the element is a single flat colour, if the element has a gradient of colour, if the element has a grayscale colour gradient, the angle of the element's gradient, Delta E between primary colour and sample colours, and Delta E between background colour and sample colours. Example form identifiable aspects include if the element is an image, if the element is text, if the element is an icon, the pixel size at which the element is pixelated, the extent to which the image has artefacts, if the element is a square, circle, rectangle, triangle, etc., if the corners of the element are round, and if the contour of the element matches set criteria (e.g. top left corner of the element is round). Example text identifiable aspects include text element font size, text element weight/boldness, if the element is part of a row of text, if the element is part of a paragraph, and the shape of the paragraph.
[00108] As with identifiable aspects, design rule violations can relate to layout considerations, colour considerations, form considerations and text considerations. Example layout rule violations include element is misaligned by a fixed number of pixels (e.g., 3px) on one edge (e.g., on its left), element's have slightly different aspect ratios, element is too close to the border of the image, element draws the user's attention (saliency) to the gap, element's contour is not homogeneous with other similar elements, paragraph is horizontally misaligned with other paragraphs, content is congested thus making it unsightly, and elements outside of a crop area (e.g., an A4 crop area). Example colour design rule violations include garish colour combination, forbidden Colours (individual garish colour, e.g. neon colours), too many colours (call to actions in too many colours make it hard for a user to prioritise), inconsistent gradient directions, and bad colour hierarchy (a lot of colours fighting for a user's attention). Example form identifiable aspects include elements are not homogeneous (round forms and square forms do not flow), varying pixel resolutions (differing quality images looks unprofessional), image artefacts (image compression artefacts), and inconsistent contour styling (e.g. rounded corners and square corners). Example text identifiable aspects include illegible text (WCAG aa contrast, WCAG aaa contrast), illegible text when viewed on a projector, too small text, bad visual hierarchy, badly shaped paragraph (paragraphs should taper), orphaned paragraph text (last row of paragraph is a orphaned word or words), wall of text (lowers the likelihood a viewer shall read the contents), high density paragraph (lines are close together, lowers the likelihood a user shall read the contents). [00109] Figure 17 illustrates various components of an exemplary computing-based device 1700 which may be implemented as any form of a computing and/or electronic device, and in which embodiments of the above method may be implemented.
[00110] Computing-based device 1700 comprises one or more processors 1702 which may be microprocessors, controllers or any other suitable type of processors for processing computer executable instructions to control the operation of the device in order to perform the methods described above. In some examples, for example where a system on a chip architecture is used, the processors 1702 may include one or more fixed function blocks (also referred to as accelerators) which implement a part of the method above in hardware (rather than software or firmware). Platform software comprising an operating system 1704 or any other suitable platform software may be provided at the computing-based device to enable application software 1706 to be executed on the device.
[00111] The computer executable instructions may be provided using any computer- readable media that is accessible by computing based device 1700. Computer-readable media may include, for example, computer storage media such as memory 1708 and communications media. Computer storage media, such as memory 1708, includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information for access by a computing device. In contrast, communication media may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave, or other transport mechanism. As defined herein, computer storage media does not include communication media. Although the computer storage media (memory 1708) is shown within the computing-based device 1700 it will be appreciated that the storage may be distributed or located remotely and accessed via a network or other communication link (e.g. using communication interface 1710).
[00112] The computing-based device 1700 also comprises an input/output interface 1712 arranged to output display information to a display 1714 which may be separate from or integral to the computing-based device 1700. The display information may provide a graphical user interface. The input/output interface 1712 is also arranged to receive and process input from one or more devices, such as a user input device 1716 (e.g. a mouse or a keyboard). This user input may be used to receive any of the user inputs described above. In an embodiment the display 1714 may also act as the user input device 1716 if it is a touch sensitive display device. The input/output interface 1712 may also output data to devices other than the display device, e.g. a locally connected printing device (not shown in FIG. 17).
[00113] The term 'computer' is used herein to refer to any device with processing capability such that it can execute instructions. Those skilled in the art will realize that such processing capabilities are incorporated into many different devices and therefore the term 'computer' includes PCs, servers, mobile telephones, personal digital assistants and many other devices.
[00114] Those skilled in the art will realize that storage devices utilized to store program instructions can be distributed across a network. For example, a remote computer may store an example of the process described as software. A local or terminal computer may access the remote computer and download a part or all of the software to run the program. Alternatively, the local computer may download pieces of the software as needed, or execute some software instructions at the local terminal and some at the remote computer (or computer network). Those skilled in the art will also realize that by utilizing conventional techniques known to those skilled in the art that all, or a portion of the software instructions may be carried out by a dedicated circuit, such as a DSP, programmable logic array, or the like.
[00115] Any range or device value given herein may be extended or altered without losing the effect sought, as will be apparent to the skilled person.
[00116] It will be understood that the benefits and advantages described above may relate to one embodiment or may relate to several embodiments. The embodiments are not limited to those that solve any or all of the stated problems or those that have any or all of the stated benefits and advantages.
[00117] Any reference to 'an' item refers to one or more of those items. The term 'comprising' is used herein to mean including the method blocks or elements identified, but that such blocks or elements do not comprise an exclusive list and a method or apparatus may contain additional blocks or elements.
[00118] The steps of the methods described herein may be carried out in any suitable order, or simultaneously where appropriate. Additionally, individual blocks may be deleted from any of the methods without departing from the spirit and scope of the subject matter described herein. Aspects of any of the examples described above may be combined with aspects of any of the other examples described to form further examples without losing the effect sought.
[00119] It will be understood that the above description of a preferred embodiment is given by way of example only and that various modifications may be made by those skilled in the art. Although various embodiments have been described above with a certain degree of particularity, or with reference to one or more individual embodiments, those skilled in the art could make numerous alterations to the disclosed embodiments without departing from the spirit or scope of this invention.
[00120] Aspects of the invention are disclosed in the following numbered clauses:
[00121] Clause 1 : A computer-implemented method of detecting design errors in a design, the method comprising: storing a first set of design rules, the first set of design rules defining limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden; receiving a new design from a user; identifying identifiable aspects of the new design; determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules; and if one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, providing to the user details of the identifiable aspects that violate the first set of design rules.
[00122] Clause 2: The method of clausel further comprising: receiving an updated version of the new design from the user; comparing the updated version of the new design and the original version of new design to identify differences between the updated version and the original version; determining identifiable aspects of the differences between the updated version and the original version; determining whether any of the identifiable aspects of the differences violate any of the design rules in the first set of design rules; and if one or more of the identifiable aspects of the differences violate one or more of the design rules in the first set of design rules, providing to the user details of the identifiable aspects that violate the first set of design rules.
[00123] Clause 3: The method of clause 1 or 2 wherein the design is a multi-page design and the method further comprises: performing the method of clause 1 or 2 for the first page of the multi-page design; and for each subsequent page of the design: comparing the pixel values and/or element data to the pixel values and/or element data of the previous pages of the design to identify identical regions; providing, to the user, the details of the identifiable aspects that violate the first set of design rules in identical regions from the previous pages; and for regions that are not identical to a previous page: identifying identifiable aspects on the subsequent page of the new design; determining whether any of the identifiable aspects violate any of the design rules in the first set of design rules; and if one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, providing to the user details of the identifiable aspects that violate the first set of design rules.
[00124] Clause 4: The method of any of clauses 1 to 3 further comprising: storing information about a set of previous designs wherein the information comprises a list of design rules and for each design rule in the list an indication of a number of occurrences of a violation of that design rule in the previous set of designs; and identifying whether any of the one or more identifiable aspects violate one or more design rules comprises processing design rules based on the number of occurrences of violations so that design rules that have more occurrences of a violation are processed before design rules with a lower number of occurrences of a violation.
[00125] Clause 5: The method of any of clauses 1 to 4 further comprising: determining, for each design rule, any measurements or functions that need to be performed on the design to identify the relevant identifiable aspects of the design that need to be analysed to detect a violation of the design rule; grouping the design rules by the measurements or functions that need to be performed on the design such that the design rules in each group have overlapping measurements or functions; and wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules, comprises, for each group of design rules: performing the measurements or functions necessary to identify the identifiable aspects that need to be analysed to detect any violations of design rules in the group; and identifying whether any of the one or more identifiable aspects of the new design violate any of the design rules in the group. [00126] Clause 6: The method of clause 5 wherein determining, for each design rule, any measurements or functions that need to be performed on the new design to identify the relevant identifiable aspects of the design comprises: determining the measurements or functions using a function dependency data structure wherein the function dependency data structure comprises an identifier for each design rule and a data structure indicating whether each measurement or function is a dependency of the design rule identified in the identifier.
[00127] Clause 7: The method of clause 5 or 6 further comprising: sorting the measurements or functions based on a time taken to perform each measurement or function; and processing groups of design rules that depend on measurements or functions that take less time to perform before processing groups of design rules that depend on measurements or functions that take more time to perform.
[00128] Clause 8: The method of any of clauses 1 to 7 further comprising: iteratively repeating the operations of any of clauses 1 to 7 with multiple new designs; for each new design storing data indicating the identifiable aspects identified in the new design and/or the design rule violations found for the new design; and using the stored data to determine a number of occurrences of at least one identifiable aspect and/or at least one design rule violation across multiple designs.
[00129] Clause 9: The method of clause 8 further comprising: receiving a further new design from a user; identifying the identifiable aspects in the further new design; determining a frequency of occurrence of at least one identifiable aspect of the further new design based on the number of occurrences of the at least one identifiable aspect stored in the stored data; and providing the frequency of occurrence information to the user. [00130] Clause 10: The method of clause 8 further comprising: receiving a further new design from a user; identifying the identifiable aspects in the further new design; determining whether any of the identifiable aspects of the further new design violate any of the design rules in the first set of design rules; determining a frequency of occurrence of at least one design rule violation of the further new design based on the number of occurrences of the at least one design rule violation stored in the stored data; and providing the frequency of occurrence information to the user.
[00131] Clause 11 : The method of clause 9 to 10 further comprising: tracking the frequency of occurrence of the at least one identifiable aspect/at least one design rule violation over time or across design genres.
[00132] Clause 12: The method of any of clauses 1 to 11 wherein providing to the user details of the identifiable aspects that violate the design rules comprises: superimposing an indication of a design rule violation on the new design at a position of the design rule violation. [00133] Clause 13 : The method of any of clauses 1 to 12 wherein the first set of design rules further comprises a criticality score for each design rule wherein the criticality score is a measure of a degree to which a violation of the design rule would increase the cognitive burden to the user, the method further comprising: for each identifiable aspect that violates a design rule from the first set of design rules: determining a magnitude score for the design rule violation wherein the magnitude score is computed based on a size of the design rule violation relative to a size of the design; and calculating a priority score for the design rule violation wherein the priority score is a function of a multiplication of the magnitude score for the design rule violation and the criticality score for the design rule violation; and wherein providing to the user details of the identifiable aspects that violate the first set of design rules comprises providing an indication of at least one of the design rule violations wherein the provided indications are visually ranked based on the priority score associated with the design rule violation.
[00134] Clause 14: The method of any of clauses 1 to 13 further comprising: grouping the design rule violations wherein design rule violations are grouped if they occur within a threshold distance of each other on the design; wherein providing to the user details of the identifiable aspects that violate the design rules comprises superimposing an indication of each group of design rule violations on the new design.
[00135] Clause 15: The method of clause 14 further comprising: providing an indication of design rule violations with a priority score above a threshold in addition to providing an indication of each group of design rule violations.
[00136] Clause 16; The method of any previous clause wherein providing to the user details of the identifiable aspects that violate the first set of design rules comprises: providing to the user indications of the design rule violations; and adjusting a number of indications provided based on a zoom level at which the design is being viewed by the user wherein the number of indications is adjusted by only providing indications for design rule violations that have a size below a threshold minimum size and wherein the threshold minimum size is reduced as the zoom level increases.
[00137] Clause 17: The method of any of clauses 1 to 16 further comprising: receiving a second set of design rules, the second set of design rules utilising user preferences for identifiable aspects of a design; determining whether any of the identifiable aspects of the new design violate any of the design rules in the second set of design rules; and if one or more of the identifiable aspects violate one or more of the second set of design rules, providing to the user details of the identifiable aspects that violate the second set of design rules.
[00138] Clause 18: The method of clause 17 wherein each design rule in the first set of design rules and the second set of design rules specifies an identifiable aspect of the design and parameters governing that identifiable aspect of the design, and the method further comprises: comparing the design rules in the first set of design rules and the second set of design rules to confirm that for each design rule in the second set of design rules a set of parameters exist that satisfy both that design rule and all of the design rules in the first set of design rules; and if a design rule exists in the second set of design rules where no parameters can satisfy both that design rule and all of the design rules in the first set of design rules, indicating that design rule to the user.
[00139] Clause 19: The method of clause 17 or 18 wherein each design rule in the first set of design rules and the second set of design rules specifies an identifiable aspect of the design and parameters governing that identifiable aspect of the design, and the method further comprises: comparing the design rules in the first set of design rules and the second set of design rules to identify design rules in the second set of design rules that have a similar design rule in the first set of design rules wherein a design rule in the second set of design rules has a similar design rule in the first set of design rules if the design rule in the second set of design rules relates to the same identifiable aspect and has more than a threshold degree of overlap in parameters with a design rule in the first set of design rules; and if a design rule in the second set of design rules has a similar design rule in the first set of design rules, merging the design rules to form a new design rule in only one of the first or second set of design rules.
[00140] Clause 20: The method of any of clauses 17 to 19 wherein the first set of design rules and the second set of design rules comprise an importance score for each design rule, and the method further comprises: providing the details of the identifiable aspects that violate design rules with a higher importance score before identifiable aspects with a lower importance score.
[00141] Clause 21 : The method of clause 20 further comprising: combining the first set of design rules and the second set of design rules to form a third set of design rules wherein the third set of design rules are ordered by the importance score of each design rule; and wherein: determining whether any of the identifiable aspects violate any of the design rules in the first and second set of design rules comprises determining whether any of the identifiable aspects violate any of the design rules in the third set of design rules.
[00142] Clause 22: The method of any of clauses 1 to 21 further comprising: storing a set of candidate solutions each candidate solution defining a potential fix for a particular violation of a particular design rule; and if one or more of the identifiable aspects violate one or more design rules of the first set of design rules: determining a particular violation of a particular design rule caused by each of the one or more identifiable aspects that violate the one or more design rules of the first set of design rules; identifying one or more potential candidate solutions from the set of candidate solutions for each identifiable aspect that violates the one or more design rules of the first set of design rules wherein the one or more potential candidate solutions define a potential fix for the particular violation of the particular design rule; and providing the potential candidate solutions to the user.
[00143] Clause 23 : The method of clause 22 wherein each candidate solution of the set of candidate solutions is associated with a suggestion type wherein the suggestion type indicates the form of design rule violation being fixed by the candidate solution, and the method further comprises: storing a suggestion order data structure wherein the suggestion order data structure comprises an indication of the order in which suggestion types should be applied; using the suggestion order data structure and the suggestion type of each candidate solution of the set of candidate solutions to order the candidate solutions; and providing the candidate solutions to the user along with an indication of the order in which the candidate solutions should be applied.
[00144] Clause 24: The method of clause 22 or 23 wherein: one or more candidate solution from the set of candidate solutions further comprises a condition indicating identifiable aspects of the design for which the candidate solution is not valid; and identifying one or more potential candidate solutions further comprises excluding from the potential candidate solutions any candidate solutions whose condition indicates it is not valid for the identifiable aspect that resulted in the particular violation of the particular design rule.
[00145] Clause 25: The method of any of clauses 22 to 23 further comprising: extracting local themes from the identifiable aspects of the new design wherein the local themes comprise at least one of colours, colour combinations, dimensions of elements, font weights, spacing and visual patterns used in the new design; adapting the one or more potential candidate solutions based on the local themes so that the candidate solutions more closely match the local themes.
[00146] Clause 26: The method of any of clauses 22 to 25 further comprising: generating a relationship structure between the identifiable aspects of the design wherein generating the relationship structure comprises: storing a set of relationship categories wherein each relationship category in the set of relationship categories defines a link between at least two identifiable aspects of a design; and searching through the identifiable aspects of the new design and identifying any identifiable aspects that are referenced by the relationship categories; and wherein identifying one or more potential candidate solutions further comprises identifying whether each of the one or more candidate solutions results in a breaking of a link between identifiable aspects of the design contained in the relationship structure; and the method further comprises: if one or more potential candidate solution results in a breaking of a link between identifiable aspects of the design providing an indication to the user of the relationship category that would be broken as a result of the potential candidate solution.
[00147] Clause 27: The method of any of clauses 22 to 26 further comprising: determining how each potential candidate solution would change a metric of the new design; and providing the user with a delta wherein the delta represents data which indicates how the metric of the new design would change upon incorporation of the potential candidate solution.
[00148] Clause 28: The method of clause 27 wherein the metric comprises at least one of: a uniqueness of a design; a quality of a design; a proximity of a design to a specific design genre; a colour ratio of a design; a text ratio of a design; and a negative space ration of a design.
[00149] Clause 29: The method of any of clauses 1 to 28 further comprising: receiving from a user a list of features of a graphic editor program that have been used on the new design; and wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises: based on the features of the graphic editor program that have been used identifying one or more design rules from the first set of design rules that relate to identifiable aspects of the new design that result from the features of the graphic editor program; and determining whether the identifiable aspects of the new design violate any of the identified one or more design rules.
[00150] Clause 30: The method of any of clauses 1 to 29 wherein the first set of design rules further comprises exception parameters for one or more of the design rules from the first set of design rules wherein the exception parameters define a specific situation in which the design rule corresponding to the exception parameter does not apply.
[00151] Clause 31 : The method of any of clauses 1 to 30 further comprising: storing a rule guide data structure wherein the rule guide data structure comprises a list of classifications for designs and for each classification in the list of classifications, a list of design rules relevant to that classification; determining a classification for the new design wherein the classification of the new design comprises a use of the new design; determining, using the rule guide data structure, relevant design rules from the first set of design rules wherein the relevant design rules are design rules relevant to the classification of the new design; and wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises determining whether any of the identifiable aspects of the new design violate any of the relevant design rules.
[00152] Clause 32: The method of cany of clauses 1 to 31 further comprising: storing, for each user, a list of design rules previously violated by the user and an indication of the number of times the user has violated each design rule in the list of design rules; receiving an indication of which user created the new design; ordering the design rules in the first set of design rules based on the number of times the user has violated each design rule in the first set of design rules; and wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises processing the design rules in order such that the design rule that the user has previously violated the most number of times is processed first. [00153] Clause 33: The method of any of clauses 1 to 32 wherein the method is performed by a server device and wherein the user views the design on a client device wherein the method further comprises, at the server: receiving updates to the first set of design rules; based on the updates identifying any design rules from the first set of designs rules that are no longer valid; and sending an indication to the client device which design rules from the first set of design rules are no longer valid.
[00154] Clause 34: The method of clause 33 further comprising, at the client device: providing to the user a visual indication of the identifiable aspects that violate the first set of design rules; receiving from the server an indication of the design rules that are no longer valid; and removing any visual indications that relate to the violation of design rules that are no longer valid. [00155] Clause 35: The method of any of clauses 1 to 34 wherein: each design rule in the first set of design rules specifies an identifiable aspect of the design and parameters governing that identifiable aspect of the design, and the method further comprises: receiving a new design rule to be added to the first set of design rules; comparing the new design rule to the design rules in the first set of design rules to confirm that a set of parameters exist which satisfy both the new design rule and all of the design rules in the first set of design rules; and if parameters exist that satisfy both the new design rule and all of the design rules in the first set of design rules, adding the new design rule to the first set of design rules; else if no parameters exist that satisfy both the new design rule and all of the design rules in the first set of design rules, flagging that new design rule to the user.
[00156] Clause 36: The method of any of clauses 1 to 35 wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises: determining whether any of the identifiable aspects of the new design are governed by the any of the design rules in the first set of design rules; and if one or more of the identifiable aspects of the new design are governed by any of the design rules in the first set of design rules, identifying whether any of the one or more identifiable aspects of the new design violate one or more of the design rules in the first set of design rules.
[00157] Clause 37: A computer-implemented method of categorizing a design, the method comprising: storing design information, the design information comprising at least one of: an identification of one or more genres and an indication of identifiable aspects of a design associated with each of the one or more genres; or an identification of one or more timeframes and an indication of identifiable aspects of a design associated with each of the one or more timeframes; receiving a new design from a user; identifying identifiable aspects in the new design; comparing the identifiable aspects of the new design with the identifiable aspects associated with the one or more genres and/or timeframes to identify the genre and/or timeframe that has the most identifiable aspects in common with the new design; and at least one of outputting an indication of a design genre for the new design wherein the design genre is the genre that has the most identifiable aspects in common with the new design; or outputting an indication of a timeframe for the new design wherein the timeframe is the timeframe that has the most identifiable aspects in common with the new design.
[00158] Clause 38: The method of clause 37 further comprising determining the genre information by: storing information about a set of previous designs wherein the information comprises: metadata or other information indicating a genre for each design in the set of previous designs; and an identification of identifiable aspects that occur in each design in the set of previous designs; grouping the designs in the previous set of designs by genre such that designs from the previous set of designs that have a same genre are placed in the same group; for each group of designs, identifying the identifiable aspects that occur most frequently in the designs in the group; and storing information linking the design genre to the identifiable aspects that occur most frequently in the designs in the group.
[00159] Clause 39: The method of clause 37 further comprising determining the timeframe information by: storing information about a set of previous designs wherein the information comprises: metadata or other information indicating a timeframe for each design in the set of previous designs; and an identification of identifiable aspects that occur in each design in the set of previous designs; grouping the designs in the previous set of designs by timeframe such that designs from the previous set of designs that have a same timeframe are placed in the same group; for each group of designs, identifying the identifiable aspects that occur most frequently in the designs in the group; and storing information linking the timeframe to the identifiable aspects that occur most frequently in the designs in the group. [00160] Clause 40: The method of clause 38 or 39 wherein: the information about the set of previous designs is obtained from publicly available images on the web; and/or the metadata or other information is obtained from metadata about each publicly available image; and identifiable aspects are obtained by analysing each publicly available image to identify the identifiable aspects. [00161] Clause 41 : The method of any of clauses 37 to 40 further comprising: receiving an indication from the user that the new design should not conform to the design genre or timeframe; and in response to receiving the indication from the user, outputting to the user an indication of the identifiable aspects that occur in both the new design and the design genre or timeframe.
[00162] Clause 42: The method of clauses 37 to 41 further comprising: receiving from the user an indication of a target genre or timeframe for the new design; comparing the identifiable aspects of the new design with the identifiable aspects associated with the target genre or timeframe stored in the information; and providing an indication to the user which identifiable aspects of the new design should be modified to make the identifiable aspects of the new design more closely conform to the identifiable aspects of the target genre or timeframe.
[00163] Clause 43: The method of clauses 37 to 42 wherein: the genre information further comprises information identifying how the identifiable aspects associated with each genre change over time; and the method further comprises: comparing the identifiable aspects of the new design with the identifiable aspects of the design genre over time; and providing, to the user, an indication of a time at which the new design and the design genre had the most identifiable aspects in common.
[00164] Clause 44: The method of clauses 37 to 43 wherein: the genre information further comprises information identifying how the identifiable aspects associated with each genre change over time; and the method further comprises: receiving from a user one or more target genres; comparing the identifiable aspects of the new design with the identifiable aspects of the one or more target genres over time; and providing, to the user, an indication of how many identifiable aspects the new design has in common with the one or more target genres over time.
[00165] Clause 45: A computer-implemented method for evaluating how different identifiable aspects of a new design contribute to a uniqueness of the new design, the method comprising: receiving the new design from a user; identifying identifiable aspects of the new design; and determining how at least one of the identifiable aspects contribute to the uniqueness of the design.
[00166] Clause 46: The computer-implemented method of clause 45, further comprising: storing a first set of design rules, the first set of design rules defining limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden; and determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules.
[00167] Clause 47: The computer-implemented method of clause 45 or 46 further comprising: storing information about a set of previous designs wherein the information comprises an identification of identifiable aspects in the set of previous designs and, for each identified identifiable aspect, data indicating a number of occurrences of that identifiable aspect in the set of previous designs.
[00168] Clause 48: The computer-implemented method of clause 47, further comprising: generating the information about the set of previous designs by: receiving a new design from a user; calculating the remarkability score for the new design; and updating the data indicating a number of occurrences of each identifiable aspect in the set of previous designs based on the identifiable aspects in the new design.
[00169] Clause 49: The computer-implemented method of clause 47 or 48 further comprising: calculating a uniqueness score for at least one identifiable aspect of the new design wherein calculating the uniqueness score comprises calculating the uniqueness score as a function of a number of previous designs which have at least one instance of the at least one identifiable aspect as a proportion of the number of previous designs; and providing the uniqueness score to the user.
[00170] Clause 50: The computer-implemented method of any of clauses 45 to 49 wherein determining how each of the identifiable aspects contribute to the uniqueness of the new design comprises: determining a weighting for each identifiable aspect wherein the weighting for each identifiable aspect corresponds to a degree to which the respective identifiable aspect contributes to uniqueness of the new design.
[00171] Clause 51 : The computer-implemented method of clause 50 wherein the weightings are determined based on at least one of: a size of the identifiable aspect relative to a size of the new design; a size of any design rule violation associated with the identifiable aspect divided by a size of the new design; a degree to which the identifiable aspect violates a design rule; a percentage of designs from the set of previous designs that have an instance of the identifiable aspect; and a human noticeability of an identifiable aspect.
[00172] Clause 52: The computer-implemented method of clause 51, wherein: the human noticeability of an identifiable aspect determines a degree to which a design rule associated with the identifiable aspect must be violated before it is considered significant.
[00173] Clause 53: The computer-implemented method of any of clauses 50 to 52 further comprising: storing information about a set of previous designs wherein the information comprises an identification of identifiable aspects in the set of previous designs and, for each identified identifiable aspect, data indicating a number of occurrences of that identifiable aspect in the set of previous designs; calculating a uniqueness score for the new design by calculating the uniqueness score as a function of a weighted sum or median of uniqueness scores of the identifiable aspects within the new design wherein the uniqueness score of an identifiable aspect is a number of previous designs which have at least one instance of the identifiable aspect as a proportion of a number of previous designs wherein a degree to which each identifiable aspect contributes to the uniqueness score is determined using the weighting for each identifiable aspect; and providing the uniqueness score to the user.
[00174] Clause 54: The method of clause 53 further comprising: tracking the uniqueness score of the new design over time or across design genres.
[00175] Clause 55: One or more device-readable media with device-executable instructions that, when executed by a computing system, direct the computing system to perform for performing operations comprising the methods of any of clauses 1 to 54.
[00176] Clause 56: A computerized system comprising: one or more processors; and computer storage memory having computer-executable instructions stored thereon which, when executed by the one or more processors, implement a method in accordance with any of clauses 1 to 54.
[00177] Clause 57: An apparatus comprising: at least one processor; a memory storing instructions that, when executed by the at least one processor, perform a method in accordance with any of clauses 1 to 54.

Claims

1. A computer-implemented method of detecting design errors in a design, the method comprising: storing a first set of design rules, the first set of design rules defining limitations on identifiable aspects of a design that ensure the design can be viewed by a user without undue cognitive burden; receiving a new design from a user; identifying identifiable aspects of the new design; determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules; and if one or more of the identifiable aspects violate one or more of the design rules in the first set of design rules, providing to the user details of the identifiable aspects that violate the first set of design rules.
2. The method of any of claim 1 further comprising: iteratively repeating the operations of any of claim 1 with multiple new designs; for each new design storing data indicating the identifiable aspects identified in the new design; using the stored data to determine a number of occurrences of at least one identifiable aspect; receiving a further new design from a user; identifying the identifiable aspects in the further new design; determining a frequency of occurrence of at least one identifiable aspect of the further new design based on the number of occurrences of the at least one identifiable aspect stored in the stored data; providing the frequency of occurrence information to the user; and tracking the frequency of occurrence of the at least one identifiable aspect over time or across design genres.
3. The method of any of claim 1 further comprising: iteratively repeating the operations of any of claim 1 with multiple new designs; for each new design storing data indicating the design rule violations found for the new design;
48 using the stored data to determine a number of occurrences of at least one design rule violation across multiple designs; receiving a further new design from a user; identifying the identifiable aspects in the further new design determining whether any of the identifiable aspects of the further new design violate any of the design rules in the first set of design rules; determining a frequency of occurrence of at least one design rule violation of the further new design based on the number of occurrences of the at least one design rule violation stored in the stored data; providing the frequency of occurrence information to the user; and tracking the frequency of occurrence of the at least one design rule violation over time or across design genres.
4. The method of any of claims 1 to 3 further comprising: storing a set of candidate solutions each candidate solution defining a potential fix for a particular violation of a particular design rule; and if one or more of the identifiable aspects violate one or more design rules of the first set of design rules: determining a particular violation of a particular design rule caused by each of the one or more identifiable aspects that violate the one or more design rules of the first set of design rules; identifying one or more potential candidate solutions from the set of candidate solutions for each identifiable aspect that violates the one or more design rules of the first set of design rules wherein the one or more potential candidate solutions define a potential fix for the particular violation of the particular design rule; and providing the potential candidate solutions to the user.
5. The method of claim 4 wherein each candidate solution of the set of candidate solutions is associated with a suggestion type wherein the suggestion type indicates the form of design rule violation being fixed by the candidate solution, and the method further comprises: storing a suggestion order data structure wherein the suggestion order data structure comprises an indication of the order in which suggestion types should be applied; using the suggestion order data structure and the suggestion type of each candidate solution of the set of candidate solutions to order the candidate solutions; and
49 providing the candidate solutions to the user along with an indication of the order in which the candidate solutions should be applied.
6. The method of claim 4 or 5 wherein: one or more candidate solutions from the set of candidate solutions further comprises a condition indicating identifiable aspects of the design for which the candidate solution is not valid; and identifying one or more potential candidate solutions further comprises excluding from the potential candidate solutions any candidate solution whose condition indicates it is not valid for the identifiable aspect that resulted in the particular violation of the particular design rule.
7. The method of any of claims 4 to 6 further comprising: determining how each potential candidate solution would change a metric of the new design, wherein the metric comprises at least one of: a uniqueness of a design; a quality of a design; a proximity of a design to a specific design genre; a colour ratio of a design; a text ratio of a design; and a negative space ration of a design; and the method further comprises: providing the user with a delta wherein the delta represents data which indicates how the metric of the new design would change upon incorporation of the potential candidate solution.
8. The method of any of claims 4 to 7 further comprising: generating a relationship structure between the identifiable aspects of the design wherein generating the relationship structure comprises: storing a set of relationship categories wherein each relationship category in the set of relationship categories defines a link between at least two identifiable aspects of a design; and searching through the identifiable aspects of the new design and identifying any identifiable aspects that are referenced by the relationship categories; and wherein identifying one or more potential candidate solutions further comprises identifying whether each of the one or more candidate solutions results in a breaking of a link between identifiable aspects of the design contained in the relationship structure; and the method further comprises:
50 if one or more potential candidate solution results in a breaking of a link between identifiable aspects of the design providing an indication to the user of the relationship category that would be broken as a result of the potential candidate solution.
9. The method of any of claims 1 to 8 wherein the first set of design rules further comprises a criticality score for each design rule wherein the criticality score is a measure of a degree to which a violation of the design rule would increase the cognitive burden to the user, the method further comprising: for each identifiable aspect that violates a design rule from the first set of design rules: determining a magnitude score for the design rule violation wherein the magnitude score is computed based on a size of the design rule violation relative to a size of the design; and calculating a priority score for the design rule violation wherein the priority score is a function of a multiplication of the magnitude score for the design rule violation and the criticality score for the design rule violation; and wherein providing to the user details of the identifiable aspects that violate the first set of design rules comprises providing an indication of at least one of the design rule violations wherein the provided indications are visually ranked based on the priority score associated with the design rule violation.
10. The method of any of claims 1 to 9 wherein the first set of design rules further comprises exception parameters for one or more of the design rules from the first set of design rules wherein the exception parameters define a specific situation in which the design rule corresponding to the exception parameter does not apply.
11. The method of any of claims 1 to 10 further comprising: iteratively repeating the operations of any of claims 1 to 10 with multiple new designs; for each new design storing data indicating the identifiable aspects identified in the new design and/or the design rule violations found for the new design; and using the stored data to determine a number of occurrences of at least one identifiable aspect and/or at least one design rule violation across multiple designs.
12. The method of claim 11 further comprising: receiving a further new design from a user; identifying the identifiable aspects in the further new design;
51 determining a frequency of occurrence of at least one identifiable aspect of the further new design based on the number of occurrences of the at least one identifiable aspect stored in the stored data; and providing the frequency of occurrence information to the user.
13. The method of claim 11 further comprising: receiving a further new design from a user; identifying the identifiable aspects in the further new design; determining whether any of the identifiable aspects of the further new design violate any of the design rules in the first set of design rules; determining a frequency of occurrence of at least one design rule violation of the further new design based on the number of occurrences of the at least one design rule violation stored in the stored data; and providing the frequency of occurrence information to the user.
14. The method of any of claims 1 to 13 further comprising: determining, for each design rule, any measurements or functions that need to be performed on the design to identify the relevant identifiable aspects of the design that need to be analysed to detect a violation of the design rule; grouping the design rules by the measurements or functions that need to be performed on the design such that the design rules in each group have overlapping measurements or functions; and wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules, comprises, for each group of design rules: performing the measurements or functions necessary to identify the identifiable aspects that need to be analysed to detect any violations of design rules in the group; and identifying whether any of the one or more identifiable aspects of the new design violate any of the design rules in the group.
15. The method of claim 14 wherein determining, for each design rule, any measurements or functions that need to be performed on the new design to identify the relevant identifiable aspects of the design comprises: determining the measurements or functions using a function dependency data structure wherein the function dependency data structure comprises an identifier for each design rule and a data structure indicating whether each measurement or function is a dependency of the design rule identified in the identifier.
16. The method of claim 14 or 15 further comprising: sorting the measurements or functions based on a time taken to perform each measurement or function; and processing groups of design rules that depend on measurements or functions that take less time to perform before processing groups of design rules that depend on measurements or functions that take more time to perform.
17. The method of any of claims 1 to 16 wherein each design rule in the first set of design rules specifies an identifiable aspect of the design and parameters governing that identifiable aspect of the design, and the method further comprising: receiving a second set of design rules, the second set of design rules utilising user preferences for identifiable aspects of a design and wherein each design rule in the second set of design rules specifies an identifiable aspect of the design and parameters governing that identifiable aspect of the design; comparing the design rules in the first set of design rules and the second set of design rules to confirm that for each design rule in the second set of design rules a set of parameters exist that satisfy both that design rule and all of the design rules in the first set of design rules; if a design rule exists in the second set of design rules where no parameters can satisfy both that design rule and all of the design rules in the first set of design rules, indicating that design rule to the user; determining whether any of the identifiable aspects of the new design violate any of the design rules in the second set of design rules; if one or more of the identifiable aspects violate one or more of the second set of design rules, providing to the user details of the identifiable aspects that violate the second set of design rules.
18. The method of claim 17 further comprising: comparing the design rules in the first set of design rules and the second set of design rules to identify design rules in the second set of design rules that have a similar design rule in the first set of design rules wherein a design rule in the second set of design rules has a similar design rule in the first set of design rules if the design rule in the second set of design rules relates to the same identifiable aspect and has more than a threshold degree of overlap in parameters with a design rule in the first set of design rules; and if a design rule in the second set of design rules has a similar design rule in the first set of design rules, merging the design rules to form a new design rule in only one of the first or second set of design rules.
19. The method of any of claims 1 to 18 further comprising: storing a rule guide data structure wherein the rule guide data structure comprises a list of classifications for designs and for each classification in the list of classifications, a list of design rules relevant to that classification; determining a classification for the new design wherein the classification of the new design comprises a use of the new design; determining, using the rule guide data structure, relevant design rules from the first set of design rules wherein the relevant design rules are design rules relevant to the classification of the new design; and wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises determining whether any of the identifiable aspects of the new design violate any of the relevant design rules.
20. The method of any of claims 1 to 19 wherein: each design rule in the first set of design rules specifies an identifiable aspect of the design and parameters governing that identifiable aspect of the design, and the method further comprises: receiving a new design rule to be added to the first set of design rules; comparing the new design rule to the design rules in the first set of design rules to confirm that a set of parameters exist which satisfy both the new design rule and all of the design rules in the first set of design rules; and if parameters exist that satisfy both the new design rule and all of the design rules in the first set of design rules, adding the new design rule to the first set of design rules; else if no parameters exist that satisfy both the new design rule and all of the design rules in the first set of design rules, flagging that new design rule to the user.
21. The method of any of claims 1 to 20 wherein determining whether any of the identifiable aspects of the new design violate any of the design rules in the first set of design rules comprises: determining whether any of the identifiable aspects of the new design are governed by the any of the design rules in the first set of design rules; and
54 if one or more of the identifiable aspects of the new design are governed by any of the design rules in the first set of design rules, identifying whether any of the one or more identifiable aspects of the new design violate one or more of the design rules in the first set of design rules.
55
PCT/EP2022/086000 2021-12-17 2022-12-14 Computer-implemented method for identifying errors Ceased WO2023111111A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB202118408 2021-12-17
GB2118408.0 2021-12-17

Publications (2)

Publication Number Publication Date
WO2023111111A2 true WO2023111111A2 (en) 2023-06-22
WO2023111111A3 WO2023111111A3 (en) 2023-07-27

Family

ID=84799755

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2022/086000 Ceased WO2023111111A2 (en) 2021-12-17 2022-12-14 Computer-implemented method for identifying errors

Country Status (1)

Country Link
WO (1) WO2023111111A2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20250086373A1 (en) * 2023-09-13 2025-03-13 Adobe Inc. Automated inference and evaluation of design relations for elements of a design
CN119863169A (en) * 2025-03-21 2025-04-22 远东幕墙(珠海)有限公司 Intelligent quality detection method for hyperbolic curtain wall parametric modeling design process

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889932A (en) * 1996-05-03 1999-03-30 Barco Graphics N.V. Method of checking graphical data for conformity to graphical design rules
US9459846B2 (en) * 2011-01-31 2016-10-04 Sap Se User interface style guide compliance
AU2015301029A1 (en) * 2014-08-05 2017-02-23 Cimpress Schweiz Gmbh System and method for improving design of user documents

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20250086373A1 (en) * 2023-09-13 2025-03-13 Adobe Inc. Automated inference and evaluation of design relations for elements of a design
CN119863169A (en) * 2025-03-21 2025-04-22 远东幕墙(珠海)有限公司 Intelligent quality detection method for hyperbolic curtain wall parametric modeling design process

Also Published As

Publication number Publication date
WO2023111111A3 (en) 2023-07-27

Similar Documents

Publication Publication Date Title
US12327425B2 (en) Methods, systems, articles of manufacture, and apparatus for decoding purchase data using an image
US20250148443A1 (en) Methods, systems, articles of manufacture, and apparatus for decoding purchase data using an image
US20160140519A1 (en) Aggregating system
US10955993B2 (en) Image processing apparatus, method for processing information, and non-transitory computer readable medium storing program for adding comments to image information
US20110173553A1 (en) Relevance oriented graphical representation of discussion messages
WO2023111111A2 (en) Computer-implemented method for identifying errors
US10853626B2 (en) Custom recommendations application for creating cards
US20170090723A1 (en) Widgets in digital dashboards
CN111243061A (en) A method, device and system for generating a commodity picture
JP6438565B2 (en) Information search method and information search apparatus
US20190130615A1 (en) Priority based automatic placement of labels on charts
CN113806631B (en) Recommendation method, training method, device, equipment and news recommendation system
US11055344B2 (en) Product image evaluation system and method
US11232618B2 (en) Systems and methods for efficient management and modification of images
CN115035129A (en) Goods identification method and device, electronic equipment and storage medium
US20250239064A1 (en) Information processing apparatus, system, information processing method, and non-transitory computer-readable storage medium
US7831907B2 (en) Grouping of information items on a page
CN110825989B (en) Picture display method and device, electronic equipment and readable medium
US11416137B2 (en) Semantic dimensions in a user interface
US12056203B2 (en) Website key pages identification and analysis system
Herr et al. Hierarchy-based projection of high-dimensional labeled data to reduce visual clutter
CN105260432A (en) Network searching result screening method and electronic device
Achuthan et al. MyPlate: A Diet Monitoring and Recommender Application
US20130212181A1 (en) Information-processing device, comment-prompting method, and computer-readable recording medium
CN120873321B (en) Intelligent interaction page optimization method and system combining HTML5 and AI technology

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22835774

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 22835774

Country of ref document: EP

Kind code of ref document: A2