quicktime.app.anim
Class SWCompositor

java.lang.Object
  |
  +--quicktime.app.spaces.SimpleSpace
        |
        +--quicktime.app.anim.SWCompositor
All Implemented Interfaces:
Collection, Compositable, Drawable, DrawingNotifier, DynamicCollection, DynamicImage, ImageSpec, Listener, QTDisplaySpace, QTDrawable, Space, Ticklish, Transformable
Direct Known Subclasses:
Compositor

public abstract class SWCompositor
extends SimpleSpace
implements QTDisplaySpace, DynamicImage, DrawingNotifier

SWCompositor provides the capability to composit a complex image together of disparate image sources and then treat the result as a single image which is presented to the user.

It uses the QuickTime SpriteWorld internally to perform the compositing tasks. Thus all of the actual drawing of the members of a SWCompositor is handled through the interaction between the SpriteWorld and Sprite classes of quicktime.

The SpriteWorld itself is wrapped by the SWCompositor class, and to represent the Sprite class it uses the TwoDSprite. The TwoDSprite is a presenter - it presents image information and the presenation of the image information within the context of the SWCompositor's SpriteWorld is determined by the matrix, graphics mode, layer and visibility of the TwoDSprite's Sprite object.

To create a Sprite you need a valid SpriteWorld. To create a SpriteWorld you need a valid QDGraphics destination. Depending on whether a SWCompositor is visible or not you may or may not have a valid destination QDGraphics. The interaction between the SWCompositor and its TwoDSprite presenters handles the saving and creating of SpriteWorlds and their Sprites - the application does not need to deal specifically with this issue.

The SWCompositor has been designed without the requirement that its members be TwoDSprites. It maybe more convenient for an application to add members of a Compositor that are a source of image data and have the addMember method deal with the mechanics of creating the TwoDSprite presenter. Thus there are also methods that must be defined by the subclass for getting a member's TwoDSprite, and getting a TwoDSprite's member. This is important to understand for the following reason. Once a member has been added to a SWCompositor, it is the presenter within the SWCompositor itself (the TwoDSprite) that must be interacted with to effect the display characteristics of the member in the SWCompositor. Whilst a subclass may provide the capability to create the TwoDSprite presenter with display characteristics like Matrix and GraphicsMode, once the member is added altering the member's display characteristics directly may or may not effect the display characteristics of the member in the SWCompositor. Thus an application is better to always interact with the member's TwoDSprite presenter.

After a member is added to the SWCompositor the subclass should call the postProcessAdd (and remove in the case of a removeMember call). This call will look at the member that is being added and will perform two services. If the new member is an instance of the Notifier class then the SWCompositor registers the Notifer with the TwoDSprite presenter as the NotifyListener. That way a Sprite who presents image data that is not available at the time the member is added can still prepare itself for displaying an image when its Notifier notifies the TwoDSprite that its image data is valid. If the new member is an instance of DynamicImage, then this method will also call that member's addedToCompositor method to allow this new member to establish the invalidation mechanism it uses. Explicit invalidation is required for the SpriteWorld to redraw a Sprite that presents image data that is changing (such as a Movie) when nothing about the Sprite's presentation has changed.

The subclass defines completely the storage mechanism and protocols of its members.

See Also:
SpriteWorld, Sprite, TwoDSprite, quicktime.app.display.Compositor

Field Summary
 int hitTestFlag
          default hit test is only to test on the visible pixels of a sprite
 int taskFlag
          This flag is used when the task method is called.
 
Fields inherited from class quicktime.app.spaces.SimpleSpace
containedSpaces, controllersVec, ticklers, timer
 
Fields inherited from interface quicktime.app.time.Ticklish
kScale
 
Constructor Summary
protected SWCompositor(QDGraphics spriteGWorld, QDColor backgroundColor, QDGraphics background, int scale, int period, Protocol defaultProtocol)
          Used by subclasses to construct a SWCompositor.
 
Method Summary
 void addDrawingListener(DrawingListener listener)
          Registers an object as a listener of the Compositor.
 Invalidator addedToCompositor(SWCompositor c, TwoDSprite s)
          Returns an object that invalidates a sprite.
