CA2202722A1 - Taxonomy of objects and a system of non-modal property inspectors - Google Patents

Taxonomy of objects and a system of non-modal property inspectors

Info

Publication number
CA2202722A1
CA2202722A1 CA 2202722 CA2202722A CA2202722A1 CA 2202722 A1 CA2202722 A1 CA 2202722A1 CA 2202722 CA2202722 CA 2202722 CA 2202722 A CA2202722 A CA 2202722A CA 2202722 A1 CA2202722 A1 CA 2202722A1
Authority
CA
Canada
Prior art keywords
inspector
attributes
user interface
mode
user
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.)
Abandoned
Application number
CA 2202722
Other languages
French (fr)
Inventor
Nicholas Michaud
Michael C. Sheasby
Luis Talavera
Daniel Desbois
Marc-Andre Decoste
Marc Hebert
A. Michael Mondry
Thomas Krul
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.)
Avid Technology Inc
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Priority to US09/054,479 priority Critical patent/US6317142B1/en
Publication of CA2202722A1 publication Critical patent/CA2202722A1/en
Abandoned legal-status Critical Current

Links

Abstract

A system has a hierarchical organization for modifying and applying tools for manipulating data types. The system has a user interface for displaying the hierarchial organization, an inspector for viewing and modifying an internal structure of the tools and a button for launching each of the inspectors.

Description

CANADA

PATENT APPLICATION

For: TAXONOMY OF OBJECTS AND A SYSTEM OF NON-MODAL
PROPERTY INSPECTORS

Inventors/
Applicants: Marc-Andre Decoste Daniel Desbois Marc Hebert Thomas Krul Nicholas Michaud Michael Mondry Michael Sheasby Luis Talavera Assignee: Microsoft Corporation Gowlings Ref: T8462816US
MicrosoflRef: 30817 CA 02202722 1997-04-1~

~ ~ , TAXONOMY OF OBJECTS AND TOOLS FOR A SYSTEM OF NON-MODAL
PROPERTY INSPECTORS
FIELD OF THE INVENTION
The present invention relates a method of manipulating standardising informationof object types for a plug-in environment and providing a standardised set of tools optimised for the data type of the standardised information.

BACKGROUND OF THE INVENTION
Computer software is routinely used to depict graphic images on a computer display. Graphics software that is meant to run in conjunction with a Windows based operating system must be able to make use of the graphics capabilities of the operating system, i.e. the software must understand about brushes, pens, colors etc. Special graphics processors and higher speed general purpose processors used in conjunction graphics 15 software and large, high resolution monitors have improved the ability to display graphics and text images on a computer screen.

Graphics software packages are commercially available from a number of software vendors that run on various haldw~e configurations. The availability of reduced cost, 20 more powerful processors has allowed paint and 3-D modelling systems to be made available for use on personal computers, and high speed workstations. Typical uses of the software running on this configuration of hardw~e is for video editing and computer animation.

