mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-05 00:25:27 +00:00
ac2d9d752e
Module owners are on vacation so Asa asked me to check this into the trunk to bake, for possible branch landing.
193 lines
5.3 KiB
Plaintext
193 lines
5.3 KiB
Plaintext
/** -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public
|
|
* License Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
* implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
* The Original Code is mozilla.org code.
|
|
*
|
|
* The Initial Developer of the Original Code is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 2001 Netscape Communications Corporation. All
|
|
* Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
* Stuart Parmenter <pavlov@netscape.com>
|
|
* Chris Saari <saari@netscape.com>
|
|
*/
|
|
|
|
#include "nsISupports.idl"
|
|
#include "gfxtypes.idl"
|
|
#include "gfxIFormats.idl"
|
|
|
|
%{C++
|
|
#include "nsRect.h"
|
|
%}
|
|
|
|
interface gfxIImageFrame;
|
|
native nsRectRef(nsRect &);
|
|
|
|
/**
|
|
* gfxIImageFrame interface
|
|
*
|
|
* @author Tim Rowley <tor@cs.brown.edu>
|
|
* @author Stuart Parmenter <pavlov@netscape.com>
|
|
* @version 0.1
|
|
*/
|
|
[scriptable, uuid(51cc27a8-1dd2-11b2-a1aa-dad33ab193b4)]
|
|
interface gfxIImageFrame : nsISupports
|
|
{
|
|
/**
|
|
* Create a new \a aWidth x \a aHeight sized image.
|
|
*
|
|
* @param aX The x-offset from the origin of the gfxIImageContainer parent.
|
|
* @param aY The y-offset from the origin of the gfxIImageContainer parent.
|
|
* @param aWidth The width of the image to create.
|
|
* @param aHeight The height of the image to create.
|
|
* @param aFormat the width of the image to create.
|
|
*
|
|
* @note The data of a new image is unspecified (Whats the word i'm looking for here?).
|
|
*/
|
|
void init(in nscoord aX,
|
|
in nscoord aY,
|
|
in nscoord aWidth,
|
|
in nscoord aHeight,
|
|
in gfx_format aFormat);
|
|
|
|
|
|
/**
|
|
* Blit this frame into another frame. Used for GIF animation compositing
|
|
* @param mask If true, unlock the mask bits, else unlock image pixels.
|
|
*/
|
|
void drawTo(in gfxIImageFrame aDst,
|
|
in nscoord aDX,
|
|
in nscoord aDY,
|
|
in nscoord aDWidth,
|
|
in nscoord aDHeight);
|
|
|
|
/**
|
|
* The x-offset of the image.
|
|
*/
|
|
readonly attribute nscoord x;
|
|
|
|
/**
|
|
* The y-offset of the image.
|
|
*/
|
|
readonly attribute nscoord y;
|
|
|
|
/**
|
|
* The width of the image.
|
|
*/
|
|
readonly attribute nscoord width;
|
|
|
|
/**
|
|
* The height of the image.
|
|
*/
|
|
readonly attribute nscoord height;
|
|
|
|
/**
|
|
* The rectangle this frame ocupies.
|
|
* @param rect this is really an out parameter.
|
|
*/
|
|
[noscript] void getRect(in nsRectRef rect);
|
|
|
|
/**
|
|
* The image data format the image was created with.
|
|
* @see gfxIFormats
|
|
*/
|
|
readonly attribute gfx_format format;
|
|
|
|
/* data accessors */
|
|
readonly attribute unsigned long imageBytesPerRow;
|
|
|
|
/**
|
|
* returns the number of bytes allocated for the image
|
|
*/
|
|
readonly attribute unsigned long imageDataLength;
|
|
|
|
// XXX do we copy here? lets not...
|
|
void getImageData([array, size_is(length)] out PRUint8 bits, out unsigned long length);
|
|
|
|
/**
|
|
* Sets \a length bytes of \a data in this object.
|
|
* @param offset The offset from the first pixel in bytes. To set
|
|
* data beginning with the first (top left) pixel in the image, \a offset
|
|
* should be 0; to set data beginning with, for example, the sixth pixel in
|
|
* the first row of a RGBA32 image, the offset should be 20.
|
|
* @attension should we use PRUint32 instead?
|
|
*/
|
|
void setImageData([array, size_is(length), const] in PRUint8 data,
|
|
in unsigned long length,
|
|
in long offset);
|
|
|
|
/**
|
|
* Lock image pixels before addressing the data directly
|
|
*/
|
|
void lockImageData();
|
|
|
|
/**
|
|
* Unlock image pixels
|
|
*/
|
|
void unlockImageData();
|
|
|
|
|
|
|
|
|
|
/* alpha stuff.. used for _A1 and _A8 formated images */
|
|
readonly attribute unsigned long alphaBytesPerRow;
|
|
|
|
/**
|
|
* returns the number of bytes allocated for the alpha mask
|
|
*/
|
|
readonly attribute unsigned long alphaDataLength;
|
|
|
|
// XXX do we copy here? lets not...
|
|
void getAlphaData([array, size_is(length)] out PRUint8 bits, out unsigned long length);
|
|
|
|
/**
|
|
* Sets \a length bytes of \a data in this object.
|
|
*/
|
|
void setAlphaData([array, size_is(length), const] in PRUint8 data,
|
|
in unsigned long length,
|
|
in long offset);
|
|
|
|
/**
|
|
* Lock alpha pixels before addressing the data directly
|
|
*/
|
|
void lockAlphaData();
|
|
|
|
/**
|
|
* Unlock alpha pixels
|
|
*/
|
|
void unlockAlphaData();
|
|
|
|
|
|
/**
|
|
* Represents the number of milliseconds until the next frame should be displayed.
|
|
* @note -1 means that this frame should be displayed forever.
|
|
*/
|
|
attribute long timeout;
|
|
|
|
/* frame disposal method, used only by GIFs. Should probably subclass image frame
|
|
* and image container for GIFs special needs, but for simplicity it is here for the
|
|
* moment
|
|
*/
|
|
attribute long frameDisposalMethod;
|
|
|
|
/* frame background color
|
|
* GIF specific, should be in a GIF specific frame
|
|
*/
|
|
attribute gfx_color backgroundColor;
|
|
|
|
/* frame transparent color
|
|
* GIF specific, should be in a GIF specific frame
|
|
*/
|
|
attribute gfx_color transparentColor;
|
|
};
|