protected  void createMembers()
          This method is called after the Compositor has been added to a valid QDGraphics and the sprites can be added to the spriteworld.
 Region getClip()
          Returns the current clipping region used by the sprite world
 Compositable getCompositable(java.lang.Object member)
          This will return the TwoDSprite for the member as a Compositable object to enable an application to get and set the graphics mode presentation of the member object.
 ImageDescription getDescription()
          This method should return an ImageDescription that describes the image data that the class contains.
 QDRect getDisplayBounds()
          QTCanvas calls this method when it needs to get the client's location, width and/or height.
 GraphicsMode getGraphicsMode()
          Sets the graphics mode of the SpriteDisplay object - this will be restored on each subsequent creation of the internal SpriteWorld.
 QDGraphics getGWorld()
          QTCanvas calls this method to get the destination QDGraphics of its client.
 EncodedImage getImage()
          This method returns the actual image data.
 java.awt.Dimension getInitialSize()
          Deprecated. since QTJava 4.0
 java.util.Enumeration getInvalidatorList()
          Returns the list of invalidator objects for the Compositor's sprites that have a dynamic image source.
 Layerable getLayerable(java.lang.Object member)
          This will return the TwoDSprite for the member as a Layerable object to enable an application to get and set the layer presentation of the member object.
 Matrix getMatrix()
          This will return the client's current display transformations
 Invalidator getMemberInvalidator(java.lang.Object member)
          Returns the invalidator that is associated with the supplied member if the member has an Invalidator.
abstract  TwoDSprite getMemberSprite(java.lang.Object member)
          This method returns the TwoDSprite presenter that is presenting the image data of the given member.
 QDDimension getOriginalSize()
          This method returns the original size before the transformations specified in the returned matrix are applied.
 SWCompositor getParent()
          Returns the SWCompositor that this is the parent container of this SWCompositor.
abstract  java.lang.Object getSpriteMember(TwoDSprite sprite)
          This method returns the member that is being presented by the supplied TwoDSprite presenter.
 float getStatistics()
          The compositor's frame rate is calculated by the number of times it is tickled from the time an application calls resetStatistics and is only valid if the rate of the Compositor's Timer is not zero.
 Transformable getTransformable(java.lang.Object member)
          This will return the TwoDSprite for the member as a Transformable object to enable an application to get and set the display presentation (its location, scale, etc) of the member object.
 boolean hasRecordMovie()
          Returns true if the SWCompositor has a RecordMovie object.
 java.lang.Object hitTest(int x, int y)
          Return the frontmost object that is located at the specified coordinates.
protected  void idle()
          This method can be called to explicitly force the SWCompositor to redraw itself.
 boolean isAutoRedrawing()
          Returns the current state of the auto redrawing flag.
protected  void postProcessAdd(java.lang.Object member, TwoDSprite s)
          This method should be called by the subclass after the member has been added to the SWCompositor.
protected  void postProcessRemove(java.lang.Object member, TwoDSprite s)
          This method should be called by the subclass before the member has been removed from the SWCompositor.
 void redraw(Region invalidRgn)
          QTCanvas calls this method when the client should redraw itself.
 void removedFromCompositor(SWCompositor c)
          When a dynamic image class is removed from a SWCompositor this method is called to allow the class to cleanup any of the invalidation processes it had established in the addedToCompositor call.
 void removeDrawingListener(DrawingListener listener)
          Removes an object that is a listener of the Compositor.
 void resetStatistics()
          Resets the internal counters that are used to calculate the frame rate of the Compositor.
protected  void saveMembers()
          This method is called if a SpriteWorld has previously been created and the destination QDGraphics or QDGraphics is about to go away (such as removing a SpriteWorld from a QTCanvas).
 void setAutoRedrawing(boolean flag)
          If a SWCompositor's time rate is equal to zero, changing a property of a member's sprite requires the SWCompositor to be redrawn to see this change.
 void setClip(Region clipRgn)
          This method sets the sprite world's clip.
 void setDisplayBounds(QDRect bounds)
          QTCanvas calls this method when it needs to tell the client to adjust its location, width and/or height.
 void setGraphicsMode(GraphicsMode mode)
          Sets the current graphics mode.
 void setGWorld(QDGraphics cgp)
          QTCanvas calls this method to give the client the QDGraphics object it should use to do its drawing.
 void setLocation(int x, int y)
          A convenience method to set the position of a QTDrawable object.
 void setMatrix(Matrix matrix)
          This method sets the current matrix of the Transformable object to the new matrix.
 void setRecordMovie(RecordMovie rm)
          This method allows the application to register the intent to record a movie out of the compositing output of the SWCompositor.