Prior art computer graphics software is commercially available from SOFTIMAGE
of Montreal, Canada. This software includes a paint capability wherein the user can define a brush that will be used in ren(lering images on the computer display. As with most co,l,l,ulel graphics programs, existing graphics computer programs can also display text using a particular style of text where the style includes the font of the text as well as the 30 size, color etc.
In the film, television and multimedia industry, post production is normally carried out using several di~relel.l editing and mixing equipment and facilities, including different computer-based animation and editing systems. Post production usually involves a wide range of processes on a wide range of data types, each of which can be affected or 5 composed of a number of properties. These data types and properties appear to vary greatly between toolsets. For example, audio data can receive audio effects, which deal with time and audio samples. In contrast, a body of text in a titling system can be assigned a font and channel mask, which ignores time and deals with a static image.

Simply describing the divel~ily of data types using a common language is a problem. As a result, prior art post production systems could not deal with such a variety of data types with a consistent user interface (UI). Separate systems and equipment were commonly used to handle the different data types.

Once a language or taxonomy of data types that deals with these various data types has been developed, m~ user interface consistency remains a challenge. The user interface should be consistent for all data and plo~ y types, efficient for expert users, and extensible to handle new data types as the product evolves.

These broad principles have benefits in all sections of an integrated postproduction environment. The specific examples provided herein are from a structured paint application. However, there are many other uses and applications of the present invention.

In certain prior art graphics software applications, such as PAINT, users can pick a 25 brush and use the brush to paint on an image. However, the user interface is not fast enough for most power users. A power user needs to be able to work very quickly and efficiently. The power user requires the ability to quickly select from a broad palette of tools and settings. For instance if a user is ~nim~ting a character, certain paint attributes which recreate objects such as hair, skin etc. will be used repetitively. The user wants tools 30 which complete tasks quickly and efficiently.

CA 02202722 1997-04-1~

When using the prior art graphics software it was not possible to easily save all the properties that combine to define brush strokes or text ren(lçring. In order to produce a stroke or character with a particular or specific look, a paint or titling artist must set up 5 many individual parameters. The user must define a specific brush shape, size, profile, specific color, opacity, tool shape etc. Once a parameter or tool has been changed, prior art software allow the user to retrieve only some of the discrete settings or parameters which made up the original style of the previous image rendering. While some prior art graphics software allows the user to save the brush by itself, or create presets for very 10 specific effects, none have allowed the user to save a preset which contains all the required elements to uniquely define the appearance of each stroke or text element.

SUMMARY OF THE INVENTION
The disadvantages of the prior art may be overcome by providing a system having 15 a hierarchical org~ni7~tion of properties for modifying data of various types.

It is desirable to provide a set of windows called 'inspectors' used to view andmodify the internal structure of each of the tools known to the system, a UI component used to visualize the overall hierarchial or~ni7~tion of properties and launch inspectors, 20 and a mechanism for loading and saving persisted collections of properties, known as "presets".

It is desirable to provide a novel user interface having a launcher for launching the inspector and buttons for viewing and modifying the tools for manipulating data types.
According to one aspect of the invention, there is provided a system having an object having a hierarchical or~ni7~tion of attributes. The object is received by the system and responsively applied the object to a stream of data. Depending on the type of object, the hierarchy of attributes is accumulated into nodes collecting useful groups of 30 parameters, known as property sets. Each property set can be persisted or replaced by any other collection of parameters. A user interface is responsive to user input for displaying the hierarchical org~ni7~tion of the object. A launcher is responsive to user input for launching an inspector. An inspector is a non-modal window that displays settings of a selected attribute of the object and, responsive to user input, allows the settings to be 5 modified.

According to another aspect of the invention, there is provided a user interface.
The user interf~ce has at least one button representing an object having a hierarchical org~ni7~tion of attributes comprising an arrangement of a pl~ol)elly set, the object being 10 part of a specific family, and class. The button is responsive to user input for displaying the hierarchical org~ni7~tion of the object. A launch button is responsive to user input for launching an inspector. An inspector displays a setting of a selected attribute of the object and, responsive to user input, permits the modifying of the settings.

According to another aspect of the invention, there is provided a method for adapting an object for a plug in environment. The method includes the steps of:
org~ni~ing the object into a hierarchical org~ni7~tion of attributes, providing a means for displaying the hierarchical org~ni7~tion of the object, providing a launch means responsive to user input for launching an inspector, providing means for displaying settings of a selected attribute of the object, and providing means responsive to user input for modifying the settings.

The present invention also concerns method and ~p~lus for rendering images on a computer display. Tm~ging properties that can be stored in memory form part of an 25 im~ging tool. The im~ging properties are made up of multiple families and classes that can be stored as a unit or in some instances stored individually. The properties can also be retrieved from memory and modified, used to render images and stored as a newly defined custom property.

CA 02202722 1997-04-1~

In accordance with one aspect of the present invention, an im~gin~ property is created by plo~ g a user to define a plurality of attributes that combine to define the property. When this property is associated with a particular object such as a drawing tool or a text tool, the properties helps defines how the associated brush stroke or text character 5 is rendered or painted on the computer display. As a specific example, one of the properties is the style of the image rendering tool. When a drawing tool to being used, the style is referred to as a paint style and is made up of one set of properties and subcomponents. When text is being defined, the style is referred to as a titling style and includes a different set of properties and subcomponents.
The settings for a plurality of custom or preset styles can be stored within a memory store such as a computer fixed disk drive. Under the control of the user, the stored attributes for a design~ted preset are retrieved from memory in order to replace some or all of the attributes ~ lelllly associated with a graphics rendering object or tool.
15 Subsequent use of the tool is controlled, at least in part, by the attributes of the style preset.

An additional feature of the present invention is an ability to select an object on an image portion of the display screen and display at least some of the attributes that make up the property set of the selected object. If a text body is selected, the attributes are 20 composed at least in part with a titling style; and if a brush stroke is selected, the attributes are composed at least in part by a paint style. The user can then modify the properties of the selected object for use in subsequent im~gin~ on the computer display and also store the attributes of the style preset in memory for subsequent retrieval.

To aid in illtel~ lhlg the style object, the invention includes the ability to display a graphic image of the style structure on a portion of the computer display. The style object is represented on the computer display as a hierarchical structure wherein property sets of the style object are depicted as branches on a tree structure that in turn include subcomponent attributes. Arbitrary branches of the property tree can be saved as a unit, CA 02202722 1997-04-1~

such as a custom style. This allows the branches to be retrieved from memory and grafted onto an existing graphics rendçring tool.

In accordance with a plefclled embodiment of the invention, the style preset or any 5 branch of the property tree is an object in the sense of that term has come to be defined in object oriented progr~mming. The style preset object has both methods and properties associated with it. The methods limit access to the properties of the style preset and define the behaviour of the preset.

Preferred embodiments of the present invention will now be described, by way of example only, with reference to the attached Figures, wherein:
Figure 1 is an overview of a computer system suitable for rendering display images in accordance with the present invention;
Figure 2 is a schematic representation of the Figure 1 computer system;
Figure 3 is a visual representation of a computer display illustrating one display mode for use in presenting images;
Figure 4 is a visual representation of a colll~ulel display illustrating a property inspector;
Figures 5 and 6 are visual representations of a toolbar illustrating icons for modes of operation for launching property inspectors;
Figures 7 and 8 are visual representations of control buttons for Animation Control;
Figures 9, 10 and 1 1 are visual representations of function curve editors and 25 illustrating dirrelclll cropping modes;
Figure 12 is an enlarged graphic depiction of a portion of the computer display of Figure 3 showing a number of push buttons for activating graphic rendering functions on the computer display;

CA 02202722 1997-04-1~

Figures 13A and 13B are schem~tic depictions of alternate hierarchical graphics objects that aid a user in controlling the painting or rendering of images on the colllpuLer display;
Figures 14A-14D are schematic depictions of a sequence of hierarchical graphics 5 objects for controlling the depiction of text on a computer display;
Figure 15 is a depiction of a paint stroke editor for use in defining attributes of a selected stroke;
Figures 16A and 16B are depictions of brush editors for use in defining attributes of a brush;
Figure 17 is a freehand tool editor for use in defining the attributes of a freehand tool for use with the present invention;
Figure 18 is a depiction of a paint style editor for use with the present invention;
Figures l9A-19C are depictions of editors for use in defining masks for use withthe present invention;
Figure 20 is a depiction of a preset browser for use in obtaining paint object attributes from a storage device such as a disk drive of the Figure 1 computer system, Figure 21 is a titling style editor for adjusting a manner in which text is displayed within a viewing area of the coll,~ulel display;
Figure 22 is a schematic illustration of the generalised taxonomy of object 20 according to the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Computer Imaging System A computer graphics im~ging system 10 is schematically depicted in Figures 1 and2. The graphics im~gin~ system 10 includes a computer 11 that has a processor 12, a system bus 14, a static memory 16, a main memory 18, a mass memory 20, an alphanumeric input device 22, an control device 24 for manipulating a cursor, and a display adapter 26 for coupling video control signals to a video display 28 such as a 30 computer monitor. Since the graphics im~gin~ system 10 is particularly suited to high CA 02202722 1997-04-1~

resolution, high speed graphics im~ging the display or monitor 28 is most preferably a high resolution wide screen display.

The processor 12 executes im~ging software described below to allow the system 5 10 to render high quality graphics images on the monitor 28. The processor 12 comprises a suitable processing device such as a microprocessor, for example, and may comprise a plurality of suitable processing devices. The processor 12 executes instructions stored in the static memory 16, main memory 18, and/or mass memory 20.

The static memory 16 may comprise read only memory (ROM) or any other suitable memory device. The static memory 16 may store, for example, a boot program for execution by the processor 12 to initialize the data processing system 10. The main memory 18 may comprise random access memory (RAM) or any other suitable memory device. The mass memory 20 may include a hard disk device, a floppy disk, an optical 15 disk, a flash memory device, a file server device, or any other suitable memory device.
For this detailed description, the term memory comprises a single memory device and any combination of suitable memory devices for the storage of data and instructions.

The system bus 14 provides for the transfer of digital information between the 20 hardware devices of the data processing system 10. The processor 12 also receives data over the system bus 14 that is input by a user through the alphanumeric input device 22 and/or the cursor control device 24. The alphanumeric input device 22 may comprise a keyboard, for example, that comprises alphanumeric keys. The alphanumeric input device 22 may comprise other suitable keys, comprising function keys for example. The cursor 25 control device 24 may comprise a mouse, touch tablet, track-ball, and/or joystick, for example, for controlling the movement of a cursor displayed on the computer display 28.

The Figure 1 data processing system 10 also includes display adapter haldw~e 26 that may be implemented as a circuit that interfaces with the bus 14 for facilitating 30 rendering of images on the colllpllle. display 28. The display adapter hardware 26 may, CA 02202722 1997-04-1~

for example, be implemented with a special graphics processor printed circuit board including dedicated random access memory that helps speed the rendering of high resolution, color images on a viewing screen of the display 28.

The display 28 may comprise a cathode ray tube (CRT) or a liquid crystal display(LCD) particularly suited for displaying graphics on its viewing screen. The invention can be implemented using high speed graphics workstations as well as personal computers having one or more high speed processors.

The graphics im~ging system 10 utilizes specialized graphics software particularly suited to take advantage of the im~ging hardware included in the display system 26, 28 depicted in Figures 1 and 2. The software integrates non-linear editing, compositing, audio mixin~, and graphics design tools which are used to create multimedia presentations.
Source m~t~ri~l for use with such a system can be obtained from a media storage device 15 50 that can include videotape, CD-ROMs, and digitally recorded video disks. The source material can also be in the form of already ~ligiti7~d m~teri~l~ stored on a computer memory 20 such as co~ uler-generated animations, graphic images or video files stored on a large capacity hard or fixed disk storage. To utilize the source images from the media storage 50, the system 10 includes a multi-media interface 30 for converting image data 20 into a form suitable for use by the software executing on the processor 12 and display adapter 26. A representative display produced by the graphics software (Figure 1) presents multiple images 52 of dirrelellt resolutions. A time line control 54 beneath these multiple images allows the user to select from an video clip of many such images.

25 Graphics Imaging Suite Figure 3 illustrates a typical user interface or screen display 110 for use in graphics im~ging by a graphics design suite that forms part of the graphics software. The screen display 110 includes an image viewing area 112, a panel 114 which displays a series of layers that includes a number of sculpted buttons that are actuated by selecting or clicking 30 on the button with the cursor control device 24. The graphics software is preferably CA 02202722 1997-04-1~

executed under a Windows based operating system that includes functions for creating a frame window having a menu bar 116. A taskbar 118 located along the side of the console area 114 allows the user to switch between tasks by activating or selecting icons representing different tasks. The graphic design suite having the user interface depicted in 5 Figure 3 is launched by activating or selecting the graphics icon 118g from this set of icons. Others of the multiple icons cause the software to display other user interface layouts particularly suited for other tasks to perform such as editing, audio mixing, or combining multiple video layers into a combined audiovisual output.

Below the panel 114, a re-used section of the desktop includes an array 120 of icons, called a "control panel". Selecting from among the icons presented in the control panel replaces the contents of the panel above it with some associated set of tools and controls, such as a representation of the layers available in the compositing session.

1 5 Below the viewing area 112 is an area reserved for the property inspectors. A
property inspector is a non-modal window providing a collection of controls for the interactive manipulation of parameters associated with an existing object or the settings of an active tool.

20 Generalised Taxonomy of Properties Referring to Figure 22, a schem~ic of the generalised taxonomy of properties is illustrated. An object is a self-contained collection of data structures and routines that interact with other objects. Every object can be said to support some set of properties. A
set of properties is a collection of parameters which describe that object. Some objects are 25 complex and have multiple property sets, while others are simple enough that they require only one property set.

For example, an image effect object has one property set describing blur amount,affected channels, etc., while a paint stroke has a number of properties, each of which 30 describes a subgroup of properties about the stroke, namely brush, fill effect, edge effect, CA 02202722 1997-04-1~

timing, transformations, etc. Each property contains a set of parameters, namely brush contains width, softness, etc. Properties can also contain more properties; for example, the brush effect used for a paint stroke might be a stack of three effects, each of which has its own properties.

Each object m~int~in~ a prioritised list of its own properties. The default property is the first property in this list. The default property is inspected if the user makes a general request to inspect that object. For example, if the user selects a stroke and picks "properties", the default property is opened. For the stroke, the brush property is the default property. The 10 list of properties can be read off by the desktop in a predictable order, determined by the programmer.

Ambient properties are property sets which always exist and which the user can set prior to applying a tool. Some interactive tools are designed to create object instances which 15 inherit the settings of the ambient plope,lies at the time of creation. For example, the freehand draw tool uses a brush and color property, among others. The user sets these ambient properties before drawings a stroke. The act of drawing creates stroke objects, each of which holds specific brush and color properties which were copied from the ambient settings as they were configured when the object was created.
Multiple interactive tools can share ambient properties. For example, the user can choose to paint in blue. Then, both the freehand and rectangle interactive tools will use this ambient property.

The inspectable property sets are org~ni7e~1 into families and classes. A family is a group of objects which work on the same type of data and share semantic meaning. Objects CA 02202722 1997-04-l~

are grouped into a family because each member of the family is interchangeable and equivalent with others of the family. Examples include the following:
Blur/tint/color correction are members of the image effect family;
Reverb/EQ/Colllplession are members of the audio effect family.
5 Some families contain only one member: Fonts, Brushes, and in 3D, Cameras are families that contain only one type of object and are considered to be degenerate.

A class is a specific type of object within a family. Examples include the following:
Blur is a class of the image effect family.
Tint is a class ofthe image effect family.
Color correction is a class of the image effect family.

Schedule A provides a partial list of families and their respective classes.

15 Family Implementation Each family is uniquely identified by a GUID (Globally Unique Identifier). Families are registered in a registry, preferably a Windows NT registry, so that more families can be added at a later date. Objects can be registered as part of one or more families. Objects can also specify a default or preferred family in the registry.
Each family is associated to a property inspector CLSID. A CLSID is a GUID
representing a specific COM object, from Microsoft Component Object Model. In this manner, given a class of a family, the appropliate property inspector can be created. For classes that are part of multiple families, the family's inspector can be specified. The 25 inspector cannot be selected explicitly because the inspector would not know on which family to focus in case more than one family uses the same inspector.

Property Tree View The property tree view 130 is a visual display of the hierarchical properties of an object. It allows the user to see the internal structure of an object and allow some basic editing of the properties.

The user is f~mili~r with working with file hierarchies. Trees are used in many WINDOWS applications. However, the standard tree provided by WINDOWS does not fully meet the functionality of the hierarchial structure of the present invention.

To allow the property tree view 130 access to the hierarchical org?ni~tion of properties within an object, the objects must expose an interface to enumerate its properties in a hierarchical way. The enumerator enables a user to query for the next property in the list starting with the first one by resetting the enumerator. For each property, the enumerator returns a structure of information including the type, the name, the thumbnail bitmap, the 15 animation state and access to the children, if any.

Using the information resulting from this process, the object hierarchy can be reconstructed and presented to the user on the UI.

The user can interact with the hierarchy by clicking on nodes 133 to invoke an inspector on the part of the hierarchy that has been clicked on. For example, an object exposing blur effect would have a specific node for this effect; and clicking on that node would invoke a blur effect inspector to edit the settings of that effect.

The plopclly tree view reacts to selection changes by exposing the property hierarchy of the ~ lt;lllly selected objects. If there is no selected objects, the state of the ambient parameters used by the current tool is shown instead. When a heterogeneous selection is made, the property tree view will try to find .~imil~rities between the selected objects and show them under a common node. The properties that are not exposed by all the selected objects are shown under different nodes, one for each different type of objects in the heterogeneous selection. If different objects expose the same property with dirrer~.ll values, then the node is shown as ambiguous.

For example, if an object uses filters to draw the edges, different filters could be utilised but both need to be represented as the edge filter effect property. Clicking on an ambiguous node cannot invoke an inspector so a file browser is opened to choose a common preset which will be used to replace the current ambiguous state of the property. Invoking a 10 context menu on a node also allows the user to choose a preset to replace the current values of that property whether ambiguous or not. The menu lists presets found in the last folder used to load or save a preset for that class of objects. The last entry of the contextual menu allow the use to launch the file browser to choose other presets that are not visible in the contextual menu.
Persistence To solve the access to persistence from inspectors in a generic way, the inspector must know in which family context the inspected object is ~ elllly used. Saving is not a problem since the object to persist itself at a location is chosen by the user. The class and family are 20 used as a hint on where first to focus when presenting the storage access.

Loading is relatively more difficult since the choice of persisted objects must be limited to a single family. There are two types of load that are possible: 1 ) load in a persisted preset of the same class as the cul-el-lly inspected object or 2) load an object of a dirrerent 25 class but of the same family to replace the cu~ lly inspected object. For the former, the chosen storage to the inspected object can be de~ign~te~1 For the latter, the owner or container of the inspected object must be queried whether if it can replace the selected object CA 02202722 1997-04-lF7 with a new instance of another object and, if so, create the object from the persisted state. To make sure the replacement can be done, the new object needs to be part of the same family as the family ~ lllly being inspected.

