# US 7,609,279 B2 · Data-driven layout engine

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,609,279 B2
- Document ID: US7609279B2
- Status: Granted
- Kind: B2
- Application number: 11/119,723
- Filed: 2005-05-03
- Published: 2005-09-01
- Granted: 2009-10-27
- Earliest claimed: 1994-05-16
- Assignees: Apple Inc.
- Inventors: Joseph Ruff; Robert G. Johnston, Jr.; Robert Ulrich
- Web page: https://patentgrep.com/patent/US7609279B2

## CPC

- G06F 9/451: Execution arrangements for user interfaces
- Y10S 707/99942: Manipulating data structure, e.g. compression, compaction, compilation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

Systems and methods for providing a user with increased flexibility and control over the appearance and behavior of objects on a user interface are described. Sets of objects can be grouped into themes to provide a user with a distinct overall impression of the interface. These themes can be switched dynamically by switching pointers to drawing procedures or switching data being supplied to these procedures. To buffer applications from the switchable nature of graphical user interfaces according to the present invention, colors and patterns used to implement the interface objects are abstracted from the interface by, for example, pattern look-up tables.

## Claims

### Claim 1

A method of drawing objects, in a graphical user interface of a computer system, the method comprising:
receiving a command from an application to draw an object on the user interface, wherein the object comprises a window;
translating the command into a drawing primitive which includes a pointer to data associated with the object, the data being retrievable by a layout engine to enable drawing of a part of the object on the user interface relative to boundaries and a behavior of the part, wherein the behavior is associated with a transition between different states in a state table, and specifies a change exhibited in the part; and
sending the drawing primitive to the layout engine.

### Claim 2 (depends on 1)

The method of claim 1, wherein at least one of the receiving and translating steps is performed by a layer.

### Claim 3 (depends on 1)

The method of claim 1, wherein at least one of the receiving and translating steps is performed by a window definition object.

### Claim 4 (depends on 1)

The method of claim 1, wherein at least one of the receiving and translating steps is performed by a menu definition object, and wherein the object comprises a menu.

### Claim 5 (depends on 1)

The method of claim 1, wherein the data associated with the object comprises a layout resource.

### Claim 6

A method of drawing objects, in a graphical user interface of a computer system, the method comprising:
receiving a command to draw an object, wherein the object comprises a window;
translating the command into a drawing primitive that includes a pointer to a layout resource and the layout resource includes a list of at least one of boundary and part information; and
responsive to the received command, drawing a part of the object relative to boundaries and a behavior of the part, wherein the behavior is associated with a transition between different states in a state table, and specifies a change exhibited in the part.

### Claim 7 (depends on 6)

The method of claim 6, wherein the object further comprises a menu.

### Claim 8 (depends on 6)

The method of claim 6, wherein drawing the object comprises traversing the list.

### Claim 9 (depends on 8)

The method of claim 8, wherein drawing the object comprises traversing the list only once.

### Claim 10 (depends on 6)

The method of claim 6, wherein the layout resource comprises a data structure including a list of parameters comprising at least one selected from the group consisting of:
a first sublist of parameters associated with boundaries of the object; and
a second sublist of parameters associated with parts of the object.

### Claim 11 (depends on 10)

The method of claim 10, wherein the first sublist of parameters comprises at least one selected from the group consisting of:
a data structure having a value that indicates a number of boundaries defined within the layout resource;
at least one boundary data structure defining a boundary associated with the object, the boundary data structure including a start boundary parameter identifying a first previously placed boundary relative to which the boundary is to be placed on the user interface; and
a first set of data structures associated with boundary placement relative to one or more existing boundaries and a second set of data structures associated with boundary limits.

### Claim 12 (depends on 10)

The method of claim 10, wherein the second sublist of parameters comprises at least one selected from the group consisting of:
a data structure having a value that indicates a number of parts defined within the layout resource;
at least one part data structure defining a part associated with the object, the part data structure including at least one of:
an inclusion attribute mask specifying drawing of the part based upon a presence of at least one attribute;
a regionset parameter identifying at least one set to which the part belongs;
a plurality of parameters identifying boundaries within which the part is to be drawn; and
at least one parameter identifying a manner in which the part is to be filled.

### Claim 13

A computer storage medium having a computer program code encoded thereon for controlling a processor to perform a method comprising:
receiving a command from an application to draw an object on the user interface, wherein the object comprises a window;
translating the command into a drawing primitive which includes a pointer to data associated with the object, the data being retrievable by a layout engine to enable drawing of a part of the object on the user interface relative to boundaries and a behavior of the part, wherein the behavior is associated with a transition between different states in a state table, and specifies a chancie exhibited in the part; and
sending the drawing primitive to the layout engine.

### Claim 14 (depends on 13)

The computer storage medium of claim 13, wherein the object further comprises a menu.

### Claim 15 (depends on 13)

The computer storage medium of claim 13, wherein the data associated with the object comprises a layout resource.

### Claim 16