abstract  java.util.Enumeration sprites()
          This returns an Enumeration that allows your application to iterate over the TwoDSprite presenters that are responsible for presenting the image data within the Compositor.
 boolean tickle(float er, int time)
          The Timer invokes the tickle method when the invocation constraints of the Timer are reached.
 java.lang.String toString()
          Return a string representation of this object.
 
Methods inherited from class quicktime.app.spaces.SimpleSpace
addController, addedTo, addMember, controllers, finalize, getProtocol, getSource, getTimer, hasMember, isAppropriate, memberAdded, memberRemoved, removeAllControllers, removeAllMembers, removeController, removedFrom, removeMember, tickleList, timeChanged
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface quicktime.app.display.QTDisplaySpace
addMember, getBackLayer, getFrontLayer
 
Methods inherited from interface quicktime.app.spaces.Listener
addedTo, removedFrom
 
Methods inherited from interface quicktime.app.spaces.Space
addController, controllers, getSource, getTimer, removeController, tickleList
 
Methods inherited from interface quicktime.app.spaces.DynamicCollection
getProtocol
 
Methods inherited from interface quicktime.app.spaces.Collection
addMember, hasMember, isAppropriate, isEmpty, members, removeMember, size
 
Methods inherited from interface quicktime.app.time.Ticklish
timeChanged
 

Field Detail

hitTestFlag

public int hitTestFlag
default hit test is only to test on the visible pixels of a sprite

taskFlag

public int taskFlag
This flag is used when the task method is called. You can use any of the values from the idle in flags of the SpriteWorld
Constructor Detail

SWCompositor

protected SWCompositor(QDGraphics spriteGWorld,
                       QDColor backgroundColor,
                       QDGraphics background,
                       int scale,
                       int period,
                       Protocol defaultProtocol)
                throws QTException
Used by subclasses to construct a SWCompositor. The subclass must specify a background or a backgroundColor but not both.
Parameters:
spriteGWorld - this the buffer which the internal SpriteWorld uses to composit its image into.
background - this is background that can be supplied to the SpriteWorld
backgroundColor - this is background color that can be supplied to the SpriteWorld
scale - the initial scale of the Space's timer
period - the initial period of the Space's timer
defaultProtocol - the minimal Protocol that members of the SWCompositor must meet
Method Detail

resetStatistics

public void resetStatistics()
Resets the internal counters that are used to calculate the frame rate of the Compositor.

getStatistics

public float getStatistics()
The compositor's frame rate is calculated by the number of times it is tickled from the time an application calls resetStatistics and is only valid if the rate of the Compositor's Timer is not zero. If this rate is zero this returns 0. Thus an application uses these calls like:
	myCompositor.resetStatistics();
	Thread.sleep (2000);	//sleep the stat's thread for 2 seconds to allow gathering of profile info
 	float fps = myCompositor.getStatistics();
 
This call does not reset the internal counters, so consequent calls of getStatistics will return frames rendered over a longer period of time.

getInvalidatorList

public java.util.Enumeration getInvalidatorList()
Returns the list of invalidator objects for the Compositor's sprites that have a dynamic image source. If no members of the Compositor are dynamic image sources this call returns null.
Returns:
an Enumeration

getMemberInvalidator

public Invalidator getMemberInvalidator(java.lang.Object member)
Returns the invalidator that is associated with the supplied member if the member has an Invalidator. If the member doesn't or the object is not a member of the Compositor this returns null.
Parameters:
member - a member of the Compositor
Returns:
an Invalidator

setRecordMovie

public void setRecordMovie(RecordMovie rm)
                    throws QTException
This method allows the application to register the intent to record a movie out of the compositing output of the SWCompositor. After each composit cycle the SWCompositor will call the frameReady of the RecordMovie object as long as the frameReady method returns true.
Parameters:
rm - the RecordMovie object

hasRecordMovie

public boolean hasRecordMovie()
Returns true if the SWCompositor has a RecordMovie object.
Returns:
a boolean

getDescription

public ImageDescription getDescription()
                                throws QTException
This method should return an ImageDescription that describes the image data that the class contains.
Specified by:
getDescription in interface ImageSpec
Returns:
the ImageDescription of an Image

getImage

public EncodedImage getImage()
                      throws QTException,
                             java.lang.IndexOutOfBoundsException