5 Family-based Controls In The Inspector Frame An inspector is a floating window that exposes a set of parameters for the user to manipulate. The inspector can reflect two things: the parameters of a particular object instance and the "ambient" settings for a property set.

For example, a clip inspector reflects a particular clip selected on the timeline. An "ambient" setting for a attribute is something which will be used by an interactive tool to create new objects. As another example, a brush inspector can reflect either the brush that was used to draw the selected stroke, or the brush which will be used by the freehand tool the next time the user draws a new stroke.
Each inspector has a standard set of controls 66 which is independent of the particular family, a set of family specific controls 68 and a key frame control 70.

Since the behavior is uniform for all classes of the same family, the UI control on the 20 inspector frame can rely on the fact that all classes of this family expose the properties they control. For example, all image filters support the Crop Curve property so a Crop Curve UI
control can be found on the inspector used by the Image filters family.

Any given inspector has a current family and class, and points to a specific instance or 25 ambient property. The controls on an inspector's frame are determined by the family being represented, while the contents of the property pages are determine by the class.

CA 02202722 1997-04-lF7 Referring to Figure 4, a property inspector 60 is illustrated. The property inspector 60 has a number of class-specific property pages 62, 64. Property pages are single collections of controls assembled together into a property sheet. Any class of a family has cross-specific tabs on it, i.e. brush shape or blur parameters.
Each property page 62, 64 contains a number of UI controls, representing variables of some type. Numerical values are represented by complex controls, each of which has a numerical value 72 and a representative bar graph 74. Responsive to user input, the values of each can be increased or decreased.
Inspector Recycling How the inspector reacts to selection changes, object deletion, and the launching of new inspectors is determined by its mode.

Referring to Figures 5 and 6, each property inspector has in the respective toolbar a pull down menu having a Recycle icon 78, a Follow icon 80 and a Lock icon 82.

There are three basic modes of operation for an inspector: Recycle, Lock and Follow.

"Recycle" indicates that an inspector's frame can be re-used by the desktop if needed.
The current contents, namely property pages and frame controls, will be replaced as necessary to reflect new information.

"Lock" indicates that the inspector is bound to one particular object instance, ignoring 25 selection changes. The deletion of the inspected object destroys a locked inspector.

"Follow" indicates that an inspector will try to regain its current family and class during selection changes. If the family and class that the inspector is following are not CA 02202722 1997-04-lF7 supported on the new selection, a new family and class will be assigned, starting with the default property of the rate selection and then moving through the list of properties for the new selection if necessary.

Inspectors indicate their mode via a tri-state button in the title bar of the inspector.
Mousing down on the button pops up a list of modes, allowing the user to choose one of the modes.

The basic algorithm for inspectors is as follows:
Never defocus or re-use a locked inspector. If the user requests a new property page, check if there are any recycling inspectors. If there are, adapt the recycling inspector to reflect the new selection. If there are not, open a new recycling inspector to display the properties. If the selection or tool changes, focus all the following and recycling inspectors of the new selection. Following inspectors get priority on reflecting their family in the new selection. If 15 the new selection does not support the family of a recycling or following inspector, choose a new family for that inspector from those properties that the selection does have. If the selection is heterogeneous, following inspectors will reflect their family/class for any of the selechon that supports them. If none of the selected objects support the family/class of a following inspector, choose a new family for that inspector from those properties that the 20 selection does have. If the user deselects everything, all recycling inspectors are closed. If the current interactive tool supports ambient properties and if one of the ambient properties match those of a following inspector, focus the following inspector(s) on those ambient properties. Otherwise, defocus the following inspectors. If the user deletes a selected object, all recycling inspectors are closed.

CA 02202722 1997-04-1~

Preset Maintenance Object parameters are saved within the context of the project that the object is used in.
These sets of parameters can also be persisted as stand alone files to be reused within any other context. These files could just contain the CLSID of the object that can be applied to 5 and a binary stream that is specific to this class. To allow the user to search for presets with more flexibility a header has been added to the preset file format. This header contains a thumbnail bitmap representation of the preset for a quicker identification. Further, a text description and a list of GUIDs is included to identify the families to which the object belongs.
To help the user find a particular preset as fast as possible, the last place a preset of the same family was accessed is stored in memory. If a family is being accessed for the first time and no preset of a family has ever been accessed, or if the last location does not exist anymore, a default location is registered for the family.
Scoped ~niln~tion Control Several objects which can be used with the present invention contain parameters that could be ~nim~tetl ~nim~te~ objects allow a property to change over time. Function curves model how the value of an :~nimslted property changes over time. In order to shape a function 20 curve, the user creates and edits key, which map a value of the property to a specific time.

