imgIDecoderObserver interface

 This interface is used both for observing imgIDecoder objects and for
 observing imgIRequest objects.  In the former case, aRequest is
 always null.
 XXXldb The two functions should probably be split.

 @author Stuart Parmenter <pavlov@netscape.com>
 @version 0.1
 @see imagelib2
[scriptable, uuid(876f14ee-f27c-41cd-b6fb-9efda3ebc7b5)]
interface imgIDecoderObserver : imgIContainerObserver

Methods

 called when some part of the frame has new data in it
[noscript] void onDataAvailable(in imgIRequest aRequest, in gfxIImageFrame aFrame, [const] in nsIntRect aRect)
 called once the image has been inited and therefore has a width and height
void onStartContainer(in imgIRequest aRequest, in imgIContainer aContainer)
 called as soon as the image begins getting decoded
void onStartDecode(in imgIRequest aRequest)
 called when each frame is created
void onStartFrame(in imgIRequest aRequest, in gfxIImageFrame aFrame)
 called at the same time that nsIRequestObserver::onStartRequest would be
 (used only for observers of imgIRequest objects, which are nsIRequests,
 not imgIDecoder objects)

 Unlike nsIRequestObserver::onStartRequest, this can be called
 synchronously.
void onStartRequest(in imgIRequest aRequest)
 probably not needed.  called right before onStopDecode
void onStopContainer(in imgIRequest aRequest, in imgIContainer aContainer)
 called when the decoder is dying off
void onStopDecode(in imgIRequest aRequest, in nsresult status, in wstring statusArg)
 called when a frame is finished decoding
void onStopFrame(in imgIRequest aRequest, in gfxIImageFrame aFrame)
 called at the same time that nsIRequestObserver::onStopRequest would be
 (used only for observers of imgIRequest objects, which are nsIRequests,
 not imgIDecoder objects)

 Unlike nsIRequestObserver::onStartRequest, this can be called
 synchronously.
void onStopRequest(in imgIRequest aRequest, in boolean aIsLastPart)