This method returns the actual image data.
Specified by:
getImage in interface ImageSpec
Returns:
the image data

getParent

public SWCompositor getParent()
Returns the SWCompositor that this is the parent container of this SWCompositor. This call may return null if the calling object is the top level containing space.
Returns:
the parent SWCompositor or null

getMatrix

public Matrix getMatrix()
                 throws StdQTException
This will return the client's current display transformations
Specified by:
getMatrix in interface Transformable
Returns:
the display transformations of the client

setMatrix

public void setMatrix(Matrix matrix)
               throws QTException
This method sets the current matrix of the Transformable object to the new matrix.
Specified by:
setMatrix in interface Transformable

getInitialSize

public java.awt.Dimension getInitialSize()
                                  throws QTException
Deprecated. since QTJava 4.0

This method returns the original size before the transformations specified in the returned matrix are applied.
See Also:
()

getOriginalSize

public QDDimension getOriginalSize()
                            throws QTException
This method returns the original size before the transformations specified in the returned matrix are applied.
Specified by:
getOriginalSize in interface Transformable
Returns:
the size of the offscreen buffer of the Compositor

getGWorld

public QDGraphics getGWorld()
QTCanvas calls this method to get the destination QDGraphics of its client.
Specified by:
getGWorld in interface QTDrawable
Returns:
a QDGraphics object or null

setGWorld

public void setGWorld(QDGraphics cgp)
               throws QTException
QTCanvas calls this method to give the client the QDGraphics object it should use to do its drawing. If the incoming QDGraphics is the QDGraphics.scratch then the drawable will not be visible and can disable itself. If a client is unable to set the graphics world it should throw an exception.
Specified by:
setGWorld in interface QTDrawable
Parameters:
cgp - a QDGraphics object

setDisplayBounds

public void setDisplayBounds(QDRect bounds)
                      throws StdQTException
QTCanvas calls this method when it needs to tell the client to adjust its location, width and/or height. All values are in pixels.
Specified by:
setDisplayBounds in interface Drawable
Parameters:
bounds - the new size and location.

setLocation

public void setLocation(int x,
                        int y)
                 throws QTException
A convenience method to set the position of a QTDrawable object.
Specified by:
setLocation in interface QTDrawable
Parameters:
x - the new x location
y - the new y location

getDisplayBounds

public QDRect getDisplayBounds()
                        throws QTException
QTCanvas calls this method when it needs to get the client's location, width and/or height. All values are in pixels.
Specified by:
getDisplayBounds in interface Drawable
Returns:
bounds the new size and location.

redraw

public final void redraw(Region invalidRgn)
                  throws QTException
QTCanvas calls this method when the client should redraw itself. If the canvas is able to discern that only a part of the client's drawing area needs to be redrawn - then this area shall be passed in using the invalidRgn. Otherwise this will be null in which case the client should redraw itself entirely.
Specified by:
redraw in interface Drawable
Parameters:
invalidRgn - the invalidRgn that the client should redraw

isAutoRedrawing

public boolean isAutoRedrawing()
Returns the current state of the auto redrawing flag.
Returns:
a boolean.
See Also:
(boolean)

setAutoRedrawing

public void setAutoRedrawing(boolean flag)
If a SWCompositor's time rate is equal to zero, changing a property of a member's sprite requires the SWCompositor to be redrawn to see this change. This is done automatically for you by the TwoDSprite class. However, if an application wishes to change a number of properties of a given sprite or sprites, redrawing the Compositor after each change can be an udesirable side-effect of this automatic redrawing capability. The application can temporarily turn or or off this capability of the SWCompositor, which is controlled by the TwoDSprite, by changing the setting of the auto redrawing flag. If this auto redrawing flag is false, the TwoDSprite will not automatically redraw its parent SWCompositor, if the flag is true then the TwoDSprite will redraw its parent.

Typically an application will set this flag to false, make the changes to its sprites, then reset the flag to true. The application will still have to redraw the SWCompositor after making the changes to its member sprites.

If the rate of the SWCompositor's TimeBase is not equal to zero, then this flag has no effect as the composite cycle is being controlled by the time-based rendering cycle.

Regardless of the value of this flag, the SWCompositor will still redraw itself when the redraw method is called. This flag only controls whether the SWCompositor's member sprites will automatically redraw their parents.

Parameters:
flag - controls the auto redrawing capability of a SWCompositor. By default the auto-redrawing is set to true.