The goal of the Animation Control mechanism is to offer a user interface to record the animation of all ~nim~t~ble properties of the inspected object.

The Animation Control mechanism is divided into two distinct parts, the UI part presenting visual to the user and the internal mech~ni~m p~lrO~ g the actual animation operations such as setting a key, removing a key, going to the next key, etc. The UI part of CA 02202722 1997-04-1~

the Animation Control is independent of the property inspector and could be detached from it and encapsulated within its own classes.

The Animation Control consists of an icon 84 having three separate buttons. The icon 5 84 has a "set key" button 86, a "go to the next key" button 88 and a "go to the previous key"
button 90. The "set key" button 86 preferably has three states. A "key" will be displayed if at the specific time, the parameter has a key, a "check mark" 92 if not on a key but is ~nim~t~d and a blank key picture if the parameter is not ~nim~ted.

Each time an object or several objects are connected to a property inspector, the Animation Control mechanism scans those objects for all their properties. From the tree structure collL~ il-g all properties of the inspected object, the Animation Control mech~ni~m~
extracts all ~nim~t~ble parameters and creates, an animation object for each element. This object embeds all information required to ~nim~te easily the properties of the inspected object.
15 Those objects are finally inserted into an animation list.

Each animation object is manipulated individually, i.e. one object has no dependency on any other once created. Each animation object keeps a reference on a specialized COM
int~ e dedicated to the animation of the container object and a cookie identifying uniquely 20 the ~nim~t~ble property within the container object. A cookie is a token given to a client of a plug-in mechanism when it first "registers" with a host. The host supplies the client with the cookie so that the next time the client makes a request, it can analyze the cookie supplied by the client with the request to determine which client is making the request.

With those two pieces of information, the Animation Control can interrogate the container object about the animation state of its specific property, add or remove new keys in this property.

The UI part of the Animation Control gives the user the capability to set keys, remove keys at the specific time or to navigate from key to key within all ~nim~ted parameters.
Whenever the user triggers an action, the UI part of the Animation Control sends a command to the internal mech~ni~m within the property inspector as a Windows registered message.
5 The internal Animation control mech~ni~m receives those messages and dispatches the requested commands to all animation objects contained in the animation list. Those animation objects will then make use of the specialized COM interf~e dedicated to animation and the cookie identifying the property to complete the operation. Sometimes, the intern~l Animation Control may have to cumulate or summarize information returned from those 10 various animation objects before sending it back to the UI part of the Animation Control for updating the visual aspect of the UI.

Finally, whenever new objects are connected or disconnected from the property inspector, the animation list is cleared and re-created.
Animation Curve Cropping As noted previously, several objects which can be used with the present invention contain parameters that could be ~nim~te~ Once :mim~te~, those parameters contain a function curve allowing the parameter to take dirrelen~ value over time (see Figure 9). Those 20 objects have a section of time over which they are active. Whenever the user resizes the objects. The section of time changes and the user must decide what to do with the curves.

There are two ways to manipulate the animation when resizing an object. The first way (i.e. Cropping OFF) conserves the parameter values at its end points, i.e. at the beginnin~ and 25 at the end of the object timespan. For example, a user may resize a fade effect of a specific timespan, container an ~nim~ted parameter that goes from 100% at the beginning of the effect CA 02202722 1997-04-1~

(i.e. time 0 relative to the effect) at 0% at the end of the effect. Once resized, the user wants to find the same values at the end points of the effect animation.

The second way (i.e. Cropping ON) manipulates the ~nim~ted parameters so that itS appears to the user as if the animation stayed in synchronization with the surrounding objects.
Ch~nging the duration of the object does not affect the position of the animation curves which are contained therein. For example, a color correction applied to an image clip might be applied to change color at one particular instant in a video sequence. Ch~nging the position of the effect by lengthening or shortening it, should not affect the timing of the chaIlge relative to 10 the video data underneath the curve.

Figure 9 represents the curves of the ~nim~ted parameters on an image effect. The object is represented by the bar 94. The timespan of the curve is the portion of the curve used by the object.
Figure 10 presents the new shape of the curves once the object has been resized with cropping mode OFF. At the start and the end of the object, the same values as Figure 9 are used for its ~nim:~ted parameters.

Figure 11 represents the new shape of the curves once the object has been resized when the Cropping mode is ON. The curve has not been scaled, and the curves have stayed at the same position relative to surrounding object while the object cont~inin~ the curve has been scaled down.

To implement this mechanism on the user interface, a simple toggle is presented to the user, allowing a choice between one mode or the other. Internally, based on the toggle value, CA 02202722 1997-04-1~

dirrerc;lll L~ g operations are performed on the underlying curves that support the animation of the parameters.

Parameter animation values are stored into function curves. Those function curves 5 contain a series of keys, all positioned relatively to the local start time of the object, i.e. time 0, cont~ining them.

Whenever the container object is resized, it is notified with a resize notification that indicates where the resize operation was done, i.e. from the start of the effect or from the end 10 of the effect. Furthermore, the notification provides the I l; ., ll, l i l~g amount, i.e. the value to add or remove the current timespan of the object. A negative trimming amount done at the start of the effect, indicates that the effect has been enlarged while a positive value indicates that the timespan of the effect has been reduced. A negative trimmin~ amount done at the end of the effect indicates the timespan of the object has been reduced, while a positive amount 15 indicates us the opposite. The system takes care of making sure that the timespan of an object cannot be reduced to a timespan of length 0. Furthermore, the system also makes sure that it is not possible to move the start of the effect and move it after the end of it and vice and versa.

In Crop mode OFF, based on where the l. ;.. il-~ operation occurred and the trimming 20 amount, a new duration is computed for all ~nim~ted parameters and passed on to the function curve contained therein. Once the new duration is calculated, a ratio is determined between the previous curve duration and its new duration. Finally, this ratio is used to scale the function curve, i.e. reposition all keys within the curve by multiplying the key position and all additional key positioning information by the ratio. Since all keys are already set relatively to 25 the local start time of the object, the scaling can occur without having to perform any translation.

CA 02202722 1997-04-1~

In Crop mode ON, a translation value to be applied to the curve is calculated. The value depends on the where the l.;.. il~ is to start and the ll;.. ,."il~g amount. In this mode, if the trimming operation occurred at the end of the effect, the curve is left untouched. The key translations occur only when the ll;llllllil~g occurred at the beginning of the object. The 5 translation amount is equal to the inverse sign ofthe ll;l~ amount. Using this translation, all keys are shifted inside the curves to their new positions.

The operation of the curve cropping is best illustrated with respect to the following example. A commercial may have a fade out video effect between the 29th and 30th second 10 of the commercial. Regardless of the information underneath the end effect, the fade level is going to :~nim~te from 100% to 0%. If the end effect is shortened, for example, from between 29.5 and 30 seconds, the end effect still goes from 100% down to 0 in half the time. This is one behaviour for an animation group. This effect occurs in the Crop mode OFF.

An example where Crop mode ON would be used is if a ten second clip has a portion shot outdoors (0-5 seconds), with the balance indoors (6-10 seconds). As the clip goes from outdoors to indoors, the color of the clip inside is wrong. The inside portion of the clip may look too red, because the camera's sensing element was balanced for outdoor light. To correct, a color correction effect is applied to clip to normalize the color shift. The parameters for the 20 effect do not change the color balance until the 6th second, at which point, the color shift is applied to normalise the colors. If the user trims the effect so that it starts at the 5th second, the change in values would be expected to begin at the 6th second. In other words, the animation curve would be cropped and not stretched.

25 Paint Example The present invention can be further described with reference to a particular example for controlling the rendering of images on a computer screen. The images are formed from a number of possible sources such as from video tapes or digitally stored images. The present invention has particular application to controlling the style of a graphics image rentlcring tool.
The style is a property that includes a number of subcomponents that at least in part define how the image rendering tool applies text and brush strokes to a computer display.

The tree 130 depicted in Figure 3 is one of a number of possible tree configurations that the graphics software presents to the user based upon the type of graphics control the user has selected in the console. The particular tree depicted in Figure 3 is presented in response to the user selecting a "Freehand Tool" button 134 in the console area of the display. Drawing with the freehand tool hll~ a series of stamps of a specific brush shape onto the surface of the viewing area 1 12 as the user moves the tool across the display with the cursor control 24.
The user navigates the tree 130 by selecting the tree properties to allow access to subcomponent objects or branches. Selecting the style property l~llnch~s a style inspector (Figure 18) that helps define the properties and subcomponents of the style property.

If a surface of a property includes a "+" sign, this means the property includessubcomponents and by selecting the propelly on the "+" sign the subcomponents of the property are displayed, i.e. the tree expands to visually depict the subcomponents as families and classes. A property with no branches (i.e. a leaf on the tree structure) has a "-"
designation on its surface. This is an indication to the user that there are no further constituent 20 properties for that object. Clicking anywhere else launches the inspector for this property set.

