User-interface design

Information

  • Patent Grant
  • 8130224
  • Patent Number
    8,130,224
  • Date Filed
    Wednesday, April 4, 2007
    17 years ago
  • Date Issued
    Tuesday, March 6, 2012
    12 years ago
Abstract
Graphical user interface objects are specified by a collection of attribute-value pairs, the collection of which comprise a complete description of the object and may be used by a rendering element to create a visual representation of the object. In practice, each of a first portion of attributes may be associated with two or more values—each value (for a given attribute) specifying that attribute's value for a unique resolution. A second portion of attributes are associated with a single value and are, therefore, display resolution independent. Accordingly, the target object may be displayed at any of the specified design display resolutions or accurately displayed at any resolution between the specified design display resolutions.
Description
BACKGROUND

The invention relates generally to graphical user interface design and more particularly to a means for specifying a graphical user interface object in a procedural and largely display resolution independent manner.


Designing an efficient, ergonomic and aesthetically pleasing user interface is an integral stage of most application development projects. The graphical user interface (“GUI”) is what the user sees and interacts with. Accordingly, the GUI must present information and choices to a user in a way that is not only pleasing and natural to the eye but conducive to efficient use of the underlying application. One major concern in the development of modern GUIs is the resolution of the various objects that comprise the GUI. Typically, a designer designs a graphical user interface object (e.g., a pushbutton, scrollbar, or slider) for a specified resolution. As the resolution of the user's display changes, however, display of the originally designed object may become distorted. This is particularly a problem when a graphical object is designed at a first resolution (e.g., 75 or 100 pixels per inch) and the user's display is at a second, higher resolution (e.g., 120 or 150 pixels per inch).