idle

protected void idle()
             throws QTException
This method can be called to explicitly force the SWCompositor to redraw itself. It does not ticke the Compositor - so no ticklish or invalidate actions will be performed. It will just force the internal QuickTime SpriteWorld to do a composit cycle and redraw those areas of the SpriteWorld which are invalid.

In the normal course of operations an application does not need to call this method but it is particularly useful for profiling. It should only be called if the SpriteWorld that is presenting the SWCompositor is NOT null - otherwise a NullPointerException will be thrown.


hitTest

public java.lang.Object hitTest(int x,
                                int y)
                         throws QTException
Return the frontmost object that is located at the specified coordinates. Hit test coordinates will take into account the location of the space thus if the space is at 50, 50 and an object is located in the top,left of the space then the hit test coords for the first pixel of this object is 50, 50.
Specified by:
hitTest in interface QTDisplaySpace
Parameters:
x - the x coordinate
y - the y coordinate
Returns:
an Object at that coordinate or null if no object at specified coordinate

setClip

public void setClip(Region clipRgn)
             throws QTException
This method sets the sprite world's clip.

QuickTime::SetSpriteWorldClip()

Specified by:
setClip in interface QTDrawable
Parameters:
clipRgn - Specifies the clipping region.

getClip

public Region getClip()
Returns the current clipping region used by the sprite world
Specified by:
getClip in interface QTDrawable
Returns:
the current clip region.

tickle

public boolean tickle(float er,
                      int time)
               throws QTException
Description copied from interface: Ticklish
The Timer invokes the tickle method when the invocation constraints of the Timer are reached.
Specified by:
tickle in interface Ticklish
Overrides:
tickle in class SimpleSpace
Following copied from interface: quicktime.app.time.Ticklish
Parameters:
er - the effective rate of the Timer when the time condition matches
time - the time that the Timer invoked the tickle method.
Returns:
true if the Ticklish object should receive a consequent tickle, or false if the Ticklish object should not be tickled again.

removedFromCompositor

public void removedFromCompositor(SWCompositor c)
                           throws QTException
When a dynamic image class is removed from a SWCompositor this method is called to allow the class to cleanup any of the invalidation processes it had established in the addedToCompositor call.
Specified by:
removedFromCompositor in interface DynamicImage
Parameters:
c - the SWCompositor it is being removed from

addedToCompositor

public Invalidator addedToCompositor(SWCompositor c,
                                     TwoDSprite s)
                              throws QTException