In order to simply depict alternate tree configurations encountered by the user, tree properties in the other drawings used to describe the invention are depicted as boxes that are interconnected to define their hierarchical structure. These simplified tree depictions are to be 25 contrasted to the sculpted, shaped tree properties of Figure 3. Figure 1 3A, for example, is a simplified depiction of a tree structure 136 presented to the user beneath the console area 114 in response to selecting the freehand button 134.

A freehand tool object 140 has a single style property 142 that includes four subcomponent families 144, 146, 148, 150. A brush family 144 has been expanded to show its brush effect subcomponent class 152 and a fill family 146 has been expanded to show its subcomponent class 154. When the drawing freehand tool is first selected by actuating the 5 button 134 on the console 114 the various properties that make up the tool are defined by so-called ambient settings that are then in affect in the graphics mode. Regardless of whether a drawing tool or a text tool has been selected in the console region of the display, ambient settings of the software will define a default manner of the rendering performed by the selected tool unless those ambient settings are adjusted. The tree structure of Figure 13A
10 allows these ambient settings to be changed by allowing the user to interface with a property inspector for each property of the tree 136.

Choosing the freehand tool object 140 from the tree 136 shown in Figure 13A
launches a freehand tool inspector 158 shown in Figure 17. The freehand tool inspector 15 includes means for defining the manner in which the software responds to freehand strokes applied to an image in the viewing region. The inspector includes a path box 160 that allows the user choose one of four checkboxes 162a-162d to select either a closed stroke, a curve fit, continuous interpolation or fast feedback. The property inspectors for a representative sampling of other im~ging properties depicted in Figure 13A are illustrated in Figures 15, 20 16A, 16B, 17, 18, l9A, l9B, l9C and 20.

The simplified tree structure of Figure 13A include a style object 142 as a property of the freehand tool object. The style object 142 contains within it a definition of various families and classes required to perform a specific graphics rendering task. As an example, 25 the following two freehand drawing tools are made up of the same plope"ies but with different settings for their attributes to achieve a desired effect.

Example 1 - Finger Painting Tool: Freehand Brush: Elliptical, with a radius of 50x50 pixels, soft-edged, with hardness diameter of 0, softness diameter of 0, opacity of 100%, sampling ratio of 10, angle of 0 degrees. Effect 5 applied: smear, with melting parameter of 96, Wetness of 90.

Example 2 - Cubistic Smear Tool: Freehand Brush: rectangular, with radius of 30x30 pixels, soft-edged, with hardness diameter of 59.46, 10 softness diameter of 55.41, opacity of 100%, sampling ratio of 10, angle of 45 degree. Effect applied: smear, with melting parameter of 98, wetness of 94.

Each of these effects can be controlled by means of the inspectors associated with the style object and the properties that make up the style object such as the brush object 144.
General style parameters are controlled through the paint style inspector 200 which is depicted in Figure 18. The paint style inspector allows the brush and fill parameters to be controlled by means of a number of checkboxes 202 - 208. By selecting an a~l,ropl;ate combination of these check boxes the user can control the rendering of a stroke with or 20 without a brush. If the system includes a pressure sensitive tablet the stroke can reflect the pressure applied to the tablet. An intialised checkbox allows jagged lines to be smoothed when drawing curved or diagonal strokes. The checkbox 205 allows the user to create strokes with fill. Such strokes will have interior regions shaded with fill in accordance with a fill transparency controlled by an opacity slider 210 and an accolllpallyillg text box 211. A
25 feather box 216 on the inspector 200 allows the edge of the fill to be controlled at the region the fill approaches the stroke.

A brush inspector having two tabbed pages 220a, 220b is illustrated in Figures 16A
and 16B. As seen in the Figure 13A depiction illustrating the freehand tool tree org~ni7~tion, the brush family is a subcomponent of the paint style object 142. Use of the brush inspector allows the user to define the brush and therefor change the characteristics of the paint style of 5 which the brush property is a defining part.

A first tab page 220a of the brush inspector allows the user to define general brush characteristics or attributes. Two checkboxes 222, 224 dictate whether ambient brush characteristics are used or whether the pressure applied to the cursor control device 24 will 10 determine the brush characteristics. These same two families of characteristics or attributes are controlled through the style inspector of Figure 18. Since the brush is a property of the style the inspectors were designed to link the characteristics so that changes made using one inspector will automatically be reflected when a second inspector that allows these characteristics to be changed. An ~nti~ ee~l checkbox 225 causes the software to smooth out 15 jagged lines when drawing with curved or diagonal strokes. A sampling ratio control 226 is used to set the distance between each brush stamp in a stroke of the brush. A lower value creates a short distance between each brush stamp, causing the stroke to be denser and a higher value creates a wider distance between brush stamps causing each stamp to appear more distinctly. The sampling ratio control 226 includes both a slider 226a and a text box 20 226b for adjusting the sampling ratio.

The brush property includes a brush size and shape which are controlled by a second tabbed page 220b of the brush inspector. In the above two examples of the Cubic Smear and the Finger Painting the shapes were rectangular and elliptical. As seen in Figure 16B the 25 tabbed page 220b includes a viewer 230 that illustrates a stroke 231 for the freehand tool that allows the user to monitor effects on the stroke as the user adjusts the brush attributes. The user can make a shape selection to start a new brush or as described below can begin with a CA 02202722 1997-04-lF7 selected stroke and modify the brush used to create it. An angle controls 232 adjusts the axis of the brush shape. This angle can be adjusted by either entering a value in a text box 233 or by adjusting a slider 234. Width and height controls 236a, 236b adjust the size of the brush and a lock aspect ratio checkbox 238 links the two controls so that an adjustment to either the 5 width or the height automatically adjusts the other. A "use feather" checkbox 240 toggles between a soft edge and a hard edge for the brush. A hard edge has a sharply defined border and a soft brush edge has an adjustable gradient that gives the edge a soft or fuzzy appearance.
If the soft edge is chosen with the checkbox 240, a diameter control 242 controls the hard portion of the brush as a percentage and a profile controls the gradient or rate of fall off from 10 the hard portion of the brush. An opacity control 246 determines the level of brush transparency. A value of 0 creates a brush stroke that is totally transparent and a value of 100 cause the edge to be drawn exactly as the color property inspector depicts the color.

Turning to Figure 13A, one sees that the brush property 144 has a brush effect 15 subcomponent 152. An inspector for this subcomponent (not shown) allows the color of the brush to be determined from a palette of available colors. Additionally the choices available from the palette can be adjusted by means of slider controls that dictate the red, green, and blue properties of the palette selections.

20 Stroke Inspector It is also possible to change the properties of a selected stroke that is already contained within the viewing area 112. To access and change the pl.~pellies of an already created stroke the user selects a "select" button 150 on the console (Figure 3) and then selects a stroke within the viewer area 112 of the display. A bounding box of the stroke is displayed on the viewing 25 area 112 and a tree or properties of the selected object 250 depicted in Figure 13B replaces the freehand tool tree 130 depicted in Figure 3.

Note that the tree of Figure 13B is quite similar to the property tree 136 depicted in Figure 13A. The tree 250 has properties 252-259 arranged in a hierarchical fashion. The object 252 is a skoke property set and selecting this property set causes a stroke inspector 260 of Figure 15 to be displayed. Adjusting attributes using the stroke inspector 260 affects only 5 the selected stroke. As the attributes are adjusted, the stroke's appearance in the viewer 112 changes. The user can also select and modify multiple strokes by holding down a shift key on the alphanumeric input 22 and selecting multiple strokes on the viewer 112.

The stroke inspector 260 of Figure 15 allows the user to define the stroke rendering 10 characteristics. Two check boxes 262, 264 define the response to the user moving a brush across the screen. A close box 262 causes strokes to be closed paths and a 264 causes strokes to be approxim~ted by a closest fit curve. A linear interpolation box 266 causes brush strokes to be interpolated with a linear approximation and a bezier box 268 causes the brush strokes to be approximated by a bezier curve. When using the bézier curve the lock handles checkbox 15 270 causes the curve to have two control handles that are locked together and if this box is not checked the control handles may be individually controlled.

Masks The property trees 136, 250 of Figures 13A and 13B each includes a mask property20 148, 257. A mask is an image, portion, or property of an image that defines which pixels, paint strokes, and titling characters affect the image. The mask property inspectors allow the user to select which RGBA channel to mask, add a paper grain, or mask the image with an alpha channel to create a matte. Mattes are defined by the alpha property of an image and in the paint mode are used by the graphics software to define a stencil. The matte protects 25 portions of the image surface.

The mask inspector is launched by selecting the mask object on the tree of figures 13A
and 13B and includes three tabbed displays 270a, 270b, 270c that are depicted in Figures l9A-19C. A paint on channel box 280 has four checkboxes 282, 284, 286, 288 allowdifferent channels to be painted. As an example, if the red channel is selected, only the 5 strokes red property is painted. By painting with the alpha channel one paints with a matte.