A computer storage medium having a computer program code encoded thereon for controlling a processor to perform a method comprising:
receiving a command to draw an object, wherein the object comprises a window;
translating the command into a drawing primitive that includes a pointer to a layout resource and the layout resource includes a list of at least one of boundary and part information; and
responsive to the received command, drawing a part of the object relative to boundaries and a behavior of the part, wherein the behavior is associated with a transition between different states in a state table, and specifies a change exhibited in the part.

### Claim 17 (depends on 16)

The computer storage medium of claim 16, wherein the object further comprises a menu.

### Claim 18 (depends on 16)

The computer storage medium of claim 16, wherein the computer program code for controlling a processor to perform the operation of drawing the object comprises computer program code for controlling a processor to perform the operation of traversing the list.

### Claim 19 (depends on 18)

The computer storage medium of claim 18, wherein the computer program code for controlling a processor to perform the operation of drawing the object comprises computer program code for controlling a processor to perform the operation of traversing the list only once.

### Claim 20 (depends on 16)

The computer storage medium of claim 16, wherein the layout resource comprises a data structure including a list of parameters comprising at least one selected from the group consisting of:
a first sublist of parameters associated with boundaries of the object; and
a second sublist of parameters associated with parts of the object.

### Claim 21 (depends on 20)

The computer storage medium of claim 20, wherein the first sublist of parameters comprises at least one selected from the group consisting of:
a data structure having a value that indicates a number of boundaries defined within the layout resource;
at least one boundary data structure defining a boundary associated with the object, the boundary data structure including a start boundary parameter identifying a first previously placed boundary relative to which the boundary is to be placed on the user interface; and
a first set of data structures associated with boundary placement relative to one or more existing boundaries and a second set of data structures associated with boundary limits.

### Claim 22 (depends on 20)

The computer storage medium of claim 20, wherein the second sublist of parameters comprises at least one selected from the group consisting of:
a data structure having a value that indicates a number of parts defined within the layout resource;
at least one part data structure defining a part associated with the object, the part data structure including at least one of:
an inclusion attribute mask specifying drawing of the part based upon a presence of at least one attribute;
a regionset parameter identifying at least one set to which the part belongs;
a plurality of parameters identifying boundaries within which the part is to be drawn; and
at least one parameter identifying a manner in which the part is to be filled.

### Claim 23

A system for drawing objects in a graphical user interface, comprising:
a layer, for receiving a command from an application to draw an object on the user interface, wherein the object comprises a window, and for translating the command into a drawing primitive which includes a pointer to data associated with the object, the data being retrievable by a layout engine to enable drawing of a part of the object on the user interface relative to boundaries and a behavior of the part, wherein the behavior is associated with a transition between different states in a state table, and specifies a change exhibited in the part,
a layout engine interface, for sending the drawing primitive to the layout engine.

### Claim 24 (depends on 23)

The system of claim 23, wherein the layer comprises a window definition object.

### Claim 25 (depends on 23)

The system of claim 23, wherein the layer comprises a menu definition object, and wherein the object further comprises a menu.

### Claim 26 (depends on 23)

The system of claim 23, wherein the data associated with the object comprises a layout resource.

### Claim 27

A system for drawing objects in a graphical user interface, comprising:
a layout engine for receiving a command to draw an object and translating the command into a drawing primitive that includes a pointer to a layout resource and the layout resource includes a list of at least one of boundary and part information, wherein the object comprises a window; and
a drawing module, for, responsive to the received command, drawing a part of the object relative to boundaries and a behavior of the part, wherein the behavior is associated with a transition between different states in a state table, and specifies a chancie exhibited in the part.

### Claim 28 (depends on 27)

The system of claim 27, wherein the object further comprises a menu.

### Claim 29 (depends on 27)

The system of claim 27, wherein the drawing module traverses the list.

### Claim 30 (depends on 29)

The system of claim 29, wherein the drawing module traverses the list only once.

### Claim 31 (depends on 27)

The system of claim 27, wherein the layout resource comprises a data structure including a list of parameters comprising at least one selected from the group consisting of:
a first sublist of parameters associated with boundaries of the object; and
a second sublist of parameters associated with parts of the object.

### Claim 32 (depends on 31)

The system of claim 31, wherein the first sublist of parameters comprises at least one selected from the group consisting of:
a data structure having a value that indicates a number of boundaries defined within the layout resource;
at least one boundary data structure defining a boundary associated with the object, the boundary data structure including a start boundary parameter identifying a first previously placed boundary relative to which the boundary is to be placed on the user interface; and
a first set of data structures associated with boundary placement relative to one or more existing boundaries and a second set of data structures associated with boundary limits.

### Claim 33 (depends on 31)

The system of claim 31, wherein the second sublist of parameters comprises at least one selected from the group consisting of:
a data structure having a value that indicates a number of parts defined within the layout resource;
at least one part data structure defining a part associated with the object, the part data structure including at least one of:
an inclusion attribute mask specifying drawing of the part based upon a presence of at least one attribute;
a reglonset parameter identifying at least one set to which the part belongs;
a plurality of parameters identifying boundaries within which the part is to be drawn; and
at least one parameter identifying a manner in which the part is to be filled.