Returns an object that invalidates a sprite. When a DynamicImage is a member of a SWompositor and the DynamicImage presents a changing image (for example a movie), the TwoDSprite that presents that image in the SWCompositor must be invalidated so that it will redraw the Sprites image in the next composit cycle. The Invalidator object is used to perform this function by the SWCompositor if the object itself cannot perform the invalidation. Can return null if the DynamicImage does not require the SWCompositor to invalidate it (or the object is in a state where its image won't change).

The Invalidators provided with objects that implement the DynamicImage interface will execute at the scale and period of the Compositor when they are created.

Specified by:
addedToCompositor in interface DynamicImage
Parameters:
c - the Compositor in which the DynamicImage is a member
s - the TwoDSprite that is presenting the DynamicImage's image in the Compositor. This is the sprite that must be invalidated.
Returns:
an Invalidator or null if invalidation is not required
See Also:
quicktime.app.display.SWCompositor

getGraphicsMode

public GraphicsMode getGraphicsMode()
Sets the graphics mode of the SpriteDisplay object - this will be restored on each subsequent creation of the internal SpriteWorld. This may be null if not specified
Specified by:
getGraphicsMode in interface Compositable
Returns:
the current graphics mode or null

setGraphicsMode

public void setGraphicsMode(GraphicsMode mode)
                     throws QTException
Sets the current graphics mode.
Specified by:
setGraphicsMode in interface Compositable
Parameters:
mode - the new graphics mode

getMemberSprite

public abstract TwoDSprite getMemberSprite(java.lang.Object member)
This method returns the TwoDSprite presenter that is presenting the image data of the given member. It returns null if the object is not a member.
Parameters:
member - the member object
Returns:
the member's TwoDSprite presenter

sprites

public abstract java.util.Enumeration sprites()
This returns an Enumeration that allows your application to iterate over the TwoDSprite presenters that are responsible for presenting the image data within the Compositor.
Returns:
an Enumeration;

getSpriteMember

public abstract java.lang.Object getSpriteMember(TwoDSprite sprite)
This method returns the member that is being presented by the supplied TwoDSprite presenter. It returns null if the TwoDSprite is not present in the Compositor.
Parameters:
sprite - the TwoDSprite presenter
Returns:
the member that is being presented by the supplied TwoDSprite presenter

getCompositable

public Compositable getCompositable(java.lang.Object member)
This will return the TwoDSprite for the member as a Compositable object to enable an application to get and set the graphics mode presentation of the member object.
Parameters:
member - the member object
Returns:
the member's TwoDSprite presenter

getLayerable

public Layerable getLayerable(java.lang.Object member)
This will return the TwoDSprite for the member as a Layerable object to enable an application to get and set the layer presentation of the member object.
Specified by:
getLayerable in interface QTDisplaySpace
Parameters:
member - the member object
Returns:
the member's TwoDSprite presenter

getTransformable

public Transformable getTransformable(java.lang.Object member)
This will return the TwoDSprite for the member as a Transformable object to enable an application to get and set the display presentation (its location, scale, etc) of the member object.
Specified by:
getTransformable in interface QTDisplaySpace
Parameters:
member - the member object
Returns:
the member's TwoDSprite presenter

postProcessAdd

protected void postProcessAdd(java.lang.Object member,
                              TwoDSprite s)
                       throws QTException
This method should be called by the subclass after the member has been added to the SWCompositor. If the member is itself a TwoDSprite the member and s arguments should be the TwoDSprite object. If the member is an instance of the DynamicImage interface then the addedToCompositor method will be called on the member and if required the member can return an Invalidator object which is then added to the SWCompositor's Invalidator list. This list is the last list run before the SpriteWorld's composit cycle is run. If the member is an instance of Notifier then the TwoDSprite will be set as the NotifyListener of the member and the member can then notify the TwoDSprite when its image data is valid and the TwoDSprite can present it.
Parameters:
member - the new member that has been added.
s - the TwoDSprite that will present this member

postProcessRemove

protected void postProcessRemove(java.lang.Object member,
                                 TwoDSprite s)
                          throws QTException
This method should be called by the subclass before the member has been removed from the SWCompositor. If the member is itself a TwoDSprite the member and s arguments should be the TwoDSprite object. If the member is an instance of the DynamicImage interface then the removedFromCompositor method will be called on the member allowing the member to cleanup its invalidation requirements. If the member had required invalidation then its Invalidator object will be removed from the Invalidator list.
Parameters:
member - the new member that has been removed.
s - the TwoDSprite that presented this member

saveMembers

protected void saveMembers()
                    throws QTException
This method is called if a SpriteWorld has previously been created and the destination QDGraphics or QDGraphics is about to go away (such as removing a SpriteWorld from a QTCanvas). Any Spirte objects that were attached to the sprite world will be invalid after this call so you should ensure that you remove any possibility of a method being called on any of these sprites. If sprites and or an action list has been added to the Compositor then those sprites will be saved and reinstantiated if a consequent createSprites method is received.

createMembers

protected void createMembers()
                      throws QTException
This method is called after the Compositor has been added to a valid QDGraphics and the sprites can be added to the spriteworld. Any sprites that the Compositor knows about through an action list or sprites being explicitly added, will be recreated at this point. If a subclass overrides this method to create sprites on an initial call and add them to the Compositor then on subsequent calls the subclass should call super.createSprites to ensure that the previous sprites are recreated.

toString

public java.lang.String toString()
Return a string representation of this object.
Overrides:
toString in class java.lang.Object
Returns:
a String

addDrawingListener

public void addDrawingListener(DrawingListener listener)
Registers an object as a listener of the Compositor. The object will receive notification when the Compositor draws a frame
Specified by:
addDrawingListener in interface DrawingNotifier
Following copied from interface: quicktime.app.display.DrawingNotifier
Parameters:
source - the object that is to be the source of interest for the the Listener object.

removeDrawingListener

public void removeDrawingListener(DrawingListener listener)
Removes an object that is a listener of the Compositor. The object will no longer receive notification when the Compositor draws a frame
Specified by:
removeDrawingListener in interface DrawingNotifier
Following copied from interface: quicktime.app.display.DrawingNotifier
Parameters:
source - the object that is to be the source of interest for the the Listener object.