A paper grain tab (Figure l9B) allows a texture to be applied to subsequent brush strokes. This will allow one to create an effect of painting on a textured canvas. A paper grain image is displayed in a viewing box 290 and can be adjusted by loading in other images 10 from disk. A text box 291 and slider 292 control an absorption factor. This will control how paint that is applied by brush strokes is absorbed by the textured surface of the paper grain.

A final tabbed page (Figure l 9C) allows the user to mask drawable portions of the image based on a specific color and tolerance range. The user selects a color either from the 15 screen using a color picker UI control or by defining a color through a color palette and inspector. This color becomes the seed color for the mask, and tolerances can be set for Red, Green, and Blue or Hue, Saturation, and Luminance respective to that color. Setting this tolerance m:~king property ON will create a greyscale mask in memory. The user can choose whether this mask allows drawing within the target color range, or its inverse. For example, 20 one could choose the red within a flower in an image, and set the appropriate tolerances.
Thus, all subsequent drawn effects are constrained within all similar red flowers in the image.

Once all properties of the drawing tool object have been defined by means of user selection and control in the property inspectors, the drawing tool has been defined and the 25 user can select the viewing area 112 and begin to add strokes that have the chosen style to the image in the viewing area. A representative sampling of the inspectors used in defining the tree properties in Figures 13A and 13B have been described. It is appreciated, however, that CA 02202722 1997-04-1~

the properties such as fill and fill effect have their own inspectors for adjusting their property attributes. The wetness and melting parameters, for example, control the smear Effect in the Smear Effect Inspector. These two parameters can affect brush strokes that follow paths and control the combining with the existing brush stroke with the previously rendered portion of 5 the image over which the brush is moved. Melting controls the area in which the image is combined and wetness controls the degree or intensity of the combination.

Text Titling Properties In addition to stroke based brush defined ren~lerin~, the graphics software supports text 10 generation much like a word processor. The user creates and edits text in a titling body. The titling body is a group of words, lines and paragraphs which the user can manipulate like a single graphic object. When a titling body is created it inherits ambient text properties that define its appearance. Titling properties include character edge, fill and shadow effects as well as masks. The appearance or format of the text can also be controlled using text 15 form~ttin~ options such as margin width, font size, leading etc. When the user is creating and editing text the text is displayed in the viewing area 112 of the display 28.

To create a titling body, the user selects a "text" button 310 on the console 114 and the software displays a text tree 312 as illustrated in Figure 14A. The user then moves the cursor 20 over the viewing area 112 and selects with the pointing device 24 to create a new text body at the selected location within the viewing area 112. When the user clicks in the viewing area to create a new body, a "edit text" button 316 in the console 114 is depressed and the "text"
button 310 is deselected. The tree 312 changes to the tree 320 of Figure 14B to reflect the format of the body that is now selected. If text is then typed without adjusting this format, the 25 text that is typed has the ambient attributes of the text titling body. If the user adjusts the format before typing subsequent keystrokes the text will have the newly defined text attributes.

As was the case with painting brush strokes discussed above, the user can select and view attributes of already existing text contained within a titling body. The user clicks on the "select" button 310 and then moves the cursor over a text body within the viewer area 112.
By clicking on the text body, the tree 324 of Figure 14C is displayed and the style attribute of 5 the selected body is shown. When this happens, the format of the body is not shown in the tree depiction. To display the format of selected text, the user chooses the "edit text" button 316 and the tree 326 of Figure 14D is shown having a top "edit text tool" object 328 and a format property 330.

Each of the subcomponents beneath the text style property and the format property has a property inspector associated with it for adjusting or displaying the attributes of that subcomponent. As one example, when the clicks on a "style" property 332 depicted in either Figures 14A or 14C a titling style inspector 334 (Figure 21) is launched. This inspector includes an edge attributes panel 336 having a checkbox 338 for using character edges defined 15 by a separate edge inspector. If the checkbox 338 is checked and no changes are made to these character edges, ambient values are used. Similarly, the face and shadow attributes of displayed text are controlled by checkboxes 440, 441 and controls associated with those checkboxes.

20 Presets Turning to Figure 12 one sees that there are two buttons labeled "text preset" 350 and "stroke preset" 352 in the console region 114 of the graphics display. The attributes for a plurality of custom or preset styles can be stored within a memory store such as a computer fixed disk drive. Under the control of the user, some or all of the stored attributes for a 25 designated preset are retrieved from memory so that some or all of the attributes of a particular style preset can be associated with a graphics ren(lçr1ng object or tool. Subsequent use of the tool is controlled, at least in part, by the attributes of the style preset.

CA 02202722 1997-04-1~

A preset is a customized set of properties for a particular effect, such as a pai~ sh, font, or color palette. The software also comes with a set of text presets such as single line fade in, text rolls, diagonal fly ins. When the software is installed, a full array of predefined presets are loaded and these pre-sets can be supplemented by the user.

Figure 20 is a depiction of a preset browser 354 for accessing these stored presets.
Use of a stroke preset creates a graphic layer on top of the image ~ lclllly displayed in the viewing area 112. To use a stroke preset the user selects the "stroke preset" button 352 which causes the browser 354 to be launched with a stroke subfolder 355 opened. The user selects 10 one of the stroke presets and the stroke is displayed in the viewing area 112. To remove a preset from the image in the viewing area 112, the user chooses the "Select" button 150 and clicks on a stroke within the viewing area 112. The user then presses the delete key on the alphanumeric control 22 to remove the stroke from the viewing area 112.

Use of stored presets allows the user to edit a property or graphics property within an inspector and then save that prol)el ly as a preset. When the user selects a preset from the browser 354, its settings are loaded from disk into the a~l,ropl;ate property inspector for use or for modification with those inspectors. As an example, from the browser 354 one can retrieve a preset brush, a brush folder 356 into the brush property inspector. As seen in Figure 20 12 the user can choose from a number of preset subfolders and these presets can contain other presets. For example if one saves a paint style preset in a paint style subfolder 357, one saves attributes of the paint style, the brush that defines part of the style, the brush color blend that defines part of the brush, the fill, the fill color blend etc. These are all accessible from a single style preset.
To use a property preset to paint brush strokes the user either selects a stroke to be modified from the viewing area 112 or selects a drawing tool if a new stroke is being drawn.

A graphics tree depicted in either Figurel3A or 13B is displayed beneath the console area 114. The user then selects the property from the tree for which the user wishes to load a preset. Assume a paint style object (found on both trees 136, 250) is selected by the user.
The paint style inspector 200 of Figure 10 is launched. This inspector 200 includes a load 5 button 360 in the upper right hand corner of the inspector. When the user presses this button 360 the browser 354 is launched with the paint style folder 357 opened. The user then selects one of the paint style presets from a list of available paint styles and the preset property settings are applied to the selected stroke or if the preset is being used to create a new stroke the preset ~ p~,lies define new ambient pl~p~llies.
Retllrning to Figure 18, one sees that the paint style inspector 200 also includes a "save" button 362. As the user experiments with dirrelent paint styles, by an iterative process of trial and error, a particular stroke achieves exactly the desired affect in the image viewing area. To save that stroke or its style the user selects that stroke in the viewing area and the 15 pl~l)Clly tree of Figure 13B is displayed. If the user wants to save the entire stroke, the user selects the stroke property from the tree and the stroke inspector 260 of Figure 15 is displayed.
If, however, the user wants to save only the style of the stroke, the user selects the paint style property 253 of the stroke tree 250 and then the paint style inspector 200 of Figure 18 is displayed.
To save a preset from the inspector, the user selects the save button 362 of theinspector and a save preset browser (not shown) is launched. This browser allows the user to save the property under its own name ("mypai~ lyle", for example) within a subfolder for later retrieval. The preset can be saved in an existing folder or a new folder can be created 25 within the hard disk org~ni7~tion for the presets. Presets of different properties can be saved in the same folder so that, for example, all presets for a particular project could be saved together or alternately all the presets of a particular type can be saved in a pre-defined CA 02202722 1997-04-1~

subfolder for presets of that type. The load preset browser allows the user to view a listing of all types of presets within a given folder.

Text presets allow the user to replicate titling styles and formats. To use a text preset, 5 the user selects the "text preset" button 350 in the graphics console, and a load titling body preset browser launches to allow a text preset to be loaded. Text styles for user generated text can be saved by selecting the text and then choose a text property from the text tree (Figures 1 4A- 14D) for saving. Any stroke of text property can also be selecting from the viewing area and then one or more of its properties modified in its associated inspector before it is saved to 10 disk. If the user chooses not to save the modified property as a preset, the modifications can merely be applied to the selected stroke or text and saved with the image. The ability to select a stroke or text body and view, modify or save as a preset the attributes or characteristics of the selected property is a particularly useful feature of the present invention.

