diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
commit | 0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch) | |
tree | a31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /image/imgITools.idl | |
parent | Initial commit. (diff) | |
download | firefox-esr-upstream/115.8.0esr.tar.xz firefox-esr-upstream/115.8.0esr.zip |
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'image/imgITools.idl')
-rw-r--r-- | image/imgITools.idl | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/image/imgITools.idl b/image/imgITools.idl new file mode 100644 index 0000000000..f635f21162 --- /dev/null +++ b/image/imgITools.idl @@ -0,0 +1,207 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" + +interface nsIChannel; +interface nsIEventTarget; +interface nsIInputStream; +interface nsIURI; +interface imgIContainer; +interface imgILoader; +interface imgICache; +interface imgIScriptedNotificationObserver; +interface imgINotificationObserver; +interface imgIContainerCallback; + +webidl Document; + +[scriptable, builtinclass, uuid(4c2383a4-931c-484d-8c4a-973590f66e3f)] +interface imgITools : nsISupports +{ + /** + * decodeImageFromBuffer + * Caller provides an buffer, a buffer size and a mimetype. We read from + * the stream and decompress it (according to the specified mime type) and + * return the resulting imgIContainer. + * + * @param aBuffer + * Data in memory. + * @param aSize + * Buffer size. + * @param aMimeType + * Type of image in the stream. + */ + imgIContainer decodeImageFromBuffer(in string aBuffer, + in unsigned long aSize, + in ACString aMimeType); + + /** + * decodeImageFromArrayBuffer + * Caller provides an ArrayBuffer and a mimetype. We read from + * the stream and decompress it (according to the specified mime type) and + * return the resulting imgIContainer. + * + * @param aArrayBuffer + * An ArrayBuffer. + * @param aMimeType + * Type of image in the stream. + */ + [implicit_jscontext] + imgIContainer decodeImageFromArrayBuffer(in jsval aArrayBuffer, + in ACString aMimeType); + + /** + * decodeImageFromChannelAsync + * See decodeImage. The main difference between this method and decodeImage + * is that here the operation is done async on a thread from the decode + * pool. When the operation is completed, the callback is executed with the + * result. + * + * @param aURI + * The original URI of the image + * @param aChannel + * Channel to the image to be decoded. + * @param aCallback + * The callback is executed when the imgContainer is fully created. + * @param aObserver + * Optional observer for the decoded image, the caller should make + * sure the observer is kept alive as long as necessary, as ImageLib + * does not keep a strong reference to the observer. + */ + void decodeImageFromChannelAsync(in nsIURI aURI, + in nsIChannel aChannel, + in imgIContainerCallback aCallback, + in imgINotificationObserver aObserver); + + /** + * decodeImageAsync + * See decodeImage. The main difference between this method and decodeImage + * is that here the operation is done async on a thread from the decode + * pool. When the operation is completed, the callback is executed with the + * result. + * + * @param aStream + * An input stream for an encoded image file. + * @param aMimeType + * Type of image in the stream. + * @param aCallback + * The callback is executed when the imgContainer is fully created. + * @param aEventTarget + * This eventTarget is used to execute aCallback + */ + void decodeImageAsync(in nsIInputStream aStream, + in ACString aMimeType, + in imgIContainerCallback aCallback, + in nsIEventTarget aEventTarget); + + /** + * encodeImage + * Caller provides an image container, and the mime type it should be + * encoded to. We return an input stream for the encoded image data. + * + * @param aContainer + * An image container. + * @param aMimeType + * Type of encoded image desired (eg "image/png"). + * @param outputOptions + * Encoder-specific output options. + */ + nsIInputStream encodeImage(in imgIContainer aContainer, + in ACString aMimeType, + [optional] in AString outputOptions); + + /** + * encodeScaledImage + * Caller provides an image container, and the mime type it should be + * encoded to. We return an input stream for the encoded image data. + * The encoded image is scaled to the specified dimensions. + * + * @param aContainer + * An image container. + * @param aMimeType + * Type of encoded image desired (eg "image/png"). + * @param aWidth, aHeight + * The size (in pixels) desired for the resulting image. Specify 0 to + * use the given image's width or height. Values must be >= 0. + * @param outputOptions + * Encoder-specific output options. + */ + nsIInputStream encodeScaledImage(in imgIContainer aContainer, + in ACString aMimeType, + in long aWidth, + in long aHeight, + [optional] in AString outputOptions); + + /** + * getImgLoaderForDocument + * Retrieve an image loader that reflects the privacy status of the given + * document. + * + * @param doc + * A document. Must not be null. + */ + imgILoader getImgLoaderForDocument(in Document doc); + + /** + * getImgLoaderForDocument + * Retrieve an image cache that reflects the privacy status of the given + * document. + * + * @param doc + * A document. Null is allowed, but must _only_ be passed + * when there is no way to obtain a relevant document for + * the current context in which a cache is desired. + */ + imgICache getImgCacheForDocument(in Document doc); + + /** + * encodeCroppedImage + * Caller provides an image container, and the mime type it should be + * encoded to. We return an input stream for the encoded image data. + * The encoded image is cropped to the specified dimensions. + * + * The given offset and size must not exceed the image bounds. + * + * @param aContainer + * An image container. + * @param aMimeType + * Type of encoded image desired (eg "image/png"). + * @param aOffsetX, aOffsetY + * The crop offset (in pixels). Values must be >= 0. + * @param aWidth, aHeight + * The size (in pixels) desired for the resulting image. Specify 0 to + * use the given image's width or height. Values must be >= 0. + * @param outputOptions + * Encoder-specific output options. + */ + nsIInputStream encodeCroppedImage(in imgIContainer aContainer, + in ACString aMimeType, + in long aOffsetX, + in long aOffsetY, + in long aWidth, + in long aHeight, + [optional] in AString outputOptions); + + /** + * Create a wrapper around a scripted notification observer (ordinarily + * imgINotificationObserver cannot be implemented from scripts). + * + * @param aObserver The scripted observer to wrap + */ + imgINotificationObserver + createScriptedObserver(in imgIScriptedNotificationObserver aObserver); +}; + +/** + * This is a companion interface for nsIAsyncInputStream::asyncWait. + */ +[function, scriptable, uuid(f195772c-a4c0-47ae-80ca-211e001c67be)] +interface imgIContainerCallback : nsISupports +{ + /* If the operation fails, aStatus will contain the error value */ + void onImageReady(in imgIContainer aImage, in nsresult aStatus); +}; |