In the past, two general techniques have been used to address the problem associated with displaying objects designed for a first resolution but which are displayed at a second resolution. In the first, an original (low resolution) object is up-sampled to generate a larger image (e.g., through linear or bicubic interpolation). This technique results in blurry edges such that the user interface no longer looks crisp. In the second, an original object is designed for display at a high resolution and is then down-sampled to an unknown target resolution. While useful in some circumstances, it is not possible a priori to know what width to give a line (e.g., an object's edge) at the higher resolution such that when down-sampled it remains crisp. This is particularly true when there are multiple target resolutions. Thus, both up-sampling and down-sampling techniques tend to disturb the designer's specified line width. One of ordinary skill in the art will recognize that line width is a critical factor in GUI design as the width of lines define the edge of graphical objects. If edges appear blurry or ill-defined, the entire GUI design may be compromised.


Thus, it would be beneficial to provide a means to specify the design of a graphical user interface object independent of its display resolution. Such a description may advantageously be used by a rendering module to display the designed object at substantially any resolution.


SUMMARY

In one embodiment, the invention provides a method to represent a graphical user interface object in a procedural, and largely, resolution independent manner. The method includes receiving values for each of a plurality of attributes associated with a graphical user interface object (the attributes specifying display characteristics of the graphical user interface object), associating at least one value for each of the plurality of attributes, and storing the plurality of attributes and their associated values in a file. Each of a first portion of the object's attributes may be associated with a single value—a value that is independent of the object's display resolution. Each of a second portion of the object's attributes may be associated with two or more values—each value (for a given attribute) associated with a distinct display resolution. The collection of attribute-value pairs comprise a complete description of the graphical user interface object and may be used by a rendering module to create a visual representation of the object at any number of resolutions.


In another embodiment, the invention provides a method to render or display a graphical user interface object specified in a procedural manner as described above. The method includes receiving a graphical user interface object recipe file (a file containing attribute-value pairs), identifying the graphical user interface object described by the recipe file, extracting a plurality of values from the file (each value being associated with an attribute for the identified graphical user interface object), and rendering the identified graphical user interface object based on the extracted plurality of values.


Those of ordinary skill in the art will recognize that methods in accordance with the described invention may be embodied in programs, program modules or applications that may be stored in any media that is readable and executable by a computer system.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 shows, in block-diagram format, generation of recipe files in accordance with one embodiment of the invention.



FIG. 2 shows a hierarchical structure for use in a recipe file in accordance with one embodiment of the invention.



FIG. 3 shows, in block-diagram format, use of recipe files in accordance with one embodiment of the invention.



FIG. 4 shows a screen image of a graphical user interface object design application in accordance with one embodiment of the invention.



FIGS. 5A through 5J show screen images of various graphical object layer attributes and values in accordance with one embodiment of the invention.





DETAILED DESCRIPTION

Methods, devices and systems to describe or capture the design of graphical user interface objects in a procedural and, largely resolution independent, manner are described. The following embodiments of the invention, described in terms of graphical user interface object design conforming to the Apple Human Interface Guidelines, are illustrative only and are not to be considered limiting in any respect. (The Apple Human Interface Guidelines are available from Apple Computer, Inc. of Cupertino, Calif.)


It has been determined that a graphical user interface object may be completely described by a collection of resolution-independent attributes. The collection of all attributes for a given object type define that type of object (e.g., pushbuttons). While the attributes used to define an object may vary, in whole or in part, from object-type to object-type, one of ordinary skill in the art will recognize those attributes needed to completely specify a given object. For example, while some attributes may be associated with a number of different graphical interface objects (e.g., those associated with an object's location in a display window), many attributes may change from object to object (e.g., buttons have attributes associated with the “button” metaphor while check-boxes and slider tracks have attributes particular to their visual metaphor). Accordingly, the attributes identified herein are illustrative only and should not be used to limit the claimed methods, devices and systems.


Just as a specific collection of attributes define a specific type of graphical interface object (e.g., pushbuttons), the values associated with each of the specific attributes define a particular implementation or embodiment of the object (e.g., a regular size, deactivated pushbutton). In accordance with the invention, some attribute-values are specified independent of the resolution at which the object is to be displayed while other attribute-values are specified for two or more resolutions. In general, those attributes associated with the physical location or geometry of an object may be associated with a plurality of values—one value for each specified resolution. Other attributes are associated with fixed, resolution independent, values (e.g., visual characteristics such as opacity, color and curvature). By way of example, consider a pushbutton object whose radius (attribute “buttonRadius” is specified for each of five predetermined resolutions (e.g., 100, 120, 125, 133.3 and 150 pixels per inch), but whose outline color (attributes “outlineRed”, “outlineGreen”, and “outlineBlue”) and opacity (attribute “buttonOpacity” are fixed and resolution independent.


Thus, in accordance with the invention the collection of all attribute-values for a specified object completely define its visual characteristics and, as such, may be used to drive the graphical generation of the object (for example, by a rendering engine or operating system module responsible for rendering images). One benefit of object definitions in accordance with the invention is that graphical objects are defined in terms of a collection of resolution independent attributes. Another benefit of object definitions in accordance with the invention is that each attribute may be associated with a plurality of values, thereby permitting the designer to optimize the object's design for each of a specified number of resolutions. Still another benefit of object definitions in accordance with the invention is that if the actual displayed resolution of the graphical object is between two of the resolutions specified by the designer, the rendering engine may interpolate between the two values—a technique that generally provides a significantly improved display over prior art up-sampling or down-sampling techniques.


In accordance with the invention, a graphical user interface object's design is specified by a collection of attribute-value pairs that are retained or stored in a file, hereinafter referred to as a “recipe” file. In one embodiment, the recipe file may be a “flat” file consisting of sequential listing of attribute-value pairs. In another embodiment, the recipe file may be a hierarchically ordered file representing an inverted tree, where the root of the tree identifies the type of graphical object (e.g., a pushbutton, a check-box or a slider track) and the first level below the root identifies categories associated with the object (e.g., size, color and state). In one particular embodiment, hierarchically ordered recipe files are stored as extensible Markup Language (“XML” files. Attributes and their values are then associated with each node. In this way, every aspect of a graphical user interface object may be systematically identified and recorded in the recipe file in a manner that is wholly independent from the method used to physically draw (render) the image on a computer display device.


Methods, devices and systems in accordance with the invention may be described in terms of two phases. In a first phase, recipe files are generated. In a second phase the recipe files are used to generate visual representations of the graphical user interface object for one or more applications at substantially any resolution.


Referring to FIG. 1, phase 1100 is typically performed by designer 105 interacting with GUI design application 110 to generate one or more recipe files 115 for application 120. As noted above, recipe file(s) 115 may be organized in a hierarchical manner. FIG. 2 shows hierarchy 200 that has been found useful in the design of graphical user interface objects in accordance with the invention. As illustrated, root node 205 identifies the object type (e.g., pushbutton). Subordinate to root node 205 are nodes representing the relative size of the displayed object: Regular 210, Small 215 and Mini 220. It will be recognized that the sizes represented by nodes 210, 215 and 220 refer to the relative physical sizes of the displayed object and do not relate to the resolution at which such objects are displayed. Subordinate to the size nodes are “color” nodes, representing the fact that each (sub-) type of object may be associated with similar or separate and distinct color characteristics. Subordinate to the color nodes are states that each version of the object may assume, where a state is defined by the collection of attribute-value pairs associated with that (sub-) type of object. Thus, each node in the tree (root node 205 included) has a set of attribute-value pairs associated with it. In one embodiment, the root is fully populated—it always contains all attribute-value pairs needed to define the object. In this embodiment, each subordinate node only contains attribute-value pairs that serve to override the inherited attribute values of their parent node. For example, “Regular” node 210 may only possess size-based attributes (and their associated values), while Color-A node subordinate to node 210 may only serve to override the object's material map attribute-value (the main color of the object) and also perhaps the outline color attribute values.


Referring to FIG. 3, phase 2300 is typically performed when user 305 interacts with application 120 in such a manner as to require display of the graphical user object designed in accordance with phase 1100. In one embodiment when this occurs, application 120 transmits recipe file 115 to rendering engine 310 which returns bitmap 315 which, ultimately, is presented to user 305 via display unit 320. In another embodiment, application 120 may extract the necessary information (in the form of attribute-value pairs) form recipe file 115 and transmit those to rendering engine 310. In still another embodiment, application 120 may indicate to rendering engine 310 where the recipe file(s) are located. One of ordinary skill will recognize that rendering engine 310 may be a stand-alone component or module directly accessible by applications or, alternatively, may be but one module of a larger graphical processing framework supported by the underlying operating system. One such modular or “framework” approach is described in the commonly owned and co-pending patent application entitled “System for Optimizing Graphics Operations” by John Harper, Ralph Brunner, Peter Graffagnino, and Mark Zimmer, Ser. No. 10/825,694, incorporated herein by reference in its entirety.


Referring to FIG. 4, in one embodiment a GUI designer may use interface object design application 400 to design, for example, a pushbutton object. Illustrative design application 400 includes browser region 405, resolution display region 410, expanded bit display region 415, object shape region 420 and user interface construction region 425.


Browser region 405 permits the selected display of various aspects of an object's design. In particular, region 405 provides a graphical representation of a recipe file's hierarchical structure in an Apple standard “Finder” format: the left-most pane identifies the recipe file's root (which, in turn, identifies the type of object—a pushbutton); the middle pane identifies categories of pushbuttons (e.g., inactive, mini, pressed, pulsed, regular and small). Subsequent panes display subcategories associated with a selected category. For example, disclosure triangles 430 indicate that pushbutton categories mini, pressed, pulsed, regular and small have additional aspects—the details of which are displayed in the right-most (and possibly subsequent) panes when one of these categories is selected.


Resolution display region 410 identifies one or more resolutions for which the object is being designed. As shown, the designer has specified that at least some attribute values for a pushbutton are specified for resolutions of 100, 120, 125, 133.3 and 150 pixels per inch. As noted above, not all attribute values are specified for each of these resolutions, only those that the designer determines are significant to the object's display. Illustrative attribute-value pairs for a pushbutton object and a scrollbar object, including those attributes having multiple values, are shown in Table 1 below. (It will be recognized that the objects shown in region 410 are not actually displayed at the indicated resolution, but are instead “simulations” of how the object would appear at those resolutions.)


Expanded bit display region 415 shows an expanded representation of the selected resolution image. In the illustrated example of FIG. 4, region 415 shows the 8X pixel-zoomed representation of the 100 pixel per inch pushbutton. Region 415 may be used, for example, to visually inspect the quality of the user interface object rendering or to compare the user interface object rendering with another pixel-zoomed rendering displayed in an image-editing application.


Object shape region 420 permits the designer to select, view and specify attribute values associated with a particular shape of the object being designed. For example, in the illustrated embodiment a pushbutton's shape may be any one of the shapes identified by shape buttons 435: Round, Lozenge (“Lozen . . . ”, Round Rectangle (“Round . . . ”), odd (“Scroll bar cap odd end” or custom. Immediately beneath shape buttons 435, area 440 shows specific attributes associated with the selected shape and, through controls such as slider 445, text box 450, radio button 455 or color well 460 permits the designer to change the value associated with those attributes.


User interface construction region 425 serves as the primary interface for viewing and specifying attribute values associated with an object's various visual characteristics or layers. In the embodiment of FIG. 4, for example, a pushbutton may be comprised of Button, Inlay, Outside Shadow, Inside Shadow, Inside Coloring, Outline, Highlight, Figure, Master and Template Match layers. Each layer may be individually selected (noted by a check box alongside the layer's title) and each layer's respective attributes (and means for setting their value) may be individually disclosed through activation of their disclosure triangles (the dark triangle to the immediate left of each layer title's check box), see FIGS. 5A through 5J.


Thus, in accordance with the invention a graphical user interface object may be completely defined by a collection of attribute-value pairs that may be used by a rendering engine (or similar module) to display the object. Further, one or more attributes may have two or more values, wherein each value is associated with a specific display resolution. This latter feature permits a designer to uniquely and specifically optimize a single design for multiple resolutions with the added benefit of providing sufficient information for interpolation (generally performed by the rendering engine) should the actual resolution be different from any of the specified resolutions. By way of example only, Table 1 comprises a listing of attributes and their associated values for a pushbutton object and a scrollbar object.









TABLE 1







Illustrative Attribute-Value Pairs









Attribute
Pushbutton Value
Scrollbar Value





buttonCenterX [1]
48/100, 48/133.333,
48/100, 48.5/120,



47.5/150
48/125, 48.5/133.333,




48.5/150


buttonCenterY [1]
48/100, 48/120, 48.5/125,
48/100, 48.5/120,



48.5/133.333, 48/150
48/125, 48.5/133.333,




48.5/150


buttonCurvature
0.7071
0.7071


buttonMaterialAngle [2]
0
0


buttonMaterialBlur [2]
0
0


buttonMaterialBright [2]
0
0


buttonMaterialChoke [2]
1
1


buttonMaterialContr [2]
0
0


buttonMaterialEdge [2]
0
0


buttonMaterialFlat [2]
0
0


buttonMaterialName [2], [3]
clearmap
aquamaterial


buttonMaterialPull [2]
0
0


buttonMaxX
55
217


buttonMaxY
60
213


buttonMinX
23
185


buttonMinY
36
189


buttonOffsetX
0
0


buttonOffsetY
0
0


buttonOpacity
0.868217
1


buttonPoint1X [1]
43/100, 42/120, 41.5/125,
189



41.5/133.333, 40/150


buttonPoint1Y [1]
48/100, 48/120, 48.5/125,
201



48.5/133.333, 48/150


buttonPoint2X [1]
53/100, 54/120, 54.5/125,
213



54.5/133.333, 55/150


buttonPoint2Y [1]
48/100, 48/120, 48.5/125,
201



48.5/133.333, 48/150


buttonRadius [1]
10.5/100, 13/125,
7.5/100, 9/120,



14/133.333, 15.5/150
9.5/125, 11/150


buttonRoundness
0.5
0.5


buttonType
1
0


figureBlendMode
0
0


figureBlue
0
0


figureFillWithColor
0
0


figureGreen
0
0


figureName [3]
mixed
figure


figureOpacity
1
1


figureRed
0
0


figureSize
0.5
0.5


figureXPosition
0
0


figureYPosition
0
0


highlightMaterialAngle [2]
0
0


highlightMaterialBlur [2]
41.509434
0


highlightMaterialBright [2]
−0.245283
0


highlightMaterialChoke [2]
0.532075
1


highlightMaterialContr [2]
0.433962
0


highlightMaterialEdge [2]
0.481132
0


highlightMaterialFlat [2]
−0.226415
0


highlightMaterialName [2]
glasshighlightmaterial
highlightmaterial


highlightMaterialPull [2]
−0.057/100, −0.038/120,
0



−0.075/125, −0.075/150


highlightOpacity
0.279683
1


inlayMaterialAngle [2]
0
0


inlayMaterialBlur [2]
0
0


inlayMaterialBright [2]
0
0


inlayMaterialChoke [2]
1
1


inlayMaterialContr [2]
0
0


inlayMaterialEdge [2]
0
0


inlayMaterialFlat [2]
0
0


inlayMaterialName [2], [3]
inlaymaterial
inlaymaterial


inlayMaterialPull [2]
0
0


inlayMaxRadius [1]
12.757/100, 15.795/125,
9.133/100, 10.935/120,



17.01/133.333, 18.833/150
11.543/125,




13.365/150


inlayOpacity
1
1


inlayThickness
0.43
0.43


insideColoringBlue
0.386252
0


insideColoringGreen
0.336153
0


insideColoringOpacity
0.1
0.1


insideColoringRed
0.705882
0


insideShadowBlue
0
0


insideShadowBlurRadius [1]
1.5/100, 1.857/125,
1.072/100, 1.286/120,



2/133.333, 2.214/150
1.358/125, 1.572/150


insideShadowGreen
0
0


insideShadowOffsetX
−0
0


insideShadowOffsetY [1]
0.75/100, 0.929/125,
0.536/100, 0.643/120,



1/133.333, 1.107/150
0.679/125, 0.786/150


insideShadowOpacity
0.60686
1


insideShadowRed
0
0


masterOpacity
0.744186
1


oddDirection
0
0


outlineBlue
0.968326
0


outlineFade
1
0


outlineFadeAngle
0
0


outlineFadeWidth [1]
31.78/100, 39.346/125,
1/100, 1.2/120,



42.373/133.333, 46.913/150
1.267/125, 1.467/150


outlineGreen
0.176788
0


outlineMaxRadius [1]
10.5/100, 13/125,
7.5/100, 9/120,



14/133.333, 15.5/150
9.5/125, 11/150


outlineOpacity
0.601583
0.4


outlineRed
0.242527
0


outlineThickness [1]
0.175/100, 0.144/120,
0.267/100, 0.222/120,



0.139/125, 0.129/133.333,
0.211/125,



0.116/150
0.2/133.333, 0.182/150


outsideShadowBlue
0
0


outsideShadowBlurRadius
0.66
1.07175


outsideShadowGreen
0
0


outsideShadowOffsetX
−0
0


outsideShadowOffsetY
1.503958
0


outsideShadowOpacity
0.601583
1


outsideShadowRed
0
0


outsideShadowScale
1
1


roundRectHorizontal
1
1


roundRectPointerDirection
0
0


roundRectPointerShape
0
0


roundRectPointiness
1.570796
1.570796


showButton
1
1


showFigure
1
0


showHighlight
1
1


showInlay
0
0


showInsideColoring
0
0


showInsideShadow
0
0


showOutline
0
0


showOutlineShadow
0
0


templateMatchBottom [1]
7.308/100, 9.048/125,
7.5/100, 9/120,



9.744/133.333, 10.788/150
9.5/125, 11/150


templateMatchChop [1]
1
0


templateMatchHoriz [1]
12.348/100, 15.288/125,
7.5/100, 9/120,



16.464/133.333, 18.228/150
9.5/125, 11/150


templateMatchLeft [1]
6.552/100, 8.112/125,
7.5/100, 9/120,



8.736/133.333, 9.672/150
9.5/125, 11/150


templateMatchRight [1]
6.3/100, 7.8/125,
7.5/100, 9/120,



8.4/133.333, 9.3/150
9.5/125, 11/150


templateMatchTop [1]
3.024/100, 3.744/125,
7.5/100, 9/120,



4.032/133.333, 4.464/150
9.5/125, 11/150


templateMatchVert
0
7.5/100, 9/120,




9.5/125, 11/150


undulationAmount
0
0


undulationBlue
0
0


undulationGreen
0
0


undulationPeriod [1]
22/100, 27/125, 28/133.333,
16



33/150


undulationRed
0
0





[1] The notation W/100, X/125, Y/133.333 and Z/150 indicates a value W should be used for a resolution of 100 pixels per inch, and so forth.


[2] Attributes whose values are set through material maps (i.e., button material map, highlight material map and inlay material map).


[3] Represents a file name. For example, an extension is added (e.g., “.png” for image files or “.pdf” for vector line art files).






In a current embodiment, graphical user interface objects identified in Table 2 may be defined/specified using the attributes (left-hand column) identified in Table 1. It will also be recognized that while many of the attributes above are specified by values in units of pixels, in other embodiments attribute values may be expressed in terms of a relative factor to a predetermined size factor.









TABLE 2





Illustrative Graphical Interface Objects
















Help Button (regular, small, mini)
Back Button (regular, small)


Round Button (regular, small)
Push Button (regular, small, mini)


Square Bevel Button (regular, small, mini)
Rounded Bevel Button (regular, small, mini)


Metal Button (regular, small, mini)
Segment Control (regular, small, mini)


Window Title Bar Controls (regular, small, mini)
Disclosure Button (regular, small, mini)


Arrow Pop-Up Button (regular, small, mini)
Pop-Up Button (regular, small, mini)


Combo Button (regular, small, mini)
Pulldown Button (regular, small, mini)


Check Box (regular, small, mini)
Radio Button (regular, small, mini)


Scroll Bar Track (regular, small)
Scroll Bar Thumb (regular, small)


Scroll Bar Caps (regular, small)
Slider Track (regular, small, mini)


Circular Slider Thumb (regular, small, mini)
Pointed Slider Thumb (north, east, south,



west orientations) (regular, small, mini)


Rectangular Text Field (regular, small, mini)
Round Text Field (regular, small, mini)


Tabs (north, east, south, west orientations)
Determinate Progress Bar (regular, small)


Asynchronous Progress Indicator
iDisk Synch Progress Indicator


Pane Splitter
Drawer


List Box
Metal Window Shaping









To create a graphical user interface object, the body color of the object (for each point on the object) and the anti-aliased visibility mask of the object are needed. The body color of an object may be obtained by using a three-dimensional representation of the object, or by creating a virtual representation of the object that defines the surface normal for each pixel on the object. Once a unit-length surface normal vector is computed at a point p, the x and y coordinate values of this vector may be used to compute the apparent color of the object at point p by looking up a color from the object's relevant material map. If the map is n pixels high and n pixels wide (this is done because a shaded sphere is inscribed in the map), one can address the material map at the two-dimensional location given by:









(




(

x
+
1

)


n

2

,



(

y
+
1

)


n

2


)




EQ
.




1








The color of the material map at this location may be used as the color for the object at point p. To get an accurate result, it is typical for a material map to be much larger (for example, 256×256 pixels or larger) than the graphical user interface object being rendered.


This same technique may be used in conjunction with a material map that possesses alpha (transparency) information. Once a color (with alpha) is looked up from a transparency material map, a highlight may be overlaid onto the object by using the alpha as a coverage fraction for the color from the map. Standard compositing methods may be used to accomplish this overlay operation.


An object's anti-aliased visibility mask may be obtained by computing a field that provides distance from the edge of the object. This field can be evaluated using a procedural description of the object. For example, a lozenge may be defined as the set of points at distance r or less from a finite non-zero-length line segment from point (p1x, p1y) to point (p2x, p2y). The distance d from the aforementioned line segment may be calculated at point (px, py) by a function such as that provided in Table 3 below.









TABLE 3





Illustrative Field (Distance) Calculation for a Lozenge Object

















Let vx, vy, length, wx, wy, and d be floating



point values, then



vx = p1x − p2x



vy = p1y − p2y











length
=




(
vx
)

2

+


(
vy
)

2


















vx
=

vx
length
















vy
=

vy
length












wx = px − p1x



wy = py − p1y



d = |(wx × vy) − (wy × vx)|



 determine distance from line if



((vx × wx) + (vy × wy)) > 0



 that is, if past point p1








d=(wx)2+(wy)2








 use distance from p1



wx = px − p2x



wy = py − p2y



if ((vx × wy) − (vy × wy)) < 0



 that is, if past point p2








d=(wx)2+(wy)2








 use distance from p2










Given the distance function d defined above (see Table 1), an anti-aliased transparency value (mask) for the graphical user interface object may be computed as shown in Table 4. The same distance field may be used to construct the outline of the user interface object.









TABLE 4





Illustrative Transparency Value (Mask) Calculation

















mask = r−d



if (mask > 1.0)mask



= 1.0



if (mask < 0.0)









mask = 0.0










Various changes or modifications in the foregoing description may be made without departing from the concept of the invention. For example, attributes other than, or in addition to, those identified in Table 1 may be used to specify an object. In addition, objects other than, or in addition to, those identified in Table 2 may be specified in accordance with the invention. Further, hierarchical storage means other than an XML file may be used to store an object's procedural specification.


It will be recognized that methods to represent and render a graphical user interface object in accordance with this description may be performed by a programmable control device executing instructions organized into one or more program modules. A programmable control device may be a single computer processor, a special purpose processor (e.g., a digital signal processor, a graphics processing unit or a programmable graphics processing unit), a plurality of processors coupled by a communications link or a custom designed state machine. Custom designed state machines may be embodied in a hardware device such as an integrated circuit including, but not limited to, application specific integrated circuits (“ASICs”) or field programmable gate array (“FPGAs”). Storage devices suitable for tangibly embodying program instructions include, but are not limited to: magnetic disks (fixed, floppy, and removable) and tape; optical media such as CD-ROMs and digital video disks (“DVDs”); and semiconductor memory devices such as Electrically Programmable Read-Only Memory (“EPROM”), Electrically Erasable Programmable Read-Only Memory (“EEPROM”), Programmable Gate Arrays and flash devices.


Accordingly, the preceding descriptions were presented to enable any person skilled in the art to make and use the invention as claimed and were provided in the context of the particular examples discussed above, variations of which will be readily apparent to those skilled in the art. Accordingly, the claims appended hereto are not intended to be limited by the disclosed embodiments, but are to be accorded their widest scope consistent with the principles and features disclosed herein.

Claims
  • 1. A method to display a graphical user interface object, comprising: obtaining, in a run-time environment, a plurality of values associated with a graphical user interface object, each of the values associated with a display characteristic of a graphical user interface object;identifying, at run-time, a first value from the plurality of values as being associated with a first display resolution of a first attribute of the graphical user interface object wherein the first value affects a display characteristic of the first attribute when the graphical user interface object is displayed at the first display resolution;identifying, at run-time, a second value from the plurality of values as being associated with a second display resolution of the first attribute of the graphical user interface object wherein the second value affects a display characteristic of the first attribute when the graphical user interface object is displayed at the second display resolution; andcausing the graphical user interface object to be rendered at the first display resolution by providing the plurality of values except the second value to a rendering engine through one or more application programming interface functions.
  • 2. The method of claim 1, wherein at least one of the obtained plurality of values is associated with a display characteristic of the graphical user interface object that is independent of a display resolution.
  • 3. The method of claim 1, wherein the act of obtaining comprises obtaining the plurality of values from a hierarchically organized file.
  • 4. The method of claim 1, wherein the act of obtaining comprises obtaining the plurality of values from a flat file.
  • 5. The method of claim 1, wherein the graphical user interface object is selected from the group consisting of a pushbutton, a bevel button, a metal button, a disclosure button, a pop-up button, a combo button, a pull-down button, a check box, a radio button, a segmented control, a window title bar, a scroll bar track, a scroll bar thumb, a scrollbar cap, a slider track, a slider thumb, a text field, a progress bar, a progress indicator, a list box, a drawer, and a pane splitter.
  • 6. The method of claim 1, wherein the act of causing is performed by an operating system level module.
  • 7. The method of claim 1, wherein the act of obtaining is performed by an operating system level module.
  • 8. The method of claim 1, wherein the acts of identifying a first value and identifying a second value are performed by an operating system level module.
  • 9. A non-transitory program storage device, readable by a programmable control device, comprising instructions stored thereon for causing the programmable control device to perform a method in accordance with claim 1.
  • 10. A programmable control device configured to: obtain, in a run-time environment, a plurality of values associated with a graphical user interface object, each of the values associated with a display characteristic of a graphical user interface object;identify, at run-time, a first value from the plurality of values as being associated with a first display resolution of a first attribute of the graphical user interface object wherein the second value affects a display characteristic of the first attribute when the graphical user interface object is displayed at the first display resolution;identify, at run-time, a second value from the plurality of values as being associated with a second display resolution of the first attribute of the graphical user interface object wherein the second value affects a display characteristic of the first attribute when the graphical user interface object is displayed at the second display resolution; andcause the graphical user interface object to be rendered at the first display resolution by providing the plurality of values except the second value to a rendering engine through one or more application programming interface functions.
  • 11. A computer system comprising a plurality of programmable control devices communicatively coupled to each other, at least one of the plurality of programmable control devices programmed to perform at least a portion of the method of claim 1 wherein the entire method of claim 1 is performed collectively by the plurality of programmable control devices.
  • 12. A method to display a graphical user interface object, comprising: obtaining, in a run-time environment, a plurality of values associated with a graphical user interface object, each of the values associated with a display characteristic of a graphical user interface object;identifying, at run-time, a first value from the plurality of values as being associated with a first display resolution of a first attribute of the graphical user interface object wherein the first value affects a display characteristic of the first attribute when the graphical user interface object is displayed at the first display resolution;identifying, at run-time, a second value from the plurality of values as being associated with a second display resolution of the first attribute of the graphical user interface object wherein the second value affects a display characteristic of the first attribute when the graphical user interface object is displayed at the second display resolution;determining a third display resolution with no associated value from the plurality of values for the first attribute;determining a third value based on the first and second values associated with the first and second display resolutions; andcausing the graphical user interface object to be rendered at the third display resolution by providing the plurality of values except the first and second values to a rendering engine through one or more application programming interface functions wherein the third value is provided to the rendering engine and the third value affects a display characteristic of the first attribute when the graphical user interface object is displayed at the third display resolution.
  • 13. The method of claim 12, wherein at least one of the obtained plurality of values is associated with a display characteristic of the graphical user interface object that is independent of a display resolution.
  • 14. The method of claim 12, wherein the act of obtaining comprises obtaining the plurality of values from a hierarchically organized file.
  • 15. The method of claim 12, wherein the act of obtaining comprises obtaining the plurality of values from a flat file.
  • 16. The method of claim 12, wherein the graphical user interface object is selected from the group consisting of a pushbutton, a bevel button, a metal button, a disclosure button, a pop-up button, a combo button, a pull-down button, a check box, a radio button, a segmented control, a window title bar, a scroll bar track, a scroll bar thumb, a scrollbar cap, a slider track, a slider thumb, a text field, a progress bar, a progress indicator, a list box, a drawer, and a pane splitter.
  • 17. The method of claim 12, wherein the act of causing is performed by an operating system level module.
  • 18. The method of claim 12, wherein the act of obtaining is performed by an operating system level module.
  • 19. A non-transitory program storage device, readable by a programmable control device, comprising instructions stored thereon for causing the programmable control device to perform a method in accordance with claim 12.
  • 20. A computer system comprising a plurality of programmable control devices communicatively coupled to each other, at least one of the plurality of programmable control devices programmed to perform at least a portion of the method of claim 10 wherein the entire method of claim 12 is performed collectively by the plurality of programmable control devices.
CROSS-REFERENCE TO A RELATED APPLICATION

This is a continuation application which claims priority of U.S. patent application Ser. No. 10/876,298 filed Jun. 24, 2004 and which is hereby incorporated by reference.

US Referenced Citations (77)
Number Name Date Kind
5297250 Leroy et al. Mar 1994 A
5357603 Parker Oct 1994 A
5388201 Hourvitz et al. Feb 1995 A
5471572 Buchner et al. Nov 1995 A
5481665 Okada et al. Jan 1996 A
5490246 Brotsky et al. Feb 1996 A
5537630 Berry et al. Jul 1996 A
5651107 Frank et al. Jul 1997 A
5764229 Bennett Jun 1998 A
5793376 Tanaka et al. Aug 1998 A
5877741 Chee et al. Mar 1999 A
5877762 Young et al. Mar 1999 A
5933148 Oka et al. Aug 1999 A
5949409 Tanaka et al. Sep 1999 A
6006231 Popa Dec 1999 A
6031937 Graffagnino Feb 2000 A
6075543 Akeley Jun 2000 A
6166748 Van Hook et al. Dec 2000 A
6211890 Ohba Apr 2001 B1
6246418 Oka Jun 2001 B1
6272558 Hui et al. Aug 2001 B1
6307574 Ashe et al. Oct 2001 B1
6369823 Ohba Apr 2002 B2
6369830 Brunner Apr 2002 B1
6411301 Parikh et al. Jun 2002 B1
6421058 Parikh et al. Jul 2002 B2
6424348 Parikh Jul 2002 B2
6452600 Parikh et al. Sep 2002 B1
6456290 Parikh et al. Sep 2002 B2
6466218 Parikh et al. Oct 2002 B2
6483524 Petenkine et al. Nov 2002 B1
6489963 Parikh et al. Dec 2002 B2
6526174 Graffagnino Feb 2003 B1
6542160 Abgrall Apr 2003 B1
6571328 Liao et al. May 2003 B2
6577317 Duluk, Jr. et al. Jun 2003 B1
6580430 Hollis et al. Jun 2003 B1
6606103 Hamlet et al. Aug 2003 B1
6609977 Shimizu et al. Aug 2003 B1
6614444 Duluk, Jr. et al. Sep 2003 B1
6618048 Leather Sep 2003 B1
6636214 Leather et al. Oct 2003 B1
6639595 Drebin et al. Oct 2003 B1
6664958 Leather et al. Dec 2003 B1
6664962 Komsthoeft et al. Dec 2003 B1
6697074 Parikh et al. Feb 2004 B2
6707462 Peercy et al. Mar 2004 B1
6717599 Olano Apr 2004 B1
6734864 Abgrall May 2004 B2
6850255 Muschetto Feb 2005 B2
6906720 Emberling et al. Jun 2005 B2
6911984 Sabella Jun 2005 B2
7234111 Chu et al. Jun 2007 B2
7340716 Chansler Mar 2008 B1
20010024195 Hayakawa Sep 2001 A1
20010033295 Phillips Oct 2001 A1
20020067418 Hiroaki Jun 2002 A1
20020093516 Brunner et al. Jul 2002 A1
20020118217 Fujiki Aug 2002 A1
20020140727 Lindholm Oct 2002 A1
20020171682 Frank et al. Nov 2002 A1
20020174181 Wei Nov 2002 A1
20030067489 Candy Wong et al. Apr 2003 A1
20030123739 Graffagnino Jul 2003 A1
20030126293 Bushey Jul 2003 A1
20030146934 Bailey et al. Aug 2003 A1
20030174136 Emberling et al. Sep 2003 A1
20030210268 Kataoka et al. Nov 2003 A1
20040032409 Girard Feb 2004 A1
20040054610 Amstutz et al. Mar 2004 A1
20040189670 Govindan et al. Sep 2004 A1
20040223003 Heirich et al. Nov 2004 A1
20050088447 Hanggie et al. Apr 2005 A1
20050094207 Lo et al. May 2005 A1
20050168471 Paquette Aug 2005 A1
20050187805 English Aug 2005 A1
20050219255 Lin et al. Oct 2005 A1
Foreign Referenced Citations (7)
Number Date Country
548586 Jun 1993 EP
0694879 Jan 1996 EP
1383080 Jan 2004 EP
0972273 Mar 2004 EP
9845815 Oct 1998 WO
0209039 Jan 2002 WO
2004027707 Apr 2004 WO
Related Publications (1)
Number Date Country
20070180391 A1 Aug 2007 US
Continuations (1)
Number Date Country
Parent 10876298 Jun 2004 US
Child 11696619 US