15 Software Implementation Each of the components or properties depicted in the various property trees is implemented as an object in the C~ progl,l.""~ g language and has well defined attributes or components as well as methods associated with it. A paint style object, for example has a brush component which itself is an object in the C++ sense of the term object. As seen in the 20 hierarchical trees of Figures 13A and 1 3B the paint style object also includes an object of type "mask" which has its own properties and methods.

The paint style object exposes many services to the software in addition to the properties and attributes of the style itself. One service is IpersistStream which allows an 25 object of type paint style to be saved as a preset and retrieved. An IdsPropertyTree interface allows an object of type paint style to be displayed on the monitor as a tree with its properties depicted. An interface called IspecifyPropertyPages allows the properties to be displayed CA 02202722 1997-04-1~

within an inspector wherein the properties of the paint style can be modified. An interface called IMFTimeSpan allows the paint style object to have a start time and a duration. The facility is useful for animation. A separate interface called IdsAnim allows the paint style to be ~nim~t~d. Access to an IDSChild interface allows an object of type paint style to specify 5 its parent. As an example, the paint style of Figure 1 3B is the child of a paint stroke object 252. The IDSParent interface allows the object of type Paint Style to replace or modify its child object such as for example its brush properties. By replacing the brush (child) with a stored preset (stored using the persistence service of the brush type) the object of type paint style can be changed and applied to a given brush stroke or saved as a style preset.
Listed below is an interface for an object of type brush that inherits these basic services from an "Iunknown" interface. The design of interface declarations for other properties or objects such as the paint style object are apparent to one skilled in the art when considered in conjunction with the present description.
15 lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll Il Brush Interface ll ~1111111111111111111111111111111111111111111111111111111111111111111 DECLARE_INTERFACE_(IDsBrush, Iunknown) {

Clone (REFIID, LPUNKNOWN*);
SetBrll~hTm~ge (IDSImage*);
ResetBrll~hTm~ge O;
GetBr~l~hTm~ge (IDSImage*);
GetBrll~hTmzlgeRes (long&, long&);
SetBrushInput (IDSImage*);
GetBrushInput (IDSImage*);
SetBrushShape (GkShape2f*);
GetBrushShape (GkShape2f*&); ll (comment please) SetFeatherDiameter (double);
GetFeatherDiameter (double&);
SetCurvature (double);
GetCurvature (Double&);

CA 02202722 1997-04-lF7 SetSoftness (BOOL);
GetSoftness (BOOL&);
SetBrushAlpha (double);
GetBrushAlpha (double&);
SetBrushWidth (double);
GetBrushWidth (double&);
SetBrushHeight (double);
GetBrushHeight (double&);
SetBrushShapeAngle (double);
GetBrushShapeAngle (double&);
Build 0;
StampFlush (), StampBuild (IDSImage* &, double, double, double);
StampRect (Crect&, double, double, double);
15 };
It is preferable to use C++ to write the objects for the present invention. However, the Component Object Modal (COM) designed by Microsoft is required. Microsoft ObjectT inking and Embedding concept is also based on COM. It allows an object or any other data 20 structure to expose interfaces through which other parts of the system can act on the data.
This is very similar to what C++ provides which is the reason why it is easier to implement a COM object in C++. All global services exposed by the objects that could eventually be provided by third parties as plug-ins, will be exposed via COM interfaces. Thus, any services provided by the system to be consumed by these objects will also be exposed via COM
25 interfaces.

Il IDSPropertyNotifySink 30 DECLARE_INTERFACE_( IDSPropertyNotifySink, IUnknown ) {

BeginChanges (REFGUID, LPUNKNOWN );
PropertyChanged (REFGUID, LPCDSVARIANT, LPUNKNOWN, LPCDSPARAMS, WORD);
35 PropertyAdded (REFGUID, LPCDSVARIANT, LPUNKNOWN, LPCDSPARAMS, WORD);

CA 02202722 1997-04-1~

PropertyRemoved (REFGUID, LPCDSVARIANT, LPUNKNOWN, LPCDSPARAMS, WORD);
EndChanges (REFGUID, LPUNKNOWN );
};

Il IDSEnumProperties typedef struct tagDsProperty 10 {
DWORD m_dwSize; 11 ~field The size in bytes of the structure GUID m_guidStructure; 11 (~field The unique identifier of the structure 15 DWORD m_dwMask; 11 ~field A bit field identifying the meaningful information in the field (using DSPROPERTY_FIELDS
enumerator) GUID m_guidPropertyType; 11 ~field The globally unique identifier of the property type (which can be GUID_NULL if property type identification is not necessary) LPWSTR m_szShortName; 11 ~field The user readable short name of the property 25 LPWSTR m_szLongName; 11 ~field The user readable long name of the property DSVARIANT m_vValue; 11 ~field The type and value of the property WORD m_wCapabilities; 11 ~field A bit field co~ g a combination of the values in DSPROPERTY_CAPABILITIES
WORD m_wClassification; 11 (~field A bit field cont~ining the classification of the property (meta data, internal structure, appearence). Used by notification sinks to selectevely react to property changes.
DSPARAMS m_ParamList; 11 ~field A DSPARAMS structure cont~ining the list of params and optinally their types 40 }
DSPROPERTY, * LPDSPROPERTY, ** LPLPDSPROPERTY;

Il IDSEnumProperties 11111111111111/ ~ vlllllllll DECLARE_INTERFACE_( IDSEnumProperties, IUnknown ) 5 ~
Reset ();
Skip (), Clone (LPDSENUMPROPERTIES * );
Next (ULONG, LPDSPROPERTY, PULONG );
10 };

Il IDSProperties ~1111111111 15 DECLARE_INTERFACE_( IDSProperties, IUnknown ) {

GetShortName ( LPWSTR, DWORD );
GetLongName ( LPWSTR, DWORD );
GetThumbnail ( HBITMAP * );
20 EnumProperties ( LPDSENUMPROPERTIES *, DWORD );
GetPropertyInfo ( REFGUID, DWORD, LPDSPROPERTY );
GetValue ( REFGUID, LPDSVARIANT, LPCDSPARAMS );
SetValue ( REFGUID, LPCDSVARIANT, LPCDSPARAMS, LPDSPROPERTYNOTIFYSINK );
25 Advise ( LPDSPROPERTYNOTIFYSINK );
Unadvise ( LPDSPROPERTYNOTIFYSINK );
About ( HWND );
EnumPropertiesOfrype ( LPDSENUMPROPERTIES *, DWORD, REFGUID );
};
This interface must be exposed by all objects exposing properties. It allows other parts of the system to Get/Set values for every single ~lopclly in a generic way. It also allows them to enumerate the plopcllies using a standard enumerator (IDSEnumProperties). To enumerate the whole hierarchy, one must get all properties one level at a time. The next level of 35 properties can be enumerated using the IDSProperties of the subcomponent in the same manner it was done for the previous level. The DSPROPERTY structure that is returned for every single property gives as much information as possible about the property. The IDSProperties interface can also be used to get information about a node without asking the parent (if any) for the DSPROPERTY structure (either with the enumerator or with the GetPropertyInfo method). One can also enumerate properties of a specific type. Finally, one can be notified of changes to an object's prop~l~ies by subscribing its IDSPropertyNotifySink 5 interface using the Advise method.

The above-described embodiments of the invention are intPn~lçcl to be examples of the present invention and alterations and modifications may be effected thereto, by those of skill in the art, without departing from the scope of the invention which is defined solely by the 10 claims appended hereto.

Claims (46)

1. A system comprising:
an object having a hierarchical organization of attributes, means for receiving said object and responsively applying said object to a stream of data, a user interface responsive to user input for displaying said hierarchical organization of said object, a launch means responsive to user input for launching an inspector, and an inspector having means for displaying settings of a selected attribute of said object and having means responsive to user input for modifying said settings.
2. A system as claimed in claim 1 wherein said hierarchical organization of attributes comprises a property set, having a family, having a class.
3. A system as claimed in claim 2 wherein said system has a plurality of objects, said plurality of objects share said hierarchical organization of attributes allowing each of said plurality of objects to be plugged into said system.
4. A system as claimed in claim 3 wherein said user interface displays said hierarchical organization of a selected object in a tree.
5. A system as claimed in claim 4 wherein said tree comprises a series of nodes representative of a branch of the tree corresponding to each class, family and property set of the selected object.
6. A system as claimed in claim 5 wherein said launch means is a button at each of said nodes.
7. A system as claimed in claim 6 wherein said inspector is a window having a display of said attributes and a corresponding setting for each attribute.
8. A system as claimed in claim 7 wherein said corresponding setting for each of said attributes initially has an ambient value.
9. A system as claimed in claim 7 wherein said inspector has three modes for determining launching of an additional inspector.
10. A system as claimed in claim 9 wherein said three modes comprises a recycle mode, a follow mode and a lock mode, said recycle mode replaces a dialog box of said inspector with contents of said additional inspector, said follow mode opens a new dialog box and copies attributes common between said inspector and said additional inspector and said lock mode opens a new dialog box and displays attributes of additional inspector.
11. A system as claimed in claim 7 wherein said inspector has a preset means for saving and retrieving settings of attributes for said selected object.
12. A system as claimed in claim 7 wherein said inspector has an animation control mechanism for setting and unsetting keys of an animatable property set of the selected object.
13. A system as claimed in claim 12 wherein said animation control mechanism has a set key button for triggering the system to set a key, a go to next key button for triggering the system to move to a next key of said animatable property set and go to previous key button for triggering the system to move to a previous key of said animatable property set.
14. A system as claimed in claim 7 wherein said inspector has means for sizing an object and a switch for toggling between a crop mode and an uncropped mode therefor, said uncropped mode preserves settings of attributes of said selected object at end points thereof and said crop mode manipulates settings of attributes of said selected object to stay in synchronization with other objects.
15. A user interface comprising:
at least one button for representative of an object having a hierarchical organization of attributes comprising a property set, having a family, having a class, said button responsive to user input for displaying said hierarchical organization of said object, a launch button responsive to user input for launching an inspector, and an inspector for displaying a setting of a selected attribute of said object and having means responsive to user input for modifying said settings.
16. A user interface as claimed in claim 15 wherein said user interface has a plurality of buttons corresponding to one of a plurality of objects, said plurality of objects share said hierarchical organization of attributes allowing each of said plurality of objects to be plugged into a system.
17. A user interface as claimed in claim 16 wherein said hierarchical organization is displayed in a tree.
18. A user interface as claimed in claim 17 wherein said tree has a series of nodes representative of a branch of the tree corresponding to each class, family and property set of the selected object.
19. A user interface as claimed in claim 18 wherein said launch button is located at each of said nodes.
20. A user interface as claimed in claim 19 wherein said inspector has a window having a display of said attributes and a corresponding setting for each attribute.
21. A user interface as claimed in claim 20 wherein each of said inspectors is representative of a family of a property set and said inspector has a selectable tabbed page display for each class of attributes of the family.
22. A user interface as claimed in claim 21 wherein said corresponding setting for each of said attributes initially has an ambient value.
23. A user interface as claimed in claim 22 wherein said inspector has a menu for selecting one of three modes for determining launching of an additional inspector.
24. A user interface as claimed in claim 23 wherein said three modes comprises a recycle mode, a follow mode and a lock mode, said recycle mode replaces a dialog box of said inspector with contents of said additional inspector, said follow mode opens a new dialog box and copies attributes common between said inspector and said additional inspector and said lock mode opens a new dialog box and displays attributes of additional inspector.
25. A user interface as claimed in claim 20 wherein said inspector has a preset means for saving and retrieving settings of attributes for said selected object.
26. A user interface as claimed in claim 25 wherein said preset means for retrieving settings of attributes is a thumbnail bitmap.
27. A user interface as claimed in claim 26 wherein said inspector has a page of thumbnail bitmaps, each representative of a setting of attributes of said family.
28. A user interface as claimed in claim 20 wherein said inspector has an animation control switch for setting and unsetting keys of an animatable property set of the selected object.
29. A user interface as claimed in claim 28 wherein said animation control switch has a set key button for triggering the user interface to set a key, a go to next key button for triggering the user interface to move to a next key of said animatable property set and go to previous key button for triggering the user interface to move to a previous key of said animatable property set.
30. A user interface as claimed in claim 20 wherein said inspector has a switch for toggling between a crop mode and an uncropped mode for sizing an object, said uncropped mode preserves settings of attributes of said selected object at end points thereof and said crop mode manipulates settings of attributes of said selected object to stay in synchronization with other objects.
31. A method for adapting an object for a plug in environment, comprising the steps of:
organising said object into a hierarchical organization of attributes, providing a means for displaying said hierarchical organization of said object, providing a launch means responsive to user input for launching an inspector, providing means for displaying settings of a selected attribute of said object, and providing means responsive to user input for modifying said settings.
32. A method as claimed in claim 31 wherein said methods further includes the step of organizing a plurality of objects into a shared hierarchical organization of attributes.
33. A method as claimed in claim 32 wherein said hierarchical organization is displayed in a tree.
34. A method as claimed in claim 33 wherein said tree has a series of nodes representative of a branch of the tree corresponding to each class, family and property set of the selected object.
35. A method as claimed in claim 34 wherein said launch button is located at each of said nodes.
36. A method as claimed in claim 35 wherein said inspector has a window having adisplay of said attributes and a corresponding setting for each attribute.
37. A method as claimed in claim 36 wherein each of said inspectors is representative of a family of a property set and said inspector has a selectable tabbed page display for each class of attributes of the family.
38. A method as claimed in claim 37 wherein said corresponding setting for each of said attributes initially has an ambient value.
39. A method as claimed in claim 38 wherein said inspector has a menu for selecting one of three modes for determining launching of an additional inspector.
40. A method as claimed in claim 39 wherein said three modes comprises a recycle mode, a follow mode and a lock mode, said recycle mode replaces a dialog box of said inspector with contents of said additional inspector, said follow mode opens a new dialog box and copies attributes common between said inspector and said additional inspector and said lock mode opens a new dialog box and displays attributes of additional inspector.
41. A method as claimed in claim 40 wherein said inspector has a preset means for saving and retrieving settings of attributes for said selected object.
42. A method as claimed in claim 41 wherein said preset means for retrieving settings of attributes is a thumbnail bitmap.
43. A method as claimed in claim 42 wherein said inspector has a page of thumbnail bitmaps, each representative of a setting of attributes of said family.
44. A method as claimed in claim 43 wherein said inspector has an animation control switch for setting and unsetting keys of animatable property set of the selected object.
45. A method as claimed in claim 44 wherein said animation control switch has a set key button for triggering the user interface to set a key, a go to next key button for triggering the user interface to move to a next key of said animatable property set and go to previous key button for triggering the user interface to move to a previous key of said animatable property set.
46. A method as claimed in claim 45 wherein said inspector has a switch for toggling between a crop mode and an uncropped mode for sizing an object, said uncropped mode preserves settings of attributes of said selected object at end points thereof and said crop mode manipulates settings of attributes of said selected object to stay in synchronization with other objects.
CA 2202722 1997-04-04 1997-04-15 Taxonomy of objects and a system of non-modal property inspectors Abandoned CA2202722A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/054,479 US6317142B1 (en) 1997-04-04 1998-04-03 Taxonomy of objects and a system of non-modal property inspectors

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US4293697P 1997-04-04 1997-04-04
US60/042,936 1997-04-04

Publications (1)

Publication Number Publication Date
CA2202722A1 true CA2202722A1 (en) 1998-10-04

Family

ID=21924542

Family Applications (1)

Application Number Title Priority Date Filing Date
CA 2202722 Abandoned CA2202722A1 (en) 1997-04-04 1997-04-15 Taxonomy of objects and a system of non-modal property inspectors

Country Status (1)

Country Link
CA (1) CA2202722A1 (en)

Similar Documents

Publication Publication Date Title
US6317142B1 (en) Taxonomy of objects and a system of non-modal property inspectors
AU732783B2 (en) Computer imaging using graphics components
EP0635808B1 (en) Method and apparatus for operating on the model data structure on an image to produce human perceptible output in the context of the image
US5479603A (en) Method and apparatus for producing a composite second image in the spatial context of a first image
US7518611B2 (en) Extensible library for storing objects of different types
US7565608B2 (en) Animation on object user interface
US5596690A (en) Method and apparatus for operating on an object-based model data structure to produce a second image in the spatial context of a first image
US5715416A (en) User definable pictorial interface for a accessing information in an electronic file system
US5729704A (en) User-directed method for operating on an object-based model data structure through a second contextual image
US6031529A (en) Graphics design software user interface
US5675753A (en) Method and system for presenting an electronic user-interface specification
US5982350A (en) Compositer interface for arranging the components of special effects for a motion picture production
US20200066022A1 (en) Playback for embedded and preset 3d animations
US5818455A (en) Method and apparatus for operating on the model data structure of an image to produce human perceptible output using a viewing operation region having explicit multiple regions
US5467441A (en) Method for operating on objects in a first image using an object-based model data structure to produce a second contextual image having added, replaced or deleted objects
US5404316A (en) Desktop digital video processing system
US7318203B2 (en) Selecting image processing functions
CA2202722A1 (en) Taxonomy of objects and a system of non-modal property inspectors
US6466214B1 (en) Marking parameters for animation
Swartz et al. RIVL: A Resolution Independent Video Language.
Penston Adobe Creative Suite 2 How-Tos: 100 Essential Techniques
Noot et al. INS-R0004 January 31, 2000
Chapter Programming Silverlight with XAML and JavaScript
WO2001011465A2 (en) Property editor with child property sets
Moroney Programming Silverlight with XAML and JavaScript

Legal Events

Date Code Title Description
FZDE Dead